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 ¬es {
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
ふざけんな!