木曜日, 11月 23, 2006

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

昨日やった「文字を素材に音を作る」方法では、音符を全部4分音符にしてあるので、メロディーがちょっと単調だ。

そこで今日は、音符の長さを文字によって変えるというアルゴリズムを入れてみる。色んな方法があると思うのだが、こんなことを考えてみた。

文字が漢字の場合 → 2部音符
文字がかなの場合 → 4部音符
文字が空白の場合 → 4部休符

この、切り分けをIF(条件)文にあたる、「なでしこ」の、もし(条件)文でやってみる。

もし
http://nadesi.com/doc/cmd/doc.cgi?mode=cmd&id=200

//百人一首music_2

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

MML="Tempo=60 音色(Koto) "
和歌の文字数 回
 弦番号=ASC(文字[回数-1])%13
 もし(文字[回数-1]=" ")ならば
  音符="r4"
 違えば、もし(文字[回数-1]>"ん")ならば
  音符=音階[弦番号]&"2"
 違えば
  音符=音階[弦番号]&"4"
 ここまで
 MML=MML&音符

和歌を表示; MMLを表示

MMLをMML演奏

//ここまで



音符の種類を複数にしただけで、なんか、かなりいい感じの曲になる。