Max(または実際にはMax for Live)でオーディオおよびMIDIアプリケーションを検討していますが、Javaは完全に快適なので、このようなものも魅力的です。マックスの経験はありますか?それは本当にコーディングをしない人々を対象としていますか、それとも、たとえばJavaでストレートコードを書くよりも、間抜けで見栄えの良いUIの方がはるかに効率的ですか?また、JavaでVSTプラグインを作成した人はいますか?そこでの経験を共有できますか?
1 に答える
Maxはデータフロー言語です。私は同じ著者によるPDに精通しています。
プログラミングスタイルとしてのデータフローの利点は、ほとんどのデータ依存関係が明示的であるということです。文字通り、サブルーチン間の接続を視覚的に追跡でき、通常、サブルーチン間の画面に線として表示されます。難しいのは、テキストコードのように一次元ではなく、レイアウトが2次元であるため、操作の順序が明確でないことです。
私は最近、ほとんどのオーディオ作業をスーパーコライダーで行っていますが、オーディオのアイデアを簡単にスケッチし、実用的なラフモデルを構築するには、pdが最適です。
ビジュアルデータフロー言語でのプログラミングの主な難しさは、操作の順序を理解することです。1つのアウトレットから複数の接続を作成することは可能ですが、明示的な[trigger]オブジェクトを作成して、これらの接続のどれが最初に実行されるかを制御することをお勧めします(アウトレットからの回線は、概念的にはサブルーチン呼び出しと同じです)。また、経験豊富なプログラマーが匿名パラメーターに慣れるのは困難です。パッチ適用ラインには名前がなく、それらを識別するために接続されているアウトレットとインレットがあります。
もう1つのヒントは、カプセル化を使用することです-テキスト言語ではライブラリまたはクラスファイルがあり、MaxまたはPDでは名前で外部パッチファイルをロードできます-いくつかのアウトレットとインレットを備えた小さなパッチを作成し、それを使用しますコピーして貼り付けるのではなく、他のパッチから複数の場所に(コードのブロックをコピーして貼り付けるのではなく関数を呼び出すのと同じように)。
[send]と[receive]はデータをグローバルに設定/取得するためのものであり、グローバルに伴う問題と同じ問題があります。これらが必要な場合の一般的な回避策は、現在のサブパッチに固有の一意の識別子を付加することです。$0トークンは次のように評価されます。オブジェクト名/パラメータ内の現在のサブパッチの一意のIDであり、この目的で使用されます。これは、スコープ変数をシミュレートします。
データフローでのデバッグは優れています。これは、アイテムのセットを周囲のパッチから切り離して個別に実行するのが非常に簡単であり、フローの一部のトレースをオンにするのは、コンセントにナンバーボックスを取り付けるのと同じくらい簡単だからです。