« 「波線省略するな」キャンペーン? |Main| Jython執筆日記(執筆と言うより調査) »

« 「波線省略するな」キャンペーン? | zakki(雑記) | Jython執筆日記(執筆と言うより調査) »

テキスト音楽サクラでパッヘルベルのカノンを作った

面白かった。 音符の長さを八分音符にしているときに 「ドーーー」と書けば二分音符になるところが直感的でいいと思った。 テキスト音楽サクラではMMLも使えて、それでもc^^^で同じことができるようだ。

あと引数付きのマクロが実装されているので 「タッカタン」というリズムが繰り返される曲はMMLでは「e.d16c」も「e^^dc^^^」も面倒だけども、引数付きマクロでまとめてしまうことも可能。 ただどうも#takkatan({e}, {d}, {c})みたいに文字列リテラルを囲ってカンマで区切らないといけないみたい。 Pythonならこうなんだけどなぁ

>>> def takkatan(a, b, c):
	return a + "." + b + "8" + c + "4"

>>> [takkatan(*x) for x in ["edc", "cde", "egc"]]
['e.d8c4', 'c.d8e4', 'e.g8c4']

そういう抽象化の手法をほとんど使わずに書いたサクラのコードは下記

調#(ドファ)
テンポ120

#MELODY = {
音符2
ファミレ  ド↓シラシ↑ド
レド↓シラ ソファソミ

音符4
レファラソ ファレファミ
レ"シレラソシラソ

ファレミ↑ド レファラ↓ラ
シソラファ  レ↑レレ.ド8

音符8
レドレ↓レドラミファ レ↑レド"シドファラシ
ソファミソファミレド ↓シラソファミソファミ
レミファソラミラソ ファシラソラソファミ
レ"シシ↑ドレド↓シラソファミシラシラソ

音符4
ファ↑ファミーンレファー
シーラーシー↑ドー

レ↓レドー ン"シレー
レーーレ レソミラ

音符16
ラーファソ ラーファソ
ラ↓ラシ↑ド レミファソ
ファーレミ ファー↓ファソ
ラシラソ ラファソラ
ソーシラ ソーファミ
ファミレミ ファソラシ
ソーシラ シー↑ドレ
↓ラシ↑ドレミファソラ


ファーレミ ファーミレ
ミドレミ ファミレド
レー"シド レー↓レミ
ファソファミ ファ↑レドレ
↓シー↑レド ↓シーラソ
ラソファソ ラシ↑ドレ↓
シー↑レド レード↓シ
↑ドレミレドレ"シド

音符4
レンドン↓シン↑レン
↓レンレンレンミン
ンランランファンラ
ンソンファンソ↑ンミ

音符16
ファ↓ファソファミ↑ミファミ
レ↓ファレシラ↓ラソラ
シ↑シ`ドシラ↓ラソラ
シ↑シラシ`ドド"シド

レ↑レミレ ド↓ドレド
"シシラシ ↑ド↓ドファミ
レ↑レミソ ファ↓ファラ↑ファ
レソファソ ミ↓ラソラ

ファラララ ララララ ファファファファ ファファララ
ソソソ↑レ レレレレ レレ↓シシ ララ↑ミド

↓ラ↑ファファファ ミミミミ レレレレ ララララ
シシシシ ララララ シシシシ ↑ド↓ラララ

音符32
レー↓レミファーレー
ドー↑ドレミードー↓
シー↓シ↑ドレー↓シー↑
ドーラソファーミー
レーソファミーソー
ファーレミファーラー
ソーシラソーファー
ミーラソファーミー

ファー↑レドレー↓ファー
ラーラシ`ドーラー
ファー↑レミファーレー
ファーファミレードー↓
シーシラシー↑ドー
レーファミレーファー
ソーレド↓シーシー
ラーミーラーラー

音符8
ラーーラレーーラ
ソーラーソレレ.ド16

レ↑レドー↓シーラー
レ.ミ16ファーシーミ.ミ16

音符16
ファーー↑ファファソファミ
レーーレレミレド↓
シーーー↑レーーー レド♭"シド♭ ↓ラーーラ

ラーー↑ララシラソ
ファーーファファソファミ
レド♭"シド♭ ↓ラーーラ ソーレー↑ドーード

音符8
レレードー↓シーラーソーファファ.ミ16ミー

ラ↑ファーミレ↑レード♭↓ シー↑レ↓ラシーラー
ラーl16↓ラーーソファーーー↑ファーーミl8レーーレレードー

ラ↓レド↑ド ↓シ↓シラ↑ラ ソ↑ソファ↓ファミシミ↑ミ
ファ↓ファミ↑ミレ↓レド↑ド↓ シ↑シラ↓ラソ.↑ミ18↓ラララーンンン
}

トラック1
#MELODY

トラック2
音符1 ンンンン
#MELODY

トラック3
音符1 ンンンンンンンン
#MELODY

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/494

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.