日曜日, 11月 26, 2006

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

「文字を素材に音を作る」プログラム、昨日までは文字をプログラムの中で定義していたのだが、今日はこの文字をパソコンのキーボードから入力できるようにしてみる。

なでしこ」でキーボードから文字列を入力するには、「尋ねる」という命令を使う。

尋ねる
http://nadesi.com/doc/cmd/doc.cgi?mode=cmd&id=451

昨日と同じように、文字列の種類を2種類にして、2回のループのなかで和歌[回数]の配列の中に、入力された文字列を格納するようにしている。

//百人一首music_5

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

楽譜[0]="Tempo=60"

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

楽譜を表示; 楽譜をMML演奏

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

//ここまで



文字列として、いままでは「百人一首」を使ってみたが、文字であれば実は何でも良い。漢字やかなが混じっていれば、音譜の長さが文字の種類によって変化する。半角文字の場合は今のアルゴリズムでは全て4部音符になる。