JACK は、POSIX に準拠したオペレーティング システム用に書かれた、低遅延のオーディオ サーバーです。現在、Linux、OS X、ソラリス、フリーBSD、およびウィンドウズ用に存在しています。複数のクライアント アプリケーションをオーディオ デバイスに接続し、互いにオーディオを共有できます。クライアントは、通常のアプリケーションのように別々のプロセスとして実行することも、JACK サーバー内で "plugins" として実行することもできます。 JACK はプロのオーディオ作業のために最初から設計されており、その設計は、すべてのクライアントの同期実行と低遅延動作という 2 つの重要な領域に重点を置いています。 従来は、データを共有できるオーディオアプリケーションを作成することは不可能ではないにしても困難でした。さらに、オーディオインターフェイスハードウェアの設定と管理は、多くの場合、オーディオソフトウェアを書く最も複雑な側面の1つでした。 JACK は、次のようないくつかの処理を行う API を提供することで、このすべてを変更します。 1. オーディオインターフェイスハードウェアを画像から削除し、ソフトウェアのコア機能に集中できるようにするプログラマに高レベルの抽象化を提供します。 2. アプリケーションは、オーディオインターフェイスだけでなく、相互にオーディオデータを送受信することができます。アプリケーションが別のアプリケーションまたはオーディオインターフェイスからデータを送受信する方法に違いはありません。 PortAudio、アップルのCoreAudio、スタインバーグのVST、ASIOなどの他のいくつかのオーディオAPIの経験を持つプログラマーにとって、JACKはおなじみのモデルを提示します:あなたのプログラムは適切なタイミングで実行される"callback"関数を提供します。コールバックは、データの送受信、その他の信号処理タスクを行うことができます。あなたはオーディオインターフェイスやスレッドの管理を担当しておらず、"formatネゴシエーション":JACK内のすべてのオーディオデータは32ビット浮動小数点値として表されます。 UNIXの世界に根ざした経験を持つ人のために、JACKはやや馴染みのないAPIを提示します。ほとんどの Unix API は、"すべてが Unix で有名なファイルと抽象化によって生成された読み取り/書き込みモデルに基づいています。この設計の問題は、オーディオインターフェイスのリアルタイム性を考慮に入れることができず、より正確には、アプリケーション開発者にタスクのこの側面に十分な注意を払わせることができず、ということです。さらに、異なるプログラムがすべて同期的に実行されていない場合、アプリケーション間のオーディオルーティングを容易にすることはかなり困難になります。 プログラム内で JACK を使用するのは非常に簡単で、通常は次の要素だけで構成されます。 - JACK サーバに接続するために jack_client_open() を呼び出します。 - "ports" を登録して、アプリケーションとの間でデータを移動できるようにします。 - JACK サーバーによって適切なタイミングで呼び出される "process コールバック" を登録します。 - アプリケーションがデータの処理を開始する準備ができていることを JACK に伝えます。 JACKのインタフェースでできることはたくさんありますが、多くのアプリケーションでは、これが必要なすべてです。simple_client.cの例は完全な (単純な!入力ポートに到着した信号を出力ポートにコピーする JACK アプリケーション。同様に、inprocess.cは、JACK サーバー プロセス内で実行される内部クライアント "plugin" を記述する方法を示しています。
バージョン履歴
- バージョン 0.109.2 に転記 2008-01-30
いくつかの修正と更新 - バージョン 0.109.2 に転記 2008-01-30
プログラムの詳細
- カテゴリ: オーディオとマルチメディア > 他
- パブリッシャー: jackaudio.org/
- ライセンス: 無料
- 価格: N/A
- バージョン: 1.9.10
- プラットフォーム: linux