Blogの記事をまとめたつもりのサイトです。

 Melodyはheaderファイルで定義する。
 ただし、曲を差し替えるときは、スケッチの書き換えも必要。
  • Melodyのheaderファイルの説明
  • Melodyファイルの作り方
  • 耳コピの適当なやり方
  • 他曲のスケッチへの組み込み方

Melodyのheaderファイルの説明

  • notes_XXXX1[]〜notes_XXXX6[] XXXXは曲名、Yは1-5で一つ一つが単音で5重和音まで可能。
 音をどう鳴らすかのファイルで4オクターブのドが48。休符が0。
 ただし、音色を発車メロディーっぽくするために、スケッチ内で2オクターブほど音階を上げている。(note_offset)
//hana taki rentaro
PROGMEM const byte notes_hana1[] =
{
 /*
>レーーレソーーソラソファ+ミレーーー
<シ>レソラシー>レー<ラーーーーーーー
*/
 62,  0,  0, 62, 67,  0,  0, 67, 69, 67, 66, 64, 62,  0,  0,  0,
 59, 62, 67, 69, 71,  0, 74,  0, 69,  0,  0,  0,  0,  0,  0,  0,
};
PROGMEM const byte notes_hana2[] =
{
 /*
>レーーレ<シーーシ>ドミレド<シーーー
シーシ>レソーソーファ+ーーーーーーー
*/
 62,  0,  0, 62, 59,  0,  0, 59, 60, 64, 62, 60, 59,  0,  0,  0,
 59,  0, 59, 62, 67,  0, 67,  0, 66,  0,  0,  0,  0,  0,  0,  0,
 };
 −−−−−(省略)−−−−−
  • pitch_XXXX[] XXXXは曲名
 周期を指定する。ポロロローンと和音を鳴らしたいところは255を指定する。
PROGMEM const byte pitch_hana[] = //ピッチじゃなくて周期
{
120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,
120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,
};
  • instrument_XXXX XXXXは曲名
 音色を指定する。通常は3を指定。ドア開閉音は1を指定している。
const byte instrument_tanabatasama = 3;
番号音色
0PWMDACSynth::sineWavetable
1PWMDACSynth::squareWavetable
2PWMDACSynth::triangleWavetable
3PWMDACSynth::sawtoothWavetable
4PWMDACSynth::shepardToneSineWavetable

Melodyファイルの作り方

 MMLからの変換プロジェクトはこちら
 \bin\debug\WindowsApplication1.exeが実行ファイル。

 ソフトの使い方は、いわゆるMML風のものを入れると変換してくれるが、今回はオルゴール風のため、音を伸ばすという機能は無視しているので、いろいろと機能を限定した。(4分音符で延ばすとか8分音符で延ばすとか、テンポ指定するとかそういう機能は無い)。また、ドレミファがCDEFというのも、気に入らなかったので、ドレミファと入れられるようにした。(名残で普通の半角の”AB>CD+<A"みたいな書き方も受け付けるが。)
 ソースを読むと詳しくはわかるが、適当な機能を言うと、
ド、レ、ミ、ファ、ソ、ラ、シ、ド・・・音
+、−(マイナス)・・・半音あげる、下げる
ー(全角の長音)、R,r・・・休符
>・・・オクターブ上げ
<・・・オクターブ下げ
で、一連の曲は出来るはず。
気をつけなければいけないのが"-"(半角/全角 マイナス)と”ー”(全角 長音)で
前者はb(フラット)の意味で後者は休符の意味。Windowsが変換で、意訳をしてしまうので
+の後のー(長音)は注意。Windowsはまずマイナスにしたがる。
実際であるが、GK3-1,2という曲の一番上のパートについて
シラ+ファ+レ+ーーーーーレ+ファ+ラ+シラ+ファ+レ+
>ド+<ラファ+ミーーーーー>ド+レド+レド+<ラファ+
ミーーーーーーーーーーーーーーー
と入れて、変換ボタンを押すと
59, 58, 54, 51, 0, 0, 0, 0, 0, 51, 54, 58, 59, 58, 54, 51,
61, 57, 54, 52, 0, 0, 0, 0, 0, 61, 62, 61, 62, 61, 57, 54,
52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
と変換してくれる。これをヘッダファイルにコピペすればよい。

耳コピの適当なやり方

(1)発車メロディーを録音などして、mp3またはWAV化する。
(2)それをWaveToneというソフトで周波数変換してやる
(3)画面を見ながら、適当に音圧の高いところ(赤い部分)を楽譜というかMML風に書き起こしてやる。
(注意)曲によって、和音があまり分かれていない場合(倍音とかでわけがわからない)があり、そういうのは私のような素人には無理。
(4)出来たメロディーと実際のメロディーを聞き比べて、自己満足できたら終了。

他曲のスケッチへの組み込み方

 メロディーのヘッダーとvoid select_melody()とvoid select_instrument()内の配列の参照先を変えてやれば、自分の好きな曲にできる。
 

管理人/副管理人のみ編集できます