CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

Rustでラ・カンパネラwww

2023-03-07 22:48:15 | Rust
Rust言語でhoundライブラリーを使ってリストのラ・カンパネラを鳴らすプログラムを書いてください

以下はRust言語でhoundライブラリーを使ってリストの「ラ・カンパネラ」を鳴らすプログラムです。注意:このプログラムは音声データを生成するだけで、音楽ファイルを再生するためのコードは含まれていません。

extern crate hound; fn main() { // サンプルレートを設定 let sample_rate = 44100; // 出力する音声データの長さを秒単位で指定 let duration_sec = 60.0; // 出力する音声データの長さをサンプル単位で計算 let num_samples = (duration_sec * sample_rate as f32) as usize; // 出力する音声データを格納するためのベクターを作成 let mut samples = Vec::with_capacity(num_samples); // ピアノの音階を定義 let notes = [("E5", 0.125), ("D#5", 0.125), ("E5", 0.125), ("D#5", 0.125), ("E5", 0.125), ("B4", 0.125), ("D5", 0.125), ("C5", 0.125), ("A4", 0.125), ("A#4", 0.125), ("B4", 0.125), ("C5", 0.125), ("D5", 0.125), ("E5", 0.125), ("C5", 0.125), ("A4", 0.125), ("E5", 0.125), ("D#5", 0.125), ("E5", 0.125), ("D#5", 0.125), ("E5", 0.125), ("B4", 0.125), ("D5", 0.125), ("C5", 0.125), ("A4", 0.125), ("A#4", 0.125), ("B4", 0.125), ("C5", 0.125), ("D5", 0.125), ("E5", 0.125), ("C5", 0.125), ("A4", 0.125)]; // ピアノの音を生成し、samplesベクターに追加する for &(note, duration) in &notes { let freq = get_frequency(note); let num_samples_for_note = (duration * sample_rate as f32) as usize; for i in 0..num_samples_for_note { let t = i as f32 / sample_rate as f32; let sample = (2.0 * std::f32::consts::PI * freq * t).sin(); samples.push(sample); } } // 音声ファイルに書き出すための設定を行う let spec = hound::WavSpec { channels: 1, sample_rate: sample_rate, bits_per_sample: 16, sample_format: hound::SampleFormat::Int, }; // 音声ファ

…おや?死亡しましたか?www
ふざけんな!



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。