Arts の設計はとても柔軟性があります。 これはつまり、他のアプリケーションから、シンセサイズサーバとして同時に利用できることを意味します。
ArtsBuilder は今は KDE の下で動いていますが、それが好きでない人も確かにいます。 実際、Arts はこの部分を簡単にポーティングできるように設計されています。 後で GNOME などの GUI を装備するためです。
このガイドはおもに ArtsBuilder と Arts シンセサイザとの対話について説明していますが、 Arts と交信する大小のアプリケーションを作成するのにも役に立つと思います。
では、GUI でしなければならない事は何でしょうか?
1 // You'll need to call orb->bind, mico code for that is: 2 3 CORBA::Object_var obj = 4 orb->bind ("IDL:Arts/Synthesizer:1.0", "inet:localhost:8888"); |
Synthesizer->createStructureDesc() を呼び出してください。ストラクチャ記述がえられます。
Synthesizer->getModuleCount() と Synthesizer->getModuleInfo() で、 ModuleInfo の記録を取得します。これらにはメンバー名が付いています。 モジュール名もその名前の一部になっています。それをユーザに知らせて、他の情報を使わないようにします。 将来のリリースではこれは残っているかどうか分かりません。
モジュール記述を作成したいときは StructureDesc に行き、それにモジュール情報を渡してください。 これはストラクチャの中に置かれます。
それを視覚的に表示することもできます。ストラクチャを保存する前に モジュールを正しい位置に (moveTo(x,y)) で移動してください。
モジュールは次のように表示されます。
このモジュールは入力ポート A B C, 出力ポート a, を持っています。名前は label です。 そして、モジュールの高さはグリッドスキームで1に、 幅は 1+max(inports.size(),outports.size()+1) になります。
モジュールは GUI によって重ならないように配置されます。
ModuleDesc->Ports でモジュールのパラメータを設定することができます。 ModuleDesc->Ports にはモジュールの持つPorts の参照があります。 connectTo, disconnect, などが呼び出せます。
ポートは値を与えられるか、接続されるか、または未接続のままかのどれかです。
Synthesizer->createStructure(StructureDesc) でそのストラクチャのインスタンスを作成します。 そして後でそれは統合されます。
id を保持しておいて、後でそれを freeStructure に渡します。
自分の StructureDesc は saveToList() で保存します。 その結果できる Arts::StringSeq の内容はテキストファイルに書きこみます。 その拡張子は .arts にします。
Arts::StringSeq への .arts ファイルのロード。あなたがすでに持っているStructureDesc に行き、 StructureDesc->loadFromList(theStringSeq) としてください。
Arts のインターフェイスは将来成長するでしょう。 しかし、少なくとも2つの GUI で相互通信に関する機能を高めておけば、 よい解決法を作るのにきっと役に立つでしょう。
理論的には、arts は他のオペレーティングシステムにも簡単に移植できます。 mico が目標のプラットフォームでコンパイルされていれば、シンセサイザもコンパイルできます。 Synth_PLAY のコードを少し変える必要があるでしょうが、大したことはありません。 そして、その OS または Java にもとからあるツールで新しい GUI を作成することができます。 これで、移植ができます。
もちろん aRts は上で説明したようなシンプルなままでいることはありません。 おそらく、最も重要なニュースは、ビジュアルモジュールができたことでしょう。 これは、GUI プロセスに ArtsServer CORBA インターフェイスを用意させることで内部的に実行されています。 メインシンセサイズサーバと同じように、 このインターフェイスによってストラクチャがインスタンス化できます。 ポイントは、GUI も同じモジュールで作成して、シンセサイズの「プレイグラウンド」と同じように ルールに従うことです。
これだと移植が難しくなり、また artsbuilder 全体をそのまま持ってきて、 Qt のコールを GTK-- のコールに置き換える移植が提案されることになります。 ともかく、移植しようとしたら、メインの artsbuilder のバージョンに統合できるようなかたちで成功させ、 双方に互換性ができるようにしてください。
他の方法でやりたいなら(ArtsServer のインターフェイスはそう難しくありませんが)、 あなた自身が GUI インターフェイスを調整して、Qt/KDE-Artsbuilder によって理解されるストラクチャが あなたのものでも理解できるように、またその逆もできるようにしてください。 おそらく、クロス・コンポーネントのモデルを開発することになります。 ArtsBuilder で動作する視覚的コンポーネントをあなたのソフトウェアで再利用できるように、 またその逆もできるようにしましょう。