【SMF】 ピッチベンドデータについて 【MIDI】


このところ、SMF をごちょごちょ弄ってるんですが、ピッチベンドデータの解説サイトが、思いのほか少なくちょっと苦労したので、備忘録。

よくあるデータ範囲の解説が、「-8192~0~8191」というヤツですが、実際にバイナリー・データを見てみると、「Ex(ピッチベンドイベント), 00, 00 ~ Ex, 00, 40 ~ Ex, 7F, 7F 」となってます。

どうやると、この2つのデータがイコールになるかというと、

例えばピッチベンド=0(センター)の場合、

Ex, 00(こっちが下位バイト), 40(こっちが上位バイト)で、上位をワード(16ビット)にキャストしてから、7回左シフトして、下位と足して、2000Hex 引いてやる

って感じでしょうか。
7回シフトするのは、SMF ではお馴染みの最上位ビットはイベントのパラメータでは使わないの法則に従っていると思われ。

というわけで、データ表現的には 0 ~ 2000Hex ~ 3FFFHex ということになるので、そこから 2000Hex を引いて10進表現すると -8192 ~ 0 ~ 8191 になるってわけ。

スポンサーサイト

コメント

非公開コメント