このサイトはMacを使って Arduino Uno の動作や活用法を学びます。

25 Arduino 電子オルゴールの楽譜を作成

電子オルゴールで好きな曲を演奏すつには、その曲の楽譜と Arduino が理解できる gakufu.h ファイルに変換する必要があります。

 

音符と楽譜ファイル

前回の記事で示したように、このスケッチで使用する楽譜ファイルは、 16ビットの整数で一つの音符を表します。

   | 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書込み前に確認することができます。

 

--> オルゴールデーター作成 Windows アプリ

 


 

次回は、モールス信号のキーヤーを作成します。