MIDI 120-poly NoteNo With Keyoff Stop Timer For Quartz Composer ― 2011年01月02日 21時13分44秒

MIDI 120-poly NoteNo With Keyoff Stop Timer For Quartz Composer
File Download
(改良のため一時公開停止)
Example Composition (movie)
File Download
(改良のため一時公開停止)
Quartz Composer でMIDIノートをポリフォニックで扱う(・・例えば、MIDI鍵盤を押すごとに異なるグラフィックが表示され、それらは同時に表示する事も可能にする・・)場合、CPU負荷は大きくなりますが、構造は単純です。
例えば、上記の Example Composition(movie の所をクリックすると動画が見られます)のように
・演奏に合わせて光の筋が流れ、強弱によって彩度が変化。
・88鍵ピアノ全域(それ以上)においてポリフォニック。
というようなコンポジション作る場合。
これは、ノートによって光の筋を表示する機構を、ポリフォニックの数だけ(この例では108)用意するのですが、当然ながら非常に負荷がかかります。
実際、最初に作った時は、このファイルを開いただけでファンが全開で回りだす程でした。
そこで、シンセサイザーのように、16ポリ程度の後着優先ポリフォニックにする方法を考えたのですが・・
30日から大晦日、元日の丸一日、考え続け、試し続けても、作れませんでした・・(無念)
常に最後に入力された16個のノートだけをソースとして機能させるには、QueueによるStructureデータの処理で作れますが、ノートオフを正しく検出する方法、つまり「あるノートのノートオフを、そのノートを処理中のパッチ(動的に入れ替わっている)へ正しく送る方法」を、どんなに考えても作り出せなかったのです。
複数の入力ポートを持ち、その中で「常に最後に入った値だけを出力する」というパッチがあれば、全て丸く収まるのですが・・。
いやその・・JavaScript なしで・・(笑)
(探した範囲では見つかりませんでしたが、きっと何らかの工夫をして解決している方はいるでしょうね)
仕方ないので考え方を変えて・・。
ノートオンが入るまでは、それぞれの機構を休ませておく方法を採る事にしました。
それならば、16ポリとかじゃなくて、全ノートポリにしておいても負荷はかなり押さえられます。
これがタイトルの「・・With Keyoff Stop Timer」です。
MIDIノートが入った瞬間に、それに対応した機構がオンになりますが、ノートオフしてから任意の秒数でオフになります。
秒数は、Keyoff StopTimer Duration をクリックしてインスペクタで設定できます。
MIDI 120-poly NoteNo With Keyoff Stop Timer For Quartz Composer
は、これを使って作品を作るためのパーツですから、動作確認用のMIDIノートモニター表示以外は、何も表示されません。
Example Composition
は、Quartz Composerをインストールしていて、MIDIキーボードなどMIDIノート情報を送信できる機器があれば上記の動画のような効果を確認できます。
あるいは、MIDIファイルを再生できる環境(フリーのソフトでもなんでも)があれば、IAC Driver のポート経由で、MIDIノートデータをQuartz Composerに送信できます。
Iterations を選択してインスペクタで数値を変更する事で、光の筋の持続時間を変更できます。
初期状態は15にしてあります。
多い程負荷がかかりますが、最近のMacなら20くらいにしても大丈夫でしょう。
5くらいまで落とすと判ると思いますが、これは短く細い長方形を連続して表示しています。
このコンポジションは、どの部分を1セクションとしてマクロに纏めるか、考えが決まらないまま
作業を進めたので、こんなふう(下記画像)になってしまいましたが、単に1オクターブづつ別のマクロにしていけば良かっただけでした。
それに気づいたときは、もう力つきかけていたので(笑)このまま公開しましたが、いずれ組み直すつもりです。



コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。