2

NSSliderハードウェア MIDI コントローラーでいくつかを移動する必要があります。ハードウェア カーソルをNSSlider(のサブクラス) に割り当てる MIDI 学習手順をプログラムしましたが、そこまでは問題ありません。内部では、入力されたコントロールと値に依存するMIDIReadProc移動を処理しますが、ハードウェア カーソルを移動すると、スライダーを 1 つ移動することができます。これは、カーソルの移動が他のカーソルを停止するようなものです。NSSlider

私の質問は、カーソルの移動を同時に処理するための最良の戦略は何ですか? 1. 別のスレッドで処理する必要がありますか? 2. 1つのFIFOデータ構造をMIDIPacket持ち、それを処理する必要がありMIDIReadProcますか(並行処理で分離されたプロセスを使用)?

私の英語でごめんなさい。ご清聴ありがとうございました。

を。

4

2 に答える 2

2

MIDIReadProcコールバック内でUI同期を実行しないでください。

このコールバックは優先度の高いリアルタイムスレッドから呼び出されるため、「長すぎる」可能性のある処理は行わないようにする必要があります。

あなたが言ったように、FIFOを使用して、それを別のスレッド(たとえばメインスレッド)で処理することができます。

于 2012-10-29T12:50:37.810 に答える
0

「NSSlider」を更新する解決策を見つけました。スライダーを移動してkvoパスのコードを更新し、バックグラウンドプロセスで区切られたスレッドを使用してスライダーのUIと値を更新します。その後、MIDIコントロールでキー値が等しい「NSMutableDictionary」を使用して、割り当てのあるUIコントロールと割り当てのないUIコントロールを分離し、MIDIReadProcで「NSSlider」をより速く識別しました。

注目してくれてありがとう。

于 2012-12-04T09:28:34.563 に答える