ToneMake
ArduinoUNOのtone( )で演奏するデータをMMLっぽいテキストから変換して作成するツール『学校のチャイム』作成時に演奏用データを一々コーディングするのが面倒になって作成しました。
4~12小節分位の短いデータを想定しているのでJ-POPをフルコーラスとかやったら何が起こるのか?などは検証していません。
ToneMakeの機能
- MMLっぽいテキストのロード・セーブ
- MMLっぽいテキストを演奏用データに変換
- MMLっぽいテキストをtone()を使った演奏スケッチに変換 ※動作確認 ArduinoUNO 8番ピンを使用
- 変換した演奏用データ/スケッチをテキストファイルとして保存
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 ソースコード