25 Arduino 電子オルゴールの楽譜を作成
電子オルゴールで好きな曲を演奏すつには、その曲の楽譜と Arduino が理解できる gakufu.h ファイルに変換する必要があります。
音符と楽譜ファイル
| 76543210| 76543210|
| 高さ | 長さ |
音の高さ
音階は、半音ずつに別れ、「ド」から「シ」まで、12段階でオクターブになります。
中心の「ド」は、「60 」にします。また、休符は「0」で表します。
よく使う音の例を下に示します。
音の長さ
四分音符を8単位と定めたので、他の音符の長さは以下のようになります。
2 実際の曲と"gakufu.h"
「夕焼け小焼け」を例にとり実際の曲と"gakufu.h"を並べて比較してみます。
曲の楽譜から、"gakufu.h" を作成するには、先頭から音符を一つずつ 16bit の整数に変換していきます。最初の音は、「ソ」音の八分音符なので、0x4304 続く二つの音も同じです。4番目は、「ラ」音の八分音符なので、0x4504 ・・・・
時間はかかりそうですが、変換のルールは単純でなことが理解できます。
// 夕焼け小焼け const unsigned int p1gkf[] = { 84, 0x4304,0x4304,0x4304,0x4504,0x4304,0x4304,0x4304,0x4004, 0x3C04,0x3C04,0x3E04,0x4004,0x3E0C,0x0004,0x4008,0x4004, 0x4304,0x4504,0x4804,0x4804,0x4504,0x4304,0x4304,0x4504, 0x4304,0x480C,0x0004,0x4806,0x4A02,0x4804,0x4504,0x4804, 0x4804,0x4304,0x4304,0x4504,0x4304,0x4504,0x4304,0x400C, 0x0004,0x4304,0x4004,0x3E04,0x3C04,0x3E04,0x3E04,0x3C04, 0x3E04,0x4004,0x4304,0x4504,0x4304,0x480C,0x0004, 0xFFFF, 0xFFFF };
3 オルゴールデーター作成 Windows アプリ
楽譜を見ながら、一つずつ音符データを手入力することで、"gakufu.h"ファイルを作成することが基本ですが・・・音符の数が増えると書き込みを間違える機会も増えてしまします。
そこで、Visual C# 2019 を使い、PC画面上でオルゴール楽譜を作成し、PIC用データに変換するWindowsアプリケーションを作成しました。下のリンクから、オルゴールデータ作成.exe をダウンロードしてください。
( 残念ながらMacでは動作させることができません )
画面上の五線譜にマウスで音符を配置し、PIC用データ「書き出し」ボタンを押すとオルゴールプログラム用のgakufu.h ファイルが作成できます。作成した楽譜の内容は、PC内蔵のMedia Playerを起動しPCスピーカーからの音でPIC書込み前に確認することができます。
次回は、モールス信号のキーヤーを作成します。