金曜日, 8月 04, 2006

「サクラ」でマスターチューニング

MIDI規格には、MIDI音源にメーカー固有のデータを送るためにシステム・エクスクルーシブ・メッセージという規格がある。

このエクスクルーシブメッセージを使うことにより、音源をリセットしたり、エフェクトの種類を決めたり、そのエフェクトに用意されているパラメータの値を設定したりする等、その音源特有の機能を利用できる。

エクスクルーシブメッセージは、F0Hから始まりF7Hで終わる。F0Hの次にメーカーIDの情報があり、データの長さは決まっていない。

エクスクルーシブ メッセージ
http://www.pluto.dti.ne.jp/~daiki/Midi/AboutMidi_Exclusive.html

例えばRoland社の「GS音源をリセット」するシステムエクスクルーシブメッセージは次のようなものだ。

F0 41 10 42 12 40 00 7F 00 41 F7

「サクラ」にも、このシステム・エクスクルーシブ・メッセージをMIDI音源に送るためのコマンドが用意されている。

SysExを書き込む
http://oto.chu.jp/doc/command/44.htm

確かに「サクラ」の標準のIncludeファイル(stdmsg.h)を見ると、ResetGSコマンドは次のように定義されている。

Function ResetGS(){
 SysEx$=F0,41,(DeviceNumber),42,12,40,00,7F,00,41,F7;
 SoundType = 1;
}

ところで、MIDI音源によっては、このシステム・エクスクルーシブ・メッセージを送ることにより標準のピッチ(440Hz)を任意に変える(マスターチューニング)ことができるようになっている。「MIDI音源によっては・・・」というところがポイントで、要するに機種に依存している機能だ。

さて、マスターチューニング用のシステム・エクスクルーシブ・メッセージをどうやって作る(プログラムする)かだがこれが結構難しい。

ところが、こんな面倒なプログラミングの悩みを解決してくれるソフトを作ってくれた人がいる。

MIDIマスターチューナー
http://www1.plala.or.jp/tete009/software.html#MASTERTUNE

早速、このソフトを利用してマスターチューニング用のシステム・エクスクルーシブ・メッセージを作ってみた。



MIDI音源のピッチは標準で440Hzになっている。そこで、ピッチを430Hzにするシステム・エクスクルーシブ・メッセージを送り、実際に音が下がるかどうか確かめてみる。

//---------- ここから ----------

TR(1) l2 cdefgab>c<
SysEx$=F0,41,10,42,12,40,00,00,00,02,07,02,35,F7
TR(1) l2 cdefgab>c

//---------- ここまで ----------



ところで、WIndowに標準でついている内蔵MIDI音源は、このマスターチューニングの機能がない。sfzなどのVSTインストゥルメントも、VSTiの仕様によりシステム・エクスクルーシブ・メッセージを扱うことはできない。

そこで、手持ちのソフトGS音源、バーチャル・サウンド・キャンバス(VSC-88)で試してみることにする。

バーチャル・サウンド・キャンバス3
http://www.roland.co.jp/products/dtm/VSC-88H3.html
http://www.roland.co.jp/products/dtm/VSC-MP1.html



確かに指定したピッチで演奏される。これで、どんなピッチの楽器ともシンセを合奏させることができる。