Windows Mobile 6のMIDI再生関数を試す | objective-cをちょい研究!ブログ

objective-cをちょい研究!ブログ

WILLCOMを卒業してiOS開発者に転身しました。。
コメント&トラックバック大歓迎です。

Windows Mobile 6のMIDIを再生する関数(waveOutWrite)を試したところ、アドエスで鳴るには鳴りました。
が、ノートオンとノートオフしか使えないみたい。音色や音量を指定してもまったく変化無し。
(ちなみにベロシティによる音量はできました)
電子音というか、まさに3和音だった502iシリーズのような音でした。
音が悪いって書かれている人がいたんですが、このことだったんですね(--;


一応参考までにメッセージ部分の解説です。


<ノートオン>
MidiMessage[j].DeltaTicks=0; '待ち時間
MidiMessage[j++].MidiMsg=0x7F3C90;

90…0chで音を鳴らす(91なら1ch、92なら2ch…)
3C…中央のドの音を鳴らす。1ずらすごとに半音上下します。
7F…ベロシティ。0~127で音量みたいなものです。


<ノートオフ>
MidiMessage[j].DeltaTicks=50;
MidiMessage[j++].MidiMsg=0x003C80;

80…0chの音を止める(91なら1ch、92なら2ch…)
3C…3Cの音を止める。ノートオンで指定した音階と同じものを指定する。
00…ノートオフベロシティ。とりあえず0でOKです。


#とりあえずは、テンキーで演奏する電子ピアノでも作ってみようかな。