「なでしこ」で百人一首music その4
「文字を素材に音を作る」部分を関数にしてみたので、プログラムがだいぶすっきりしてきたし、拡張もやりやすくなってきた。そこで今日は、2つの和歌を定義して、これを素材に琴の二重奏をするプログラムを作ってみる。
和歌を定義している変数と楽譜(MML)を定義している変数を配列にして、2回ループさせてある。
もうひとつ、ループの中で、「(条件式)で条件分岐」という命令を使っている。これは、複数の選択肢の中から条件に合うものだけを実行する(select case 文に相当する)という命令だ。
条件分岐
http://nadesi.com/doc/cmd/doc.cgi?mode=cmd&id=210
//百人一首music_4
音階=区切(『"ミ/"ラ/"シ/ド/ミ/ファ/ラ/シ/`ド/`ミ/`ファ/`ラ/`シ』 "/")
和歌[1]="秋の田の 仮庵の伊庵の 苫をあらみ わが衣出は 露に濡れつつ"
和歌[2]="春過ぎて 夏来にけらし 白砂の 衣ほすてふ 天の香具山"
楽譜[0]="Tempo=60"
2 回
歌音=""
回数で条件分岐
1ならば PAN=000+20
2ならば PAN=127-20
歌音変換(和歌[回数],歌音); 楽譜[回数]="TR({回数}) 音色(Koto) P({PAN})"&歌音
"歌{回数} = "&和歌[回数]を表示
ここまで
楽譜を表示; 楽譜をMML演奏
●歌音変換({参照渡し}和歌,{参照渡し}歌音)
文字=和歌を文字列分解したもの
和歌の文字数 回
弦番号=ASC(文字[回数-1])%13
もし(文字[回数-1]=" ")ならば
音符="r4"
違えば、もし(文字[回数-1]>"ん")ならば
音符=音階[弦番号]&"2"
違えば
音符=音階[弦番号]&"4"
ここまで
歌音=歌音&音符
//ここまで
これは、なかなか面白いです。和歌の部分を色々変更して楽しんでみましょう。
0 Comments:
コメントを投稿
<< Home