曲データの作り方


音階について

音階は、note.hに定義してあります。 MML(Music Macro Language:ミュージック・マクロ・ランゲージ)を参考にして、音階を表現しています。 1つの音は、オクターブと音階で構成されてます。
O4E 4オクターブのミ
O4F 4オクターブのファ
O4A 4オクターブのラ
O4AS4オクターブのラ#

音長について

音長は、note.hに定義してあります。
L1_DOT 全音符
L1 全音符
L2_DOT 付点 2分音符
L2 2分音符
L4_DOT 付点 4分音符
L4 4分音符
L8_DOT 付点 8分音符
L8 8分音符
L16_DOT付点16分音符
L16 16分音符
L32_DOT付点32分音符
L32 32分音符

ヘッダ情報

ヘッダ情報は,テンポとデータ長から構成されます。

テンポ

曲データの先頭に記述し、演奏のテンポを設定します。
テンポの設定出来る範囲は1から254までです。

データ長

データ長は,2byte型と3byte型の2種類があります。

曲データ

曲データは,2byte型と3byte型の2種類があります。

演奏制御について

曲データの最後に記述し、演奏の制御を行います。
HALT演奏停止 このコードを読み込むと演奏を停止します。
LOOP無限ループこのコードを読み込むと曲の先頭に戻り演奏を継続します。
演奏停止 無限ループ
unsigned char DoReMi[] = {
   120 ,   2, // tempo
   O4C ,  L4, // ド
   O4D ,  L4, // レ
   O4E ,  L4, // ミ
   HALT,   0
  };
unsigned char DoReMi[] = {
   120 ,   2, // tempo
   O4C ,  L4, // ド
   O4D ,  L4, // レ
   O4E ,  L4, // ミ
   LOOP,   0
  };

曲の作成例

時報

よく耳にするあの"ピッピッピッ ポーン"という音です。
2byte型で記述 3byte型で記述
unsigned char Jihou[] = {
   120,    2,   // tempo,type
   O4A , L16,   // ラ    440 Hz ピッ
   REST, L16,
   REST, L8,
   REST, L4,
   O4A , L16,   // ラ    440 Hz ピッ
   REST, L16,
   REST, L8,
   REST, L4,
   O4A , L16,   // ラ    440 Hz ピッ
   REST, L16,
   REST, L8,
   REST, L4,
   O5A , L1_DOT,// ラ    880 Hz ポーン
   HALT,  0
  };
unsigned char Jihou[] = {
   120,    3,       0,     // tempo, type, dummy
   O4A,   L2,     L16,     // ラ    440 Hz ピッ
   O4A,   L2,     L16,     // ラ    440 Hz ピッ
   O4A,   L2,     L16,     // ラ    440 Hz ピッ
   O5A ,  L1_DOT, L1_DOT,  // ラ    880 Hz ポーン
   HALT,  0
  };

未知との遭遇

UFOを呼び出すための曲?です。無限ループで再生します。
unsigned char michi[] = {
   120,     2,// tempo
   O5G,    L4,// 5ソ  
   O5A,    L4,// 5ラ  
   O5F,    L4,// 5ファ
   O4F,    L4,// 4ファ
   O5C,    L2,// 5C  
   REST,   L1,// 5C  
   LOOP,    0,
   HALT,    0
};

ウルトラマンのカラータイマー

ウルトラマンのカラータイマーを無限ループで再生します。
unsigned char ultraman[] = {
   150,    2 ,      // tempo
   O5B,    L32_DOT, // 75ms:ピッ音	高音シ 5B 988Hz

   O5E,    L8,      // 200ms   
   O5E,    L16_DOT, // 150ms  合計350ms:ぽー音	低音ミ 5E 659Hz

   REST,   L32,
   LOOP,   0

};

参考文献


[戻る]