金曜日, 11月 24, 2006

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

なでしこ」を使って「文字を素材に音を作る」プログラミングの試みも、次第にプログラムの形ができてきた。

今日は、「文字を音に変える」アルゴリズム部分を、歌音変換()という関数として定義してみる。変換前の文字列と返還後のMMLを引数にしてみた。

●歌音変換({参照渡し}和歌,{参照渡し}歌音)

和歌・・・・MMLに変換する文字列
歌音・・・・変換されたMML文字列

引数の前に書いてある{参照渡し}というのは、関数の外で定義されている変数を関数内で直接利用する場合に指定する。

//百人一首music_3

音階=区切(『"ミ/"ラ/"シ/ド/ミ/ファ/ラ/シ/`ド/`ミ/`ファ/`ラ/`シ』 "/")
和歌="秋の田の 仮庵の伊庵の 苫をあらみ わが衣出は 露に濡れつつ"

歌音=""; 歌音変換(和歌,歌音)
楽譜="Tempo=60 音色(Koto) "&歌音
和歌を表示; 楽譜を表示

楽譜をMML演奏


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

//ここまで



関数を使うことで、プログラムもだいぶすっきりしてきました。