
オープンサウンドコントロール(OSC)は、サウンドシンセサイザー、コンピュータ、その他のマルチメディアデバイスを音楽演奏やショーコントロールなどの目的でネットワーク化するためのプロトコルです。OSCの利点には、相互運用性、正確性、柔軟性、強化された構成とドキュメント化などがあります。[1]欠点には、情報のコーディングが非効率的であること、組み込みプロセッサの負荷が増加すること、[2]標準化されたメッセージ/相互運用性の欠如などがあります。[3] [4] [5] 最初の仕様は2002年3月にリリースされました。
OSCはCNMATのAdrian FreedとMatt Wrightによって開発されたコンテンツフォーマットで、 XML、WDDX、JSONに匹敵する。[6]元々は楽器(特にシンセサイザーなどの電子楽器)、コンピュータ、その他のマルチメディア機器間で音楽演奏データ(ジェスチャ、パラメータ、ノートシーケンス)を共有することを目的としていた。OSCは、より高い解像度とより豊富なパラメータ空間が必要な場合に、1983年のMIDI規格の代替として使用されることもある。OSCメッセージはUDP/IPとイーサネットを使用してインターネット上およびローカルサブネット内で転送される。ジェスチャコントローラ間のOSCメッセージは通常、 SLIPプロトコルでラップされたUSBのシリアルエンドポイントを介して送信される。[要出典]
MIDIと比較したOSCの主な特徴は以下の通りである。[1]
OSCアプリケーションは数多く存在し、リアルタイムサウンド・メディア処理環境、Webインタラクションツール、ソフトウェアシンセサイザー、プログラミング言語、ハードウェアデバイスなどが含まれます。OSCは、音楽表現、ロボット工学、ビデオパフォーマンスインターフェース、分散音楽システム、プロセス間通信などの分野で幅広く利用されています。
マルチタッチなどのタンジブルインターフェースのTUIOコミュニティ標準は、 OSCをベースに構築されています。同様に、ジェスチャーを表現するGDIFシステムもOSCを統合しています。
OSC は実験的な音楽コントローラーで広く使用されており、いくつかのオープンソース製品や商用製品に組み込まれています。
Open Sound World(OSW)音楽プログラミング言語はOSCメッセージングを中心に設計されています。[7]
OSCは、LADSPA APIの進化形であるDSSIプラグインAPIの中核であり、最終的なGUIがプラグインホストへのメッセージングを介してプラグインコアと対話できるようにします。LADSPAとDSSIは、オーディオエフェクトとシンセサイザー専用のAPIです。
2007年に、コントローラ、シンセサイザー、ホスト間の通信のためのOSC内の標準化された名前空間SYNが提案されました。
OSC 実装の主なソフトウェアは次のとおりです。
OSC 実装の主なハードウェアは次のとおりです。
OSCメッセージは、アドレスパターン( など/oscillator/4/frequency)、型タグ文字列(float32,fi引数の後にint32引数が続く場合など)、および引数自体(時間タグを含む場合があります)で構成されます。[8]アドレスパターンは、 UnixファイルシステムのパスやURLを彷彿とさせる階層的な名前空間を形成し、サーバー内の「メソッド」を参照します。メソッドは、添付された引数で呼び出されます。型タグ文字列は、引数の型を簡潔に文字列表現したものです。引数は4バイト境界のバイナリ形式で表されます。サポートされているコア型は次のとおりです。
仕様にはメッセージの例が含まれています(ヌルパディングバイトは␀で表されます):/oscillator/4/frequency␀,f␀␀、その後に4バイトのfloat32表現440.0が続きます:0x43dc0000。[9]
メッセージはバンドルにまとめられ、バンドル自体もバンドルにまとめられるなど、様々な組み合わせが可能です。各バンドルにはタイムスタンプが含まれており、これによってサーバーがすぐに応答するか、将来のある時点で応答するかが決まります。[8]
アプリケーションでは、このコアセットの拡張機能が一般的に使用されています。最近では、コンパクトなブール型などの拡張機能の一部が、OSC 1.1の必須コア型に統合されました。
MIDIに対するOSCの利点は、主にインターネット接続性、データ型の解像度、そしてすべての接続を7ビットまたは14ビットのデータ型を持つ7ビットの数値として指定するのに比べて、シンボリックパスを指定するのが比較的容易であることです。[8] しかし、この人間が読みやすいという欠点は、送信効率が悪く、組み込みファームウェアによる解析が困難であるという点です。[2]
この仕様では、特定のOSCメソッドやOSCコンテナは定義されていません。すべてのメッセージは実装定義であり、サーバーごとに異なります。
{{cite web}}:欠落または空|url=(ヘルプ)
がMIDIに取って代わっていない理由の一つは、接続して再生する機能がないことです…OSCには、例えばシンセサイザーなどのインターフェース用の標準的な名前空間がありません。
はこの問題のスーパーセット、つまり意図的に無秩序な状態に陥っています。仕様の所有者は、OSCに制約を課すことを避けようと躍起になったため、ハードウェアがOSCに対応することがますます困難になっています。…さらに深刻なのは、相互運用性の問題です。OSCは、最も一般的な音楽交換でさえ定義された名前空間を欠いており、シーケンサーからシンセサイザーに標準的な方法でミドルCを送信することができません。
には新たな障害も生じます。まず、固定されたメッセージセットがないため、参加する各サーバーは、通信先のサーバーに送信できるメッセージを把握する必要があります。現在、OSC標準では、サーバーが応答するすべてのメッセージをプログラムで検出する手段が提供されていません。