【手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた】には書かれていなかったmmlの文法について調べてみた。半音上げる#はc(ド)~b(シ)のすぐ後ろに#または+と付ければ良い。
半音下げる♭は-を付ければ良い。
音の長さはl(エルの小文字)プラス数字で指定。例えばl4で四分音符、l2で二分音符を表す。
じゃあ16分音符ならl16、32分音符ならl32となる。
テンポはtプラス数字、音量はvプラス数字で表せば良いらしい。
この本の385ページから422ページまでは音を鳴らしたり簡単な音楽を奏でる方法が書いてあった。
一番最初は、440Hzのラの音を3秒間だけ鳴らすというものであり、こちらはコピペで難なくクリアした。
コマンドプロンプトで
cargo new プロジェクト名
と入力してEnterキーを押すと、然るべきディレクトリにプロジェクト名のフォルダが自動で作られるので、
cd そのフォルダ名
と入力してEnterキーを押すと
そのディレクトリに移動できる。
そしてその中のmain.rsというファイルをメモ帳で開いて編集するわけだが、本の通りにプログラムを写経して書いて上書き保存し、cargo runと入力してEnterキーを押すとフォルダの中にwavファイルが出来上がっている。
このwavファイルをクリックすると音楽再生アプリが立ち上がって音が出る、という仕組みだ。
397ページにはカエルの歌とキラキラ星の二曲のサンプルコードが書かれている。
さあ、もうこれだけでほとんどの曲(単音でかつ3連符など複雑なリズムの無い曲)は作れるであろう。
ところで和音や複雑なリズムはどうやって表せば良いのだろうか?
もうちょっとmml文法について学ぶ必要があるかもしれない。
1998年辺りから携帯電話が普及し始め、俺は単音での着メロ作成にはまった。
もちろん、和音なんかできなかったので、旋律の音の長さを最も短くし、間に伴奏の音を長さを最短にして挟むという方法をとった。旋律と伴奏が被った所は旋律の音のみにした。
そうしたらかなりリアルなものに近づいた。
さて転職のポートフォリオのネタはこれで決まったな。ショパンの幻想即興曲をプログラミングしてソースコードを提出し、面接の時に再生して見せれば多少はインパクトが残せるかも。
独学の未経験ですが、自力で応用してここまで漕ぎ着けました、とアピールしてみてはどうか?
このコはJUNNA。
天才ドラマーだ。
今は二十歳くらいになってるかも。
P.S.
3連符とか複雑なリズム、複数の旋律、和音、音色を変えるなど詳しいmml文法が載っているサイトを発見した!!!
これで難しい曲も表現できるであろう。
例えばラフマニノフのピアノ協奏曲第二番の左手部分みたいに7連符とか9連符とか。