メトロノーム

簡単そうなので久しぶりにMIDIで書いてみる。

GM規格ではチャンネル10はリズム(パーカッション)音色に固定され、各音階(ノート番号)が、それぞれのリズム音色に対応しています。

http://www.pluto.dti.ne.jp/~daiki/Midi/AboutMidi_Program.html

10=0xAなので、今回はノートオンは0x9A、ノートオフは0x8Aの決めうち。

リズム音色マップ

http://www.pluto.dti.ne.jp/~daiki/Midi/IL_ProgramNum.html
No. 音階 音色名 Hex
36 C2 Bass Drum1 0x24
37 C#2 Side Stick 0x25

1拍目にBass Drum1(=0x24)を使って、2?4拍目にSide Stick(=0x25)を使ってみる。

ヘッダ部
4D 54 68 64 00 00 00 06 #MThdヘッダ 6バイト
00 00 00 01 00 20       #トラック数1,四分音符の長さ0x20

トラック部
4D 54 72 6B 00 00 00 2B #MTrkトラック 0x2Bバイト
00 FF 51 03 08 CD 9B    #テンポ104 = 60*10^6/104 = 0x8CD9B
00 9A 24 40 10 8A 24 00 #1拍目
10 9A 25 40 10 8A 25 00 #2拍目
10 9A 25 40 10 8A 25 00 #3拍目
10 9A 25 40 10 8A 25 00 #4拍目
10 FF 2F 00             #トラック終了

とりあえずこんな感じかな。
まだ実際に試してないのでこれでいいのか不明。

デルタタイム。零しか待たないのは本当はやっちゃ駄目です。
簡単のためにこうしています。

http://www.geocities.jp/stdmidi/t0.html

いつも疑問に思うんだが、これってどのくらいダメなことなんだろ。

追記
0から数えるのでチャンネル10の場合は0xAじゃなくて9を指定する。
よって9A→99、8A→89に修正。