ゆるく楽しむプログラミング

ToneMake

ArduinoUNOのtone( )で演奏するデータをMMLっぽいテキストから変換して作成するツール

『学校のチャイム』作成時に演奏用データを一々コーディングするのが面倒になって作成しました。
4~12小節分位の短いデータを想定しているのでJ-POPをフルコーラスとかやったら何が起こるのか?などは検証していません。

ToneMakeの機能


MMLっぽいテキストのコマンド
 コマンド 機能 記述例
 T テンポ ディフォルトは ♩=120  T120 
 L 音の長さ ディフォルトは L4 四分音符  L4 
 O 音階 ディフォルトは3  O3 
 < 音階を下げる  C<BAGFEDC 
 > 音階を上げる  CDEFGAB>C 
 - 音調を変える または 半音下げる。
先頭に付けた場合▼の意味
この場合 -ABE

音程の後に付けた場合、半音下がる A- または A♭
音調指定と重複した場合、一音下がります。
 + 音調を変える または 半音上げる。  +ABE
A+ または A#
音調指定と重複した場合、一音上がります。
 #
 C D E F G A B 音程 長さは数値で表す。
1=全音符、2=2分音符 4=4分音符
CDED8E8
 ド レ ミ フ ァ ソ ラ シ
 . 付点 ※複付点・三重付点には対応してません。 C.E2. 
 & 同じ音を連続する場合にtone()のつなぎ目をなくします。
※完全に合体するのでスラーとは違います。
C&C 
 ^ 音の間に0.05秒の隙間を開けます。
※休符部分の長さが適当なのでスタッカートとは違います。
 打楽器の音表現的なアレだと思ってください。 
C^C^D^D^ 


ArduinoUNOの接続
8番ピンに圧電スピーカーを接続。


VisualStudio2019 VB.Net で作成。
Windows10Pro #20H2で動作確認

ToneMake01.zip - ToneMake Ver 1.0 実行ファイル

ToneMake_SOURCE - GPXNE Ver 1.0 ソースコード