ボイス・アサイナ (8)

今回は「シングル・アサイン」の場合を考えます。
シングル・アサインの場合には、同じ MIDI チャンネル、同じ音程の音に対しては、2つ以上のボイスを割り当てることはありません。
したがって、ノートオン・メッセージに対して、アクティブ・キューと、ホールド・キューの両方をサーチして、同じ音程の音がすでに発音中かどうかを調べる必要があります。
キュー内をサーチした結果、すでに発音中のボイスが見つかったら、いったんキューから外してノートオフ処理を行い、改めてアクティブ・キューの最後尾に追加してノートオン処理を行います。
キューに発音中のボイスがなければ、通常通りにフリー・キューからボイスを取り出して、ノートオン処理を行い、アクティブ・キューの最後尾に追加します。

続きを読む