コントロールチェンジメッセージを MIDI シーケンサーに送信しようとしています。しかし、私はそれがどのように機能するのか本当に理解していません。たとえば、レガート ペダル (n°68) を使用するにはどうすればよいですか? または、コントローラー n°72 を使用してサウンドのリリース時間を変更したい場合は?
私はこのようにそれをやろうとしました:
MidiTimedMessage msg = new MidiTimedMessage();
uint releaseTimeMessage = (uint)MidiReleaseTime << 16 | (uint)72 << 8 | 0xB0;
msg.Msg = (int)releaseTimeMessage;
msg.SystemTime = sequencerService.Now;
sequencerService.PostMidiMessage(midiOutDevice, msg);
しかし、うまくいきません。ただし、これでサスティン ペダルを有効にしようとすると、同じことが機能します。
uint sustainPedalOn = (uint)127 << 16 | (uint)64 << 8 | 0xB0;
それで、サウンドリリースタイムなどのコントローラーを送信して使用する特定の方法があるかどうか疑問に思っていますか?noteOn メッセージを送信してから CC メッセージを送信する必要がありますか? 反対?私は両方を試しました...それを機能させるには、CCメッセージに加えて何か他のものを使用する必要がありますか?
編集:問題を解決しました。デフォルトの Windows シンセ (Microsoft GS Wavetable Synth) が CC メッセージの主要部分を処理しないため、動作しません。外部 MIDI インターフェイスで試してみましたが、うまく機能します。