月曜日, 11月 27, 2006

「なでしこ」で百人一首music その6

今日は、昨日までの「文字を素材に音を作る」プログラムをさらに発展させてみる。

一つは入力できる歌の数を可変にして、歌の数をいくつにするか指定できるようにする。

もう一つは、マウスをクリックした時に、MMLを演奏させるようにする。これは、いわゆるイベントドリブンの処理になるわけで、これでプログラムがぐっとWindowsアプリケーションっぽくなる。

//百人一首music_6

音階=区切(『"ミ/"ラ/"シ/ド/ミ/ファ/ラ/シ/`ド/`ミ/`ファ/`ラ/`シ』 "/")

楽譜[0]="Tempo=60"

歌数=尋ねる("歌の数を入力してください")
歌数 回
 和歌[回数]=尋ねる("歌{回数}を入力してください")
 歌音=""
 回数で条件分岐
  1ならば PAN=000
  2ならば PAN=127
  違えば PAN=127/2
 歌音変換(和歌[回数],歌音); 楽譜[回数]="TR({回数}) 音色(Koto) P({PAN})"&歌音
 "歌{回数} = "&和歌[回数]を表示
ここまで

表示("マウスをクリックすると演奏します")
母艦をクリックした時は
 楽譜を表示; 楽譜をMML演奏

●歌音変換({参照渡し}和歌,{参照渡し}歌音)
 文字=和歌を文字列分解したもの
 和歌の文字数 回
  弦番号=ASC(文字[回数-1])%13
  もし(文字[回数-1]=" ")ならば
   音符="r4"
  違えば、もし(文字[回数-1]>"ん")ならば
   音符=音階[弦番号]&"2"
  違えば
   音符=音階[弦番号]&"4"
  ここまで
  歌音=歌音&音符

//ここまで



マウスクリックでMMLを演奏することにしたので、これで何度でも好きなだけ画面をクリックして演奏を楽しむことができるようになった。