CyberChaos(さいばかおす)

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

Rustでショパンの幻想即興曲を演奏するプログラム

2023-03-07 22:29:51 | Rust
ショパンの幻想即興曲の最初から20小節目までのプログラムを書いてください
(中途半端でとまってしまった。)

以下は、Rustのmidirとhoundライブラリを使用して、ショパンの幻想即興曲の最初から20小節目までの楽譜を再現する例です。midiデータから各音符の周波数を計算し、それを使用して波形を生成しています。また、楽譜を簡単に指定できるように、notes配列に音符の高さ、長さ、タイミングを指定しています。

extern crate hound; extern crate midir; use std::f32::consts::PI; use std::i16; use std::time::Duration; fn main() { // midiから取得した各音符の周波数を格納する配列 let mut frequencies = vec![0.0; 128]; // midiから各音符の周波数を計算する for note in 0..128 { frequencies[note] = 440.0 * 2.0_f32.powf((note as f32 - 69.0) / 12.0); } // 幻想即興曲の楽譜を定義する let notes = vec![ //小節1 (60, 0.5, 0.0), (63, 0.5, 0.5), (67, 0.5, 1.0), (72, 1.0, 1.5), //小節2 (60, 0.5, 2.5), (63, 0.5, 3.0), (67, 0.5, 3.5), (72, 1.0, 4.0), //小節3 (64, 0.25, 5.0), (68, 0.25, 5.25), (71, 0.25, 5.5), (76, 0.5, 5.75), (76, 0.25, 6.25), (79, 0.25, 6.5), (83, 0.5, 6.75), (83, 0.25, 7.25), //小節4 (84, 0.25, 7.5), (79, 0.5, 7.75), (79, 0.25, 8.25), (76, 0.25, 8.5), (71, 0.5, 8.75), (71, 0.25, 9.25), (67, 0.25, 9.5), (63, 0.5, 9.75), //小節5 (60, 0.25, 10.5), (63, 0.5, 10.75), (60, 0.25, 11.25), (55, 0.25, 11.5), (52, 0.5, 11.75), (52, 0.25, 12.25), (48, 0.25, 12.5), (44, 0.5, 12.75),



最新の画像もっと見る

コメントを投稿

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