(57)【特許請求の範囲】
【請求項１】
オーディオ・システムにおいて動作可能なオーディオ関連デバイスの機能性を決定するシステムであって、
オーディオ関連デバイスから該オーディオ関連デバイスの複数の属性を受け取るように構成されているグラフィカル・ユーザ・インターフェースのコアと、
複数のプラグインであって、該複数のプラグインのそれぞれは、複数のオーディオ関連デバイスのうちの対応する１つに関連付けられており、該複数のプラグインのそれぞれは、格納されている所定のオーディオ関連デバイス特有情報を含み、該オーディオ関連デバイス特有情報は、該対応する関連付けられたオーディオ関連デバイスの機能性および制御能力を表し、該複数のプラグインのそれぞれは、該グラフィカル・ユーザ・インターフェースのコアからの該複数の属性を含むクエリに応答して、該複数の属性に基づいて、該オーディオ関連デバイスとの関連性が存在するかどうか決定するように構成されている、複数のプラグインと
を備え、
該複数のプラグインは、該オーディオ関連デバイスの機能性を示す該オーディオ関連デバイスのノード構造を要求し、該オーディオ関連デバイスから受け取るようにさらに構成されており、
該複数のプラグインのうち該オーディオ関連デバイスとの関連性を決定するプラグインは、該ノード構造に含まれている複数のコンポーネントが該プラグイン内にあらかじめ定義されているかどうかを決定するようにさらに構成されており、
該ノード構造に含まれているコンポーネントが該プラグイン内にあらかじめ定義されていない場合には、該グラフィカル・ユーザ・インターフェースのコアは、該コンポーネントを表す情報を求めて他のプラグインをサーチすること、または、該オーディオ関連デバイスと通信して、該プラグインのための、該オーディオ関連デバイスの該コンポーネントを表す情報を取り出すことを行うように該プラグインによって有効にされ、該プラグインは、該オーディオ・ノード構造が完全に定義され、該複数のプラグイン内に格納されるように、該コンポーネントを表す情報を格納するようにさらに構成されている、システム。
【請求項２】
前記グラフィカル・ユーザ・インターフェースのコアは、発見エンジンを備え、該発見エンジンは、前記オーディオ関連デバイスから、前記ノード構造の一部分だけに関連し、かつ、あらかじめ定義されていないさらなる情報を取り出すために前記複数のプラグインのいずれかの１つによって有効にされるように構成されている、請求項１に記載のシステム。
【請求項３】
前記複数のプラグインのそれぞれは、関連付けられた複数の属性の少なくとも１つのセットへのアクセスを含むように構成されており、該関連付けられた複数の属性の少なくとも１つのセットが前記受け取られた複数の属性に対応しているとき、該複数のプラグインのそれぞれは、前記グラフィカル・ユーザ・インターフェースのコアを介して、前記オーディオ関連デバイスと通信リンクを確立するように構成されている、請求項１に記載のシステム。
【請求項４】
前記複数のプラグインのそれぞれは、該複数のプラグインのそれぞれによって受け取られた前記複数の属性と比較される前もって格納されている複数の属性を含むそれぞれのライブラリ・ストレージ・モジュールをさらに備えている、請求項１に記載のシステム。
【請求項５】
前記複数のプラグインのそれぞれは、前記ノード構造を取り出すように構成されている取り出しエンジンと、前記複数のコンポーネントがあらかじめ定義されていることを分析し、確認するように構成されているクラス分析モジュールとをさらに備えている、請求項１に記載のシステム。
【請求項６】
仮想デバイスがあらかじめ定義されるように決定されるとき、オブジェクトおよび状態変数もまたあらかじめ定義されるように、前記ノード構造は、階層構造において、仮想デバイス、オブジェクトおよび状態変数を備えている、請求項１に記載のシステム。
【請求項７】
前記複数のプラグインのそれぞれは、前記ノード構造に含まれている前記複数のコンポーネントと比較される複数の所定のコンポーネントを含むそれぞれのライブラリ・ストレージ・モジュールをさらに備えている、請求項１に記載のシステム。
【請求項８】
オーディオ・システムにおいて動作可能なオーディオ関連デバイスの機能性を決定するシステムであって、
該オーディオ関連デバイスを記述している複数の属性を受け取るように構成されているオーディオ・ノード発見マネージャと、
複数の対応するオーディオ関連デバイスのうちの１つ以上に関連付けられた複数のプラグインであって、該複数のプラグインのそれぞれは、格納されている所定のオーディオ関連デバイス特有情報を含み、該オーディオ関連デバイス特有情報は、該対応する関連付けられたオーディオ関連デバイスの機能性および制御能力を表し、該複数のプラグインは、オーディオ・ノードのクエリに含まれている該受け取られた複数の属性がプラグインによって認識されるとき、該オーディオ・ノード発見マネージャからのオーディオ・ノードのクエリに応答するように構成されているプラグインを含む、複数のプラグインと
を備え、
該プラグインは、該オーディオ関連デバイスから該オーディオ関連デバイスのノード構造を取り出し、該ノード構造を、該プラグインによってアクセスされ得る格納されている所定のノード構造と比較するようにさらに構成されており、
該オーディオ・ノード発見マネージャは、あらかじめ格納されておらず、かつ、該プラグインによってアクセスされ得ない該ノード構造の一部に関する情報に対して該複数のプラグインの中に含まれている別のプラグインにクエリするために該プラグインによって有効にされるようにさらに構成されており、
該別のプラグインまたは該プラグインのいずれもが該ノード構造の該一部に関するあらかじめ格納されている情報に対するアクセスを有しない場合には、該プラグインは、該オーディオ関連デバイスに関するさらなるオーディオ関連情報を発見するように発見エンジンを有効にするようにさらに構成されており、
該プラグインは、該オーディオ関連デバイスの該ノード構造を完全に表すために、該所定のノード構造に関連づけて、該ノード構造の該一部に関する情報と該さらなるオーディ関連情報とを格納するようにさらに構成されている、システム。
【請求項９】
前記ノード発見マネージャは、新しいオーディオ関連デバイスが識別されるとき、属性のクエリを生成するように構成されているノード属性要求エンジンを備えている、請求項
８に記載のシステム。
【請求項１０】
前記プラグインは、取り出しエンジンおよびライブラリ・ストレージを備え、
該取り出しエンジンは、前記ノード構造に対して前記オーディオ関連デバイスにクエリし、かつ、該ノード構造に含まれている複数のコンポーネントの存在に対して該ライブラリ・ストレージをチェックするように構成されている、請求項８に記載のシステム。
【請求項１１】
前記ノード構造は、仮想デバイスを備え、前記取り出しエンジンは、前記ライブラリ・ストレージにおける該仮想デバイスの存在に対してチェックするように構成されている、請求項１０に記載のシステム。
【請求項１２】
前記取り出しエンジンは、前記仮想デバイスに含まれているオブジェクトに対して前記オーディオ関連デバイスにクエリし、それから、該仮想デバイスが前記ライブラリ・ストレージに存在し、かつ、構成可能であると識別されるとき、該ライブラリ・ストレージにおける該オブジェクトの存在をチェックするようにさらに構成されている、請求項１１に記載のシステム。
【請求項１３】
前記プラグインは、該プラグインにおいてあらかめじ格納されておらず、かつ、アクセスされ得ない前記ノード構造の一部分だけに対して前記オーディオ関連デバイスのクエリを有効にするようにさらに構成されている、請求項８に記載のシステム。
【請求項１４】
前記ノード構造は、複数の仮想デバイスのリストを備え、前記プラグインは、該リストに含まれている該複数の仮想デバイスのそれぞれが既知であるかどうかを決定し、未知である該複数の仮想デバイスのそれぞれに対して前記オーディオ関連デバイスとの通信をさらに有効にするようにさらに構成されている、請求項８に記載のシステム。
【請求項１５】
前記プラグインが、前記オーディオ関連デバイスへの通信パスの知識を必要としないように、該オーディオ関連デバイスへ別々の独立した通信パスを確立することによって前記プラグインと該オーディオ関連デバイスとの間の通信を確立するように構成されているノード通信インスタンシエータをさらに備えている、請求項８に記載のシステム。
【請求項１６】
前記複数のプラグインのそれぞれは、前記取り出されたノード構造に含まれている前記複数のコンポーネントと、該複数のコンポーネントそれぞれが既知であるか否かの表示とを格納するように構成されているノード構造ストレージをさらに備えている、請求項８に記載のシステム。
【請求項１７】
オーディオ・システムにおいて動作可能なオーディオ関連デバイスの機能性を発見するシステムであって、
複数の対応するオーディオ関連デバイスのうちの１つ以上に関連付けられた複数のプラグインであって、該複数のプラグインのそれぞれは、格納されている所定のオーディオ関連デバイス特有情報を含み、該オーディオ関連デバイス特有情報は、該対応する関連付けられたオーディオ関連デバイスの機能性および制御能力を表し、該複数のプラグインは、取り出しエンジン、クラス分析モジュールおよびライブラリ・ストレージを備えるプラグインを含む、複数のプラグインを備え、
該取り出しエンジンは、該オーディオ関連デバイスの属性を含むクエリに応答して、該オーディオ関連デバイス内に含まれているオーディオ関連デバイスのノード構造を取り出すように有効にされ、該ノード構造は、複数の仮想デバイスを含み、
該クラス分析モジュールは、該取り出されたノード構造を、該ライブラリ・ストレージに格納されている所定の複数の仮想デバイスと比較するように構成されており、
該取り出しエンジンは、該取り出された複数の仮想デバイスのいずれか１つが該プラグインの該ライブラリ・ストレージに格納されていない場合には、該複数のプラグインに含まれている別のプラグインの該ライブラリ・ストレージをサーチするように該プラグイン・サーチ・エンジンを有効にすることによって、および、該プラグインまたは該別のプラグインの該ライブラリ・ストレージに格納されていない該取り出された複数の仮想デバイスの該さらなるコンポーネントを発見するように該発見エンジンを有効にすることによって、該所定の複数の仮想デバイスに対応しない該オーディオ関連デバイスから取り出された該複数の仮想デバイスのさらなる複数のコンポーネントの発見を有効にするように構成されており、
該プラグインは、該ライブラリ・ストレージに格納された該所定の仮想デバイスに対応する該オーディオ関連デバイスから該仮想デバイスが取り出されるように、該所定の仮想デバイスに関連づけて、該プラグイン・サーチ・エンジンまたは該発見エンジンによって識別される該さらなるコンポーネントを格納するように構成されている、システム。
【請求項１８】
前記所定の複数の仮想デバイスは、オブジェクトまたは状態変数、もしくはあらかじめ決定されているそれらの組み合わせの少なくとも１つを備えている、請求項１７に記載のシステム。
【請求項１９】
前記取り出しエンジンは、前記オーディオ・ノード構造に含まれている前記複数の仮想デバイスであって、前記所定の仮想デバイスに対応する該複数の仮想デバイスの表示を格納するようにさらに構成されている、請求項１７に記載システム。
【請求項２０】
オーディオ・システムにおいて動作可能であるオーディオ関連デバイスの機能性の発見のための命令を実行するように動作可能なパフォーマンス機器マネージャであって、
メモリデバイスと、
該メモリデバイスに格納されている命令であって、該オーディオ関連デバイスの複数の属性を受け取るための命令と、
該メモリデバイスに格納されており、かつ、該複数の属性を含むクエリを生成し、提供するための命令であって、該クエリは、対応する複数のオーディオ関連デバイスのうちの１つ以上に関連付けられた複数のプラグインのうちの少なくとも１つに提供され、該複数のプラグインのそれぞれは、格納されている所定のオーディオ関連デバイス特有情報を含み、該オーディオ関連デバイス特有情報は、該対応するオーディオ関連デバイスの機能性および制御能力を表す、命令と、
該メモリデバイスに格納されている命令であって、該複数のプラグイン中に含まれているプラグインが、該クエリに含まれている該受け取られた複数の属性が該プラグインによって認識されるとき、該クエリに応答することを有効にするための命令と、
該プラグインに対して、該メモリデバイスに格納されている命令であって、該クエリに応答して、該オーディオ関連デバイスのノード構造を取り出すための命令と、
該メモリデバイスに格納されている命令であって、該オーディオ関連デバイスの該機能性を示している複数の仮想デバイスのリストを含む該ノード構造を受け取るための命令と、
該メモリデバイスに格納されている命令であって、定義されていない該複数の仮想デバイスの該リスト上で該複数の仮想デバイスのいずれかを識別するための命令と、
該メモリデバイスに格納されている命令であって、該定義されていない複数の仮想デバイスに関連付けられた複数の属性のそれぞれ、および、該定義されていない複数の仮想デバイスのそれぞれに含まれているオブジェクトのリスト、状態変数のリスト、もしくはそれらの組み合わせの少なくとも１つを取り出すための命令と、
該メモリデバイスに格納されており、かつ、該複数の属性およびあらかじめ定義されている該複数の仮想デバイスの表示を格納するための命令であって、該複数の属性は、該あらかじめ定義されていない仮想デバイスが定義されるように、該あらかじめ定義されていない仮想デバイスのオブジェクトまたは状態変数、もしくはそれらの組み合わせを記述する、命令と
を含む、パフォーマンス機器マネージャ。
【請求項２１】
前記複数の仮想デバイスのそれぞれを識別するように前記メモリデバイスに格納されている命令は、所定のオブジェクトまたは所定の変数状態、もしくはそれらの組み合わせの少なくとも１つを含む格納されている所定の仮想デバイスに対応する前記リストアップされた複数の仮想デバイスのそれぞれを示すように該メモリデバイスに格納されている命令を含む、請求項２０に記載のパフォーマンス機器マネージャ。
【請求項２２】
オーディオ・システムにおいて動作可能な複数のオーディオ関連デバイスの中に含まれているオーディオ関連デバイスの機能性を発見する方法であって、該方法は、
該オーディオ関連デバイスを記述している複数の属性を受け取ることと、
該オーディオ関連デバイスのうちの１つ以上にそれぞれ関連付けられた複数のプラグインの中から、該オーディオ関連デバイスを記述している複数の属性に対応する所定の複数の属性を有するプラグインを有効にすることと、
該有効にされたプラグインを用いて、該オーディオ関連デバイスの機能性を記述しているノード構造に対して該オーディオ関連デバイスにクエリすることと、
該ノード構造に含まれている既知のコンポーネントを識別することとであって、該既知のコンポーネントは、該有効にされたプラグインに含まれている所定のプラグインに対応する、ことと、
該ノード構造の対応しないコンポーネントに対して該複数のプラグインの中から別のプラグインにクエリすることであって、該対応しないコンポーネントは未知である、ことと、
該ノード構造の任意のコンポーネントの複数の属性に対して該オーディオ関連デバイスにクエリするように発見エンジンを有効にすることであって、該複数の属性は、該プラグインおよび該別のプラグインによって未知であり、該既知であるコンポーネントに関連して、該ノード構造の未知である該対応しないコンポーネントと、該ノード構造の未知である任意のコンポーネントの該複数の属性とは、該ノード構造が該プラグインによって知られることを可能にする、ことと
を包含する、方法。
【請求項２３】
前記発見エンジンおよび既知である前記コンポーネントの表示によって発見される前記ノード構造の属性を格納することをさらに包含する、請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（１．技術分野）
本発明は、オーディオ・システムに関し、より詳細には、オーディオ関連機器の機能性を発見するためのシステムに関する。
【背景技術】
【０００２】
（２．関連技術）
オーディオ信号を増幅するためにオーディオ・システムを使用することは周知である。一般的に、オーディオ・システムは、増幅器を用いてオーディオ信号を増幅し、１つ以上のスピーカを駆動するために動作する。このようなオーディオ・システムは、小売衣料品店で用いられるといった２つ、３つのコンポーネントを有する比較的シンプルな構成から、コンサートホールに用いられるといった大きく複雑なシステムに及び得る。
【０００３】
オーディオ・システムの構成は通常、オーディオ・システムを作り上げるデバイスの物理的配置および配線を伴う。加えて、デバイスのいくつか（例えば、増幅器およびミキサー）は、一般的に、ユーザによる構成可能な設定を含む。この設定は、所望のオーディオ・システムの性能を実現するためにユーザの好みで構成され得る。オーディオ・システムのサイズおよび複雑さが増すにつれて、配線および設定の数もまた増加する。加えて、オーディオ・システムにおけるデバイスは、地理的に、より分散し得る。従って、システムの操作、メンテナンス、およびトラブルシューティングは、より困難になる。このことは、特に、ツアー中の音楽グループのためのサウンドシステムといった、さまざまな構成で繰り返し分解され、再構築されるオーディオ・システムに当てはまる。
【０００４】
サウンドシステムにおける複数のデバイスの間であらかじめ設定された通信が可能である。加えて、あらかじめ設定されたサイト特定のユーザ・インターフェースがある、あらかじめ特定されたサイト特定のデバイスと通信するように含まれ得る。この通信およびユーザ・インターフェースは、すべてあらかじめ定義されているので、古いデバイスの新しいデバイスへの置換、および／またはシステムにおける新しいデバイスの追加は、ユーザ・インターフェースおよび新しいデバイスの追加的なサイト特定の構成を必要とする。
【０００５】
いくつかのシステムにおいては、新しいデバイスが追加されたとき、デバイスのすべてのアスペクトを記述する情報が、新しいデバイスから抽出され、ユーザ・インターフェースをアップデートするように提供され得る。しかしながら、これらのシステムでは、比較的大きく複雑なファイル転送が、ユーザ・インターフェースを手動で構成、または最初に構成するために十分な情報を提供するために必要である。このようなファイルの転送は、大きな労働力を要し、相当なコンピュータおよびシステムの専門知識を必要とし、ファイルがネットワーク上で送達されるとき、システム通信の帯域幅に好ましくない影響を及ぼし得る。加えて、デバイスは、ユーザ・インターフェースと互換性のあるフォーマットで、情報を作成および／または提供するために現場の作業者により手動で構成されることを必要とするかもしれない。さらに、ユーザ・インターフェースは、送達された情報を受け取り、かつ、処理し得るために現場の作業者により手動で構成されることを必要とするかもしれない。
【発明の開示】
【課題を解決するための手段】
【０００６】
（要約）  
(項目１）  
オーディオ・システムにおいて動作可能なオーディオの機能性を決定するためのシステムであって、
オーディオ関連デバイスから複数のクラス属性を受け取るように構成されているグラフィカル・ユーザ・インターフェースのコアと、
複数のプラグインであって、上記複数のプラグインのそれぞれは、上記クラス属性に基づいて、オーディオ関連デバイスとの関連性が存在するかどうか決定するように構成されている、複数のプラグインと
を備え、
関連性が存在するとき、上記プラグインは、上記オーディオ関連デバイスの機能性を示しているオーディオ・ノード構造を受け取り、上記オーディオ・ノード構造に含まれている複数のコンポーネントがあらかじめ定義されているかどうかを決定するようにさらに構成されている、システム。
【０００７】
(項目２）
関連性が存在する上記プラグインの１つは、上記コンポーネントの１つがあらかじめ定義されていないとき、上記グラフィカル・ユーザ・インターフェースのコアは、他のプラグインにクエリするようにさらに構成されている、項目１に記載のシステム。
【０００８】
(項目３）
上記グラフィカル・ユーザ・インターフェースのコアは、上記オーディオ関連デバイスから、あらかじめ定義されていない上記オーディオ・ノード構造の一部分だけに関連したさらなる情報を取り出すためにプラグインのいずれかの１つによって有効にされるように構成されている発見エンジンを備えた、項目１に記載のシステム。
【０００９】
(項目４）
上記プラグインのそれぞれは、関連したクラス属性の少なくとも１つのセットを含むように構成されており、クラス属性の上記関連した少なくとも１つが上記受け取られたクラス属性に対応しているとき、上記プラグインのそれぞれは、上記グラフィカル・ユーザ・インターフェースのコアを介して、上記オーディオ関連デバイスと通信リンクを確立するように構成されている、項目１に記載のシステム。
【００１０】
(項目５）
上記プラグインのそれぞれは、上記受け取られたクラス属性と比較され得る前もって格納されている複数のクラス属性を含むそれぞれのライブラリ・ストレージ・モジュールをさらに備えた、項目１に記載のシステム。
【００１１】
(項目６）
上記プラグインのそれぞれは、上記オーディオ・ノード構造を取り出すように構成されている取り出しエンジンをさらに備え、クラス分析モジュールは、分析し、上記コンポーネントがあらかじめ定義されていることを確認するように構成されている、項目１に記載のシステム。
【００１２】
(項目７）
仮想デバイスがあらかじめ定義されるように決定されるとき、オブジェクトおよび状態変数もまたあらかじめ定義されるように、上記オーディオ・ノード構造は、階層構造において、仮想デバイス、オブジェクトおよび状態変数を備えた、項目１に記載のシステム。
【００１３】
(項目８）
上記プラグインのそれぞれは、上記オーディオ・ノード構造に含まれている上記コンポーネントと比較され得る複数の所定のコンポーネントを含むそれぞれのライブラリ・ストレージ・モジュールをさらに備えた、項目１に記載のシステム。
【００１４】
(項目９）
オーディオ・システムにおいて動作可能なオーディオの機能性を決定するためのシステムであって、
上記オーディオ関連デバイスを記述しているクラス属性を受け取るように構成されているオーディオ・ノード発見マネージャと、
オーディオ・ノードのクエリに含まれている上記受け取られたクラス属性が、プラグインによって認識されるとき、上記オーディオ・ノード発見マネージャからのオーディオ・ノードのクエリに応答するように構成されているプラグインと
を備え、
上記プラブインは、上記オーディオ関連デバイスからオーディオ・ノード構造を取り出し、上記オーディオ・ノード構造を、上記プラグインによってアクセスされ得る格納されている所定のオーディオ・ノード構造と比較するようにさらに構成されており、
上記オーディオ・ノード発見マネージャは、あらかじめ格納されておらず、かつ、上記プラグインによってアクセスされ得ない上記オーディオ・ノード構造の一部に対して別のプラグインにクエリするために有効にされるようにさらに構成されている、システム。
【００１５】
(項目１０）
上記別のプラグイン、または上記プラグインのどちらもが、上記オーディオ・ノード構造の一部分に関する前もって格納されている情報にアクセスを有しないとき、上記プラグインは、上記オーディオ関連デバイスに関してさらなるオーディオ関連情報を発見するように発見エンジンを有効にするようにさらに構成されている、項目９に記載のシステム。
【００１６】
(項目１１）
新しいオーディオ関連デバイスが識別されるとき、上記ノード発見マネージャは、属性のクエリを生成するように構成されているノード属性要求エンジンを備えた、項目９に記載のシステム。
【００１７】
(項目１２）
上記プラグインは、取り出しエンジンおよびライブラリ・ストレージを備え、
上記取り出しエンジンは、上記オーディオ・ノード構造に対して上記オーディオ関連デバイスにクエリし、かつ、上記オーディオ・ノード構造に含まれているコンポーネントの存在に対して上記ライブラリ・ストレージをチェックするように構成されている、項目９に記載のシステム。
【００１８】
(項目１３）
上記オーディオ・ノード構造は、仮想デバイスを備え、上記取り出しエンジンは、上記ライブラリ・ストレージにおける上記仮想デバイスの存在に対してチェックするように構成されている、項目１２に記載のシステム。
【００１９】
(項目１４）
上記取り出しエンジンは、上記仮想デバイスに含まれているオブジェクトに対して上記オーディオ関連デバイスにクエリし、それから、上記仮想デバイスが上記ライブラリ・ストレージに存在し、構成可能であると識別されるとき、上記ライブラリ・ストレージにおける上記オブジェクトの存在をチェックするようにさらに構成されている、項目１３に記載のシステム。
【００２０】
(項目１５）
上記プラグインは、上記プラグインにおいてあらかめじ格納されておらず、かつ、アクセスされ得ない上記オーディオ・ノード構造の一部分だけに対して上記オーディオ関連デバイスのクエリを有効にするようにさらに構成されている、項目９に記載のシステム。
【００２１】
(項目１６）
上記オーディオ・ノード構造は、複数の仮想デバイスのリストを備え、上記プラグインは、上記リストに含まれている上記仮想デバイスのそれぞれが既知であるかどうかを決定し、未知である上記仮想デバイスのそれぞれに対して上記オーディオ関連デバイスとの通信をさらに有効にするようにさらに構成されている、項目９に記載のシステム。
【００２２】
(項目１７）
上記プラグインが、上記オーディオ関連デバイスへの通信パスの知識を必要としないように、上記オーディオ関連デバイスへ別々の独立した通信パスを確立することによって上記プラグインと上記オーディオ関連デバイスとの間の通信を確立するように構成されているノード通信インスタンシエータをさらに備えた、項目９に記載のシステム。
【００２３】
(項目１８）
上記プラグインのそれぞれは、上記取り出されたノード構造に含まれている上記コンポーネントと、上記コンポーネントそれぞれが既知であるか否かの表示とを格納するように構成されているノード構造ストレージをさらに備えた、項目９に記載のシステム。
【００２４】
(項目１９）
オーディオ・システムにおいて動作可能なオーディオの機能性を発見するためのシステムであって、
取り出しエンジン、クラス属性モジュールおよびライブラリ・ストレージを含むプラグインを備え、
上記取り出しエンジンは、対応するオーディオ関連デバイスからの複数の仮想デバイスを含むオーディオ・ノード構造を取り出すように有効にされ、
上記クラス分析モジュールは、上記取り出されたオーディオ・ノード構造を、上記ライブラリ・ストレージに格納されている所定の複数の仮想デバイスと比較するように構成され、
上記取り出しエンジンは、上記所定の仮想デバイスに対応しない上記オーディオ関連デバイスから取り出された上記仮想デバイスのさらなるコンポーネントの発見を有効にするように構成されている、システム。
【００２５】
(項目２０）
上記取り出された仮想デバイスのいずれかの１つが上記プラグインの上記ライブラリ・ストレージに格納されていないとき、上記取り出しエンジンによって、別のプラグインの上記ライブラリ・ストレージにクエリするために有効にされるように構成されているプラグイン・サーチ・エンジンをさらに備えた、項目１９に記載のシステム。
【００２６】
(項目２１）
上記取り出しエンジンによって、上記プラグイン、または上記別のプラグインの上記ライブラリ・ストレージに格納されていない上記仮想デバイスだけに関するさらなる情報を発見するために有効にされるように構成された発見エンジンをさらに備えた、項目２０に記載のシステム。
【００２７】
(項目２２）
上記仮想デバイスは、上記仮想デバイスを記述している複数の属性およびオブジェクトまたは状態変数、もしくは上記発見エンジンによって取り出されたそれらの組み合わせの少なくとも１つを備えた、項目２１に記載のシステム。
【００２８】
(項目２３）
上記所定の仮想デバイスは、オブジェクトまたは状態変数、もしくはあらかじめ決定されているそれらの組み合わせの少なくとも１つを備えた、項目１９に記載のシステム。
【００２９】
(項目２４）
上記取り出しエンジンは、上記オーディオ・ノード構造に含まれている上記仮想デバイスであって、上記所定の仮想デバイスに対応する上記仮想デバイスの表示を格納するさらに構成されている項目１９に記載システム。
【００３０】
(項目２５）
オーディオ・システムにおいて動作可能なオーディオ関連デバイスの機能性を発見するための方法であって、
オーディオ関連デバイスから受けとられ、上記オーディオ関連デバイスを示している属性に基づいて、上記オーディオ関連デバイスに関連したプラグインを識別することとであって、上記プラグインは、上記オーディオ・デバイスから、上記オーディオ関連デバイスのオーディオ関連の機能性を表しているオーディオ・ノード構造を取り出す、ことと、
上記オーディオ・ノード構造に含まれている複数のコンポーネントのそれぞれは、上記プラグインによって既知であるかを決定することと、
既知でないとき、未知のコンポーネントに対して別のプラグインにクエリすることと
を包含する方法。
【００３１】
(項目２６）
プラグインを識別することは、上記オーディオ関連デバイスを示しているクラス属性に対して上記オーディオ関連デバイスにクエリすることを包含する、項目２５に記載の方法。
【００３２】
(項目２７）
上記プラグインおよび上記別のプラグインによって未知である上記オーディオ・ノード構造のいずれかのコンポーネントを発見するために上記オーディオ関連デバイスにクエリするように発見エンジンを有効にすることをさらに包含する、項目２５に記載の方法。
【００３３】
(項目２８）
上記プラグインが、上記オーディオ関連デバイスからオーディオ・ノード構造を取り出すことは、上記オーディオ関連デバイスにおける機能ユニットを表している仮想デバイスのリストを受け取ることと、上記プラグインに格納されている所定の仮想デバイスに対応する上記仮想デバイスを識別することを包含する、項目２５に記載の方法。
【００３４】
(項目２９）
別のプラグインにクエリすることは、プラグインが、上記他のプラグインにクエリするように、上記プラグインのすべてと通信しているノード発見マネージャを有効にすることを包含する、項目２５に記載の方法。
【００３５】
(項目３０）
オーディオ・システムにおいて動作可能であるオーディオ関連デバイスの機能性の発見のための命令を実行するように動作可能なパフォーマンス機器マネージャであって、
メモリデバイスと、
上記メモリデバイスに格納されている命令であって、オーディオ関連デバイスの機能性を示している仮想デバイスのリストを受け取る、命令と、
上記メモリデバイスに格納されている命令であって、仮想デバイスの上記リスト上の定義されていない上記仮想デバイスのいずれかを識別する、命令と、
上記メモリデバイスに格納されている命令であって、上記定義されていない仮想デバイスの関連した属性のそれぞれ、および上記定義されていない仮想デバイスのそれぞれに含まれているオブジェクトのリスト、状態変数のリスト、もしくはそれらの組み合わせの少なくとも１つを取り出す、命令と、
上記メモリデバイスに格納されている命令であって、上記属性およびあらかじめ決定されている仮想デバイスの表示を格納する、命令と
を含む、パフォーマンス機器マネージャ。
【００３６】
(項目３１）
上記仮想デバイスのそれぞれを識別するように上記メモリデバイスに格納されている命令は、所定のオブジェクトまたは所定の変数状態、もしくはそれらの組み合わせの少なくとも１つを含む格納されている所定の仮想デバイスに対応する上記リストアップされた仮想デバイスのそれぞれを示すように上記メモリデバイスに格納されている命令を含む、項目３０に記載のパフォーマンス機器マネージャ。
【００３７】
(項目３２）
オーディオ・システムにおいて動作可能なオーディオ関連デバイスの機能性を発見するための方法であって、
オーディオ関連デバイスを記述しているクラス属性に対応する所定のクラス属性を有するプラグインを有効にすることと、
上記有効にされたプラグインを用いて、上記オーディオ・ノード構造の機能性を記述しているオーディオ・ノード構造に対して上記オーディオ関連デバイスにクエリすることと、
上記オーディオ・ノード構造に含まれている既知のコンポーネントを識別することとであって、上記既知のコンポーネントは、上記有効にされたプラグインに含まれている所定のプラグインに対応する、ことと、
上記オーディオ・ノード構造の対応しないコンポーネントに対して別のプラグインにクエリすることであって、上記対応しないコンポーネントは未知である、ことと、
上記オーディオ・ノード構造の任意のコンポーネントの属性に対して上記オーディオ関連デバイスにクエリするように発見エンジンを有効にすることとであって、上記属性は、上記プラグインおよび上記別のプラグインによって未知である、ことと
を包含する方法。
【００３８】
(項目３３）
上記発見エンジンおよび既知である上記コンポーネントの表示によって発見される上記オーディオ・ノード構造の属性を格納することをさらに包含する、項目３２に記載の方法。
【００３９】
本発明は、オーディオ関連機器の管理および制御のためのシステムを提供する。このシステムは、オーディオ・システムにおけるオーディオ関連機器の全てを管理、モニタ、および制御する能力を提供する共通のアーキテクチャである。従って、マイクロフォンから増幅器、ミキサー、照明装置にわたるすべのものが、このシステムによってアクセスされ、制御され得る。
【００４０】
このシステムは、さまざまな物理ネットワークおよび通信プラットフォームのいずれかを用いて、種々の複雑性を有する複数の異なるオーディオ関連デバイスをシームレスに統合するネットワーク独立プロトコル（ｎｅｔｗｏｒｋ  ｉｎｄｅｐｅｎｄｅｎｔ  ｐｒｏｔｏｃｏｌ）を提供する。加えて、このシステムは、まだ知られていない特定のオーディオ関連デバイスのアスペクトを発見するメッセージング機能を提供することによって、システム内のオーディオ関連デバイスのアップグレード、変更、追加が可能である。このメッセー機能はまた、選択されたオーディオ関連デバイス間でオーディオデータおよび関連情報が効率的に、および最小のネットワーク・トラフィックで送達されることを可能にする。
【００４１】
１つ以上のパフォーマンス機器マネージャ（「ＰＥＭ」）がこのシステムに含まれる。パフォーマンス機器マネージャは、全オーディオ・システムのコントロール・パネル・ビューを取り出しおよび／または生成する。加えて、パフォーマンス機器マネージャは、オーディオ・システム内の各特定のデバイスに対してコントロール・パネル・ビューを取り出しおよび／または生成し得る。コントロール・パネル・ビューは、オーディオ・システム内のオーディオ関連デバイスの協調された管理、制御およびモニタを可能にする。このシステム内で用いられるに通信プロトコルは、デバイス・ツー・デバイス通信と同様に、パフォーマンス機器マネージャとオーディオ関連デバイス間の標準通信を可能にする。
【００４２】
このシステムは、オーディオ・システムに含まれているオーディオ関連デバイスの機能性を発見することを提供する。ＰＥＭは、グラフィカル・ユーザ・インターフェース（“ＧＵＩ”）のコアおよび複数のプラグインを含み得る。ＧＵＩのコアは、オーディオ関連デバイスから複数のクラス属性を受け取り得る。クラス属性は、プラグインのいずれか１つがオーディオ関連デバイスに関連しているかどうか決定するためにフラグインによって分析され得る。オーディオ関連デバイスに関連付けられるものとして識別されたプラグインは、オーディオ関連デバイスからオーディオ・ノード構造を受け取り得る。オーディオード構造は、オーディオ関連デバイスの機能性の少なくとも一部分を表し得る。他のプラグインが、オーディオ関連デバイスに関連したプラグインよって、未知であるオーディオ・ノード構造の一部分に対してクエリされ得る。加えて、オーディオ・ノード構造の一部分が未知であるとき、オーディオ関連デバイスに関連したプラグインおよび他のプラグインによって、オーディオ関連デバイスの機能性のさらなる発見が行われ得る。従って、ＰＥＭとオーディオ関連デバイスとの間の通信は、望ましくは、ＰＥＭによってまだ既知でないオーディオ・ノード構造一部分だけに制限される。加えて、オーディオ関連デバイスは、以前未知であったときでえ、ＰＥＭによって自動的に発見され得る。
【００４３】
オーディオ関連デバイスから取得されるオーディオ・ノード構造の量はまた、望ましくは、ＰＥＭが動作しているデバイスの動作能力に基づいて、制限され得る。ＰＥＭが動作している処理能力、表示能力、入力／出力、ネットワーク帯域幅等が、比較的制限されるとき、オーティオ・ノード構造の比較的小さい部分が取得され、処理され得る。逆に言えば、相当な量の動作能力を有するＰＥＭがデバイス上で、動作しているとき、全ノード構造が取得され、処理され得る。
【００４４】
本発明の他のシステム、方法、特徴および利点が、以下の図面および詳細な説明を検討することにより当業者に明らかになる。すべてのこのような追加的なシステム、方法、特徴および利点がこの記載に含まれ、本発明の範囲内であることが意図される。
【発明を実施するための最良の形態】
【００４５】
（好ましい実施形態の詳細な説明）
（Ｉ．システム）
図１は、コンサートホールといった場所でのミュージックコンサートといった公演のために構成された複数のオーディオ関連デバイスを有するオーディオ・システム１００の例である。他の例において、オーディオ・システム１００は、例えば、遊園地に恒久的に備え付けられたサウンドシステム、および例えばスタジアムのロックコンサートのために一時的に備え付けられたサウンドシステムを含む他の任意のタイプの場所での他の任意のタイプの公演のために構成され得る。この例のオーディオ・システム１００に含まれるオーディオ関連デバイスは、ステージ１０２、オーディエンスエリア１０４、第１のルーム１０６および第２のルーム１０８を含む場所に備え付けられたものとして表さられる。
【００４６】
オーディオ・システム１００は、複数のスピーカ１１６から可聴音を生成するために処理されるオーディオ信号を提供するギター１１２およびマイクロオフォン１１４を含む。他の例において、オーディオ信号は、他の任意のタイプのデバイスによって生成され得る。ギター１１２によって生成されるオーディオ信号は、オーディオ信号プリプロセッサ１１８によって処理され、オーディオ・システム１００にまた含まれるオーディオ・ネットワーク１２０に提供され得る。オーディオ・ネットワーク１２０は、オーディオ信号およびオーディオ・システムに関連した他の任意の信号を運ぶことが可能である任意の形状の通信ハイウェイであり得る。オーディオ・ネットワーク１２０は、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ、ＲＳ２３２、ＲＳ４８５、ＦｉｒｅＷｉｒｅ、または他の任意のプロトコルといった複数のプロトコルのいずれかにおいて光ファイバ、有線、および／または無線通信能力を含み得る。
【００４７】
マイクロフォン１１４からのオーディオ信号はまた、オーディオ・ネットワーク１２０に提供され得る。この図解された例において、オーディオ信号は、ミキサー１２４によって受け取られ、処理され得る。ミキサー１２４による処理は、フィルタ、コンプレッサ、イコライザ、エフェクト、利得、またはミキサー１２４に含まれる他の任意の設定といった構成可能な設定に基付き得る。ミキサー１２４による処理に続いて、処理されたオーディオ信号は、第１のオーディオ・プロセッサ１２６および第２のオーディオ・プロセッサ１２８に含まれる構成可能なセットを用いて更なる処理のために第１のオーディオ・プロセッサ１２６および第２のオーディオ・プロセッサ１２８によって受け取られ得る。第１のオーディオ・プロセッサ１２６および第２のオーディオ・プロセッサ１２８は、オーディオ信号に更なるエフェクトを提供する。第１のオーディオ・プロセッサ１２６および第２のオーディオ・プロセッサ１２８によって処理されるオーディオ信号は、第１の増幅器１３２、第２の増幅器１３４、第３の増幅器１３６および第４の増幅器１３８によって受け取られ得る。利得およびイコライザ（「ＥＱ」）設定といった増幅器１３２、１３４、１３６、１３８における追加的な構成可能な設定は、オーディオ信号のさらなる処理および増幅に適用され得る。増幅され、処理されたオーディオ信号は、スピーカ１１６のそれぞれを駆動し得る。
【００４８】
オーディオ信号はまた、第５の増幅器１４２によって受け取られ、処理され、かつ、第２のルーム１０８に含まれるスピーカ１１６のそれぞれを駆動するために用いられ得る。ウォール・コントローラ１４６は、オーディオ・ネットワーク１２０上で第５の増幅器１４２を制御するために用いられ得る。加えて、ウォール・コントローラ１４６は、オーディオ・システム１００の動作に関連した１つ以上のパラメータであって、オーディオ・ネットワーク１２０上で受け取られる１つ以上のパラメータを表示することが可能であるディスプレイを含み得る。
【００４９】
第１のＰＥＭ１５０はまた、オーディオ・システム１００に含まれ得る。第１のＰＥＭ１５０は、メモリデバイスに格納され、オーディオ関連デバイスといった任意の形式のコンュータデバイスにおいて実行され得る。このオーディオ・システムの例において、第１のＰＥＭ１５０は、ＧＵＩを有するパーソナルコンピュータ（「ＰＣ」）で実行されている。他の例において、第１のＰＥＭ１５０の動作が、１つ以上のＧＵＩを有する複数のコンピュータデバイスのメモリデバイス間に配信され得る。第１のＰＥＭ１５０は、ＧＵＩを用いて、１つ以上のコントロール・パネル・ビューにおけるオーディオ・システム１００のさまざまなオーディオ関連デバイスおよびアスペクトを、選択的に表示する能力を含み得る。あるいは、複数の並列動作するＰＥＭは、オーディオ・システム１００の所定の部分に存在するさまざまなオーディオ関連デバイスおよび機能性のコントロール・パネル・ビューを選択的に表示するために用いられ得る。従って、大きく複雑なオーディオ・システムにおいて、オーディオ・システム１００は、複数のＰＥＭが、オーディオ・システム１００内で異なるサブシステムとして利用され得るように分けられ得る。
【００５０】
本明細書中で使用される場合、用語「コントロール・パネル・ビュー」または「種々のコントロール・パネル・ビュー」は、ディスプレイ上で地理的に生成されたユーザ・インターフェース、コントロール面といったハードウェアベースのユーザ・インターフェース、および／または地理的に生成されたユーザ・インターフェースならびにハードウェアベースのユーザ・インターフェースの組み合わせとして定義される。
【００５１】
ＧＵＩの形式のシステム・ベニュー・ビュー・ディスプレイであるコントロール・パネル・ビューは、第１のＰＥＭ１５０によって生成され得る。システム・ベニュー・ビュー・ディスプレイは、オーディオ・システム１００のオーディオ関連デバイスの構成、ＩＤ、動作パラメータのシステム特定の描写であり得る。オーディオ・システム１００のオーディオ関連デバイスは、第１のＰＥＭ１５０によって発見され、かつ、システム・ベニュー・ビュー・ディスプレイに含まれ得る。加えて、第１のＰＥＭ１５０は、オーディオ・ネットワーク１２０を用いてオーディオ・システム１００のオーディオ関連デバイスを個々に管理、モニタ、制御し得る。オーディオ関連デバイスの個々の管理は、ＧＵＩのコントロール・パネル・ビューである複数のコントロール・パネル・ビューから行われ得る。
【００５２】
オーディオ関連デバイスのそれぞれは、それぞれのオーディオ関連デバイスに対応する１つ以上のＧＵＩのコントロール・パネル・ビューを用いて管理され得る。１つ以上のＧＵＩのコントロール・パネル・ビューは、ＰＥＭ１５０によって生成され、ディスプレイに表示され得る。コントロール・パネル・ビューはまた、ＰＥＭ１５０に含まれるコントロール面であり得る。本明細書中で使用される場合、用語「コントロール面」は、ボタン、ノブ、計測器（ｍｅｔｅｒ）、ＬＥＤ、スライダ、インジケータ、数値ディスプレイ、または、オーディオ関連デバイスに関連した他の任意のハードウェアベースのユーザ・インターフェースといったハードウェアを指す。
【００５３】
ＰＥＭ１５０は、オーディオ・ネットワーク１２０上でオーディオ関連デバイスによって提供される情報に基づいて、対応するオーディオ関連デバイスのための格納されている所定のコントロール・パネル・ビューを識別し、かつ、用い得る。このような情報は、オーディオ関連デバイスのオーディオ・ノード構造を含み得る。あるいは、ＰＥＭ１５０は、格納されている所定のコントロール・パネル・ビュー、コントロール・パネル・ビューの格納されている所定のアスペクト、および／またはコントロール・パネル・ビューを生成するためにＰＥ１５０によって生成されるコントロール・パネル・ビューのアスペクトを含む生成されたコントロール・パネル・ビューを用い得る。生成されたコントロール・パネル・ビューがオーディオ・ネットワーク１２０上で対応するオーディオ関連デバイスによって提供されるオーディオ・ノード構造といった情報に基づいて形成され得る。
【００５４】
オーディオ関連デバイスのオーディオ・ノード構造に対応する格納されている所定のＧＵＩのコントロール・パネル・ビューが同様に識別され、オーディオ関連デバイスの機能性を表示するために用いられ得る。加えて、格納されている所定のＧＵＩのコントロール・パネル・ビュー、格納されている所定のＧＵＩのアスペクト、および／またはＰＥＭ１５０によって生成されるＧＵＩのアスペクトを含む生成されたＧＵＩのコントロール・パネル・ビューは、ＧＵＩのコントロール・パネル・ビューを形成するために用いられ得る。生成されたＧＵＩのコントロール・パネル・ビューは、オーディオ・ネットワーク１２０上で対応するオーディオ関連デバイスによって提供されるオーディオ・ノード構造といった情報に基づいて同様に形成され得る。本明細書中で使用される場合、用語「ＧＵＩのアスペクト」は、オーディオ関連デバイスのモニタリング、構成、および／または制御を提供するそれぞれの特徴であって、ＧＵＩに表示され得るそれぞれの特徴として定義される。加えて、用語「コンポーネント」は、コントロール・パネル・ビューに含まれているさまざまな関連したユーザ・インターフェースを指し、一方で用語「アスペクト」は、コントロール・パネル・ビューに統合され得るスタンド・アロン・ユーザ・インターフェースを指す。
【００５５】
従って、格納されている所定のＧＵＩのコントロール・パネル・ビューは、ＧＵＩのコントロール・パネル・ビューにおいて前もって開発され、視覚的に配置され、かつ相互関連する複数のＧＵＩコンポーネントを含み得る。ＧＵＩコンポーネントは、関連したオーディオ関連デバイスの機能性の少なくとも一部分を表し得る。格納されている所定のＧＵＩのコントロール・パネル・ビューのコンポーネントの例は、ミキサーにおける多数のオーディオ・チャンネルのそれぞれを示している。表されているオーディオ・チャンネルのそれぞれは、ボリュームを制御するスライダ、スライダの位置を（デシベルで）示すボリューム・インジケータ、および入力信号を（デシベルで）示すオーディオ信号インジケータを含み得る。この例において、スライダおよびボリューム・インジケータは、スライダが動くとき、ボリューム・インジケータがボリュームの変化する大きさを反映するように相互に関連している。
【００５６】
格納されている所定のＧＵＩのコントロール・パネル・ビューに含まれていない格納されている所定のＧＵＩのアスペクトは、ＰＥＭ１５０によって、現存の格納されている所定のＧＵＩのコントロール・パネル・ビューに追加され得る視覚的／制御的特徴を含む。これらの視覚的／制御的特徴は、対応するオーディオ関連デバイスの機能性を表すＧＵＩのコントロール・パネル・ビューを形成するために追加され得る。このような追加された所定のＧＵＩのアスペクトはまた、格納されている所定のＧＵＩのコントロール・パネル・ビューに含まれるＧＵＩコンポーネントに相互に関連し得る。ＰＥＭ１５０はまた、オーディオ関連デバイスによって提供されるオーディオ・ノード構造といった情報に基づいて、格納されている所定のＧＵＩのアスペクトの１つ以上からＧＵＩのコントロール・パネル・ビューを形成し得る。オーディオ関連デバイスが、関連した格納されている所定のＧＵＩのコントロール・パネル・ビューを有していないとき、ＧＵＩのコントロール・パネル・ビューが形成され得る。この場合には、所定のＧＵＩのアスペクトはまた、形成されるＧＵＩのコントロール・パネル・ビュー内で相互に関連し得る。
【００５７】
格納されている所定のＧＵＩのコントロール・パネル・ビュー、または特定のオーディオ関連デバイスに対するＧＵＩのコントロール・パネル・ビューに格納されている所定のＧＵＩのアスペクトがないとき、ＰＥＭ１５０は、対応するオーディオ関連デバイスによってオーディオ・ネットワーク上で提供される情報に基づいて、ＧＵＩのアスペクトおよびＧＵＩ全体のコントロール・パネル・ビューを生成し得る。ＧＵＩのアスペクトは、同様に相互に関連し得る。
【００５８】
従って、ネットワーク構成のために、ＰＥＭ１５０は、オーディオ・システム１００全体および個々のオーディオ関連デバイスのエンド・ツー・エンド動作を管理するために構成され得る。トラブルシューティング、オーディオ・システムならびにオーディオ関連デバイス設定の格納、ネットワーク管理、およびネットワーク通信管理もまた、第１のＰＥＭを用いて行われ得る。
【００５９】
ミキサー１２４は、第２のＰＥＭ１５２を含み得る。第２のＰＥＭ１５２の動作は、モニタリング、制御および格納機能性を含む第１のＰＥＭ１５０と同様に構成され得る。加えて、また同様の機能性を有する第３のＰＥＭ１５４は、オフィスビルといったオフサイト・ロケーション１６０に位置し得る。
【００６０】
ＰＥＭ１５０、１５２、１５４の機能性は、そのＰＥＭ１５０、１５２、１５４が動作しているそれぞれのデバイスの処理能力に基づいて構成され得る。加えて、ＰＥＭ１５０、１５２、１５４は、所望のレベルの機能性および特徴を提供するように構成され得る。例えば、オフサイト・ロケーション１６０に位置する第３のＰＥＭ１５４は、監視の役割を行うＧＵＩを有するコンピュータといったコンピュータデバイスにおいて動作し得る。従って、エラー・ロギング、アラーミングおよびシステム動作は、第３のＰＥＭ１５４を用いて管理され得る。監視の役割のパフォーマンスをサポートする第３のＰＥＭ１５４を用いて表示されるＧＵＩのコントロール・パネル・ビューが、ライブラリからアクセスされ得、および／または第１のＰＥＭ１５０に対して上述されるようなオーディオ関連デバイスとの通信に基づいて生成され得る。第３のＰＥＭ１５４はまた、オーディオ・システム１００内で、遠隔なテクニカルおよびトラブルシューティング・アシスタンスを提供するために、個々のオーディオ関連デバイスセットをビューし、かつ、調整する能力を有して構成され得る。
【００６１】
第２のＰＥＭ１５２は、ミキサー１２４のユーザ・インターフェースおよび処理能力をとミキサー１２４の機能性とシェアし得る。従って、処理といった演算能力、データ格納および／または表示能力がミキサー１２４において、より低いとき、第２のＰＥＭ１５２は縮退した機能性を有し得る。第２のＰＥＭ１５２は、その第２のＰＥＭ１５２が動作しているオーディオ関連デバイスの動作能力を決定するように構成され得る。
【００６２】
第２のＰＥＭ１５２の機能性は、ミキサー１２４の決定された動作能力に一致し得る。従って、ミキサー１２４が、通信ポート、および／またはそれ自身の動作パラメータならびに設定の表示を通信および／または制限するメモリ能力、またはオーディオ・システム１００における他のオーディオ関連デバイスを有するとき、第２のＰＥＭ１５２は、比較的、より小さく、より複雑でないコントロール・パネル・ビューを用い得る。加えて、第２のＰＥＭ１５２は、オーディオ関連デバイスの動作パラメータおよび設定の、より小さい部分を要求し得る。例えば、オーディオ関連デバイスが２つのチャンネルオーディオ増幅器であるとき、第２のＰＥＭ１５２は、１つのチャンネルだけを表示し、表示されたチャンネルに関連した動作パラメータおよび設定を取得し得る。第２のチャンネルが要求されるとき、第２のＰＥＭ１５２は、第２のチャンネルおよび関連した動作パラメータならびに設定だけを表示し得る。
【００６３】
（ＩＩ．オーディオ関連デバイス）
図２は、オーディオ・ネットワーク１２０に結合されているオーディオ関連デバイス２００の例のブロック図である。オーディオ関連デバイス２００は、ミキサー、増幅器、マイクロフォン、照明パネル、ウォール・コントローラ、またはオーディオ・サウンド・システムおよび／またはオーディオ性能に関連した他の任意のデバイスであり得る。オーディオ関連デバイス２００は、通信ポート２０２、プロセッサ２０４、メモリ２０６、オーディオＩ／Ｏ２０８、およびユーザ・インターフェース２１０を含む。オプション的に、オーディオ関連デバイス２００は、外部ユーザ・インターフェース・ポート２１２を含み得る。他の例において、より多くの機能性が、オーディオ関連デバイス２００に示され得る。加えて、より少ない、またはより多くのブロックがオーディオ関連デバイス２００の機能性を記述するために用いられ得る。
【００６４】
通信ポート２０２は、オーディオ・ネットワーク１２０上で通信を可能にするハードウェアおよび／またはソフトウェアの任意の構成であり得る。プロセッサ２０４は、オーディオ関連デバイス２００内で、全体的な機能性を管理し、計算を行い、かつ、入力／出力を制御する等、命令、論理タスクおよび／または動作コードを実行することが可能な任意のデバイスであり得る。プロセッサ２０４はまた、通信ポート２０２の動作を制御し得る。
【００６５】
メモリ２０６は、プロセッサ２０４によって実行可能な命令、オーディオ関連デバイス２００の設定、（後述される）ＰＥＭによって使用可能なオーディオ・ノード構造、動作パラメータ、セットポイント、およびオーディオ関連デバイス２００ならびにオーディオ・システム１００（図１）における動作に関する他のデータまたは情報を格納するように構成されている揮発性および／または不揮発性メモリデバイスであり得る。メモリ２０６は、実行のために取り出さるされる命令といった取り出されるデータを保存する媒体である。それは、ハードディスクドライブ、ＣＤドライブ、ＤＶＤドライブ、ランダムアクセスメモリ（「ＲＡＭ」）、読み出し専用メモリ（「ＲＯＭ」）、プログラマブルＲＯＭ（「ＰＲＯＭ」）、電気的消去可能ＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリ、または他の任意のデジタル格納デバイスを含み得る。
【００６６】
オーディオＩ／Ｏは、オーディオ関連デバイス２００に直接的に提供される任意の入力および出力であり得る。例えば、オーディオ増幅器は、処理され、増幅され、かつ、スピーカを駆動するために用いられる出力に送達されるオーディオ入力を有し得る。ユーザ・インターフェース２１０は、ボタン、スライダ、ノブ、タッチ・スクリーン、またはユーザ・コマンドが、オーディオ関連デバイス２００に提供されることを可能にする他の任意の形式のインターフェースを含み得る。加えて、ユーザ・インターフェース２１０は、オーディオ関連デバイス２００のユーザによって受け取られるための任意の形式のオーディオおよび／または視覚的出力を含み得る。オーディオおよび／または視覚的な出力の例は、発光ダイオード（「ＬＥＤ」）、計測器、液晶ディスプレイ（「ＬＣＤ」）といったディスプレイ、もしくはオーディオ関連デバイス２１０の状態および／または動作のインディケーションをユーザに提供する他の任意のメカニズムを含む。
【００６７】
外部ユーザ・インターフェース・ポート２１２は、オーディオ関連デバイス２００が、１つ以上の他のオーディオ関連デバイスと通信することを可能にするオプション的な通信ポートであり得る。外部ユーザ・インターフェース・ポート２１２は、オーディオ・ネットワーク１２０によって提供される通信パスの外側にある他のオーディオ関連デバイスに通信リンクを提供し得る。例えば、オーディオ・ネットワーク１２０上で通信する増幅器は、外部ユーザ・インターフェース・ポート２１２を介して、ウォール・コントローラから入力信号を受け取り得る。ウォール・コントローラの例は、ロータリー・スイッチに関連したデジタル信号である出力、およびウォール・コントローラに含まれているディスプレイ上に表示されるフィードバック・インディケーションである入力を有し得る。この例において、ウォール・コントローラは、増幅器の出力利得を調整するために入力信号を提供し得る。加えて、ウォール・コントローラは、外部ユーザ・インターフェース・ポート２１２を介して増幅器から出力信号を受け取り得る。出力信号は、出力利得を表し得、かつ、ウォール・コントローラのディスプレイ上に表示され得る。
【００６８】
図３は、図２に図解されるオーディオ関連デバイス２００の一部、および図１に図解されるオーディオ・システムの一部のより詳細なブロック図である。図３において、通信ポート２０２、プロセッサ２０４、オーディオＩ／Ｏ２０８、およびユーザ・インターフェース２１０が示されている。通信ポート２０２は、ネットワーク・インターフェース３０２を有する通信モジュール３００を含む。通信モジュール３０２は、メモリ２０６に格納され得、かつ、オーディオ関連デバイス２００の任意のへ通信ために用いられ得る。
【００６９】
ネットワーク・インターフェース・モジュール３０２は、メッセージ層３０６およびルーティング層３０８を含む。メッセージ層３０６は、オーディオ関連デバイス２００とオーディオ・システムにおける他の任意のオーディオ関連デバイスおよび／または機器の間でメッセージを通信するよう構成されている。オーディオ・システム内のメッセージングのさまざまなアスペクトがより詳細に後述される。ルーティング層３０８は、異なるプロトコルおよび／または物理媒体の組み合わせとの通信が可能である複数のサブシステムを含む。
【００７０】
Ｅｔｈｅｒｎｅｔ（登録商標）通信リンク３１０、Ｆｉｒｅ  Ｗｉｒｅ通信リンク３１２、ＵＳＢ通信リンク３１４、ＲＳ２３２通信リンク３１６、ＲＳ４８５通信リンク３１８がオーディオ関連デバイス２００内で用いられ得る。他の例において、他の任意の形式の通信リンクが、オーディオ信号、オーディオ関連デバイスの設定およびオーディオ・システムに関連したデータを転送するために用いられ得る。例えば、オーディオ関連デバイスは、オーディオ・ネットワーク１２０上で、Ｅｔｈｅｒｎｅｔ（登録商標）通信リンク３１０を用いて、または図３に示されるＵＳＢ通信リンク３１４を用いて、別のオーディオ関連デバイス３２０と、直接的に通信し得る。ルーティング層３０８とインターフェースするさまざまな通信リンクのそれぞれは、パケット・サービス層、信頼層、ネットワーク層、データリンク層および物理層を含み得る。それぞれの通信リンク内において、ルーティング層は、オーディオ・ネットワーク上で、または他のオーディオ関連デバイスから受け取られるメッセージを提供する。
【００７１】
オーディオ・ストリーム・モジュール３２２およびオーディオ・サービス・モジュール３２４はまた、ネットワーク・インターフェース３０２に含まれ得る。オーディオ・ストリーム・モジュール３２２は、オーディオ・ネットワーク１２０上でストリーミングオーディオとしてオーディオ信号３１６を受け取り、かつ、オーディオ信号３１６を送達し得る。加えて、オーディオ・ストリーム・モジュール３２２は、オーディオ・ネットワーク１２０からストリーム・オーディオを受け取り得る。オーディオ・ストリーム・モジュールの例は、Ｐｅａｋ  Ａｕｄｉｏ（Ｃｏｌｏｒａｄｏ州、Ｂｏｕｌｄｅｒ）によって製造されているＣｏｂｒａｎｅｔシステム（登録商標）である。ストリーミングオーディオは、オーディオ・ストリーム・モジュール３２２と別のオーディオ関連デバイスにおける別のオーディオ・ストリーム・モジュールとの間で送達され得る。異なるオーディオ関連デバイスのオーディオ・ストリーム・モジュールは、通信するために互換性があるべきである。
【００７２】
オーディオ・サービス・モジュール３２４は、異なるオーディオ・ストリーム・モジュール間で互換性のある通信を作成するためにオーディオ・ストリーム・モジュール３２２を自動的に構成するように動作可能である。オーディオ・サービス・モジュール３２４は、対応するオーディオ関連デバイスのネットワーク・インターフェース・モジュールの設定に基づいて、オーディオ・ストリーム・モジュール３２２のそれぞれの能力を比較し得る。他のオーディオ・サービス・モジュールとのネゴシエーションに基づいて、オーディオ・サービス・モジュール３２４は、すべてのオーディオ・ストリーム・モジュールに互換性があり、かつ、共通する設定を選択し得る。従って、オーディオ・ストリーム・モジュールのすべては、もっとも制限された通信能力を有するオーディオ関連デバイスに基づく設定を有するように構成され得る。自動的に設定をネゴシエーションすることによって、オーディオ・サービス・モジュール３２４は、オーディオ・システムにおいて、お互いに互換性があり、かつ、通信が可能であるすべてのオーディオ・ストリーム・モジュールを構成し得る。オーディオ・サービス・モジュール３２４によって自動的にネゴシエーションされ得る設定の例は、チャンネル・カウント、ビット深度、サンプル周波数および待ち時間を含む。
【００７３】
図３において、オーディオ関連デバイス２００はまた、オーディオ・ネットワーク１２０上で、ＰＥＭ３２８と通信し得る。先述されたように、ＰＥＭ３２８は、オーディオ・ネットワーク１２０上で、オーディオ関連デバイス２００を管理、制御、モニタし得る。第１のスイッチ３３０および第２のスイッチ３３２はまた、オーディオ・ネットワーク１０と結合され得る。第１のスイッチ３３０および第２のスイッチ３３２は、オーディオ・ネットワーク１２０と第１のオーディオ・ネットワーク３３４および第２のオーディオ・ネットワーク３３６のそれぞれの間で通信パスを提供し得る。他の複数のオーディオ関連デバイス３３４は、第１のオーディオ・ネットワーク３３４および第２のオーディオ・ネットワーク３３６に結合され得る。他のオーディオ関連デバイス３３８は、オーディオ・ネットワーク１２０上で、第１のスイッチ３３０および第２のスイッチ３３２を用いて通信が可能である。
【００７４】
（ＩＩＩ．オーディオ・ノード構造）
各オーディオ関連デバイス内の機能性がオーディオ・ノード構造を用いて表さられ得る。オーディオ・ノード構造はまた、ＧＵＩ内に１つ以上のＧＵＩのコントロール・パネル・ビューを生成するために用いられ得る。ＧＵＩのコントロール・パネル・ビューは、対応するオーディオ関連デバイスをモニタ、制御、および構成するために用いられ得る。加えて、オーディオ・ノード構造は、１つ以上のコンロール面を構成するために用いられ得る。
【００７５】
図４は、オーディオ関連デバイスを表すオーディオ・ノード構造４００の例である。オーディオ・ノード構造４００は、ノード４０２に含まれている複数のコンポーネントを含む。ノード４０２は、オーディオ関連デバイスを表し得、かつ、ノードＩＤを含む。あるいは、ノードは、機能的なオーディオ関連デバイスを形成する多くのノードが存在している、より大きいシステムのサブコンポーネントを形成し得る。各ノードは、１つ以上の仮想デバイスを含み得る。各仮想デバイスは、１つ以上のオブジェクト、および状態変数を含み得る。ネットワーク能力を有して構成されているノードは、１つ以上のネットワーク・インターフェース上で通信し得る。
【００７６】
図４において、ノード４０２の例は、第１の仮想デバイス４０４および第２の仮想デバイス４０６であるコンポーネントを含む。他の構成の例において、追加的な、またはより少ない仮想デバイスが、特定のオーディオ関連デバイスの機能性に基づいて含まれ得る。第１の仮想デバイス４０４は、ノード・レベル動作を担うように構成されているノード・マネージャ仮想デバイスである。例えば、ノード・マネージャは、ノード４０２における仮想デバイスのリストを維持し得る。仮想デバイスのリストを用いて、ノード・マネージャ仮想デバイスは、そのノードにおいて、どの仮想デバイスが存在しているかを他のオーディオ関連デバイスに通信し得る。加えて、ノード・マネージャ仮想デバイスは、任意のノード・レベル情報を維持することを担い得る。
【００７７】
第１の仮想デバイス４０４および第２の仮想デバイス４０６は、このシステムにおけるデバイスのそれぞれを表す３レベル階層のトップレベルである。一般的に、オーディオ・ノード構造における仮想デバイスのそれぞれは、デバイス内の機能ユニットを表す。第１の仮想デバイス４０４は、第２の階層レベルを表すオブジェクト４０８を含む。後述されるように、オブジェクトは、処理ブロック、制御エレメント、ステータス・エレメント等を表すために用いられ得る。オブジェクト４０８は、第１のオブジェクト４１０および第２のオブジェクト４１２である追加的なコンポーネントを有し得る。第１のオブジェクト４１０および第２のオブジェクト４１２は、オブジェクト４０８内の追加的な機能エレメントを表す。
【００７８】
第１のオブジェクト４１０および第２のオブジェクト４１２、第１の仮想デバイス４０４および第２の仮想デバイス４０６のそれぞれは、状態変数４１４であるコンポーネントであって、オーディオ・ノード構造のコンポーネントを含む。後述されるように、状態変数は、周波数、フェーダ位置、遅延時間、またはデバイス内の他の任意の変化可能なパラメータといった変化され得るデータ変数ある。従って、このような変数データポイントが、オーディオ・ノード構造を用いて表される特定のオーディオ関連デバイスの機能性に依存して仮想デバイスおよび／またはオブジェクトに存在し得る。状態変数は、第３の階層レベルを表している。
【００７９】
ノード４０２、仮想デバイス４０４、４０６、オブジェクト４０８、４１０、４１２および状態変数４１４は、各オーディオ関連デバイスのオーディオ・ノード構造を作り上げるコンポーネントである。ノード４０２、仮想デバイス４０４、４０６、オブジェクト４０８、４１０、４１２および状態変数４１４は、特定のオーディオ関連デバイスの機能性を反映する任意の構成であり得る。従って、異なるオーディオ関連デバイスのオーディオ・ノード構造は、同一であり得、または、著しく異なり得る。
【００８０】
ノード４０２、仮想デバイス４０４、４０６、オブジェクト４０８、４１０、４１２および状態変数４１４のそれぞれ（つまり、コンポーネント）は、属性を含み得る。属性は、どのように、関連したノード、仮想デバイス、オブジェクト、または状態変数が用いられるか記述し、また、名前、測定単位および／または他のデバイス、オブジェクトおよび／または状態変数との関連性を記述し得る。加えて、属性は、対応する仮想デバイス、オブジェクトおよび状態変数のコントロール・パネル・ビューにおける配置といった記述的情報、配線の詳細、または対応するコンポーネントの他の任意の記述もしくは特性を提供し得る。
【００８１】
オーディオ関連デバイスのオーディオ・ノード構造内において、パラメトリックＥＱといった信号処理のために用いられるコンポーネント、メカニカル・フェーダといった制御コンポーネント、または出力計といったセンサ・コンポーネント間で差異がないかもしれない。加えて、パスワードおよびミディ（「ＭＩＤＩ」）チャンネルといったグローバルアイテムが、オーディオ・ノード構造に含まれ得る。状態変数、オブジェクトおよび／または仮想デバイスを有するオーディオ・システムに含まれている異なるオーディオ関連デバイスの機能性のすべてを表すことによって、サブスクリプションおよび制御といった通信のための同一のメカニズムが、幅広くさまざまな異なるオーディオ関連デバイスを含むオーディオ・システムにわたってあまねく適用され得る。
【００８２】
ノードは、そこに包含される仮想デバイスを動的に作成し、破壊し得る。オーディオ関連デバイスにおいて動作可能なプログラムは、動的に作成された仮想デバイスの例である。動的に作成された仮想デバイスの別の例は、オーディオ関連デバイスにおけるコントロール・パネル・ビューのためのオートメーション仮想デバイスである。オブジェクトはまた、動的に作成され、破壊され得る。動的に作成されたオブジェクトの例は、オーディオ関連デバイスのコントロール・パネル・ビュー上の挿入物（ｉｎｓｅｒｔ）であり得る。この例において、エフェクト・オブジェクトは、インスタンス化され得、それから、オブジェクトは、このような関連性を記述するように構成可能なルーティング属性を有する状態変数の変化を介してエフェクト・オブジェクトにリンクされ得る。
【００８３】
（状態変数）
オーディオ・ノード構造内において、オーディオ関連デバイスの機能性において修正可能なパラメータは、状態変数（「ＳＶ」）コンポーネント内で保持され得る。このようにして、ＳＶは、測定された値、セットポイント値、チューニング値、設定値、またはオーディオ関連デバイス内の変化可能なパラメータである他の任意のパラメータであり得る実際の値を含む。実際の値は、他の実際の値に基づいて、自動的にアップデート、手動でアップデートおよび／または論理的にアップデートされ得る。ＳＶの例は、周波数のようなオーディオ・オブジェクトのパラメータおよびコントロール面上のフェーダの位置を含む。ウォール・コントローラのようなシンプルなオーディオ関連デバイスは、制限された数のＳＶだけを包含し得る。ミキシング・コンソールといった他のオーディオ関連デバイスは、何十万ものＳＶを包含し得る。ＳＶ上の一般的な動作は、変数を「セットし」、かつ、変数を「獲得する」ことを含む。例えば、このような動作は、ＥＱの周波数をセットすること、およびオーディオ関連デバイスのコントロール面上の表示のための遅延時間を獲得することに変換され得る。このような基本動作は、オートメーションといった、より複雑な形式の使用の基本を形成し得る。
【００８４】
（属性）
オーディオパラメータの値を保持することに加えて、ＳＶはまた、どのように対応するＳＶが用いられるかを記述する多くの属性を所有し得る。２つの属性の例は、Ｇａｉｎ  ＳＶがセットされ得るデシベル（ｄＢ）値のレンジを表す「最小」および「最大」である。別の属性は、ｄＢ値を保持するために用いられるデータ・タイプであり得る。例えば、データ・タイプは、ＩＥＥＥフロート、バイト、ワードとしてＳＶを示し得る。従って、属性情報を含むことによって、他のオーディオ関連デバイスが、ＳＶに対して特にプログラムされておらず、それ故に、ＳＶの特性を知らないときでさえ、ＳＶはオーディオ・システムにおける他のオーディオ関連デバイスにアクセス可能である。このようにして、属性は、その属性を発見するために予備知識を有しておらず、従って、ＳＶを用いるために必要とされる知識を取得する他のオーディオ関連デバイスによって用いられ得る。
【００８５】
属性はまた、オーディオ・ノード構造を記述する情報を提供し得る。従って、オーディオ・ノード構造のいくらかの部分が未知であるとき、未知のコンポーネントに関連した属性は、コンポーネントの機能性を決定するために用いられ得る。加えて、属性は、オーディオ・ノード構造とコントロール・パネル・ビューとの間の対応を提供し得る。例えば、属性は、オーディオ関連デバイスに対して格納されている所定のコントロール・パネル・ビューを識別するために用いられ得る。加えて、格納されている所定のコントロール・パネル・ビューがオーディオ・ノード構造に完全に対応しないとき、または、格納されている所定のコントロール・パネル・ビューが全く存在しないとき、オーディオ・ノード構造に含まれる属性はコントロール・パネル・ビューを形成する情報を提供し得る。このようにして、オーディオ・デバイスのオーディオ・ノード構造が、格納されている所定のコントロール・パネル・ビュー、または格納されている所定のアスペクトを有しないとき、オーディオ・ノード構造の属性は、コントロール・パネル・ビューおよび／またはアスペクトを生成する情報を提供し得る。
【００８６】
属性はまた、生成されたアスペクトの格納されている所定のコントロール・パネル・ビューへの統合または取り込みが可能である情報、またはコントロール・パネル・ビューに多くの生成されたアスペクトを形成する情報を含み得る。例えば、オーディオ・ノード構造は、ミキサーにおけるチャンネルを表すオブジェクトおよびＳＶを含み得る。オブジェクトおよびＳＶに関連した属性は、チャンネルが、制御能力を提供するスライダとの割合として表示されるべきであることを示し得る。加えて、属性は、それぞれに対して生成されるさまざまなアスペクトの配置を記述し得る。さらに、属性は、アスペクト間の配線がどのように表示されるべきか、アスペクト、カラー、サイズ、シェイプ、またはコントロール・パネル・ビューにおけるオーディオ関連デバイス機能性のディスプレイに関連する他の任意のパラメータ間の相互間の関連がどうように表示されるべきかを記述し得る。属性の概念は、オーディオ・ノード構造全体にわたり適用され、ＳＶ、オブジェクト、仮想デバイス、およびノード・マネージャ仮想デバイスを含む。
【００８７】
属性は、その属性が用いられ得る方法を表す３つのカテゴリの１つに分類され得る。属性のカテゴリは、静的、インスタンス、および動的を含む。静的属性は、固定されており、変化しない。従って、静的属性のデータベースは、オーディオ・ノード構造における、ＳＶといったコンポーネントを制御するために必要とされる発見の量を最小にするものとして定義され得る。インスタンス属性は、ＳＶのインスタンスごとにセットされ得る。動的属性は、クライアントセットの、またはランタイム時に修正され得る静的属性、またはインスタンス属性である。静的およびインスタンス属性は、クエリされ得る。動的属性は、一般的に、静的属性またはインスタンス属性のいずれかと類似している。動的属性は、しかしながら、その値がランタイム時にオーバーライドされ得るので静的属性またはインスタンス属性とは異なる。
【００８８】
属性は、属性識別（「属性ＩＤ」）およびクラス識別（「クラスＩＤ」）を含み得る。属性ＩＤは、各属性を一意的に識別する方法である。属性ＩＤは、符号なしのバイト（「ＵＢＹＴＥ」）を用いてゼロから数えられ得、所定の名前を用いて表さられ得る。オーディオ・ノード構造の階層の各レベルでの属性は、それ自身の列挙を有し得る。従って、例えば、ＳＶクラスに対する３の属性ＩＤは、オブジェクト・クラスにおいて異なる属性を指し得る。クラスＩＤは、属性値の一意のグループを識別する符号なしのワード（「ＵＷＯＲＤ」）といった所定の数を用いて表され得る（クラスＩＤ）。例えば、ＳＶが、特定の値にセットされた１１個すべての属性を有するとき、属性のこのコレクションおよびそれらの値は、ＳＶクラスとして識別され、代表クラスＩＤを割り当てられ得る。このクラスＩＤは、長文式で属性を記述することを省くために省略表現の形式として用いられ得る。クラスＩＤは、属性値のセット（ＳＶクラス、オブジェクト・クラス等）を表す階層のすべてのレベルにおいて用いられ得る。ＳＶおよびオブジェクト・クラスの再使用を促すために、クラスＩＤのマスター・リストが維持され得、クラスが登録され得る。
【００８９】
（クラス）
ＳＶクラス、オブジェクト・クラス、仮想デバイス・クラス、またはノード・マネージャ仮想デバイス・クラスといったクラスは、数的に、かつ、それぞれクラスＩＤ（「ＵＷＯＲＤ」）およびクラス名（「ＳＴＲＩＮＧ」）といったストリング名によって表され得る。各クラスＩＤは、ＩＤ、属性名およびカテゴリといった属性のセットを含み得る。クラス名は、オーディオ・ノード構造における階層レベルを識別するためにプレフィックスされ得る。例えば、ＳＶのクラス名は、「ＳＶＣｌａｓｓ」であり得る。ＳＶクラス名の例は、ＳＶＣｌａｓｓＰｅｑＦｒｅｑ、ＳＶＣｌａｓｓＰｅｑＱおよびＳＶＣａｓｓＰｅｑＧａｉｎである。クラスＩＤはまた、ＳＶクラス、オブジェクト・クラス、仮想デバイス・クラスおよびノード・マネージャ仮想デバイスのいずれかに対して用いられ得る。ＳＶクラスＩＤにおける属性のセットの例は以下のとおりである。
【００９０】
【表１】
0004621523.tif 000002
オブジェクト・クラスおよびその関連したクラスＩＤは、オブジェクトの特定の先験的な知識を定義し得る。オブジェクト・クラスは、オブジェクトが、オブジェクト・クラスおよびＳＶの値によって全体的に定義されることを可能にする。オブジェクト・クラスは、静的およびインスタンス属性から形成され得る。オブジェクト・クラスを定義する静的属性は、オブジェクトによって包含される任意のサブオブジェクト、およびオブジェクトによって包含される任意のＳＶを含み得る。例えば、３つのバンドＥｑｕａｌｉｚｅｒおよび５つのバンドＥｑｕａｌｉｚｅｒは、異なるオブジェクト・クラスである。なぜなら、それらは、異なる数のＳＶを包含するからである。オブジェクト・クラスＩＤは、オブジェクト・クラスを特定するために用いられるＵＷＯＲＤであり得る。オブジェクト・クラスＩＤの１つのマスター・レジストリがあり得る。デベロッパーは、それらのオブジェクトＩＤをマスター・レジストリに登録し得る。加えて、同一のオブジェクトが、オーディオ関連デバイスのファミリに渡り用いられ得る。オブジェクト・クラスＩＤは、先述されるような属性のセットを含み得る。オブジェクト・クラスは、フレーズ「ＯｂｊＣｌａｓｓ」で始まる命名規則を有し得る。オブジェクト・クラスＩＤにおける属性のセットの例は以下のとおりである。
【００９１】
【表２】
0004621523.tif 000003
仮想デバイス、またはノード・マネージャ仮想デバイスはまた、クラスを含み得る。仮想デバイスのクラスおよび関連したクラスＩＤは、仮想デバイスの一意の特性を表し得、容易な識別およびの異なる種類の仮想デバイスの区別のために用いられ得る。２つの異なる種類の仮想デバイスの例は、ミキシング・コンソールといったオーディオ関連デバイスのノード内のオートメーション仮想デバイスおよび入力面仮想デバイスである。一意のクラスＩＤの割り当ての例は、１つ以上のオーディオ関連デバイスに含まれている異なるソフトウェアプログラムを表す仮想デバイスのグループへのクラスＩＤの割り当てであり得る。仮想デバイスのクラスＩＤは、ＵＷＯＲＤとして表され得る。仮想デバイスはまた、クラス名を有し得る。仮想デバイス・クラス名は、ユーザに対して人間読み取り可能省略表現を提供するために用いられ得る。このクラス名は、一意である必要はない。仮想デバイス・クラスＩＤにおける属性のセットの例は以下のとおりである。
【００９２】
【表３】
0004621523.tif 000004
ノード・マネージャ仮想デバイス・クラスＩＤにおける属性のセットの例は、以下を含む。
【００９３】
【表４】
0004621523.tif 000005
ここで、「ＢＬＯＣＫ」データ・タイプは、Ｎ×Ｎのバイトのサイズのデータを含むデータ構造を表す。
【００９４】
（静的属性）
静的属性は、クラスのそれぞれに対してあらかじめ定義され得る。例えば、ＳＶクラスは、異なるＳＶ値、最小ＳＶ値、最大ＳＶ値、制御法則およびフラグを表すデータ・タイプのセットの静的属性を含み得る。
【００９５】
制御法則は、ＳＶがどのように制御されるべきかを記述し得る。例えば、周波数に対するＳＶは、対数であり得、利得ＳＶは、およそ０ｄＢで付加的な分解能を有する対数であり得る。ＳＶが、そのクラスのＭｉｎとＭａｘとの間の浮動小数点値を取るとき、ユーザに、あるルックアンドフィールを与えるために制御法則を特定することが所望され得る。例えば、周波数変数の場合には、ユーザがエンコーダをターンするとき、またはスピナー上の「アップ」コントロールボタンを押すとき、次の値が前の値から間隔が対数的に置かれることが所望され得る。制御法則はまた、ＳＶが受容し得る粒度を特定するために用いられ得る。例えば、利得ＳＶは、０．１ｄＢの最大分解能有し得る。すべてのステップがあらかじめ定義されているので、列挙されたＳＶの場合には、制御法則は省略され得る。
【００９６】
フラグは、属性に関連したＳＶをさらに定義するためにあらかじめ定義され得る。フラグの例は、周期的に、または変化毎に、サブスクリプションのタイプを自動的にセットするためにサブスクリプションにおいて用いられ得るセンサ属性を含む。センサＳＶの例は、出力計、しきい値計測器、または電力増幅器温度を含む。非センサＳＶの例は、周波数またはＭＩＤＩチャンネルを含む。フラグの他の例は、ＳＶがイベント・サブスクリプションにサブスクライブされ得ることを示すイベント・タイプ、または最大、最小、またはＳＶ名ストリングが、ドキュメントされた静的クラス値から変化されたときといった変化を示す修正されるフラグを含む。ＳＶ名ストリングは、ＳＶクラス内の「インスタンス属性」であるが、それは、普通、オブジェクト内で静的であり、従って、それになされた変化は、修正されたフラグを用いて追跡され得る。
【００９７】
オブジェクト・クラス、仮想デバイス・クラス、またはノード・マネージャ仮想デバイス・クラスはまた、クラス名といった静的属性を含み得る。オブジェクト・クラス名は、ユーザに対して人間読み取り可能省略表現を提供するために用いられ得る。オブジェクト・クラス名は、オーディオ関連デバイスのファミリの間で一意である必要はない。例えば、ミキサーである第１のオーディオ関連デバイスは、オブジェクト・クラス名「ＯｂｊＣｌａｓｓＳＣ＿ＰＥＱ＿５」を有し得、ｄｂｘ  ＤｒｉｖｅＲａｃｋといったオーディオ関連デバイスの同一のファミリにおける第２のオーディオ関連デバイスは、クラス名「ＯｂｊＣｌａｓｓＤＲ＿ＰＥＱ＿５」を有し得る。双方のオーディオ関連デバイスは、クラス名「５Ｂａｎｄ  ＰＥＱ」を有し得る。クラス名は、ＧＵＩのコントロール・パネル・ビュー上のドロップダウンから選択され得、ストリングとして格納され得る。
【００９８】
仮想デバイスにおいて、静的特性は、クラスＩＤに関連した値を有する仮想デバイスに属する属性であり得る。１つの例において、静的属性は、インスタンスごとにセットされず、かつ、ランタイム時に動的に変化されないかもしれない。仮想デバイスに対する静的属性はまた、名前ストリングを含み得る。名前ストリングは、仮想デバイスのインスタンス化を命名するために用いられ得る。名前ストリングは、クラス名と同一であり得る。同一名の複数のインスタンスがある際には、複数のインスタンスが、スペースおよび小数を加えることによって区別され得る。例えば、ミキサーであるオーディオ関連デバイスにおいて、「ＭＨｘ  Ｉｎｐｕｔ  Ｂａｎｋ」の仮想デバイス・クラス名を有する入力フェーダ・バンクの２つのインスタンス化があるとき、各インスタンスに対する仮想デバイスの名前ストリングは、「ＭＨｘ  Ｉｎｐｕｔ  Ｂａｎｋ  １」および「ＭＨｘ  Ｉｎｐｕｔ  Ｂａｎｋ  ２」であり得る。
【００９９】
ノード・マネージャ仮想デバイスの静的属性はまた、クラス・タイプを含み得る。ノード・マネージャのクラス・タイプは、ノード・マネージャの静的属性の値を決定し得る。属性は、インスタンスごとに基づいて変化しないかもしれないし、ランタイム時に変化されえないかもしれない。例えば、オーディオ関連デバイスの特定のタイプに対するノード・マネージャ・クラスにおける静的属性は、ノード・マネージャのすべてのインスタンス化において同一の値を有する。ノード・マネージャはまた、ベニュー・テーブル・サイズを示す静的属性を含み得る。ベニュー・テーブル・サイズの静的属性は、オーディオ関連デバイスによってサポートされるベニュー・テーブルのサイズを発見するためにクエリされ得る。ベニュー・テーブルの使用および動作は、後述される。
【０１００】
（インスタンス属性）
インスタンス属性は、ＳＶ、オブジェクト、仮想デバイス、またはノード・マネージャ仮想デバイス・クラスの各インスタンスに対して一意の値にセットされ得る静的属性である。
【０１０１】
ＳＶに関しては、オブジェクトまたは仮想デバイスは、値を定義するＳＶをインスタンス化し得る。従って、これらの属性は、オブジェクトまたは仮想デバイスに対して静的であり得る。ＳＶクラスは、ＳＶ  ＩＤ、名前ストリング、デフォルト値、コントロール・プリミティブ、コントロール座標（ｃｏｏｒｄｉｎａｔｅ）、およびエンコーダ・モードといったインスタンス属性を含む。ＳＶ  ＩＤは、オブジェクトまたは仮想デバイス内の各ＳＶの識別子として用いられるＵＷＯＲＤであり得る。ＳＶ  ＩＤは、ゼロベースである必要はなく、またオブジェクトまたは仮想デバイスを完全に占める必要はない。ＳＶの名前ストリングは、ＳＶに対して人間読み取り可能プロンプトを提供する。このストリングは、オブジェクト内のＳＶに対して一意である必要はない。例えば、パラメトリックＥＱの各バンドに対して、利得を表す各ＳＶは、ＳＶの名前ストリング「Ｌｅｖｅｌ」を有する。デフォルト値は、オブジェクトまたは仮想デバイスを初期化するために用いられ得る。デフォルト値は、ＳＶのデータ・タイプにおいて表され得る。デフォルト値は、プログラマが、オブジェクトの必要性に従って、これを一意に特定し得るように動的であり得る。例えば、２つのクロスオーバー周波数のＳＶを有するクロスオーバー・オブジェクトは、それぞれ１００Ｈｚおよび１．０ＫＨｚでそれらが初期化されることを所望する。コントロール・プリミティブは、オブジェクト、または仮想デバイスに対するジェネリックＧＵＩのコントロール・パネル・ビュー、またはジェネリックＧＵＩのアスペクト作るために用いられ得る。オブジェクト、または仮想デバイスは、コントロール・プリミティブが、各ＳＶに対して用いられること示唆し得る。コントロール座標は、ジェネリックＧＵＩのコントロール・パネル・ビュー、またはジェネリックＧＵＩのアスペクトに対するコントロール・プリミティブの配置に対して用いられ得る。エンコーダ・モードは、どのようにエンコードといったＧＵＩのアスペクト上のＳＶ値を表示するかを示唆し得る。Ｅｎｃｏｄｅｒ  Ｍｏｄｅ属性のＤａｔａ  Ｔｙｐｅは、ＵＢＹＴＥであり得る。
【０１０２】
オブジェクトはまた、名前ストリングといったインスタンス属性を含み得る。名前ストリングは、インスタンス化されたオブジェクトの名前であり得、ＳＴＲＩＮＧデータ・タイプに格納され得る。例えば、プロダクトは、インスタンス化「Ｉｎｐｕｔ  １」、「Ｉｎｐｕｔ  ２」等を有するオブジェクト・クラス「Ｉｎｐｕｔ＿Ｃｈａｎｎｅｌ」を有し得る。オブジェクトはまた、フラグであるインスタンス属性を含み得る。フラグは、対応するオブジェクトに関しての情報を提供し得る。例えば、フラグの１つは、修正されるフラグあり得る。修正されるフラグは、オブジェクト内の１つ以上のＳＶが、それらの静的クラス定義から修正されたときを示すビットであり得る。可能な修正は、「ＳＶ  Ｄｙｎａｍｉｃ  Ａｔｔｒｉｂｕｔｅｓ」のもとでリストアップされる。修正されたオブジェクトを認識した際に、コントロール面を有する別のオーディオ関連デバイスは、変化に対処するためにさらにクエリを行い得る。
【０１０３】
ノード・マネージャ仮想デバイスはまた、ノード・マネージャが作成されるとき、カスタム値にセットされ得るインスタンス属性を含み得る。このようなインスタンス属性は、ランタイム中に動的に変化可能ではないかもしれない。ノード・マネージャのインスタンス属性の例は、先述されたノード・マネージャ仮想デバイス・クラスの例に含まれる（表４）。
【０１０４】
表４の例において、ノード・マネージャ仮想デバイスの仮想デバイス名前ストリングは、ノードおよびノードが属するワークグループの双方の名前を指定し得る。名前ストリング属性は、ユーザセットでき（ｕｓｅｒ―ｃｏｎｆｉｇｕｒａｂｌｅ）、不揮発性のメモリに格納され得る。シリアル・ナンバー属性は、各ノードを識別する一意のナンバーであり得る。例えば、一意のナンバーは、アドレス衝突を解決するために用いられ得る。シリアル・ナンバーの１つのタイプの例は、１６進法のナンバーストリングである統計的に一意の１２８ビットＩＤであり得る。例えば、統計的に一意の１２８ビットＩＤの生成は、Ｍｉｃｒｏｓｏｆｔ（登録商標）のアプリケーション「ｕｕｉｄｇｅｎ」を起動するＰＣを有して行われ得る。生成されたシリアル・ナンバーは、製造中にノードの不揮発性メモリに書き込まれ得、決して変化され得ない。シリアル・ナンバーの別のタイプの例は、先頭から８０ビットがゼロにセットされた４８ビットＥｔｈｅｒｎｅｔ（登録商標）  ＭＡＣアドレスである。オーディオ関連デバイスが２つ以上のネットワーク・インターフェースを有する際には、通常、有効である、または、より頻繁に有効であるインターフェースからのＭＡＣアドレスが用いられ得る。
【０１０５】
表４におけるソフトウェア・バージョン属性は、オーディオ関連デバイスにおいて動作可能な内蔵のファームウェアまたはＰＣアプリケーション・ソフトウェアのリビジョンであり得る。ソフトウェア・バージョンは、任意の形式のストリングによって表され得る。ホップ・カウント属性は、出力メッセージ（ｏｕｔｇｏｉｎｇ  ｍｅｓｓａｇｅ）が初期化されるホップの数を示すために用いられ得る。ホップ・カウント属性のデータ・タイプは、ＵＢＹＴＥであり得、デフォルトは、所定のホップの数であり得る。ユーザ名Ａ―Ｄ属性は、ユーザの各カテゴリに対するユーザ名を包含し得る。ユーザ・パスワードＡ―Ｄ属性は、ユーザの各カテゴリに対するパスワードを包含し得る。
【０１０６】
表４におけるアドレス・モード属性は、ノードが、アドレス・ネゴシエーション中にランダムの、またはシーケンシャルのノード・アドレスを選ぶか否かを制御し得る。アドレス・ネゴシエーションは後述される。オーディオ・システムの例において、すべてのオーディオ関連デバイスは、アドレス衝突の可能性を最小にするためにランダムアドレッシングを用いるためにセットされ得る。あるいは、ツアー中のサウンド・オーディオシステムのような他のオーディオ・システムにおいて、シーケンシャルにナンバリングされたノードを有することが所望され得る。従って、アドレス・モード属性は、シーケンシャル・ノード・アドレッシングにセットされ得、シーケンシャル・ナンバリングは、１度に１つずつノード（オーディオ関連デバイス）をオンし、各々の次のノードが、最後のアドレスより１つ大きいアドレスを選択することにより達成され得る。アドレス・モード属性は、０―Ｒａｎｄｏｍおよび１―Ｓｅｑｕｅｎｔｉａｌのフォーマットの例を有するＵＢＹＴＥに含まれ得る。
【０１０７】
（動的属性）
動的属性は、クライアントセットであり得、またはランタイム時に修正され得る属性のサブセットである。このことは、ＳＶに対してユーザ定義のレンジをおよび名前をセットするとき有用である。この例において、動的に修正され得るＳＶ属性は、最小値、最大値、および名前ストリングである。修正可能な属性が、公表値から逸脱し、「動的」になるとき、発見プロセスは、実際の値を決定するために付加的なステップを必要とするかもしれない。この理由のために、動的属性のリストは、発見中に付加的なオーバーヘッドを制限するために特定の必要性がある状況に制限され得る。
【０１０８】
仮想デバイスはまた、動的属性を利用し得る。例えば、動的属性は、仮想デバイスのクラスＩＤの一部として含まれ得る。この例において、動的属性は、仮想デバイスが、ランタイム時に異なるオブジェクトを包含するために再構成され得ることを示すために用いられるビットフラグであり得る。ビットフラグがクリアされるとき、動的属性は、仮想デバイスがオブジェクトの静的な構成を包含し、そのクラスＩＤによって全体的に知り得ることを示し得る。オーディオ関連デバイスが再構成可能なとき、１つより多い動的仮想デバイス・クラスの仕様がオーディオ関連デバイスに起こり得る。このシナリオにおいて、再構成可能なオーディオ関連デバイスは、オーディオ関連デバイスにおいて実行されるオーディオ関連機能または動作のセットを表すために動的仮想デバイスを用い得る。従って、クラス・タイプは、オーディオ関連機能または動作のセットのバージョンを識別するために用いられ得る。加えて、クラス・タイプは、オーディオ関連機能または動作のセットが、ソフトウェア・パッチ、ソフトウェア・アップグレード、別の仮想デバイスにおけるオーディオ関連機能または動作セット等と互換性があるかどうかを決定するために用いられ得る。例えば、ユーザが、動的仮想デバイスによって表されるオーディオ関連デバイスのオーディオ関連機能または動作のセットの値を、クリップボードに複製するとき、仮想デバイスタイプのシンプルなチェックは、ユーザがそのオーディオ関連機能または動作のセットの値を、それ自身の一意の動的仮想デバイス・クラスを有する別の仮想デバイスにおける互換性がないオーディオ関連機能または動作セットにペーストし得ることをストップする。
【０１０９】
（通信サポート）
ＳＶ、オブジェクトおよび仮想デバイスは、オーディオ関連デバイス間の通信をサポートする。ＳＶ、オブジェクトおよび仮想デバイスのクエリおよび修正は、メッセージベースの通信インフラを有し得る。加えて、ポインタ等を介してクエリおよび修正を行うダイレクトコーリングがまた可能である。通信インフラは、ＳＶ、オブジェクトおよび仮想デバイスを用いる通信インフラのサポートが異なるオーディオ・ノード構造を有する異なるオーディオ関連デバイスにわたり一様であり得るようにあらかじめ決定され得る。
【０１１０】
所定のメッセージのサポートは、クエリおよび修正されているオーディオ・ノード構造コンポーネントにいくらか依存し得る。ＳＶは、実際の値を含み得、それゆえに、関連した実際の値の修正に関連したメッセージをサポートする。符号ありのフォーマット済の置換用の実際の値、または割合の変化値を有するセットポイントといったＳＶの実際の値を変化するメッセージがサポートされ得る。
【０１１１】
さまざまな形式の「獲得（ｇｅｔ）」メッセージがサポートされ得る。獲得メッセージは、１つ以上のＳＶ、オブジェクト、または仮想デバイスに関連した属性を取得する獲得属性メッセージを含み得る。加えて、獲得メッセージは、獲得値ストリング・メッセージを有するといったＳＶから実際の値を要求し得る。オブジェクトおよび仮想デバイスの場合には、リストまたはテーブルを提供する獲得メッセージがサポートされ得る。後述されるように、ノード内の仮想デバイスのリストは、仮想デバイス・ノード・マネージャから要求され得る。同様に、仮想デバイス内のオブジェクトまたはＳＶのリストおよび／またはオブジェクト内のオブジェクトのリストといった他のコンポーネント内部のコンポーネントのリストは、獲得メッセージを用いて要求され得る。獲得メッセージはまた、それぞれの仮想デバイスまたはオブジェクトによって表される機能性に含まれている入力および出力に関連した情報を提供する仮想デバイスおよび／またはオブジェクトによってサポートされ得る。例えば、メッセージは、仮想デバイスＩ／Ｏのリストおよび／またはオブジェクトＩ／Ｏのリストに対してクエリし得る。さらに、ＳＶ、オブジェクトおよび／または仮想デバイスに関連した他の任意の情報を提供する獲得メッセージがまたサポートされ得る。
【０１１２】
「セット（ｓｅｔ）」メッセージがまたサポートされ得る。セットメッセージは、ＳＶにおいて実際の値をセットし、属性をセットし、リストにおいて１つ以上の値をセットし、テーブルを修正等し得る。加えて、「サブスクライブ（ｓｕｂｓｃｒｉｂｅ）」および「アンサブスクライブ（ｕｎｓｕｂｓｃｒｉｂｅ）」は、ＳＶ、オブジェクトおよび仮想デバイスによってサポートされ得る。情報に対するオーディオ関連デバイスをポーリングすることを伴う「獲得」メッセージとは対照的に、「サブスクライブ」メッセージは、情報を提供するイベント・ドリブン・メカニズムを作成し得る。例えば、サブスクライブ・メッセージは、変化が行われたいかなる時にも、コンポーネント変化内のＳＶの実際の値を要求するために用いられ得る。このようなサブスクライブ・メッセージは、同一または異なるオーディオ・ノード構造を有する１つ以上の個々のオーディオ関連デバイスの間のサブスクリプション可能にするためにサポートされ得る。例えば、第１のオーディオ関連デバイスにおける第１のオブジェクトまたは仮想デバイスは、第２のオーディオ関連デバイスにおける１つ以上の他のオブジェクトおよび／または仮想デバイスにおけるすべてのＳＶ、選択されたＳＶ、または１つのＳＶにサブスクライブし得る。サブスクライブ・メッセージは、実際の値、エラー、構成および／またはステータスといったコンポーネントについて利用可能な任意の情報に関連し得る。
【０１１３】
（ルーティング）
メッセージのルーティングは、オーディオ関連デバイスのノード構造におけるオブジェクトといったコンポートネント間であり得る。加えて、メッセージは、異なるオーディオ関連デバイスのノード構造におけるコンポーネント間でルーティングされ得る。ルーティングは、仮想デバイスおよび／またはオブジェクト間で構成され得る。異なるオーディオ関連デバイスにおけるコンポーネント間でのルーティングに対して、コンポーネントは、１つ以上の物理的インターフェースに結び付けられており、物理的インターフェースは、オーティオネットワークへ／からオーディオをストリームし得る。
【０１１４】
ルーティングは、各コンポーネントを構成することによって構築され得る。このような構成は、各ルーティングのソースおよび目的地を一意に識別することを伴い得る。例えば、第１のオブジェクトといった第１のコンポーネントは、入力が、第２のオブジェクトといった第２のコンポーネントの出力からであること、および第１のコンポーネントの出力が、第２のコンポーネントの入力に提供されることを識別するために構成され得る。各コンポーネントは、多数のチャンネルを有し得る。チャンネルは、ゼロベースの整数値といった所定の識別子によって識別され得る。チャンネルは、入力または出力のいずれかであるように構成され得る。チャンネル識別子は、一意のオーディオ・アドレスを形成するためにオーディオ関連デバイスのオーディオシステムアドレスと組み合わされ得る。例えば、０ｘＡＢＣ０００００００１のオーディオ・アドレスを有するオーディオ関連デバイスは、Ｉ／Ｏ  ＭｏｄｅのＯｕｔｐｕｔであるチャンネル１２を有し得る。
【０１１５】
オーディオ・アドレスは、出力オーディオ・アドレス、または入力オーディオ・アドレスであり得る。従って、オーディオ関連デバイスは、入力チャンネルがどこでそのオーディオソースを取得すべきかを識別するために出力オーディオ・アドレスを受け取り得る入力チャンネルを有し得る。加えて、オーディオ関連デバイスは、出力チャンネルがどこにその出力をルーティングすべきかを識別するために入力オーディオ・アドレスを受け取り得る入力チャンネルを有し得る。例は以下のとおりである。
入力アドレスを特定する出力接続（第１のオブジェクト）
オーディオ・アドレス：０ｘＡＢＣＤ０００００００２，チャンネル：２，Ｉ／Ｏ  モード：入力
出力アドレスを特定する入力接続（第２のオブジェクト）
オーディオ・アドレス：０ｘＡＢＣＤ０００００００１，チャンネル：１２，Ｉ／Ｏ  モード：出力。
【０１１６】
（サブスクリプション）
サブスクリプションは、何か変化があった際にコントロール・パネル・ビューおよび／またはオーディオ関連デバイスに通知するために用いられ得るメカニズムである。サブスクリプションは、「変化毎」に、または「周期的」にといった所定の条件に基づき得る。すべての測定は、サブスクリプションを介して処理され得る。例えば、第１のコントロール・パネル・ビューは、ＳＶにサブスクライブする。そのＳＶが、第２のコントロール・パネル・ビューによって変化されるとき、第１のコントロール・パネル・ビューには、ＳＶの新しい実際の値が伝えられる。通知は、ＳＶＳｅｔメッセージといったセットメッセージを用いて処理され得る。すべてのサブスクリプション・メッセージは、ＳＶの実際の値といった即時の応答を自動的に生成し得る。その応答は、同一の値を有する異なるコントロール・パネル・ビューを同期させるために即時であり得る。
【０１１７】
サブスクリプション・メッセージにおいて、サブスクライブされるものは、変化を報告するために特定された仮想デバイス、オブジェクトおよびＳＤ  ＩＤを用いるように指示され得る。サブスクライブされるものの観点からして、変化がサブスクライブするものに報告されるとき、サブスクライブするもの上のＳＶは、サブスクライブされるものに、サブスクライブされるもの上の特定のＳＶが変化されたことをサブスクライブするものに通知することとは対照的に、新しい値にセットされる。例えば、このメカニズムは、サブスクライブするものがサブスクライブされるもののフルミラーされたデータのセットを保持していないとき、有用である。ウォール・コントローラまたはカスタム・コントロール・パネルといったシンプルなコントロール面であるサブスクライブするものは、ＳＶ自身のオーディオ・アドレスを有するそれ自身のＳＶのセットを有し得る。サブスクライブされるものは、サブスクライブするものの側上で必要とされる変換なしに、これらのＳＶを直接的に単純にセットし得る。従って、各ＳＶは、マッピングされる０からＮのオーディオ・アドレスのセットおよびＳＶ  ＩＤを有し得る。ＳＶが変化するとき、所定のサブスクリプションのリストは、サブスクライブされるものによってアクセスされ得、ＳＶ＿Ｓｅｔといったセットメッセージが、変化されたＳＶにマッピングされるサブスクリプションのリスト上のサブスクライブされるもののそれぞれに送達され得る。ネットワーク・トラフィックを最小にするために、通知は、バンドルされ、通常のバンドリング技術のいずれか１つを用いて任意の１つのノードに送達さえ得る。
各ＳＶクラスは、それぞれのＳＶがセンサＳＶまたは非センサＳＶとみなされるべきか否かを定義し得る。すべてのセンサＳＶは、周期速度でといった所定の条件に基づいて通知し得る。周期速度は、サブスクライブするものによって特定され得る。オーバーヘッドであるために、センサが、サブスクライブするものによって示唆された速度でサポートし得ないとき、センサは、より遅い速度で通知し得る。センサは、サブスクライブするものによって特定された速度より早い速度で通知しないように構成され得る。サブスクリプション・メッセージは、サブスクリプションがセンサＳＶに対してであるとき、用いられる速度を含み得る。非センサＳＶは、変化毎に通知するように自動的に割り与えられ得る。
【０１１８】
サブスクリプションはまた、イベント・サブスクリプション、またはバリュー・サブスクリプションといった所定の条件に基づき得る。バリュー・サブスクリプションは、ＳＶの実際の値が第３者によって変化されたとき、ＳＶの新しい実際の値が通知される要求である。例えば、コヒーレントな状態でとどまる必要がある複数のコントロール・パネル・ビューが、ミキサー・コアであるオーディオ関連デバイスに接続しているとき、バリュー・サブスクリプションが用いられ得る。第１のコントロール・パネル・ビューが、ミキサー・コアにおいてミュートであるとき、第２のコントロール・パネル・ビューは、バリュー・サブスクリプションを有して、第２のコントロール・パネル・ビューにおいてミュートインジケータを制御するＳＶに通知され得る。
【０１１９】
イベント・サブスクリプションは、スイッチ・コンタクト・クロージングといったハードウェア・トリガに応答してＳＶの現在の値が通知される要求である。ＳＶは、それに関連した入力ハードウェアを有するとき、イベント・サブスクリプションをサポートし得る。イベント・サブスクリプションの能力は、ＳＶクラス宣言の一部として示され得る。イベント・サブスクリプションをサポートしていないＳＶからイベント・サブスクリプションを取得する試みは、エラーでもって拒絶される。
【０１２０】
アプリケーションの例において、イベント・サブスクリプションは、割り当て可能なコントロール面上の「バンク」ボタンをインプリメントするために用いれ得る。バンクスイッチは、出力オーディオ・アドレスとして「マクロ（ｍａｃｒｏ）」という名前を保持するＳＶを維持する。バンク・ボタンが押下されるとき、イベント・サブスクリプションは、ＳＶの実際の値をサブスクライブしているオブジェクトに提供し得、サブスクライブしているオブジェクトは、「マクロ」を実行し得、これによって、フェーダを再マッピングする。
【０１２１】
イベントおよびバリュー・サブスクリプションは、相互に排他的でなない。イベントおよびバリュー・サブスクリプションの双方は、同時に有効であり得る。この例は、オートメーション・オブジェクトである。先述された例において、オートメーション・オブジェクトは、バンクスイッチが押下されたときに、記録をするためにイベント・サブスクリプション、および、異なる値にリプログラムされているスイッチをキャプチャするためにバリュー・サブスクリプションを用い得る。先述の例はまた、２つの別々のＳＶとしてコード化され得、１つは、実際のスイッチの押下を表し、別の１つは、スイッチの押下で送達され得る値を表す。この仕組みでは、イベント・サブスクリプションは、オーディオ関連デバイス上でサポートされ得る。
【０１２２】
サブスクリプションはまた、マルチレベルであり得る。ＳＶサブスクリプションでは、サブスクリプションは１つサブスクリプション要求メッセージ内の単一のＳＶ、またはＳＶのリストに対してであり得る。オブジェクトおよび仮想デバイスサブのスクリプションはまた、単一のＳＶまたは複数のＳＶに対してであり得る。オブジェクトにおけるＳＶのすべては、ＳａｔｅＶａｒｉａｂｌｅＳｕｂｓｃｒｉｂｅＡｌｌメッセージといった単一のメッセージを有してサブスクライブされ得る。仮想デバイスまたはオブジェクトが複数のオブジェクトを包含するとき、サブスクライブされるものは、サブスクリプションにおける仮想デバイスまたはオブジェクトの階層オーディオ・ノード構造を形成するＳＶのすべてを含み得る。１つの例において、サブスクリプション・データ・メッセージで送達されるべきデータの量を最小にするために、サブスクライブされるものは、サブスクライブするものの仮想デバイスおよび／またはオブジェクトが、サブスクライブされるものと同一の構造を有すると仮定し得る。サブスクライブされるものが、サブスクライブされるもののオーディオ・ノード構造の一部をミラーするオーディオ・ノード構造の一部を有するとき、アドレッシング情報は、サブスクリプション・データ・メッセージペイロードに含まれるＳＶの実際の値から省かれ得る。ノード全体へのサブスクリプションがまた要求され得る。ノードによって生成されるエラーのすべてにサブスクライブするために、ＳｕｂｓｃｒｉｂｅＥｒｒｏｒｓメッセージといったノード構造メッセージが、サブスクライブされるものの仮想デバイス・ノード・マネージャに向けられ得る。
【０１２３】
サブスクライブするものは、代替目的地の仮想デバイスまたはオブジェクトに供給されるべきサブスクリプション・データ・メッセージを要求し得る。代替目的地はまた、「ミラーされた」オーディオ・ノード構造を含み得る。ミラーされたオーディオ・ノード構造は、ＧＵＩ、コントロール面、またはオートメーションデバイスといったオーディオ関連デバイスが、サブスクライブするものとサブスクライブされるものとおけるにコンポーネントとの間でアドレス衝突を起さずに他の任意のオーディオ関連デバイスにサブスクライブすることを可能にする。
【０１２４】
１つの例において、サブスクライブするもののオブジェクトのＳＶのリストは、個々のＳＶ  ＩＤのそれぞれがサブスクライブデータメッセージで送達される必要がないようにサブスクライブされるもののオブジェクト上のＳＶのリストをミラーする。オブジェクト全体へのサブスクリプションはまた、サブスクリプションがセンサデータおよび非センサデータのすべてに対してであるか、すべてのセンサまたはすべての非センサに対してであるか否かを特定し得る。仮想デバイスへのサブスクリプションは、サブスクリプション・メッセージを仮想デバイスにアドレッシングすることによって行われ得る。仮想デバイスに包含されているＳＶのすべて、および仮想デバイスに包含されているすべてのオブジェクトがサブスクラブされ得る。サブスクライブするものの仮想デバイス構造は、サブスクライブされるものの仮想デバイスの構造と同一であり得る。
【０１２５】
サブスクリプションは、追加およびリムーブメッセージを用いて追加、または取り除かれ得る。例えば、サブスクライブ・メッセージは、サブスクリプションを追加するために用いられ得、アンサブスクライブ・メッセージは、サブスクリプションを取り除くために用いられ得る。サブスクライブ・メッセージは、サブスクライブされるものが、１つ以上の識別されたＳＶに対するサブスクライブされるもののサブスクライブのリストに、サブスクライブするものを追加するように命令する。これに反して、アンサブスクライブ・メッセージは、サブスクライブされるものが、１つ以上の識別されたＳＶに対するサブスクライブのリストから、サブスクライブするものを取り除くように命令する。例えば、同一のオブジェクト上の１つのＳＶから別のＳＶにサブスクリプションを変化することが所望されるとき、第１のサブスクリプションのＵｎＳｕｂｓｃｒｉｂｅおよび新しいサブスクリプションに対するＳｕｂｓｃｒｉｂｅの双方が送達され得る。
【０１２６】
複数のＳＶはまた、ＳＶＵｎＳｕｂｓｃｒｉｂｅＡｌｌメッセージといった単一のアンサブスクライブ・セット・メッセージにおいてアンサブスクライブされ得る。このようなアンサブスクライブ・セット・メッセージは、オブジェクトまたは仮想デバイス下のすべてのＳＶからアンサブスクライブするために用いられ得る。仮想デバイスまたはオブジェクトは、複数のオブジェクトを包含するとき、アンサブスクライブ・セット・メッセージは、アンサブスクライブ・メッセージで識別されるオーディオ・ノード構造の対応する部分において、すべてのＳＶを含み得る。サブスクライブ・メッセージと同様に、送達されるべきデータの量を最小にするために、アンサブスクライブするものは、サブスクライブするものおよびサブスクライブされるもののオブジェクトアドレスおよびＳＶ識別子が相互交換して、用いられるようにミラーされたオーディオ・ノード構造を有し得る。
【０１２７】
（エラー処理）
エラーメッセージは、プロトコルエラーおよびデバイスエラーとして一般的にカテゴリ化される。オーディオ関連デバイスが奇形、さもなければ解読不能のメッセージを受け取るとき、プロトコルエラーが起こる。このタイプのエラーの例は、誤った長さフィールドを有するメッセージである。最良の形態として、デバイスは、すべてのこのようなエラーの検出を試み、報告すべきである。デバイスが、デバイス特定の理由のために要求された動作を行うことをできないとき、デバイスエラーが起こる。このタイプのエラーの例は、一時的にビジー、さもなければ利用不可能であるサブシステムと通信しようとする試みであり得る。別のエラーの形としては、アプリケーションエラーである。アプリケーションの例は、オーディオ関連デバイスの単一のパスにおけるどこかでクリップすることである。
【０１２８】
オーディオ関連デバイスは、メッセージを受け取ると、エラーを報告し得る。エラーを通信するメカニズムは、エラー認識メッセージおよびエラーサブスクリプションを含む。エラー認識メッセージは、エラーを送達デバイスに報告するために用いられ得る。エラー認識メッセージは、メッセージ・ヘッダー・フラグにおいてビットの形式を取る。デバイスが、エラーである、または結果的にエラーになるメッセージを受け取るとき、エラー情報メッセージは、送達するものに戻され得る。
【０１２９】
エラーサブスクリプションは、当事者が、オーディオ関連デバイスによって生成されるエラー認識メッセージにサブスクライブすることを可能にする。エラーサブスクリプションは、動作中に、当事者がすべてのエラーをモニタ、またはログを取り得るように用いられ得る。エラーサブスクリプションでは、サブスクライブされるものによって送達されるすべてのエラーメッセージがサブスクライブするものに複製され得る。エラーサブスクリプションデータは、エラーメッセージおよびエラーを起したオリジナルメッセージを含み得る。そのメッセージのサイズを縮小するために、オリジナルのメッセージが長すぎるとき、オリジナルのサブスクリプション・メッセージが最大のサイズに制限され得、それによってエラーを起したオリジナルのメッセージが結果的にトランケーションされる。
【０１３０】
（イベント・ロギング）
イベント・ロギングは、ノード上の重大な出来事を格納し、報告する方法である。イベントは、ベニュー・プリセットのリコールといった情報的な性質なものであり得、または、電源異常のようなより深刻なエラーであり得る。イベントは、ノードによって記録され、コントロール・パネル・ビューといったイベント・ログ・クライアント・イベントを読み出すときまで、不揮発性ストレージに格納され得る。
【０１３１】
イベント・ロギングは、多くの点においてエラー処理とは異なり得る。
ａ）イベント・ロギングは、良性イベントが可能である。；エラー処理は、故障モードだけを報告する。
ｂ）イベント・ロギングは、クライアントがオンラインでないとき、イベントを保存し得る。；エラー処理は、クライアントがオンラインでないとき、イベントを保存し得えない。
ｃ）イベント・ログは、「オン・デマンド」を供給される。エラーは、サブスクリプションを介してプッシュされる。
ｄ）イベントは、カテゴリを割り当てられ、優先権を与えられ得る。エラーは、カテゴリおよび優先権を与えられ得ない。
【０１３２】
イベント・ログは、メッセージを用いてＸＭＬファイルといった所定のフォーマット、またはバイナリフォーマットでエクスポートされ得る。ＸＭＬは、オーディオ関連デバイスのメモリ・リソースが、結果生じるファイルを生成するために十分である所定のフォーマットである。制限されたリソースを有するオーディオ関連デバイスは、バイナリフォーマット、または独自に圧縮されたフォーマットさえ用い得る。
【０１３３】
ＸＭＬイベント・ログは、ＦＴＰプロトコルといったファイル転送プロトコルを介して転送され得る。ＩＰ対応でないネットワーク上で、ログをエクスポートすることを必要とするオーディオ関連デバイスは、メッセージを介してイベント・ログエントリを転送するバイナリ・イベント・ログ・フォーマットを用い得る。あるいは、イベント・ログは、Ｗｅｂ  Ｂｒｏｗｓｅｒ（登録商標）を介して直接的にアクセスされ得る。
【０１３４】
（ワークグループ）
ノードは、ワークグループにおいて構成され得る。一般的に、ノードのワークグループは、大きな共鳴板といった比較的複雑な機能を有するオーディオ関連デバイスに配置される。オーディオ関連デバイス内において、ノードは、協調動作機能に統合される。ワークグループは、階層的であるが、オーバラップし得ない。各ワークグループは、ストリング名によって識別され得、階層のレベルは、「＼」といった所定の文字によって分けられ得る。ワークグループの例は、コントロール面の機能性を表すノードおよびをオーディオラックの機能性を表すノードといった２つのノードを含むコンソールといったオーディオ関連デバイスであり得る。双方のノードがアクティブであるとき、コンソールは、「全体（ｗｈｏｌｅ）」であると考えられ得る。このオーディオ関連デバイスのワークグループは、「ＦＯＨ  Ｍｉｘｅｒ」として指定され得、ノードは、「ＦＯＨ  Ｍｉｘｅｒ＼Ｓｕｒｆａｃｅ」および「ＦＯＨ  Ｍｉｘｅｒ＼Ａｕｄｉｏ」と呼ばれ得る。
【０１３５】
ワークグループはまた、オーディオ・システムをセグメント化するために用いられ得る。オーディオ・システムのセグメント化は、オーディオ・システムにおけるサブシステムへのアクセスを制御するために、それ以外の場合には、オーディオ・システムの機能性をサブシステムに分けるために所望され得る。例えば、スタジアムのオーディオ・システムのデザインでは、トップレベルのワークグループは、「Ｓｔａｄｉｕｍ」として識別され得る。中間のレベルのワークグループは、「ＳｋｙＢｏｘｅｓ」として識別され得、個々のスカイボックスのそれぞれは、それ自身のワークグループとして識別され得る。従って、この例において、スカイボックスナンバー１０におけるオーディオ関連デバイスのワークグループは、「Ｓｔａｄｉｕｍ＼ＳｋｙＢｏｘｅｓ＼Ｓｋｙｂｏｘ１０」であり得る。発見は、スカイボックスの内側のコントロール面が、そのスカイボックス内のノードだけを発見するように選択し得るように分離され得るが、ワークグループ「Ｓｔａｄｉｕｍ＼ＳｋｙＢｏｘｅｓ」に割り当てられるコントロール面は、スカイボックスのいずれかにおける任意のオーディオ関連デバイスを発見し得る。発見は、より詳細に後述される。
【０１３６】
ワークグループによるセグメント化は、アプリケーション層内の発見プロセスに限定され得る。他のメッセージはなお、異なるワークグループ間でパスされ得る。ワークグループの割り当ては、属性を有し得る。「名前ストリング」といったワークグループストリングは、ノード・マネージャ仮想デバイスの属性であり得る。このストリングは、セットされ、他のオーディオ関連デバイスによってクエリし得る。
【０１３７】
（パフォーマンス機器マネージャ（「ＰＥＭ」））
図５は、ＰＥＭおよびオーディオ・システムの一部のブロック図である。ＰＥＭ５００は、１つ以上のメモリデバイスに格納されている複数の命令およびデータで形成され得る。メモリデバイスは、取り出されるためのデータを保存する任意の媒体であり得、ハードディスクドライブ、コンパクトディスクドライブ、デジタル多用途ディスクドライブ、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他の任意のデジタル格納装置を含み得る。ＰＥＭ５００は、オーディオ・システムにおける任意のオーディオ関連デバイス上に常駐する。
【０１３８】
ＰＥＭ５００は、メモリに格納されているアプリケーション層５０２およびにネットワーク・インターフェース５０４を含み得る。ネットワーク・インターフェース５０４は、ＰＥＭ５００とオーディオ関連デバイス５０６、または複数のオーディオ関連デバイスとの間で通信が可能であるように構成され得る。ＰＥＭのネットワーク・インターフェース５０４は、先述されたオーディオ関連デバイス５０６のネットワーク・インターフェースと同様な態様で動作し得る。例えば、ＰＥＭ５００は、デバイス５０６に直接的に接続され得るか、オーディオ・ネットワーク１２０を用いてデバイス５０６と通信し得る。オーディオ・ネットワーク１２０はまた、先述されたような第１のスイッチ３３０を介して第１のオーディオ・ネットワーク３３４に結合され得る。ＰＥＭ５００は、先述されたようなＥｔｈｅｒｎｅｔ（登録商標）５０８、ＦｉｒｅＷｉｒｅ５１０、ＵＳＢ５１２、ＲＳ２３２  ５１４、またはＲＳ４８５  ５１６といった任意の通信リンクを用いてデバイス５０６と通信し得る。加えて、ＰＥＭ５００は、先述されたオーディオ・ストリーム・モジュール３２２およびオーディオ・サービス・モジュール３２４を含み得る。
【０１３９】
ネットワーク・インターフェース５０４はまた、ルーティング・テーブル５１８を含み得る。ルーティング・テーブル５１８は、ノードとＰＥＭとの間でデータをルーティングするために用いられ得る。ルーティング・テーブル５１８は、オーディオ・ネットワーク１２０上のノード間でルートのリスト、およびノード間で送達されるネットワーク情報を格納し得る。ルーティング・テーブル５１８は、重複ネットワークを可能するノードのセット間の複数のルートを含み得る。ルートは、最短トランジット時間に基づいて選択され得る。いくつかの要因が、最短トランジット時間を決定することにおいて考慮され得る。例えば、ノード間の帯域幅は、特定のルートの「コスト」における要因であり得る。加えて、ホップ・カウントおよびメッセージ・サイズも考慮され得る。これらの要因に基づいて、「コスト」は、各ルートに関連付けられ得、例えば、異なるルートが、コストを最小、または所定のしきい値未満にコストを維持するように選択され得る。
【０１４０】
アプリケーション層が動作しているデバイスの能力に依存して、ＰＥＭのアプリケーション層５０２は、「厚い」アプリケーション層５０２ａ、または「薄い」アプリケーション層５０２ｂのいずれかであり得る。「厚い」ＰＥＭでは、デバイスのオーディオ・ノード構造全体が取得され、オーディオ・ノード構造全体を表す適切なコントロール・パネル・ビューのセットを決定するために分析され得る。しかしながら、「薄い」ＰＥＭは、表示されるべきコントロール・パネル・ビューに対して必要とされるオーディオ・ノード構造の一部だけを取得し、分析し得る。従って、ＰＥＭによって取得され、かつ、分析されたコントロール・パネル・ビューは、ＰＥＭ５００が動作しているオーディオ関連デバイス５０６の演算能力に依存する複雑さのスライド・スケールに基づき得る。いくつかの状況において、「厚い」ＰＥＭは、処理能力を保存するために、またはネットワーク・トラフィックを制限するために「薄い」ＰＥＭと同様な態様で動作し得る。例えば、デバイスにクエリする前に、「厚い」ＰＥＭは、オーディオ・ネットワーク１２０上のトラフィックの量が多いことを認識し得、それ故に、ネットワーク・トラフィックを減らすためにオーディオ関連デバイス５０６のオーディオ・ノード構造の一部だけを取得し得る。
【０１４１】
ＰＥＭのアプリケーション層５０２は、ＧＵＩのコア５２０、プラグイン・インターフェース５２２、および複数のプラグイン５２３を含み得る。プラグイン５２３はジェネリック・プラグイン５２４および１つ以上のプロダクト・プラグイン５２６を含み得る。ＧＵＩのコア５２０は、デバイス５０６のオーディオ・ノード構造にクエリするように構成され得る。このオーディオ・ノード構造データは、デバイス５０６に対する適切なコントロール・パネル検索するためにプロダクト・プラグイン５２６および／またはジェネリック・プラグイン５２４にブロードキャストされ得る。デバイスにおけるオーディオ・ノード構造の各部分が、既知で、かつ、所定のコントロール・パネル・ビューを有するか否かに関わらず、（プロダクト・プラグイン５２６および／またはジェネリック・プラグイン５２４とともに）ＧＵＩのコア５２０は、ディスプレイドライバ５２８に、ディスプレイがオーディオ・ノード構造の各レベルに対してコントロール・パネル・ビューを表示するために駆動するように指示し得る。コントロール・パネル・ビューが、オーディオ・ノード構造全体に対して既知であるとき、所定のコントロール・パネル・ビューは、ディスプレイドライバ５２５を用いて表示され得、デバイスをモニタし、かつ、制御するために用いられ得る。しかしながら、オーディオ・ノード構造のすべて、または一部が未知であるとき、「ジェネリック」コントロール・パネル・ビューまたはオーディオ・ノード構造の未知の部分に対する「ジェネリック」ＧＵＩのアスペクトが動的に生成され、ディスプレイドライバ５２８を用いて表示され得る。「ジェネリック」コントロール・パネル・ビュー、または所定のコントロール・パネル・ビューに含まれるＧＵＩのアスペクトは、デバイスを制御するために用いられ得る。
【０１４２】
ＧＵＩのコア５２０は、ネットワーク・インターフェース５０４を介してデバイス５０６と通信し得る。ＧＵＩ５２０、ジェネリック・プラグイン５２４およびプロダクト・プラグイン５２６間の通信は、プラグイン・インターフェース５２２を通過し得る。ジェネリック・プラグイン５２４およびプロダクト・プラグイン５２６はまた、プラグイン・インターフェース５２２を用いてお互いに通信し得る。
【０１４３】
図６は、ＧＵＩのコア５２０の例のブロック図である。ＧＵＩのコア５２０は、ノード分解能モジュール６００を含み得る。（直接的に、またはネットワークを介して）ＰＥＭに接続された各オーディオ関連デバイスは、一意のノード識別（「ＩＤ」）にも用いて識別され得るノードである。ノード分解能モジュール６００は、ＰＥＭ５００に接続されている各デバイスにノードＩＤを、またはノード・アドレスを割り当てるノードＩＤエンジン６０２を含み得る。新しいデバイスが、ＰＥＭ５００に接続されているとき、ノードＩＤエンジン６０２は、ノードＩＤを新しいノードに割り当て得る。このようなノードＩＤを割り当てるために用いられ得る方法が後述される。
【０１４４】
ＧＵＩのコア５２０はまた、システム・プラグイン・ノード・マネージャ６０４を含み得る。システム・プラグイン・ノード・マネージャ６０４は、プラグイン・インターフェース５２２を介してプロダクト・プラグイン５２６およびジェネリック・プラグイン５２４と通信し得る。システム・プラグイン・ノード・マネージャ６０４は、ＧＵＩマネージャ６０６、システムワイド設定モジュール６０８および制御ライブラリ６１０を含み得る。
【０１４５】
ＧＵＩマネージャ６０６は、コントロール・パネル・ビューのＧＵＩフォーマットのモードを管理するように構成され得る。例えば、ＧＵＩマネージャ６０６は、ベニュー・ビューとプロダクト・ビュー間で切り替え得る。ベニュー・ビューでは、コントロール・パネル・ビューのＧＵＩは、同時に、ユーザがオーディオ・システムにおける複数のデバイスをビューすることを可能にする。例えば、ベニュー・ビューは、オーディオ関連デバイス間の相互関連と同様にシステムにおけるすべてのオーディオ関連デバイスを表示し得る。このモードは、フローティング・ウィンドウを用いてセットアップされ得る。各フローティング・ウィンドウは、デバイスに関しての情報を表示する。プロダクト・ビューでは、単一のオーディオ関連デバイスに対するコントロール・パネル・ビューのＧＵＩが表示され得る。いくつかの例において、プロダクト・ビューは、ユーザが、オーディオ関連デバイスに対するさまざまな仮想デバイスまたはオブジェクトの間を切り替えることを可能にするメニューまたはタブ階層を有し得る。ユーザは、必要に応じプロダクト・ビューとベニュー・ビュー間で切り替え得る。例えば、タブレット・コンピュータ上で見られるといったタッチ・スクリーン・インターフェースを用いるとき、ユーザは、プロダクト・ビューを用い得、また、マウスおよびキーボードを有するコンピュータを用いるとき、ユーザは、ベニュー・ビューを用い得る。図２７は、システムのベニュー・ビューの例を示し、一方、図２８、２９は、プロダクト・ビューの例を示す。
【０１４６】
システムワイド設定モジュール６０８は、後に使用されるためにオーディオ・システムのすべて、または一部の設定を格納するように構成され得る。これらの保存された設定は、後にロードされ、セーブされた構成を再格納するために各オーディオ関連デバイスに送達され得る。ＧＵＩマネージャ６０６はまた、それぞれのプロダクト・プラグイン５２６およびジェネリック・プラグイン５２４の各々によってすべての設定およびコントロール・パネル・ビューが保存さえることを指示し得る。
【０１４７】
ＧＵＩマネージャ６０６はまた、カスタム・コントール・パネル・ビューを生成する能力を提供するように構成され得る。カスタム・コントール・パネル・ビューは、プロダクト・プラグイン５２６およびジェネリック・プラグイン５２４からの所定のＧＵＩのアスペクトまたはジェネリックＧＵＩのアスペクトを用いて異なる複数のデバイスからデータ変数を有するように構成され得る。ＧＵＩマネージャ６０６はまた、複数のホットボタンを有するように構成され得る。ホットボタンは、プロダクト・プラグイン５２６およびジェネリック・プラグイン５２４における特定のデバイスの特定のコントロール・パネル・ビューにマッピングされ得るか、または、ユーザによって作成されたカスタム・コントロール・パネル・ビューにマッピングされ得る。
【０１４８】
カスタム・コントロール・パネル・ビューを作成するとき、異なるプロダクト・プラグインからの特定の格納されている所定のＧＵＩのアスペクトが、格納されている所定のコントロール・パネル・ビューから作成中のカスタマイズされたコントロール・パネル・ビューにドラッグされ得る。例えば、格納されている所定のコントロール・パネル・ビュー上のスライダは、マウスでクリックされ、カスタマイズされたコントロール・パネル・ビューに移動され得る。加えて、カスタマイズされたコントロール・パネル・ビュー内において、ドラッグされ、ドロップされたＧＵＩのアスペクトは、異なるＧＵＩのアスペクトに変化、または「変形」され得る。例えば、ドラッグされ、ドロップされたスライダは、ノブ、ボタン、ロータリ・エンコーダ、リスト・ボックス等に変化され得る。変化されたＧＵＩのアスペクトはまた、異なる値を有するように構成され得る。例えば、０〜１００％のレンジを有し、ドラッグされドロップされるスライダであって、ボタンに変化されたスライダの場合には、このボタンは、２０％は押下した状態で、６０％は押下していない状態を有するように構成され得る。
【０１４９】
ＧＵＩマネージャ６０６はまた、ベニュー機能コントロールを含み得る。ベニュー機能は、デバイスに含まれているベニュー設定の所定の複数のグループを参照し得る。ベニュー設定は、オーディオ関連デバイスのメモリにベニュー・テーブルとして格納され得る。ベニュー・テーブルに含まれているベニュー設定のそれぞれは、オーディオ関連デバイスのオーディオ・ノード構造の対応するコンポーネントによって識別され得る。従って、ベニュー設定のグループが選択されたとき、ベニュー設定のそれぞれは対応するコンポーネントに存在する現存の設定を置換し得る。
【０１５０】
例えば、デバイスのグループは、演奏に対するＥＱ設定のグループおよび演劇に対する異なるＥＱ設定のグループを有し得る。別の例において、いくつかのオーディオ関連デバイスは、あるベニューおいて無効にされ、別のベニューにおいて有効にされ得る。ＧＵＩマネージャ６０６は、ベニュー・テーブルからのベニュー設定のグループの１つの選択することを提供する機能を含み得る。ユーザによってベニュー設定のグループの１つが選択されると、ベニュー設定のグループ識別子を含むセット・ベニュー・メッセージがＰＥＭによって、オーディオ関連デバイスのすべてに送達され得る。ベニュー設定グループに対応するベニュー設定のグループを有するこれらのオーディオ関連デバイスは、セット・ベニュー・メッセージに示されているベニュー設定のグループを有する動作に切り替え得る。このようなベニュー設定のグループを有しないこれらのオーディオ・デバイスは、セット・ベニュー・メッセージを無視し得、および／または無効にされる。
【０１５１】
制御ライブラリ６１０がまた、ＧＵＩのコア５２０に提供され得る。制御ライブラリ６１０は、ユーザ定義のＳＶに関連付けられ得るＧＵＩのコントロール・パネル・ビューおよび／またはＧＵＩのアスペクトのセットを含み得る。例えば、ユーザは、制御ライブラリ６１０からスライダバーを表すＧＵＩのアスペクトを引き、そのスライダバーをオーディオ・システムにおける異なるオーディオ関連デバイスのいくつかのＳＶと関連付け得る。従って、ユーザは、ＧＵＩコントロールパネビュー上のいくつかのスライダ（または他のコントロール）を同時に制御するために「マスター・コントローラ」としてカスタムスライダバーを用い得る。加えて、ユーザは、ＧＵＩのコントロール・パネル・ビューを用いてマスター・コントローラに掘り下げ得、マスタースライダを用いて調整されているデータ変数のオフセットを調整する。
【０１５２】
ＧＵＩのコア５２０はまた、サブスクリプション・マネージャ６１２を含み得る。サブスクリプション・マネージャ６１２は、コントロール・パネル・ビューおよび／またはデバイスにおいて変化されるデータの更新および通知を管理し得る。例えば、ＧＵＩのコントロール・パネル・ビューは、関連したＳＶ値を有するスライダを包含し得る。ユーザが、ＧＵＩのコントロール・パネル・ビューにおけるスライダを移動（従って、スライダに関連したＳＶの実際の値を変化）するとき、サブスクリプション・マネージャ６１２は、サブスクリプションを管理し得る。例えば、サブスクリプション・マネージャ６１２は、データが適切なフォーマットで、対応するＳＶに以前にサブスクライブした対応するオーディオ関連デバイスに送達されたことを確認し得る。
【０１５３】
ＧＵＩのコア５２０はまた、特定のコントロール・パネル・ビュー上でユーザに可視的であるＧＵＩコントロール、およびＧＵＩコントロールに関連しＳＶ値を追跡するリンク・マネージャ６１４を含み得る。リンク・マネージャ６１４は、リンク・エンジン６１６およびイベント・エンジン６１８を含み得る。イベント・エンジン６１８は、コントロール・パネル・ビューまたは対応するオーディオ関連デバイスにおける任意のＳＶの実際の値への変化を通知され得る。コントロール・パネル・ビューにおけるＳＶへの変化がなされるとき、リンク・エンジン６１６は、変化されたＳＶに関連づけられた任意のコントロール・パネル・ビューおよび／またはオーディオ関連デバイスに通知し得る。通知に応答して、コントロール・パネル・ビューは、オーディオ関連デバイスからではなく、対応するプロダクト・プラグイン５２６またはジェネリック・プラグイン５２４におけるコントロール・パネル・ビューからＳＶのアップデートされた実際の値を要求し得る。従って、さまざまなコントロール・パネル・ビューがＰＥＭ５００におけるデータでアップデートされるので、オーディオ関連デバイスへのネットワーク・トラフィックおよびオーディオ関連デバイスからのネットワーク・トラフィックが最小にされ得る。
【０１５４】
同様に、ＳＶが、オーディオ関連デバイスで変化するとき、デバイスは、１つのコントロール・パネル・ビューだけにサブスクライブされ得る。従って、１つのコントロール・パネル・ビューが、デバイスからのメッセージによってアップデートされるとき、イベント・エンジン６１８は、変化されたＳＶの実際の値を表示する対応するすべてのコントロール・パネル・ビューに通知し得る。これに応答して、対応するコントロール・パネル・ビューは、デバイスからではなく、アップデートされたコントロール・パネル・ビューからアップデートされたＳＶの実際の値を要求する。例えば、各オーディオ関連デバイスは、構成状態を含み得る。構成状態は、オーディオ関連デバイスにおけるＳＶが変化されたことを表す単一の数であり得る。構成状態は、他の診断およびメンテナンスに関連したアクティビティと同様に、重大な変化が別のＧＵＩのコントロール・パネル・ビューからのデバイスになされたか否かを決定するために有用であり得る。
【０１５５】
（発見エンジン）
ＧＵＩのコア５２０はまた、プロダクト・プラグイン５２６またはジェネリック・プラグイン５２４と通信し得る発見エンジン６２０を含み得る。オーディオ関連デバイスのオーディオ・ノード構造における１つ以上のコンポーネントが未知であるとき、発見エンジン６２０は、プロダクト・プラグイン５２６またはジェネリック・プラグイン５２４によって開始され得る。オーディオ関連デバイスのオーディオ・ノード構造における未知のコンポーネントは、対応する格納されている所定のＧＵＩのコントロール・パネル・ビューおよび／またはＧＵＩのアスペクトを含まない仮想デバイス、オブジェクト、またはＳＶであり得る。言い換えれば、コンポーネントは、オーディオ・システム内においてあらかじめ決定されない。
【０１５６】
有効であるときには、発見エンジン６２０は、オーディオ・ノード構造に関してオーディオ関連デバイスにクエリし得る。発見エンジン６２０は、ＳＶおよび／またはそれに関連した属性、オブジェクトおよび／またはそれに関連した属性、ならびに、仮想デバイスおよび／またはそれに関連した属性のそれぞれを決定するＳＶ発見モジュール６２２、オブジェクト発見モジュール６２４および仮想デバイス発見モジュール６２６を含み得る。
【０１５７】
静的オーディオ・ノード構造構成を有するオーディオ関連デバイスにとって、このようなデバイスのオーディオ・ノード構造はプロダクト・プラグインによって既に既知であり得るので、発見エンジン６２０での発見は必要でないかもしれない。このような状況では、現在のＳＶ実際の値のクエリが要求されるすべてである。しかしながら、オーディオ関連デバイスのオーディオ・ノード構造のいずれかの部分が既知でないとき、発見エンジン６２０での発見がインプリメントされ得る。加えて、いくつかのオーディオ関連デバイスは、構成可能な仮想デバイスを含む。構成可能な仮想デバイスは、オブジェクトおよび／またはＳＶの異なる構成を有するように、ユーザによって構成され得る。従って、オーディオ・ノード構造は、構成可能であり、このような構成可能な仮想デバイス内のオブジェクトおよびＳＶが、発見エンジン６２０を用いて発見されることが必要とされ得る。
【０１５８】
未知である静的オーディオ・ノード構造の例が互換性の問題として上げられる。例えば、ツアーの際にツアーのオーディオ・システムのための新しいオーディオ関連デバイスを受け取るツアーのサウンドプロバイダを考慮する。ツアーのサウンドプロバイダによって受け取られる新しいオーディオ関連デバイスは、新しいオーディオ関連デバイスによって置換される現存のデバイスに存在しないさらなる機能および／または能力を提供する新しいファームウェアのリビジョンを有する。ツアーのサウンドオペレータが、オーディオ・ノード構造、ならび新しいオーディオ関連デバイスに備えられている対応するＧＵＩのコントロール・パネル・ビューおよび／またはＧＵＩのアスペクトの新しいコンポーネントをロードしてプロダクト・プラグインをアップデートしないとき、新しい特徴へのアクセスは可能ではないかもしれない。また、一層悪いことに、ツアーのサウンドオペレータは、現存の特徴を制御し得ないかもしれない。発見エンジン６２０は、新しいデバイスのオーディオ・ノード構造を発見するメカニズムと、および新しいデバイスの特徴のすべてをビュー、制御およびエディットするデフォルト・エディタが作成されることを可能にする情報を提供するメカニズムとを提供することによってこのような問題を克服し得る。
【０１５９】
発見エンジン６２０は、オーディオ関連デバイスのオーディオ・ノード構造内のコンポーネントを発見するために「獲得」方法を用い得る。オーディオ関連デバイスは、オーディオ・ノード構造に関連した情報を提供するために「Ｉｎｆｏ  ｒｅｔｕｒｎ」メッセージで応答し得る。未知の仮想デバイス、オブジェクト、またはＳＶがオーディオ関連デバイスにおいて存在とき、発見エンジン６２０は、詳細な属性のためにオーディオ関連デバイスにクエリするように配置され得る。このタイプの発見は、未知の発見（ｕｎｋｎｏｗｎ  ｄｉｓｃｏｖｅｒｙ）と呼ばれる。有効なときには、発見エンジン６２０は、オーディオ関連デバイスのオーディノード構造全体、またはオーディオ関連デバイスのオーディノード構造の一部を発見し得る。加えて、発見エンジン６２０は、オーディオ・ノード構造において特定されたコンポーネント、つまり、１つ以上の特定された仮想デバイス、オブジェクトまたはＳＶを発見するように有効にされ得る。
【０１６０】
一度オーディオ関連デバイスがアドレス指定され、かつ、オーディオ・ネットワーク上で利用可能になると、オーディオ・ノード構造のクエリが用いられ得る。オーディオ・ノード構造のクエリは、任意のオーディオ関連デバイスのオーディオ・ノード構造を決定するために用いられ得る。オーディオ・ノード構造のクエリは、呼び出しおよび応答を有効にする所定の要求メッセージを用い得る。オーディオ関連デバイスのクエリの結果として、オーディオ関連デバイスの機能を表す各仮想デバイス、オブジェクトおよびＳＶのそれぞれが取得され得る。
【０１６１】
オーディオ・ノード構造の不明のコンポーネントが識別されるときはいつでも、発見エンジン６２０は、未知のコンポーネントのより詳細な属性情報を発見するように、かつ、オーディオ・ノード構造全体がなんであるのかと、または、未知のコンポーネントが何を表すのかを確実にするように有効にされ得る。従って、オーディオ・ノード構造のクエリによって提供される呼び出しおよび応答機能および／または発見エンジン６２０よって提供される発見機能は、オーディオ・ノード構造のコンポーネントのすべてと、および／またはオーディオ・ノード構造内のコンポーネントの詳細な属性とを確実にするために用いられ得る。
【０１６２】
発見エンジン６２０が、オーディオ・ノード構造全体を決定するように有効されるとき、オーディオ・ノード構造全体のクエリ要求は、単一メッセージで発見エンジン６２０に通信され得る。発見エンジン６２０は、それから、一連のオーディオ・ノード構造のクエリを用いて当該のオーディオ関連デバイスと通信し得る。呼び出しへの応答は収集され、一時的に格納され得るか、その応答は単にプラグイン５２３に転送され得る。応答が収集されるとき、発見エンジン６２０は、その応答に提供される仮想デバイス、オブジェクトおよび／またはＳＶに含まれている属性に基づいて当該のオーディオ関連デバイスのオーディオ・ノード構造全体を構築し得る。オーディオ・ノード構造全体は、それから、単一のメッセージでプラグイン５２３に提供される。
【０１６３】
あるいは、発見エンジン６２０は、オーディオ・ノード構造に存在する、未知のコンポーネントに関連したより詳細な情報を取得するために有効にされ得る。このシナリオでは、仮想デバイス、オブジェクトまたはＳＶは、発見エンジン６２０には未知であると識別され得る。発見エンジン６２０は、それから、１つ以上のコンポーネント特定のオーディオ・ノード構造のクエリを用いて当該のオーディオ関連デバイスと通信し得る。クエリに対する応答は、未知のコンポーネントの詳細な属性を含み得る。詳細な属性は、当該のコンポーネントを構築、または定義するために用いられ得、かつ、たった今定義された未知のコンポーネントを単一のメッセージで提供するために用いられ得る。あるいは、詳細な属性が取得され、発見エンジン６２０によるさらに処理されることなしに、プラグイン５２３に提供され得る。
【０１６４】
オーディオ・ノード構造を決定するためのオーディオ関連デバイスとの初期の通信は、プラグイン５２３の１つを用いて行われ得る。オーディオ関連デバイスのオーディオ・ノード構造を取得するために、オーディオ関連デバイスは、先ず、プラグイン５２３の１つによって、そのノード上の仮想デバイスのリストに対してクエリされ得る。メッセージＧｅｔＶＤＬｉｓｔといった所定のメッセージがオーディオ関連デバイスのノード・マネージャ仮想デバイスに送達され得る。ノード・マネージャは、それ自身を含むそのノード上の仮想デバイスのリストで返答し得る。一度仮想デバイスが識別されると、プラブイン５２３によって、仮想デバイスのすべてが既知であるどうかが決定される。いずれかの仮想デバイスが未知であるとき、プラグイン５２３は、オーディオ・ノード構造全体または未知の仮想デバイスを決定するために発見エンジン６２０を有効にし得る。あるいは、プラグイン５２３は、オーディオ・ノード構造を決定し得る。別の代替において、発見エンジンは、オーディオ関連デバイスとすべての通信を行い、受け取った情報をプラグイン５２３にパスし、プラグイン５２３の指示でオーディオ関連デバイスとさらなる通信を行い得る。
【０１６５】
ノード上の１つ以上の仮想デバイスが未知であるとき、リスト内の未知の仮想デバイスのそれぞれは、未知の仮想デバイスに含まれているＳＶおよびオブジェクトを決定するためにオーディオ・ノード構造のクエリを用いてクエリされ得る。仮想デバイスレベルＳＶを取得するために、ＧｅｔＳＶＬｉｓｔメッセージといった仮想デバイスにアドレス指定される所定の獲得ＳＶメッセージは、仮想デバイスで用いられるＳＶクラスのリストにクエリするために用いられ得る。獲得ＳＶメッセージは、仮想デバイス上の各ＳＶに対するクラスＩＤを含むリストを戻し得る。仮想デバイスにおけるオブジェクトを決定するために、ＧｅｔＯｂｊｅｃｔＬｉｓｔメッセージといった仮想デバイスにアドレス指定される所定の獲得ＳＶメッセージが用いられ得る。仮想デバイスに含まれるオブジェクトのリストは、獲得オブジェクト・メッセージに応答して返送され得る。オーディオ・ノード構造のクエリは、発見エンジンまたはプラグインによって開始され得る。あるいは、リストではなく、仮想デバイス、オブジェクトおよびＳＶが個々にクエリされ得る。
【０１６６】
最終的に、仮想デバイスに含まれているＳＶの実際の値が取得され得る。実際の値は、ＭｕｌｔｉＳＶＧｅｔメッセージといった所定の獲得実際の値メッセージのクエリを用いて取得され得る。獲得実際の値メッセージに応答して、仮想デバイスに含まれているＳＶの実際の値が返送され得る。あるいは、ＳＶがサブスクライブされ得る。実際の値がアップデートされるときはいつでも、サブスクライブされたＳＶが自動的に提供される。
【０１６７】
先述は、未知である構成可能（または動的）な仮想デバイスまたは静的な仮想デバイスの存在および／または未知のコンポーネントを含む構成可能（または動的）な仮想デバイスまたは静的な仮想デバイスの存在を仮定した。オーディオ・ノード構造が未知である静的な仮想デバイスの場合において、オブジェクトおよびＳＶが既知であるので、仮想デバイスへのクエリ以上にさらなるクエリは必要とされないかもしれない。従って、プラグインまたは発見エンジン６２０は、獲得ＳＶメッセージ（ＧｅｔＳＶＬｉｓｔ）、または獲得ブジェクトメッセージ（ＧｅｔＯｂｊｅｃｔＬｉｓｔ）を送達する必要はないかもしれない。
【０１６８】
オブジェクトの受け取られたリストにおいて識別されるオブジェクト・クラスが既知であるとき、ＳＶの実際の値へのクエリだけが、上述の２つの方法のうちの１つを用いて必要とされ得る。仮想デバイスにおける、未知である各オブジェクトに対して、サブオブジェクトおよびＳＶのリストが、獲得ＳＶメッセージおよび／または獲得ブジェクトメッセージを用いて要求され得る。未知のオブジェクト上で行われる必要があるかもしれない他の動作は、オブジェクトにおけるすべてのＳＶの動的属性を発見することである。動的属性は、オブジェクト自身によってセットされ得る。このようなオブジェクトの動的属性を取得するメカニズムは、ＳＶＧｅｔＤｙｎＡｔｔｒｉｕｔｅｓといった所定の獲得動的属性メッセージを有し得る。
【０１６９】
未知のＳＶが識別される際には、ＳＶＧｅｔＳｔａｔｉｃＡｔｔｒｉｂｕｔｅｓといった所定の獲得動的属性メッセージが未知のＳＶを包含するオブジェクトまたは仮想デバイスに送達され得る。これに応答して提供される静的属性は、未知のＳＶを定義するために用いられ得る。
【０１７０】
あるいは、仮想デバイスに対するより効果的な発見メカニズムがまた用いられ得る。所定のオーディオ関連デバイスノード構造のクエリ・メッセージのセットがオーディオ関連デバイスに送達され得る。所定のクエリ・メッセージのセットは、凝縮フォーマットのオーディオ・ノード構造を要求し得る。これに応答して、各仮想デバイスは、オーディオ関連デバイスの機能性を十分に記載した返答を提供し得る。機能性は、例えば、仮想デバイス内のあらかじめ決定されるオブジェクトおよびＳＶメンバーの登録したクラスＩＤによって十分に記載され得る。これらのオーディオ関連デバイスノード構造のクエリ・メッセージのいずれかが、未知であるオブジェクトまたはＳＶクラスを返送するとき、先述されるようなそのコンポーネントのより詳細な発見が行われ得る。
【０１７１】
ゾーン・コントローラであるオーディオ関連デバイスの発見の例がこれから記載される。ゾーン・コントローラは、備え付けられたオーディオ内の単一なゾーンに対してオーディオ・ソース・セレクトおよび利得制御を提供し得るシンプルなウォール・コントローラである。ゾーン・コントローラの機能性は、オーディオ能力を持たないユーザ・インターフェースオブジェクトとしてモデル化され得る。ゾーン・コントローラは、利得およびソース選択機能を行うルータ・オブジェクトに対して２つのサブスクリプションを有するように構成され得る。プロセシングが異なるノード上の別々の処理オブジェクト用いて行われ得る。
【０１７２】
構成不可能な仮想デバイスを有するスタンドアロンノードとしてモデル化されるとき、ゾーン・コントローラは、以下のとおりに見なされ得る。ＳＶＣｌａｓｓＧａｉｎ  ＳＶといった利得ＳＶは、オーディオ処理オブジェクトにおける利得ＳＶにリンクされ得る。ＳＶＣｌａｓｓＣＭＩｎｐｕｔといったソース選択ＳＶは、オーディオ処理オブジェクトにおけるルーティングＳＶにリンクされ得る。ＧｅｔＶＤＬｉｓｔ（ｉｎｆｏ）といった獲得メッセージが、ゾーン・コントローラクラスにおける仮想デバイスを記載するために用いられ得る。この情報にて、このノードが構成可能なメンバーを有していないことが分かる。仮想デバイスは、選択を制御するメカニカルポットおよびボリューム（コントロール面）を制御する２つの瞬間スイッチ以外のユーザ・インターフェースを有しない。ゾーン・コントローラ・オブジェクトにアドレス指定されるＤｅｓｃｒｉｂｅＶＤといった記述メッセージがインスタンス属性、ＳＶの実際の値、およびのゾーン・コントローラ仮想デバイスのサブスクリプションを返し得る。
【０１７３】
デバイスからクエリさえたデータを受け取ると、発見エンジン６２０は、プラグイン・インターフェース５２２を介して情報をプロダクト・プラグイン５２６、またはジェネリック・プラグイン５２４に通信し得る。対応するデバイスに対して選択されるべきまたは作成されるべきコントロール・パネル・ビューおよび／またはＧＵＩのアスペクトを決定するために、情報がプロダクト・プラグイン５２６またはジェネリック・プラグイン５２４によって用いられ得る。
【０１７４】
プロダクト・プラグイン５２６またはジェネリック・プラグイン５２４はまた、未知のコントロール・パネル・ビューおよび／またはＧＵＩのアスペクトの決定を補助するように、発見エンジン６２０を有効にする。未知のコントロール・パネル・ビューまたはＧＵＩのアスペクトは、オーディオ関連デバイスのオーディオ・ノード構造のいくつか、またはすべてを表すプロダクト・プラグイン５２６またはジェネリック・プラグイン５２４のいずれかから利用可能でない１つである。例えば、プロダクト・プラグイン５２６、またはジェネリック・プラグイン５２４が、オーディオ・ノード構造の１つ以上のコンポーネントに対してＧＵＩのアスペクトを作成するためにオーディオ関連デバイスから取得されるオーディオ・ノード構造に含まれている十分な情報を有しないとき、発見エンジン６２０がさらなる詳細を取得するために有効にされ得る。
【０１７５】
（ノード発見マネージャ）
ＧＵＩのコア５２０はまた、ノード発見マネージャ６２８を含み得る。ノード発見マネージャ６２８は、ノード属性要求エンジン６３０およびプラグイン・サーチ・エンジン６３２を含む。ノード属性要求エンジン６３０は、ノードクラス属性に関してデバイスにクエリし得る。クラス属性は、オーディオ関連デバイスの機能性を示し得る。加えて、クラス属性は、オーディオ関連デバイスを対応するプロダクト・プラグイン５２６に一致させるために情報を提供し得る。例えば、クラス属性は、増幅器といったオーディオ関連デバイスのタイプ、モデルといったオーディオ関連プロダクトファミリ、および／またはモデルナンバーまたはプロダクト名といったプロダクト識別子を記述し得る。
【０１７６】
ノード発見マネージャ６２８は、プロダクト・プラグイン５２６のいずれかがデバイスを含むクラスを有するかどうかを決定するためにブロードキャストされたメッセージを有するプロダクト・プラグイン５２６にクエリするためにクラス属性を用い得る。言い換えれば、プロダクト・プラグイン５２６がデバイスに関連しているかどうか、従って、デバイスに対して所定のコントロール・パネル・ビューを有するかどうかを決定する。クエリでブロードキャストされるクラス属性は、プロダクト・プラグイン５２６に格納されているクラス属性と比較され得る。プロダクト・プラグイン５２６の１つがクラス属性認識し、オーディオ関連デバイスとの関連性を示すとき、ノード発見マネージャ６２８は、プロダクト・プラグイン５２６の起動およびプラグイン・インターフェース５２２を有する通信ノードの作成を可能にし得る。
【０１７７】
プラグイン５２３が、オーディオ関連デバイスのオーディオ・ノード構造のコンポーネントを含まないとき、プラグイン・サーチ・エンジン６３２は有効にされ得る。プラグイン・サーチ・エンジン６３２は、オーディオ・ノード構造に含まれている未知のコンポーネントに対して他のプラグイン５２３にクエリするために有効にされ得る。加えて、プラグイン・サーチ・エンジン６３２は、ＧＵＩのアスペクトに対して他のプラグイン５２３にクエリするために有効にされ得る。プロダクト・プラグイン５２６が、オーディオ関連デバイスのオーディオ・ノード構造をサポートするために必要とされるＧＵＩコンポーネントのすべてであって、所定のコントロール・パネル・ビューにおいてそのＧＵＩコンポーネントのすべてを含まないとき、ＧＵＩのアスペクトのクエリは有効にされ得る。他のプラグイン５２３が、それぞれのクエリに含まれる未知のコンポーネントまたはＧＵＩのアスペクトに関する情報を含まないとき、プラグイン・サーチ・エンジン６３２がまた発見エンジン６２０を有効にする。
【０１７８】
ＧＵＩのコア５２０はまた、プラグイン・ローダ６３４を含み得る。プラグイン・ローダ６３４は、ＧＵＩのコア５２０にとって現在利用可能なすべてのプロダクト・プラグイン５２６の動作中のリストを維持し得る。従って、ＧＵＩのコア５２０は、プラグイン・ローダ６３４によって維持されるリストに基づいて、プラグイン・インターフェース５２２との通信を介してプロダクト・プラグイン５２６にクエリおよび／または起動を開始し得る。
【０１７９】
（プラグイン・インターフェース）
図７は、このシステムにおいて用いれ得るプラグイン・インターフェース５２２のブロック図である。プラグイン・インターフェース５２２は、格納モジュール７００およびネットワーク・モジュール７０１を含む。ネットワーク・モジュール７０１は、ＧＵＩのコア５２０とプロダクト・プラグイン５２６との、および／またはジェネリック・プラグイン５２４との間の通信インターフェースの役目を果たす通信コンジット７０２を提供し得る。格納モジュール７００は、プロダクト・プラグイン５２６またはジェネリック・プラグイン５２４を起動するプラグイン・ラーンチャ７０２を含む。追加的に、ネットワーク・モジュール７０１は、ＧＵＩのコア５２０を用いて、プロダクト・プラグイン５２６またはジェネリック・プラグイン５２４と関連しているもとして識別されるオーディオ関連デバイス間の通信をセットアップするノード通信インスタンシエータ７０４を含み得る。オーディオ関連デバイスおよびプラグイン５２３とのそれぞれの通信は別々で、独立したものであり得るので、プラグイン５２１が、オーディオ関連デバイスへの通信パスの知識（ｋｎｏｗｌｅｄｇｅ）を含むことを必要とし得ない。このような知識は、オーディオ関連デバイス、オーディオ関連デバイスのＩＤ等とともに用いられ得る通信プロトコルを含み得る。このような態様で、プラグイン・インターフェース５２２は、（ＧＵＩのコア５２０を介して）デバイスへの通信コンジットを開くことによってオーディオ・ネットワーク１２０からプロダクト・プラグイン５２６またはジェネリック・プラグイン５２４をシールドし得る。従って、プロダクト・プラグイン５２６またはジェネリック・プラグイン５２４は、オーディオ・ネットワーク１２０の知識なしにオーディオ関連デバイスとオーディオ・ネットワーク１２０上で通信し得る。
【０１８０】
（プロダクト・プラグイン）
図８は、このシステムにおいて用いられ得るプロダクト・プラグイン５２６のブロック図である。このシステムは、オーディオ・システムに含まれているオーディオ関連デバイスに関連付けられ得る複数のプロダクト・プラグインを含み得る。プロダクト・プラグイン５２６は、１つ以上の関連したオーディオ関連デバイスをサポートし得る。例えば、同様なモデルナンバー、機能性および／またはメーカーを有するオーディオ関連デバイスは、同一のプロダクト・プラグイン５２６と関連付けられ得る。一般的に、プロダクト・プラグイン５２６は、関連したオーディオ関連デバイスの機能性および制御能力を表すために用いられ得る格納されている所定のオーディオ関連デバイス特定の情報を含み得る。このような情報は、格納されている所定のＧＵＩのコントロール・パネル・ビュー、格納されている所定のＧＵＩのアスペクト、関連したオーディオ関連デバイスのクラス識別情報、オーディオ関連デバイスの格納されている所定のノード構造、格納されている所定のノード構造の部分を含み得る。
【０１８１】
プロダクト・プラグイン５２６は、タイプ発見モジュール８００およびコントロール・パネル・ビュー・ビルダー８０１を含み得る。コントロール・パネル・ビュー・ビルダー８０１は、ノード・インスタンス化エンジン８０２、コントロール・パネル・ライブラリ８０４、コントロール・パネル・データ・ストレージ８０６およびコントロール・パネル・ビュー・バッファ８０８を含み得る。タイプ発見モジュール８００は、プラグイン・インターフェース５２２を介してＧＵＩのコア５２０と通信するノードクラス分析８１０を含み得る。ノードクラス分析８１０は、プラグイン・インターフェース５２２を介してノード属性要求エンジン６３０からブロードキャストされたクラス情報を受け取る。クラス情報は、オーディオ関連デバイスに前もって割り与えられるオブジェクト・クラスＩＤおよびプロダクト名といったクラス属性を含む。クラス情報は、クラス属性クエリに応答してオーディオ関連デバイスによって提供され得る。クラス属性は、オーディオ関連デバイスの性質およびタイプを示す任意の記号、ワード、数字、またはそれらのいくつかの組み合わせであり得る。
【０１８２】
クラス属性は、ノード・クエリで、ノード発見マネージャ６２８によってプロダクト・プラグイン５２６にブロードキャストされ得る。あるいは、プロダクト・プラグイン５２６のそれぞれは、個々にノード・クエリに送達され得る。クラス属性を含むノード・クエリは、プロダクト・プラグイン５２６の１つがデバイスのクラス属性に対応するか否かを決定するために用いられ得る。ライブラリ・ストレージ・モジュール８１６に格納されているクラス属性がクエリに含まれているクラス属性と比較され得る。例えば、ライブラリ・ストレージ・モジュール８１６は、プロダクト動的リンク・ライブラリ（「ＤＬＬ」）を含み得る。ＤＬＬは、プロダクト・プラグイン５２６に関連した各オーディオ関連デバイスのオブジェクト・クラスＩＤおよびプロダクト名を含む静的メンバーを有するパグリック・プロダクトＤＬＬ記述（「ＰＤＤ」）クラスを含み得る。一度クラス属性情報が比較されると、ノードクラス分析８１０は、プロダクト・プラグイン５２６が、オーディオ関連デバイスの対応するクラス属性に関連しているか否かを示すメッセージをＧＵＩのコア５２０に送達し得る。
【０１８３】
プロダクト・プラグイン５２６がデバイスのクラス属性に対応するとき、通信コンジットがプラグイン・インターフェース５２２を介してセットアップされ得る。プラグイン・インターフェース５２２を用いて、取り出し（ｒｅｔｒｉｅｖａｌ）エンジン８１２は、オーディオ関連デバイスからオーディオ・ノード構造を取得するために用いられ得る。オーディオ・ノード構造は、オーディオ関連デバイスの機能性を表し得、ＳＶ、オブジェクトおよび／または仮想デバイスを含み得る。クラス分析８１４は、それから、ライブラリ・ストレージ８１６との比較を行うためにオーディオ・ノード構造をトラバースし得る。ライブラリ・ストレージ８１６は、プロダクト・プラグイン５２６に関連したオーディオ関連デバイスのそれぞれに対する１つ以上の所定のオーディオ・ノード構造および／またはオーディオ・ノード構造コンポーネントを含み得る。オーディオ・ノード構造、および／またはオーディオ・ノード構造コンポーネントは、プロダクト・プラグイン５２６によってサポートされるオーディオ関連デバイスのそれぞれの機能性を示す構成において仮想デバイス、オブジェクトおよび／またはＳＶを含み得る。
【０１８４】
１つの例において、プロダクト・プラグイン５２６は、オーディオ関連デバイスに含まれている仮想デバイスに対してオーディオ関連デバイスにクエリし得る。あるいは、ノード発見マネージャ６２８は、クラス属性の一部として仮想デバイスのリストを受け取り得る。別の例において、プロダクト・プラグイン５２６は、オーディオ関連デバイスに含まれている仮想デバイス、オブジェクトおよび／またはＳＶのそれぞれに対してクエリし得る。
【０１８５】
仮想デバイス、オブジェクトおよび／またはＳＶが既知であるとき、オーディオ・ノード構造のその部分の表現およびオーディオ・ノード構造のその部分が既知であるという表示が、ノード構造ストレージ８１８に格納され得る。例えば、表現は、既知である仮想デバイスのリストおよび既知である仮想デバイスの表示であり得る。別の例において、オーディオ・ノード構造の既知の部分およびにオーディオ・ノード構造の既知の部分に含まれている属性が、ノード構造ストレージ８１８に格納され得る。オーディオ関連デバイスから受け取られたオーディオ・ノード構造のいずれかの部分が、ライブラリ・ストレージ８１８に含まれているオーディオ・ノード構造と、またはノード構造コンポーネントとに含まれている所定の仮想デバイス、オブジェクト、ＳＶと対応していることが見出されないとき、プラグイン・サーチ・エンジン６３２は、取り出しエンジン８１２によって、オーディオ・ノード構造の未知のコンポーネントに対して他のプロダクト・プラグイン５２６およびジェネリック・プラグイン５２４にクエリするために有効にされ得る。あるいは、プロダクト・プラグイン４２４が、このようなクエリを行い得る。
【０１８６】
未知のコンポーネントが別のプラグイン５２３に存在するとき、未知のコンポーネントが取り出され、ライブラリ・ストレージ８１６に格納され、かつ、オーディオ・ノード構造を十分に定義するために用いられ得る。オーディオ・ノード構造の対応するコンポーネンが、それから、ノード構造ストレージに格納され得る。未知のコンポーネントが、プロダクト・プラグイン５２６およびジェネリック・プラグイン５２４のいずれかから利用可能でないとき、発見エンジン６２０は、オーディオ関連デバイスのオーディオ・ノード構造全体、または先述されたようなオーディオ関連デバイスの未知のコンポーネントのいずれかを決定するために開始され得る。発見エンジン６２０によって決定されたオーディオ・ノード構造および／またはコンポーネントがオーディオ関連デバイスのオーディオ・ノード構造に関連付けられ、ライブラリ・ストレージ８１６に格納され得る。発見エンジン６２０によって取得された、オーディオ・ノード構造の未知の部分に対する詳細な属性がまた、ノード構造ストレージ８１８に格納され得る。
【０１８７】
発見エンジン６２０は、複数のプロダクト・プラグイン５２６および／またはジェネリック・プラグイン５２４のいずれかの１つによって有効にされ得るので、これは好都合である。つまり、プロダクト・プラグイン５２６およびジェネリック・プラグイン５２４のそれぞれは、発見エンジン６２０を動作させる命令を格納および実行をする必要がない。加えて、発見エンジン６２０内の命令に対する変化およびアップデートが一度なされ得る。
【０１８８】
一度オーディオ関連デバイスのオーディオ・ノード構造全体が決定され、表示がノード構造ストレージ８１８に格納されると、ノード・インスタンス化エンジン８０２は、１つ以上のコントロール・パネル・ビューを識別するために、ノード構造ストレージ８１８に格納されているオーディオ・ノード構造を利用し得る。コントロール・パネル・ビューは、オーディオ・ノード構造のコンポーネントおよび／またはオーディオ・ノード構造のコンポーネントに含まれている属性に基づいて識別され得る。例えば、格納されている所定のコントロール・パネル・ビューが１つ以上の特別に識別された仮想デバイスに関連付けら得る。
【０１８９】
ノード・インスタンス化エンジン８０２は、コントロール・パネル・ライブラリ８０４にアクセスし、オーディオ・ノード構造のコンポーネントに対応する１つ以上のＧＵＩのコントロール・パネル・ビューを取得し得る。コントロール・パネル・ライブラリ８０４は、ディスプレイに表示され得る所定のＧＵＩのコントロール・パネル・ビューおよび／または所定ＧＵＩのアスペクトを格納し得る。対応するＧＵＩのコントロール・パネル・ビューは、ノード・インスタンス化エンジン８０２によって構成され、インスタンス化のために格納され得る。ユーザによって、オーディオ関連デバイスの機能のモニタ、制御および動作を可能にすることを要求されるとき、ＧＵＩのコントロール・パネル・ビューは、ノード・インスタンス化エンジン８０２によってインスタンス化され、かつ、表示され得る。
【０１９０】
ノード・インスタンス化エンジン８０２はまた、コントロール・パネル・ビューにおいてＳＶに対してサブスクライブ・メッセージングをセットアップし得る。加えて、ノード・インスタンス化エンジン８０２は、コントロール・パネル・ビューおよび関連したＳＶに関してリンク・マネージャ６１４と通信し得る。コントロール・パネル・データ・ストレージ８０６は、ノード・インスタンス化エンジン８０２によってインスタンス化されるＧＵＩのコントロール・パネル・ビューに含まれているＳＶの実際の値を格納するために用いられ得る。ＳＶの実際の値は、取り出しエンジン８１２を用いてオーディオ関連デバイスから取り出され、コントロール・パネル・データ・ストレージ８０６で格納されるためにノード・インスタンス化エンジン８０２に提供され得る。コントロール・パネル・データ・ストレージ８０６はまた、先述されるようにＧＵＩマネージャ６０６によって指示されるとき、すべての設定およびコントロール・パネル・ビューを格納し得る。
【０１９１】
コントロール・パネル・ビュー・バッファ８０８はまた、ＧＵＩのコントロール・パネル・ビューに関連したデータをバッファするために提供され得る。コントロール・パネル・ビュー・バッファ８０８は、コントロール・パネル・ビューおよびその関連データをバッファし得、一方、ノード・インスタンス化エンジン８０２は、インスタンス化および表示のためにＧＵＩのコントロール・パネル・ビューを用意する。加えて、複数のＧＵＩのコントロール・パネル・ビューが用意され、コントロール・パネル・ビュー・バッファ８０８に格納され得る。従って、ユーザが、さまざまなＧＵＩのコントロール・パネル・ビューを要求するとき、そのビューは、コントロール・パネル・ビュー・バッファ８０８においてバッファされているコントロール・パネル・ビューのセットから抽出され得る。抽出されたＧＵＩのコントロール・パネル・ビューは、ディプレイ上に、コントロール・パネル・データ・ストレージ８０６に格納されているＳＶの実際の値を有してインスタンス化され得る。実際の値がコントロール・パネル・データ・ストレージ８０８に格納され、および／またはＧＵＩのコントロール・パネル・ビューにおいてインスタンス化される一方で、実際の値がアップデートされ得る。このことは、獲得コマンドを用いて、またはサブスクリプションによって起きる。
【０１９２】
コントロール・パネル・ビュー・バッファ８０８において形成され、格納されるコントロール・パネル・ビューの数は、ＰＥＭの能力に基づき得る。ＰＥＭが「厚い」ＰＥＭであるときは、オーディオ・ノード構造全体に対するＧＵＩのコントロール・パネル・ビューが構築され、格納され得る。あるいは、ＰＥＭが「薄い」ＰＥＭであるときは、わずかな、または１つだけのコントロール・パネル・ビューが、いつでも構築され、格納され得る。
【０１９３】
ノード・インスタンス化エンジン８０２によって選択される１つ以上のコントロール・パネル・ビューが、オーディオ関連デバイスのオーディオ・ノード構造全体をサポートしていないとき、ノード・インスタンス化エンジン８０２、または発見エンジンは、オーディオ・ノード構造のサポートされていないコンポーネントをサポートし得る１つ以上の格納されている所定のＧＵＩのアスペクトに対してコントロール・パネル・ライブラリ８０４をチェックし得る。加えて、別のプロダクト・プラグイン５２６がオーディオ・ノード構造のサポートされていない部分を表し得る１つ以上の格納されている所定のＧＵＩのアスペクトに対してチェックされ得る。例えば、オーディオ・ノード構造のサポートされていない部分は、それ以外の場合にはサポートされている仮想デバイス内に包含されるオブジェクトおよび／またはＳＶのいくつかであり得る。
【０１９４】
オーディオ・ノード構造を表し得るＧＵＩのアスペクトを決定することは、オーディオ・ノード構造に含まれている属性に基づき得る。例えば、オーディオ・ノード構造のコンポーネントの属性がゼロから１００％までの可変コントロールを必要とするコントロールＧＵＩのアスペクトを記述し得るか、またはスライダがコントロールＧＵＩのアスペクトの機能性を表すために必要であることを特別に示し得る。別の例において、ノード構造コンポーネントの属性がゼロから１００％までの可変インジケータを必要とするインジケータＧＵＩのアスペクトを記述し得るか、または数値ディスプレイがインジケータＧＵＩのアスペクトの機能性を表すために必要であることを特別に示し得る。
【０１９５】
オーディオ・ノード構造の属性に記述される適正を満たすために欠けているＧＵＩのアスペクトがあらかじめ決定され、かつ、コントロール・パネル・ライブラリ８０４、または別のプロダクト・プラグイン５２６に格納されているとき、格納されている所定のＧＵＩのアスペクトは、取り出され、所定のＧＵＩのコントロール・パネル・ビューに統合され得る。このＧＵＩアスプクトの統合は、配置、サイズ調整、カラー調整、格納されている所定のＧＵＩのコントロール・パネル・ビューにおける現存するＧＵＩコンポーネントとのＧＵＩのアスペクトの相互関連、および／または対応するオーディオ・ノード・構造の属性によって識別される他の任意の動作および／または構成を含み得る。ＧＵＩのアスペクトの取り込みに続いて、ノード・インスタンス化エンジン８０２は、オーディオ関連デバイスのオーディオ・ノード構造に関連して新しい所定のＧＵＩのコントロール・パネル・ビューとして統合されたＧＵＩのアスペクトを含むＧＵＩのコントロール・パネル・ビューを格納し得る。新しい所定のＧＵＩのコントロール・パネル・ビューは、コントロール・パネル・ライブラリ８０４に格納され得る。統合されたＧＵＩのアスペクトを含むＧＵＩのコントロール・パネル・ビューは、格納され、ともにディスプレイ上でインスタンス化され得る。
【０１９６】
欠けているＧＵＩのアスペクトが、プロダクト・プラグイン５２６のいずれかから利用可能でないとき、ジェネリック・プラグイン５２４が有効にされ得る。ジェネリック・プラグイン５２４は、オーディオ・ノード構造をサポートしているデフォルト・パネル（エディタ）といった１つ以上のジェネリックＧＵＩコントロール・パネルを構築するために有効にされ得る。ジェネリック・プラグイン５２４によって構築されたジェネリックＧＵＩコントロール・パネルがノード・インスタンス化エンジン８０２に提供され得る。ノード・インスタンス化エンジン８０２は、オーディオ関連デバイスの機能性を表示するためにジェネリックＧＵＩコントロール・パネルを用い得る。あるいは、格納されている所定のＧＵＩのアスペクトに関連していないオーディオ・ノード構造のコンポーネントの機能性を表すジェネリックＧＵＩのアスペクトを生成するために、ジェネリック・プラグイン５２４がプロダクト・プラグイン５２６によって有効にされ得る。発見エンジン６２０を用いて生成されたおよび／または識別された任意のＧＵＩのアスペクトはまた、所定のコントロール・パネル・ビューの欠けている部分を充填ためにノード・インスタンス化エンジン８０２によって用いられ得る。ノード・インスタンス化エンジン８０２はまた、オーディオ・ノード構造の属性に基づいて、生成されたＧＵＩのアスペクトを所定のコントロール・パネル・ビューの現存するＧＵＩコンポーエントとを相互に関連付ける。
【０１９７】
ノード・インスタンス化エンジン８０２はまた、インスタンス化されたＧＵＩのコントロール・パネル・ビューを表示することを提供するデバイスの演算能力およびコントロール面の使用可能性を考慮し得る。デバイスの能力に基づいて、ノード・インスタンス化エンジン８０２は、格納されている所定のＧＵＩのコントロール・パネル・ビュー、または格納されている所定のＧＵＩのアスペクトを簡素化、エンハンス、削除、または装飾（ｅｍｂｅｌｌｉｓｈ）し得る。例えば、ディスプレイが小さく、表示のために低い解像度、または制限された「実際の面積（ｒｅａｌ  ｅｓｔａｔｅ）」といった制限されたディスプレイ能力しか有さないときには、格納されている所定のＧＵＩのコントロール・パネル・ビューに含まれる選択されたＧＵＩコンポーネントは、より簡素なＧＵＩコンポーネントに変化され得るか、別のコンポーネントに組み合わされ得るか、または完全に削除され得る。別の例において、ディスプレイが比較的大きく、高い解像度のディスプレイ能力を含むとき、格納されている所定のＧＵＩのコントロール・パネル・ビューは、グラフィカル的により詳細な、または自動化等を有するといったより複雑なＧＵＩコンポーネントを含むように変化され得る。ＧＵＩのコントロール・パネル・ビューを表示することを提供するデバイスの演算能力を考慮することはまた、格納されている所定のＧＵＩのアスペクトおよび／またはＧＵＩのアスペクトの統合に影響し得る。
【０１９８】
コントロール面を有効にするように構成されている格納されている所定のコントロール・パネル・ビューに対する変化がまた、ハードウェアのコントロール面と一致するようになされ得る。例えば、オーディオ・ノード構造における属性によって記述されるようにコントロール・パネル・ビューのハードウェアが指示するとき、コントロール面におけるアナログ計測器を駆動する機能性を含む格納されている所定のコントロール・パネル・ビューが、デジタル数値ディスプレイを駆動する機能性に変化され得る。
【０１９９】
（ジェネリック・プラグイン）
図９は、ジェネリック・プラグイン５２４のブロック図である。ジェネリック・プラグイン５２４は、デバイスのクラス属性が、プラグイン・ローダ６３４において現在リストアップされているプロダクト・プラグイン５２６のいずれかによって認識されていない際に有効にされ得る。有効にされるとき、ジェネリック・プラグイン５２４は、オーディオ関連デバイスのオーディオ・ノード構造を決定し得る。オーディオ・ノード構造は、先述されるように発見エンジン６２０によって決定され得る。加えて、ジェネリック・プラグイン５２４が、プロダクト・プラグイン５２６に格納されている、格納されている所定のＧＵＩのコントロール・パネル・ビューによって完全にサポートされていないとき、ジェネリック・プラグイン５２４は１つ以上のジェネリックＧＵＩのコントロール・パネル・ビューを作成するために有効にされ得る。
【０２００】
プロダクト・プラグイン５２６のいずれもオーディオ関連デバイスのクラス属性をサポートしないとき、ジェネリック・プラグイン５２４は、プラグイン・インターフェース５２２を介して、デバイスによって提供されるオーディオ・ノード構造に基づいて「。ジェネリック」コントロール・パネル・ビューの１つ、またはそのセットを動的に作成するためにＧＵＩのコア５２０によって有効にされ得る。あるいは、オーディオ関連デバイスのクラス属性をサポートしているプロダクト・プラグイン５２６の１つが、デバイスのオーディオ・ノード構造における１つ以上のコンポーネントに対応する所定のコントロール・パネルを有しないとき、ジェネリック・プラグイン５２４は、デバイスによって提供されるオーディオ・ノード構造に基づいて、１つ以上の「ジェネリック」コントロール・パネル・ビューを動的に作成するためにプロダクト・プラグイン５２６によって有効にされ得る。加えて、格納されている所定のＧＵＩのアスペクトがオーディオ・ノード構造における１つ以上のコンポーネントに対して存在しないとき、ジェネリック・プラグイン５２４が同様に、ジェネリックＧＵＩのアスペクトを生成するために有効にされ得る。ジェネリック・プラグイン５２４は、コントロール・パネル・ファクトリ９００、属性分析９０２、ノード・インスタンス化エンジン９０４、配置エンジン９０６、取り出しエンジン９０８、コントロール・パネル・ビュー・バッファ９１０、ノード構造ストレージ９１２、およびコントロール・パネル・データ・ストレージ９１４を含み得る。
【０２０１】
ＧＵＩのコア５２０（図５および図６）は、オーディオ関連デバイスのオーディオ・ノード構造を取得するためにオーディオ関連デバイスおよび／またはプロダクト・プラグイン５２６と通信するように有効にされ得る。あるいは、取り出しエンジン８０８は、オーディオ関連デバイスのオーディオ・ノード構造および属性を取得し得る。一度取得されると、オーディオ関連デバイスのオーディオ・ノード構造および／または属性は、先述されるように、ノード構造ストレージ９１２に格納され得る。加えて、取得されたＳＶの実際の値が先述されるように、コントロール・パネル・データ・ストレージ９１４に格納され得る。
【０２０２】
属性分析９０２は、オーディオ関連デバイスの格納されているオーディオ・ノード構造に関連した属性をレビューし得る。オーディオ・ノード構造の属性の分析に基づいて、ノード・インスタンス化エンジン９０４は、ジェネリックＧＵＩのコントロール・パネル・ビューおよび／またはジェネリックＧＵＩのアスペクトの１つ、またはそのセットを生成するためにコントロール・パネル・ファクトリ９００を開始し得る。ジェネリックＧＵＩのコントロール・パネル・ビューまたはジェネリックＧＵＩのアスペクトにおけるＧＵＩコンポーネントは、格納されているオーディオ・ノード構造に含まれている属性に基づいて決定され得る。
【０２０３】
ノード・インスタンス化エンジン９０４は、ジェネリックＧＵＩのコントロール・パネル・ビューに統合するために属性によって記述される格納されている所定のＧＵＩのアスペクトに対してプロダクト・プラグイン５２６を検索するようにプラグイン・サーチ・エンジン６３２（図６）を有効にし得る。あるいは、ノード・インスタンス化エンジン９０４は、プロダクト・プラグイン５２６から格納されている所定のＧＵＩのアスペクトを検索し、取得し得る。このようにして、１つ以上のジェネリック・コントロール・パネル・ビューは、所定のＧＵＩのアスペクトおよび生成された「ジェネリック」ＧＵＩのアスペクトを含み得る。
【０２０４】
ジェネリックＧＵＩのコントロール・パネル・ビューのすべて、または一部を生成するためにオーディオ関連デバイスから受け取られるオーディオ・ノード構造において十分な属性が利用可能でないとき、発見エンジン６２０は、デバイスから追加的な情報を取得し、提供するために有効にされ得る。このような追加的な情報は、オーディオ・ノート構造に関して追加的な情報を含み得る。例えば、オブジェクトおよび／またはＳＶの情報の取り出しは、オーディオ・ノード構造に含まれる仮想デバイスだけを以前供給していたオーディオ関連デバイスから取得され得る。加えて、取得される情報は、サイズ、カラー、形状、配線、オーディオ・ノード構造における別のコンポーネントとの相互関連、機能性の詳細、関連配置等といったオーディオ・ノード構造のコンポーネントの詳細な属性を含み得る。
【０２０５】
ノード・インスタンス化・エンジン９０４は、表示のために完了したジェネリックＧＵＩのコントロール・パネル・ビューまたはジェネリックＧＵＩのアスペクトをインスタンス化し得る。加えて、ＳＶの実際の値がコントロール・パネル・データ・ストレージ９１４から取り出され、ジェネリックＧＵＩのコントロール・パネル・ビューまたはジェネリックＧＵＩのアスペクトに含まれ得る。あるいは、ジェネリックＧＵＩのアスペクトは、格納されている所定のＧＵＩのコントロール・パネル・ビューを完了するようにプロダクト・プラグインに提供され得る。ジェネリックＧＵＩのコントロール・パネル・ビューまたはジェネリックＧＵＩのアスペクトは、後ほど取り出されるためにオーディオ関連デバイスに関連して格納され得る。ジェネリック・コントロール・パネル・ビューまたはジェネリックＧＵＩのアスペクトの格納がコントロール・パネル・データ・ストレージ９１４にされ得る。
【０２０６】
ノード・インスタンス化エンジン９０４はまた、ジェネリックＧＵＩのコントロール・パネル・ビューにおける各ＳＶに対してサブスクライブ・メッセージングをセットアップし、ジェネリック・コントロール・パネル・ビューおよびそれに関連したＳＶに関してリンク・マネージャ６１４と通信し得る。ジェネリック・プラグイン５２４はまた、配置エンジン９０６をオプション的に含み得る。配置エンジン９０６は、オーディオ・ノード構造に含まれている属性に基づいて「厚い」ＰＥＭ内のジェネリック・コントロール・パネル・ビューにおけるＧＵＩのアスペクトの配置を管理し得る。加えて、「厚い」ＰＥＭ内で、コントロール・パネル・ビュー・バッファ９１０はまた、デバイスに対するジェネリック・コントロール・パネル・ビューの追加的な層に関してバッファ・データにオプション的に提供され得る。ノード・インスタンス化エンジン９０４はまた、オーディオ・ノード構造を取得し、ジェネリック・コントロール・パネル・ビューおよび／またはジェネリックＧＵＩのアスペクトを構築するとき、先述されるようなディスプレイを含むデバイスの能力を考慮し得る。
【０２０７】
（Ｖ．オーディオ関連デバイス（続き））
図１０は、図２および図３に図解されるオーディオ関連デバイス２００の一部のブロック図である。オーディオ関連デバイス２００の例の一部は、ネットワーク・インターフェース３０２、オーディオ・ストリーム３２２、仮想デバイス・エンジン１００２、オブジェクト・エンジン１００４、ＳＶエンジン１００６、ノード識別モジュール１００８、サブスクリプション・マネージャ・モジュール１０１０、デバイス・ツー・デバイス通信マネージャ・モジュール１０１２、およびリンク・マネージャ・モジュール１０１４を含む。図１０に示されるさまざまなモジュールは、メモリ２０６に格納され得、プロセッサ２０４（図２）によって選択的に実行可能である。他の例において、追加的なモジュールが、オーディオ関連デバイス２００の記述された機能性を表すために含まれ得る。
オーディオ関連デバイス２００のそれぞれは、オーディオ・ネットワーク１２０（図１）上のノードとして表され得る。各オーディオ・ノード構造は、仮想デバイス、オブジェクト、およびノードを含む３レベル階層を含み得る。各仮想デバイスは、１つ以上のオブジェクトおよび１つ以上のＳＶをグループ化し得る。仮想デバイス、オブジェクト、およびＳＶは、対応するオーディオ関連デバイス２００の機能性、設定および動作的なアスペクトを表す。ＳＶは、通常、可変データの形式である動作パラメータである。
【０２０８】
仮想デバイス・エンジン１００２は、ノードに含まれている１つ以上の仮想デバイスの複数の属性を追跡し、維持するように構成される。属性は、静的、または動的であり得、対応する仮想デバイスの能力、機能性および動作性の記述を提供し得る。加えて、ネスト化されたノードの構成のために、仮想デバイス・エンジン１００２はまた、仮想デバイスに含まれるオブジェクトおよびＳＶ追跡し、維持し得る。オブジェクト・エンジン１００４は、ノードにおけるオブジェクトに関連した属性を追跡し、維持するように構成されている。加えて、オブジェクト・エンジン１００４は、オブジェクトにネスト化されたＳＶを追跡し、維持するように構成されている。ＳＶエンジン１００６は、オーディオ関連デバイス（ノード）に存在する実際のデータの値を追跡、維持するように構成されている。
【０２０９】
オーディオ関連デバイス２００が当初ネットワークに結合されているとき、ノード識別モジュール１００８はノードＩＤ生成するように構成されている。ノードＩＤは、ネットワーク１２０上のオーディオ関連デバイス２００を一意に識別し得る。ノードＩＤは、手動による割り当てよって、またはアドレス・ネゴシエーションを介してといった多くの異なる態様で割り与えられ得る。先述されるように、ノードＩＤはまた、ＰＥＭによって割り与えられ得る。ノードＩＤが手動で割り与えられ得る例において、ノードＩＤは、オーディオ関連デバイス２００に関連した物理的な（有形の）スイッチを用いてセットされ得る。例えば、ノードＩＤは、オーディオ関連デバイス２００上のＤＩＰ―スイッチ、またはパネル設定を介して割り与えられ得る。
【０２１０】
ノードＩＤは、オーディオ・ネットワーク上のオーディオ関連デバイス間のアドレス・ネゴシエーションを介して割り与えられ得る。いくつかの例において、オーディオ関連デバイは、オーディオ・ネットワークからのメッセージで受け取られるノードＩＤに基づいて、ノードＩＤを割り与えられ得る。別の例において、オーディオ関連デバイス２００は、例えば、ランダムに、またはシーケンシャルにノードＩＤを選択することによってＩＤノードＩＤを生成し得る。ランダム・アドレス・ネゴシエーションは、アドレス衝突の可能性を最小にし得る。シーケンシャル・アドレス・ネゴシエーションは、オーディオ関連デバイスが、名前より、むしろ数値アドレスによって識別され得る例において特に有用であり得る。シーケンシャル・アドレス・ネゴシエーションが用いられる例において、第１のオーディオ関連デバイスがアドレス１、アドレス２等を取るごとにオーディオ関連デバイスがパワー・アップし得る。いくつかの例において、パワー・シーケンサは、オーディオ関連デバイスをシーケンシャルにパワー・アップするために用いられ得る。
【０２１１】
ランダム、またはシーケンシャルのいずれかの態様でノードＩＤを選択する方法の例が図１１に示されている。パワー・アップすると、オーディオ関連デバイス２００は、ステップ１１０１に示されるように有効なノードＩＤが割り与えられたかどうかを決定し得る。オーディオ関連デバイス２００が有効なノードＩＤを有するとき、そのノードＩＤが用いられ得る。パワー・アップした際に、オーディオ関連デバイス２００が有効なノードＩＤを有しないとき、オーディオ関連デバイス２００は、アドレス・ネゴシエーション・プロセスをスタートし得る。オーディオ関連デバイス２００は、パワー・アップした際に、「０」といった所定の無効なノードＩＤを用いて、またはメモリ２０６に格納されているノードＩＤを無効であるとカテゴリ化する属性によってノードＩＤが無効であることを決定し得る。いくつかの例において、ノードＩＤは、オーディオ関連デバイス２００をパワー・アップしたとき、その同一のノードは、パワー・アップされた前回の時から再格納されるように、同一のノードＩＤが不揮発性ストレージに格納され得る。他の例において、ノードＩＤは、パワー・ダウンした際に無効にされ得る。
【０２１２】
ステップ１１０２では、オーディオ関連デバイス２００が、シーケンシャル・アドレス・ネゴシエーションに対して構成されているか否かの決定がなされる。オーディオ関連デバイス２００が、シーケンシャル・アドレス・ネゴシエーションに対して構成されているとき、オーディオ関連デバイス２００は、ステップ１００４に示されるようにテスト・ノードＩＤを所定のアドレスにセットし得る。例えば、所定のアドレスは、「１」であり得る。オーディオ関連デバイス２００は、ステップ１００６に示されるようにネットワークの混雑を最小にするためにある時間（例えば、ランダムな時間）を待機し得る。テスト・ノードＩＤは、ステップ１００８に示されるようにネットワーク上の他のオーディオ関連デバイスに、テスト・ノードＩＤが既に用いられているか否を決定する要求アドレス・メッセージとしてブロードキャストされ得る。要求アドレス・メッセージを受け取ると、ネットワーク上の他のオーディオ関連デバイスは、ステップ１０１０に示されるように、テスト・ノードＩＤが既に用いられているか否を決定し得る。オーディオ関連デバイス２００が、要求アドレス・メッセージに対する応答を受け取らないとき、ノードＩＤは、ステップ１００２に示されるようにテスト・ノードＩＤにセットされ得る。テスト・ノードＩＤが用いられているとき、一意のノードＩＤが選択されるまで、ステップ１０１４に示されるように、オーディオ関連デバイス２００はテスト・ノードＩＤを引き続きしてインクリメントし得る。
【０２１３】
オーディオ関連デバイス２００がシーケンシャル・アドレス・ネゴシエーションに対して構成されていないとき、ステップ１０１６に示されるように、オーディオ関連デバイス２００がランダム・アドレス・ネゴシエーションに対して構成されているか否の決定がされ得る。ランダム・アドレス・ネゴシエーション構成でないときには、オーディオ関連デバイスはノードＩＤを生成するたに別の方法を用い得る。しかしながら、オーディオ関連デバイス２００がランダム・アドレス・ネゴシエーションに対して構成されているとき、オーディオ関連デバイス２００はステップ１０１８に示されるように、ランダム・ノートＩＤを生成し得る。いくつかの例において、オーディオ関連デバイスのシリアル・ナンバーは、ノードＩＤをランダムに生成するためのシード（ｓｅｅｄ）であり得る。ネットワーク上の他のオーディオ関連デバイスのノードＩＤとの衝突を避けるために、オーディオ関連デバイス２００は、ステップ１０２０に示されるように、生成されたノードＩＤを有する要求アドレス・メッセージをブロードキャストし得る。ステップ１０２２に示されるように、ネットワークの混雑を最小にするために、ブロードキャストはある時間（例えば、ランダム時間）待機後に起こり得る。要求アドレス・メッセージを受け取ると、ネットワーク上の他のオーディオ関連デバイスは、ステップ１０２４に示されるように、生成されたノードＩＤが既に用いられているか否かを決定し得る。生成されたノードＩＤが用いられているとき、オーディオ関連デバイス２００は通知され得る。オーディオ関連デバイス２００は、一意のノードＩＤが選択されるまでランダム・ノードＩＤを引き続き生成し得る。オーディオ関連デバイス２００が要求アドレス・メッセージに対する応答を受け取らないとき、ノードＩＤは、ステップ１０２６に示されるように生成されたノードＩＤにセットされ得る。
【０２１４】
あるいは、オーディオ関連デバイスは、メモリ２０６に格納されているノードＩＤを用い得る。例えば、ノードＩＤを割り与えられる前に、オーディオ関連デバイス２００は当初は「０」といった所定のノードＩＤを有し得る。いくつかの例において、ノードＩＤは、オーディオ関連デバイス２００がパワー・アップしたとき、同一のノードＩＤは、パワー・アップされた前回の時から再格納されるように、不揮発性ストレージに格納され得る。例えば、メモリに格納されているノードＩＤが、「０」といった所定のノードＩＤでないために、オーディオ関連デバイス２００はノードＩＤが以前割り当てられたと決定し得る。他の例において、ノードＩＤはパワー・ダウンした際に無効にされ得る。
サブスクリプション・マネージャ・モジュール１０１０は、オーディオ・ネットワークにおける他のオーディオ関連デバイスによってオーディオ関連デバイスのサブスクリプションを管理するように構成されている。加えて、サブスクリプション・マネージャ・モジュール１０１０は、オーディオ関連デバイスによって、オーディオ・ネットワーク１２０上の他のオーディオ関連デバイスへのサブスクリプションを管理するように構成されている。データ変数が変化するとき、サブスクリプションは別のオーディオ関連デバイスからの１つ以上のデータ変数の受け取りを要求するように用いられる。例えば、第１のオーディオ関連デバイスが、第２のオーディオ関連デバイスのオーディオ信号レベルにサブスクライブし得る。この例において、オーディオ信号レベルが変化するとき、第２のオーディオ関連デバイスは、オーディオ信号レベルを表すアップデートされたデータ変数を、オーディオ・ネットワーク１２０上の第１のオーディオ関連デバイスに提供し得る。同様に、第２のオーディオ関連デバイスは、第１のオーディオ関連デバイスの１つ以上のデータ変数にサブスクライブし得る。このようなサブスクリプションは、サブスクリプション・マネージャ・モジュール１０１０によって管理され、かつ、統治される。
【０２１５】
デバイス・ツー・デバイス通信モジュール１０１２は、オーディオ・システムにおける他のオーディオ関連デバイスとの非ネットワーク通信を確立し、維持するように構成されている。先述されたように、オーディオ関連デバイスは、ネットワーク通信の外側のオーディオ関連デバイスと直接的に通信し得る。従って、デバイス・ツー・デバイス通信モジュール１０１２は、ノードＩＤおよび別のオーディオ関連デバイスと確立された通信に関連した他の関連する情報ならびに設定を格納するように構成されている。加えて、オーディオ関連デバイス間でパスされたメッセージは、デバイス・ツー・デバイス通信モジュール１０１２によって送達され、かつ、受け取られ得る。さらに、デバイス・ツー・デバイス通信モジュール１０１２は、送達されるメッセージを生成し、受け取られたメッセージを処理し得る。
【０２１６】
リンク・マネージャ・モジュール１０１４は、他の複数のオーディオ関連デバイスへのサブスクリプションを管理するように構成されている。リンク・マネージャ１０１４は、オーディオ関連デバイス２００内のデータ変数を管理するように構成され得る。管理されているデータ変数が変化するとき、リンク・マネージャ・モジュール１０１４は、その変化を他のオーディオ関連デバイスに通知し得る。その通知に応答して、他のオーディオ関連デバイスは、変化されたデータ変数を有するオーディオ関連デバイスにサブスクライブし、アップデートされたデータの変数の受け取りを要求し得る。リンク・マネージャの動作はまた、図５のＰＥＭに関して記載される。
【０２１７】
リンク・マネージャ・モジュール１０１４はまた、特定のオーディオ関連デバイスに対してサブスクリプションの負荷を減らすように構成されている。例えば、第１のオーディオ関連デバイスがあるデータ変数に対する多くのサブスクリプションの負荷を負うとき、より低いサブスクリプション要求を有する第２のオーディオ関連デバイスのリンク・マネージャ・モジュールが、その負荷を軽減するために用いられ得る。このシナリオでは、第２のオーディオ関連デバイスは、特定のデータ変数を受け取るために、第１のオーディオ関連デバイスにサブスクライブし得る。加えて、第２のオーディオ関連デバイスのリンク・マネージャ・モジュールは、特定のデータ変数が受け取られたとき、他のオーディオ関連デバイスに注意を促すように構成され得る。従って、他のオーディオ関連デバイスは、アップデートされた特定のデータ変数を取得するために、第１のオーディオ関連デバイスではなく、第２のオーディオ関連デバイスにサブスクライブし得、それにより、第１のオーディオ関連デバイスの負荷が減少される。
【０２１８】
（ＶＩ．ネットワークノード発見）
図１２は、オーディオ・ネットワーク１２０および複数「Ｎ」のオーディオ関連デバイス１２０４に結合されているスイッチ１２０２の構成の例である。この構成の例において、スイッチ１２０２は、ネットワーク接続１２０６および複数「Ｎ」のポート１２０８を有し得る。ネットワーク接続１２０６は、ネットワーク・アドレスを有し得る。ポート１２０８のそれぞれは、所定のノードＩＤを有し得る。
【０２１９】
複数のオーディオ関連デバイス１２０４は、関連したスピーカを有する増幅器のアレイであり得る。アレイにおけるスピーカのそれぞれの位置は、アレイから所望の音響効果を生成するために関連した増幅器の設定を指示し得る。
【０２２０】
（図示されていないが）ＰＥＭは、アレイにおける増幅器のそれぞれに対する格納されている所定の設定を含み得る。ＰＥＭはまた、スイッチ１２０２の格納されている所定の設定であって、ポート１２０８とノードＩＤとの間の対応を示す設定を含み得る。オーディオ関連デバイス１２０４およびスイッチ１２０２が起動されているとき、ＰＥＭは、スイッチ１２０２のために、オーディオ・ネットワーク１２０上のオーディオ関連デバイス１２０４を見ることができない。しかしながら、ポート１２０８への所定のノードＩＤの割り当てのために、ＰＥＭは、ノードＩＤに対応するポートの数１２０８に基づいて設定をオーディオ関連デバイス１２０４にダウンロードし得る。従って、デバイス１２０４のそれぞれが、アレイにおけるスピーカの位置に対応するスイッチ１２０２上のポート１２０８に結合されている。
【０２２１】
一度デバイスがノード・アドレスを割り当てられると、ＰＥＭおよび他のデバイスは、そのデバイスを発見し得る。以下の例は、複数のオーディオ関連デバイス間の発見に関連する。しかしながら、ＰＥＭ、または他のデバイスは、オーディオ・ネットワーク上のオーディオ関連デバイスを発見し得る。例えば、ＰＥＭのノード分解能モジュール６００（図６）は、後述されるように用いられ得る。このことをする際に、ルーティング層３０８（図３）は、所定のネットワーク・インターフェース上に常駐するオーディオ関連デバイスの存在を決定するために、またオーディオ関連デバイスをアドレス指定するために必要であるネットワーク情報を発見するために、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワーク上のＴＣＰ／ＩＰ、４８５バスの上のトークン・ネットワーク・サービス、またはＵＳＢ上のＵＳＢサービスといったアンダーライする層によって供給されるサービスを用い得る。いくつかの例において、オーディオ関連デバイス２００（図２）は、ノードＩＤおよびネットワーク・アドレスを特定し得る。
【０２２２】
図１３は、オーディオ・ネットワーク上のノードであって、システムとともに用いられ得るノードを発見する方法を示すフローチャートである。ルーティング・テーブルが、ブロック１３０２に示されるように、要求されたノードに対して検索される。ノードＩＤがルーティング・テーブルにおいて見つけられるとき、そのルートが用いられ得る（ブロック１３０３）。ノードＩＤに対するノードがルーティング・テーブルに見つけられないとき（１３０４）、デバイスと通信するルートが決定され得る。ルートを決定するために、オーディオ関連デバイスは、ステップ１３０６に示されるように、要求されたルートを特定するメッセージをブロードキャストし得る。オーディオ関連デバイスは、それから、ブロック１３０８に示されるように、ブロードキャストに対する応答に対して待機し得る。オーディオ・ネットワーク上の、ブロードキャストを受け取るデバイスは、要求されたノードへのルートを検索し得る。例えば、その要求を受け取るデバイスが、デバイスのルーティン・テーブルを検索し得る。別の例として、その要求を受け取るデバイスは、要求されたノードがデバイスのノードＩＤと一致するか否かを決定し得る。デバイスがブロードキャストに対する応答を受け取るとき（ステップ１３１０）、応答に基づいて、ルーティング・テーブルに新しいエントリが作成される（ステップ１３１２）。ブロードキャストから応答が受け取られないとき、ステップ１３１４に示されるように、ルートを要求するさらなるブロードキャストがされ得る。ブロードキャストに対して応答が受け取られないとき、ステップ１３１６に示されるように、「ｎｏｔ  ｆｏｕｎｄ」エラーが返送され得る。いくつかの例において、デバイスは、ノードとの通信の必要性が生じるときだけ、オーディオ・ネットワーク上のこのような他のノードを見つけ得る。要求ドリブン・アプローチは、接続される必要があるノードに対するルートを要求するだけで、ルーティング・テーブルのサイズを最小する。しかしながら、他の例において、デバイスは、あるアプリケーション層レベルですべてのノードと通信し得ないが、デバイスはオーディオ・ネットワーク全体のモニタを所望し得る。
【０２２３】
デバイスは、ノード発見に対してＤｉｓｃｏＩｎｆｏメッセージといった発見メッセージを用い得る。いくつかの例において、２つの異なる形式のＤｉｓｃｏＩｎｆｏメッセージであり得る。クエリおよび応答である。ＤｉｓｃｏＩｎｆｏメッセージの形式は、メッセージにおけるフラグフィールドの状態によって区別され得る。クエリ形式のＤｉｓｃｏＩｎｆｏメッセージは、オーディオ・ネットワーク上のノードを見つけ出し、メッセージを送達するものに関する情報を、受け取るオーディオ関連デバイスにパスするために用いられ得る。クエリ形式のＤｉｓｃｏＩｎｆｏメッセージを用いるために、送達するものは、送達するもののネットワークの詳細とともに位置付けられようとするオーディオ関連デバイスのノード・アドレスを特定し得る。送達するものは、それから、メッセージをオーディオ・ネットワーク上にブロードキャストし得る。以下の表は、ＤｉｓｃｏＩｎｆｏメッセージのフォーマットおよび内容の例である。この表では、符号なしのロング・コンピュータ・データタイプが「ＵＬＯＮＧ」と表されている。
【０２２４】
【表５】
0004621523.tif 000006
あるいは、ノードの１つがプロキシの役割を果たし得る。この例において、オーディオ関連デバイス１００４は、スイッチ１００２に結合されている他のオーディオ関連デバイス１００４にクエリし得る（図１０）。プロキシ・オーディオ関連デバイス１００４は、それから、設定およびノードＩＤといったオーディオ関連デバイス情報をＰＥＭ、または別のオーディオ関連デバイスに送達し得る。ＰＥＭ、または別のオーディオ関連デバイスは、それから、適宜に、スイッチ１００２に結合されているオーディオ関連デバイス１００４の存在、およびスイッチ１００２を介するオーディオ関連デバイス１００４との通信を認識させられ得る。
【０２２５】
例えば、第１のノードおよび第２のノードは、ルータによって第３のノードに接続されていると仮定する。第３のノードは、第１のノードに接続し得る。第３のノードは、ＳｅｔＰｒｏｘｙＳｔａｔｅ（Ｏｎ）メッセージといったプロキシ・イネイブル・メッセージを第１のノードに送達することによって、第１のノードをプロキシとしてセットし得る。第３のノードは、それから、（クエリ形式の）ＤｉｓｃｏＩｎｆｏメッセージを第１のノードに送達し得る。これに応答して、第１のノードは、その第１のノードのルーティング・テーブルにおいて第３のノードのノードＩＤおよびネットワーク・アドレスを保存し得る。第１のノードは、それから、オーディオ・ネットワーク上でクエリ形式のＤｉｓｃｏＩｎｆｏメッセージをブロードキャストし得る。第１のノードによるこのブロードキャストは、第２のノードによって受け取られ得る。これに応答して、第２のノードは、その第２のノードのルーティング・テーブルにおいて第３のノードのノードＩＤおよびネットワーク・アドレスを保存し得る。
【０２２６】
第２のノードは、ここで、第１ノードを介して第３のノードと通信し得る。第２のノードは、第１のノードのノードＩＤをネットワーク・アドレスとして用いて、応答形式のＤｉｓｃｏＩｎｆｏメッセージを第３のノードに送達し得る。このメッセージは、第１のノードによって受け取られ得、第１のノードは、そのノードＩＤが第３のノードのノードＩＤである認識し得、それから、そのメッセージを第３のノードに転送する。第１のノードからメッセージを受け取ると、第３のノードは、そのメッセージが、プロキシを介してからルーティングされたことを認識し得る。例えば、第３のノードは、一致があるか否かを決定するためにメッセージを送達したノードのネットワーク・アドレスを、プロキシ・アドレスとアドレスと比較し得る。第３のノードは、それから、第１のノードのネットワーク・アドレスを有する第２のノードのノードＩＤを有してルーティング・テーブルにエントリし得る。いくつかの例において、エントリがまた、ＤｉｓｃｏＩｎｆｏメッセージから受け取られる第２のノードのネットワーク・アドレスを有する第３のルートのルーティング・テーブルにされ得る。
【０２２７】
いくつかの例において、このシステムは、ファイアウォールの後ろにあるプライベート・オーディオ・ネットワークとして構成され得、または、システムは、Ｉｎｔｅｒｎｅｔといった共有の公共のインフラを介してアクセス可能である。このような例において、仮想プレイベート・ネットワーク（「ＶＰＮ」）が用いられ得る。ＶＰＮは、２つのネットワークの間、またはホストとネットワークの間にトンネルを作成し得る。ＶＰＮはまた、認証および／または暗号化サービスを提供し得る。例えば、ノードは、ＶＰＮ用いて、Ｉｎｔｅｒｎｅｔ上のどこからでもアクセスされ得る。
【０２２８】
いくつの例は、オーディオ・ネットワークに結合しているノードが当該の他のデバイスによって見逃されている可能性を減らすためにフェールセーフ・ノード発見を含み得る。デバイスは、ＤｉｓｃｏＦａｉｌｓａｆｅメッセージといった発見メッセージを、ある間隔で（例えば、１分毎に）オーディオ・ネットワークにブロードキャストし得る。ルーティング・テーブルに関して後述されるように、シリアル・ナンバーは、ノード・アドレスによって示されるノードを一意に識別し得る。受け取られる各ＤｉｓｃｏＩｎｆｏ応答メッセージに対して、デバイスは、ＤｉｓｃｏＦａｉｌｓａｆｅメッセージのソースによって示されるノードＩＤへのルートに対してルーティング・テーブルを検索し得る。各識別されたルートに対して、シリアル・ナンバーは、ＤｉｓｃｏＦａｉｌｓａｆｅメッセージにおけるシリアル・ナンバーと比較され得る。シリアル・ナンバーが一致しないとき、報告され得るアドレス衝突があり得る。シリアル・ナンバーが一致するとき、ＤｉｓｃｏＩｎｆｏメッセージからの情報が、ルーティング・テーブルに加えられ得る。いくつかの例において、ノードは、１つ以上のデバイスが、フェールセーフ発見に、正確に応答していないか否かを決定するためにそのテーブルにおける重複ルートをチェックし得る。
【０２２９】
オーディオ関連デバイス２００は、オーディオ・ネットワーク上で引き続くデバイスの参加を追跡し得る。ルートが「タイム・アウト」し、無効と判断される前に、ルート上で許される最大の無活動期間を決定するためにキープ・アライブ期間（「ＫＡＰ」）が提供され得る。例えば、デバイスに関連付けられたＫＡＰは、２５０ミリ秒であり得る。いくつかの例において、ソース・デバイスは、送達されるＤｉｓｃｏＩｎｆｏメッセージのそれぞれにＫＡＰを配置することによって目的デバイスのＫＡＰを特定し得る。例えば、接続が保障される際には、デバイスが送達した最後のＤｉｓｃｏＩｎｆｏ（応答）メッセージの後に、そのデバイスはＫＡＰ期間内にＤｉｓｃｏＩｎｆｏメッセージを送達し得る。目的デバイスが、ＫＡＰのタイムフレーム内でメッセージを受け取らないとき、目的デバイスはルートをタイム・アウトし得る。
【０２３０】
オーディオ・ネットワーク上の各デバイスは、ルーティング・テーブルをインプリメントし、維持し得る。ルーティング・テーブルは、ノード間のデータ・パスを選択するために用いられ得る。ルーティング・テーブルは、オーディオ・ネットワーク上の他のデバイスへのルートのリスト、および他のデバイスへメッセージを送達するために必要とされるネットワーク情報を格納し得る。いくつかの例において、そのテーブルは、少なくとも２０のルートおよび最低１０の他のデバイスを収容し得る。
【０２３１】
いくつかの例において、ルーティング・テーブルは、以下のコンポーネントを包含し得る。以下のコンポーネントはノード・アドレス、シリアル・ナンバー、最大メッセージ・サイズ、ネットワーク・インターフェース、ネットワーク・アドレス、およびコストである。ノード・アドレス・コンポーネントは、ルーティング・テーブルにおいてエントリがされるリモート・デバイスを識別し得る。リモート・ノードが、（マルチ・ホームの）１つより多いネットワーク・インターフェースを有するとき、デバイスに対するそのテーブルにおいていくつかのエントリがあり得、１つのエントリは各ネットワーク・インターフェースに対してである。このような場合には、各ルートは、同一のノード・アドレスを有し得る。ルーティング・テーブルのシリアル・ナンバー・コンポーネントは、ノード・アドレスによって示されるデバイスを一意に識別し得る。最大メッセージ・サイズ・コンポーネントは、ルーティング・テーブルにおけるエントリに関連したデバイスを通過し得るメッセージの最大サイズを記述し得る。ネットワーク・インターフェース・コンポーネントは、デバイスによって用いられるネットワーク・インターフェースのタイプを記述し得る。先述されるように、デバイスが、複数のネットワーク・インターフェースを有するとき、そのデバイスは、ルーティング・テーブルにおいて１つより多いエントリを有し得る。ネットワーク・アドレス・コンポーネントがデバイスに関連したネットワーク・アドレスを記述するために用いられ得る。コスト・コンポーネントは、ルートに対するトランジット時間を表し得る。ノードが一般的に、最小費用のデータ・パスを介してデータをルーティングする一方で、他の要因が、選択されたルートに影響を及ぼし得る。例えば、ノード間の通信帯域幅は、ルートを決定する際の要因であり得る。例えば、Ｅｔｈｅｒｎｅｔ（登録商標）に関連したコストは、「１」であり得、一方、ＵＳＢは、「１０」コストを有し得、ＲＳ２３２は、「１００」コストを有し得る。
【０２３２】
（ＶＩＩ．プロトコル）
図１４は、このシステムのネットワーク・プロトコルにおいて用いられ得る構造を示すブロック図である。ヘッダー情報は、バージョン、長さ、ソース・アドレス、目的アドレス、メッセージＩＤ、フラグ、カウント、および、シーケンス・ナンバーを含み得る。バージョンは、プロトコルのバージョンを示し得る。長さは、ヘッダーおよびメッセージの長さを示すために用いられ得る。ソース・アドレスおよび目的アドレスは、メッセージの送達元および目的地を示すために用いられ得る。
【０２３３】
これらのアドレスは、送達元および目的デバイスのノード、仮想デバイスおよびオブジェクトに関する情報を包含し得る。例えば、ソースおよび目的アドレスが４８ビットであるとき、０〜２３番目のビットは、オブジェクトのタイプを示すために用いられ得、２３〜３１番目のビットは、仮想デバイスのタイプを示すために用いられ得、３１〜４７番目のビットは、ノード・アドレスを示し得る。メッセージＩＤは、存在するメッセージのタイプを示すために用いられ得る。
【０２３４】
フラグは、メッセージが要求、返答、迷惑情報、または別の動作か否かを示すために用いられ得る。例えば、フラグは、要求認識、認識、エラー、エベント、保障された、またはマルチ・パート・メッセージを示し得る。例えば、フラグが要求認識であるとき、動作が完了されるまでは、返答は送達されない。例えば、要求認識フラグが、ＳＶの値を変化する動作とともに用いられる。ＳＶ値が変化されると、認識フラグを有するメッセージが、それに応答して用いられ得る。連続する複数の動作が行われるべきいくつかの例において、認識フラグが受け取られるまで、各動作メッセージは送達されるために待機し得る。要求認識および認識フラグのこのような使用は、ネットワーク・トラフィックを減らすために用いられ得る。
【０２３５】
ホップ・カウントは、送達メッセージに対するホップの数を示すために用いられ得る。シーケンス・ナンバーは、ネットワーク問題を解決するための診断補助として用いられ得る。例えば、シーケンス・ナンバーは、メッセージが送達される毎にインクリメントされ得る。
【０２３６】
図１４は、カウント、ＳＶ＿ＩＤ、データ・タイプおよび値を含み得るＳＶメッセージの例を示す。ＳＶ＿ＩＤは、目的ＳＶを示すために用いられ得る。データ・タイプは、ＳＶデータのサイズおよびフォーマットを示し得る。例えば、データ・タイプは、値がバイト、ワード、フロート、ストリング、またはブロックか否かを示し得る。その値は、実際に転送されているＳＶデータを示すために用いられ得る。図１５は、このシステムに用いられ得るアプリケーション層のメッセージの例を包含するテーブルである。図１６は、このシステムに用いられ得るルーティング層のメッセージの例を包含するテーブルである。
【０２３７】
（ＶＩＩＩ．オーディオ関連デバイスの発見）
図１７および図１８は、オーディオ・ノード構造、従って、このシステムに用いられ得るオーディオ関連デバイスの機能性を発見するための方法の例を示すフローチャートである。ブロック１７０２では、ＧＵＩのコアは、オーディオ関連デバイスに送達された属性クエリに応答して、オーディオ関連デバイスであるノードからクラス属性を受け取り得る。ＧＵＩのコアは、ブロック１７０４で、クラス属性を含むオーディオ・ノード・クエリを用いてプロダクト・プラグインにクエリし得る。ブロック１７０６では、プロダクト・プラグインが、ノードのクラス属性を分析し、それを認識しないとき、ブロック１７０８で、システムにおいてさらなるプロダクト・プラグインがあるかどうかが決定される。さらなるプロダクト・プラグインがあるとき、動作は、ブロック１７０４に戻り、ＧＵＩのコアは、クラス属性を分析するために別のプロダクト・プラグインにクエリする。オーディオ・システムにおけるプロダクト・プラグインのいずれもが、ノードを認識しないとき、ノードは、ブロック１７１０で、ジェネリック・プラグインにパスされる（図１９を参照して後述される）。
【０２３８】
ブロック１７０６で、クエリされているプロダクト・プラグインが、ノードの属性を認識するとき、ブロック１７１６において、仮想デバイスのリストがオーディオ関連デバイスにおけるノード・マネージャ仮想デバイスから要求される。ブロック１７１８において、仮想デバイスが仮想デバイスのリストから選択される。ブロック１７２０において、仮想デバイスが既知であるか否かを決定するために、仮想デバイスが、プロダクト・プラグインによって、プロダクト・プラグインのライブラリ・ストレージに含まれている所定の仮想デバイスと比較される。仮想デバイスが、ライブラリ・ストレージに存在するとき、ブロック１７２２で、仮想デバイスが構成可能であるかどうかが決定される。仮想デバイスに含まれているオブジェクトおよびＳＶがすべて既知であるので、仮想デバイスが構成可能でないとき、ブロック１７２４で、プロダクト・プラグインは、オーディオ関連デバイスからＳＶの実際の値を取得し得る。ブロック１７２６において、仮想デバイスが既知である表示およびオーディオ関連デバイスのオーディオ・ノード構造のその部分がノード構造ストレージに格納され得る。対応するＳＶの実際の値は、ブロック１７２８で、コントロール・パネル・データ・ストレージに格納され得る。ブロック１７３０で、すべての仮想デバイスが既知であるかどうかを確かめるために、仮想デバイスのリストに含まれているすべての仮想デバイスがチェックされたかどうか決定される。チェックされていないとき、動作はブロック１７１８に戻り、別の仮想デバイスを分析し、決定するためにその別の仮想デバイスを選択する。仮想デバイスのリストにおけるすべての仮想デバイスがチェックされているとき、動作はブロック１７３２で終了する。
【０２３９】
再びブロック１７２０を参照して、プロダクト・プラグインが、仮想デバイスを認識しないとき、他のプロダクト・プラグインは、ブロック１７３６で、仮想デバイスの知識に対してクエリされ得る。他のプロダクト・プラグインのクエリが、プラグイン・サーチ・エンジン、またはそのプロダクト・プラグインを用いて行われ得る。仮想デバイスが、別のプロダクト・プラグインによって既知であるとき、ブロック１７３８で、仮想デバイスが取り出され、ライブラリ・ストレージに格納され得、動作はその仮想デバイスが構成可能であるかどうかを決定するために、ブロック１７２２に続く。仮想デバイスが、別のプロダクト・プラグインによって既知でないとき、仮想デバイスを記述する詳細なオーディオ・ノード構造属性が、ブロック１７４０で、オーディオ関連デバイスから取り出され得る。仮想デバイスの詳細なオーディオ・ノード構造属性が、発見エンジンによってオーディオ関連デバイスから取り出され得る。ブロック１７４２において、仮想デバイスの詳細なオーディオ・ノード構造属性が、ノード構造ストレージに格納され得る。
【０２４０】
動作は、図１８に続く。そこで、未知の仮想デバイスが含まれているオブジェクトのリストが、ブロック１７４４において、オーディオ関連デバイスから取得され得る。同様に、ブロック１７２２（図１７）において、仮想デバイスが構成可能であるとき、構成可能な仮想デバイスに含まれているオブジェクトのリストが、ブロック１７４４において、オーディオ関連デバイスから取得され得る。オブジェクトのリストが、プロダクト・プラグイン、または発見エンジンによって取得され得る。
【０２４１】
ブロック１７４６において、オブジェクトがオブジェクトのリストから選択される。選択されたオブジェクトが、プロダクト・プラグインのライブラリ・ストレージに存在しているかどうかが決定され、ブロック１７４７で、既知であるかどうかが決定される。オブジェクトが既知であるとき、オブジェクトに含まれているＳＶの実際の値がブロック１７４８で、取得され得る。ＳＶの実際の値が取り出しエンジンによって取得され得る。ブロック１７５０において、オブジェクトが既知である表示およびその対応するオーディオ・ノード構造がノード構造ストレージに格納され得る。ブロック１７５２において、ＳＶの実際の値が、コントロール・パネル・データ・ストレージに格納され得る。オブジェクトが、ブロック１７５４において、既知であるとき、仮想デバイスにおけるすべてのオブジェクトがチェックされたかどうかが決定される。すべてのオブジェクトがチェックされていたとき、ブロック１７５６において、仮想デバイスにおけるオブジェクトに含まれていないＳＶがあるかどうかが決定される。オブジェクトに含まれていないＳＶがあるとき、ブロック１７５８において、オブジェクトに含まれていないＳＶのリストがオーディオ関連デバイスから取得され、動作が、後述されるように、ＳＶを選択し、ＳＶが既知であるかどうかをチェックするためにブロック１７７２に進む。オブジェクトに含まれていないＳＶであって、仮想デバイスに含まれているそのＳＶがないとき、動作が、すべての仮想デバイスがチェックされたかどうかを決定するために図１７のブロック１７３０に戻る。ブロック１７５４で、仮想デバイスにおけるすべてのオブジェクトがチェックされていないとき、動作は、オブジェクトのリストから別のオブジェクトを選択するためにブロック１７４６に戻る。
【０２４２】
ブロック１７４７で、オブジェクトが未知であるとき、他のプロダクト・プラグインが、ブロック１７６０で、オブジェクトの知識に対してクエリされ得る。他のプロダクト・プラグインのクエリは、プラグイン・サーチ・エンジン、またはプロダクト・プラグインを用いて行われ得る。オブジェクトが、別のプロダクト・プラグインによって既知であるとき、オブジェクトは、ブロック１７６２で、取り出され、ライブラリ・ストレージに格納され得、動作が、ＳＶに対する実際の値を取得するためにブロック１７４８に続く。ブロック１７６０において、オブジェクトが、別のプロダクト・プラグインによって既知でないとき、オブジェクトを記述する詳細なオーディオ・ノード構造属性が、ブロック１７６４で、オーディオ関連デバイスから取り出される。オブジェクトの詳細なオーディオ・ノード構造属性が、発見エンジンによってオーディオ関連デバイスから取り出され得る。ブロック１７６６において、オブジェクトの詳細なオーディオ・ノード構造属性は、ノード構造ストレージに格納され得る。
【０２４３】
ブロック１７６８において、未知のオブジェクトおよび／または仮想デバイスに含まれているＳＶのリストが、オーディオ関連デバイスから取得され得る。ブロック１７７０において、ＳＶの１つが、ＳＶのリストから選択される。ブロック１７２２に  おいて、ＳＶがライブラリ・ストレージに格納されているかどうか、従って、既知であるかどうかが決定される。ＳＶが既知であるとき、ＳＶの実際の値が、ブロック１７４４で、オーディオ関連デバイスから取得される。ブロック１７７６において、ＳＶが既知である表示およびその対応するオーディオ・ノード構造がノード構造ストレージに格納され得る。加えて、ブロック１７７８で、ＳＶの実際の値がコントロール・パネル・データ・ストレージに格納される。ブロック１７８０において、すべてのＳＶが既知であるかどうかを決定するために、ＳＶのリストにおけるそれらのすべてのＳＶがチェックされたかどうかが決定される。すべてのＳＶがチェックされていないとき、動作は、オーディオ関連デバイスから取得されたＳＶのリストから別のＳＶを選択するためにブロック１７７０に戻る。オブジェクトにおけるＳＶのすべてがチェックされているとき、動作は、仮想デバイスにおけるオブジェクトがチェックされたかどうかをチェックするためにブロック１７５４に戻る。
【０２４４】
ブロック１７７２において、ＳＶが、プロダクト・プラグインによって既知でないとき、ＳＶが、ブロック１７８２において、別のプロダクト・プラグインによって既知であるかどうかが決定される。他のプロダクト・プラグインのクエリは、プラグイン・サーチ・エンジン、またはプロダクト・プラグインを用いて行われ得る。別のプロダクト・プラグインによって既知であるとき、ＳＶは、ブロック１７８４において、別のプロダクト・プラグインから取り出され、ライブラリ・ストレージに格納され、動作は、オーディオ関連デバイスからＳＶの実際の値を取り出すためにブロック１７４４に続く。ＳＶが、別のプロダクト・プラグインによって既知でないとき、ＳＶを記述する詳細なオーディオ・ノード構造属性が、ブロック１７８６において、オーディオ関連デバイスから取り出され、動作が、ノード構造ストレージにＳＶを格納するためにブロック１７７６に続く。ＳＶの詳細なオーディオ・ノード構造属性が、発見エンジンによって、オーディオ関連デバイスから取り出され得る。
【０２４５】
オーディオ関連デバイスのオーディオ・ノード構造における各ＳＶ、オブジェクトおよび仮想デバイス、または未知のＳＶ、オブジェクトおよび仮想デバイスの詳細なオーディオ・ノード構造属性が、ノード構造ストレージに格納されるまで、処理は継続し得る。あるいは、制限さえた能力を有する「薄い」ＰＥＭの場合には、オーディオ・ノード構造または詳細な属性のより小さい部分が、いつでもノード構造ストレージに格納され得、追加的なオーディオ・ノード構造または詳細な属性が、必要に応じて格納され得る。
【０２４６】
再度、図１７のブロック１７１０を参照して、ノードのクラス属性が、プロダクト・プラグインのいずれによっても認識されないとき、ノードはジェネリック・プラグインにパスされる。図１９では、ブロック１９０２において、ジェネリック・プラグインの取り出しエンジンは、ノード・クエリに応答して仮想デバイスのリストを受け取る。ブロック１９０４では、仮想デバイスが、仮想デバイスのリストから選択される。プラグイン・サーチ・エンジンが、ブロック１９０６において、選択された仮想デバイスの知識に対してプロダクト・プラグインにクエリするために有効にされ得る。あるいは、取り出しエンジンは、他のプロダクト・プラグインにクエリし得る。仮想デバイスがプロダクト・プラグインによって既知であり、構成可能でないとき（ブロック１９０８）、仮想デバイスのＳＶの実際の値がブロック１９１０で取得される。仮想デバイスが既知である表示おひびその対応するオーディオ・ノード構造が、ブロック１９１２において、ノード格納ストレージに格納され得る。仮想デバイス内のＳＶの実際の値が、ブロック１９１４において、コントロール・パネル・データ・ストレージに格納され得る。ブロック１９１６では、すべての仮想デバイスがチェックされたかどうかが決定され、チェックされているとき、動作がブロック１９１８で終了する。すべての仮想デバイスがチェックされていないとき、動作が１９０４に戻り、リストから別の仮想デバイスを選択する。ブロック１９０６において、仮想デバイスが未知であるとき、詳細な属性がブロック１９２８で要求され、ブロック１９３０で、ノード構造ストレージに格納され得る。
【０２４７】
ブロック１９３２において、未知の仮想デバイスにおけるオブジェクトのリストが取得される。同様に、ブロック１９０８において、仮想デバイスが構成可能であるとき、動作は、構成可能であるデバイスにおけるオブジェクトのリストを要求するためにブロック１９３２に進む。ブロック１９３４において、オブジェクトがリストから選択され、ブロック１９３６において、選択されたオブジェクトが、プロダクト・プラグインのいずれかによって既知であるかどうかが決定される。オブジェクトが既知であるとき、オブジェクトに含まれているＳＶの実際の値が、ブロック１９３８で取得される。オブジェクトが既知である表示およびその対応するオーディオ・ノード構造が、ブロック１９４０において、ノード構造ストレージに格納される。ブロック１９４２では、オブジェクトに関連するＳＶの実際の値が、オーディオ関連デバイスから取得され、コントロール・パネル・データ・ストレージに格納され得る。ブロック１９４４で、オブジェクトのすべてがチェックされたかどうかが決定される。すべてのオブジェクトがチェックされていないとき、動作はブロック１９３４に戻り、すべてのオブジェクトがチェックされているとき、ブロック１９４６でオブジェクトに含まれていない仮想デバイスにＳＶがあるかどうかが決定される。ＳＶがないとき、動作は、リストにおけるすべての仮想デバイスがチェックされたかどうかを決定するためにブロック１９１８に戻る。このようなＳＶがあるとき、動作は、後述されるように、ＳＶを取得するためにブロック１９６６に進む。
【０２４８】
ブロック１９３６において、オブジェクトが既知でないとき、オブジェクトの詳細な属性が、ブロック１９６０で取得され、ブロック１９６２でノード構造ストレージに格納され得る。未知のオブジェクトのＳＶのリストがブロック１９６４で取得され、リストにおけるＳＶの１つが、ブロック１９６６で選択される。ブロック１９６８において、ＳＶが、プロダクト・プラグインの１つによって認識されているかどうかが決定される。ＳＶが既知であるとき、ＳＶの実際の値が、ブロック１９７０でプロダクト・プラグインから取り出される。ブロック１９７２において、既知である表示およびオーディオ・ノード構造のその部分がノード構造ストレージに格納される。ブロック１９７４において、ＳＶの実際の値が受け取られ、ブロック１９７６において、ＳＶの実際の値が、コントロール・パネル・データ・ストレージに格納される。
【０２４９】
ブロック１９７８において、すべてのＳＶがチェックされたかどうかが決定される。すべてのＳＶがチェックされていないとき、動作は、別のＳＶを取得するためにブロック１９６６に戻る。ＳＶのすべてがチェックされているとき、動作は、すべてのオブジェクトがチェックされたかどうかを決定するためにブロック１９４４に戻る。ブロック１９６８において、ＳＶが既知でないとき、ＳＶの詳細な属性がブロック１９８０で取得され、動作は、ブロック１９７２に続く。そこでは、ＳＶの詳細な属性がノード構造ストレージに格納される。動作は、オーディオ・ノード構造が、既知であると識別されるか、またはさらなる発見が、オーディオ・ノード構造における未知のコンポーネントを決定するために行われるまで継続する。
【０２５０】
（ＩＸ．コントロール・パネル・ディスプレイ）
図２０は、ＰＥＭの能力が変化し得るとき、プロダクト属性を発見するためにシステムにおいて用いられ得る方法を示すフローチャートである。例えば、ＰＥＭは、そのディスプレイ上で、格納されている所定のＧＵＩのコントロール・パネル・ビュー全体を表示することができないデバイス上に常駐し得る。別の例として、デバイスは、制限された処理能力を有し得、従って、同時に、格納されている所定のＧＵＩのコントロール・パネル・ビュー全体の表示することを用意することは所望されないかもしれない。その代わりに、ＧＵＩのコントロール・パネル・ビューは、例えば、ユーザのコマンドに基づいて、必要に応じて生成され得る。従って、デバイス処理能力およびディスプレイのサイズのさまざまなレベルのスケーラビリティがサポートされ得る。これはまた、図４を参照して記述されるように、「薄いアプリケーション層」と呼ばれる。
【０２５１】
図２０では、ブロック２００２において、特定のオーディオ関連デバイスのオーディオ・ノード構造のすべてがチェックされたかどうか、およびオーディオ・ノード構造の表示が、ノード構造ストレージに格納されているか否かが決定される。オーディオ・ノード構造のすべてがチェックされていないとき、動作はこのことが起きたかどうかを決定するために継続する。ノード構造ストレージが、オーディオ・ノード構造全体に対する表示を包含するとき、ＰＥＭが常駐するデバイスが、ブロック２００４で、デバイス・ディスプレイ能力を決定するためにチェックされる。ブロック２００６において、１つ以上の格納されている所定のコントロール・パネル・ビューが、オーディオ関連デバイスのオーディオ・ノー構造に対して存在するかどうかが決定される。
【０２５２】
コントロール・パネル・ビューが存在するとき、格納されているコントロール・パネル・ビューが、ブロック２００８で、表示デバイスの能力と互換性があるかどうかが決定される。ブロック２０１０において、コントロール・パネル・ビューに含まれているオーディオ関連デバイスのコンポーネントの機能性のすべてが、所定のコントロール・パネル・ビューによってサポートされているかどうかが決定される。それがサポートされているとき、ディスプレイがブロック２０１２でインスタンス化される。ブロック２０１４において、コントロール・パネル・ビューに含まれているＳＶの実際の値がコントロール・パネル・データ・ストレージから加えられる。インスタンス化されたコントロール・パネル・ビューが、ブロック２０１６において、表示のために格納され得る。表示デバイスの能力に基づいて、オーディオ・ノード構造のさらなるコントロール・パネル・ビューが、ブロック２０１８でインスタンス化されるべきか否かが決定される。これ以上のコントロール・ビューがインスタンス化されないとき、動作はブロック２０２０で終了する。さらなるコントロール・ビューがインスタンス化されるとき、動作は、ブロック２００６に戻り、オーディオ関連デバイスのオーディオ・ノード構造に関連した別のコントロール・ビューをチェックする。
【０２５３】
ブロック２００６に戻り、コントロール・ビューがオーディオ関連デバイスのオーディオ・ノード構造に対して存在しないとき、ジェネリック・プラグインは、ブロック２０３０で有効にされ得る。ブロック２０３２において、ジェネリック・プラグインは、ノード構造ストレージに格納されているオーディオ・ノード構造に基づいてジェネリック・コントロール・パネル・ビューを作成し得、動作が、ジェネリック・コントロール・パネル・ビューのディスプレイをインスタンス化するためにブロック２０１２に進む。ブロック２０１０に戻って、オーディオ・ノード構造の一部を表しているすべてのコンポーネントが、所定のコントロール・パネル・ビューにおいてサポートされていないとき、サポートされていないコンポーネントに対応する所定のＧＵＩのアスペクトが、ブロック２０３６で、プロダクト・プラグインに格納されているかどうかが決定される。格納されている所定のＧＵＩのアスペクトが、プロダクト・プラグインに存在するとき、ＧＵＩのアスペクトが、ブロック２０３８で取り出される。ブロック２０４０において、取り出されたＧＵＩのアスペクトは、格納されている所定のコントロール・パネル・ビューに統合される。統合されたＧＵＩのアスペクトを含む所定のコントロール・パネル・ビューは、ブロック２０４２において、オーディオ・デバイスのオーディオ・ノード構造に対応する新しい所定のコントロール・パネル・ビューとして格納され得る。
【０２５４】
ブロック２０４４において、格納されている所定のコントロール・パネル・ビューによってサポートされていないオーディオ・ノード構造のさらなるコンポーネントあるかどうかが決定される。サポートされていないオーディオ・ノード構造のさらなるコンポーネントがあるとき、動作は、格納されている所定のＧＵＩのアスペクトをチェックするためにブロック２０３６に戻る。オーディオ・ノード構造のさらなるコンポーネントがないとき、動作は、ブロック２０１２に進み、ディスプレイをインスタンス化する。
【０２５５】
再度、ブロック２００８を参照して、格納されている所定のコントロール・パネル・ビューが、ディスプレイを駆動するデバイスの能力と互換性がないとき、ブロック２０５０において、コンポーネントが、互換性があるオーディオ・ノード構造から選択され得る。それから、動作は、ＧＵＩのアスペクトを取り出すためにブロック２０３６に続く。再度、ブロック２０３６を参照して、ＧＵＩのアスペクトがあらかじめ決定されておらず、プロダクト・プラグインに格納されていないとき、他のプロダクト・プラグインが、ブロック２０５２で、コントロール・パネル・ビューから欠けている機能性を表している格納されているＧＵＩのアスペクトの存在に対してチェックされ得る。ＧＵＩのアスペクトがあらかじめ決定されており、別のプロダクト・プラグインに格納されているとき、動作は、格納されている所定のＧＵＩのアスペクトを取り出し、処理するためにブロック２０３８に戻る。ＧＵＩのアスペクトが他のいずれのプロダクト・プラグインに格納されていないとき、ジェネリック・プロダクトインが、ブロック２０５４で有効にされ得る。ブロック２０５６において、ジェネリック・プラグインは、ジェネリックＧＵＩのアスペクトを生成し得、動作は、ＧＵＩのアスペクトを格納されている所定のコントロール・パネル・ビューに加えるためにブロック２０４０において継続する。デバイスの能力に左右されて、動作はオーディオ関連デバイス機能性が１つ以上のコントロール・パネル・ビューにインスタンス化されるまで継続する。
【０２５６】
図２１は、ＰＥＭの能力が変化し得るとき、プロダクト属性を発見するために、このシステムに用いられ得る方法の別の例のフローチャートである。この例において、ＰＥＭは、オーディオ関連デバイスの完全なる制御のためのすべてデータを包含する。仮想デバイスのリストがオーディオ関連デバイスから受け取られるとき、動作はブロック２１０２から始まる。ブロック２０１０において、ＰＥＭが動作しているデバイスは、デバイスが、仮想デバイス全体のリストを表示することが可能であるか否かがチェックされる。デバイスが、すべての仮想デバイスのリストを表示することが可能であるとき、仮想デバイス全体のリストが、ブロック２１０６で取得される。ブロック２１０８においいて、リストにおける仮想デバイスのすべてが表示される。ブロック２１０４において、デバイスが、すべての仮想デバイスを表示することが可能でないとき、表示され得る仮想デバイスの一部が、ブロック２１１０で取得され、ブロック２１１２で表示される。ブロック２１１４において、ユーザが他の仮想デバイスを見ることを所望するとき、現在見られている仮想デバイスが、ブロック２１１６で処分され得、動作は、さらなる仮想デバイスを取得し、表示するためにブロック２１１０に戻る。例えば、ユーザは、すべての仮想デバイスをレビューするためにデバイス上の「ページ・ダウン」ボタンを選択することによって他のデバイスを見得る。
【０２５７】
さらなる仮想デバイスが、ブロック２１１４において、見られないとき、ブロック２１２０で、ユーザが、表示されている特定の仮想デバイスに関してさらなる情報を取得することを所望するかどうかが決定される。例えば、ユーザは、オーディオ・ノード構造おけるにオブジェクトであるコントロール・パネル・ビューの一部をクリックし得る。ユーザがクリックしないとき、動作は、ブロック２１２２で終了する。さらなる情報が所望されるとき、オーディオ関連デバイスに対するオブジェクトのリストが、ブロック２１２４で要求され得る。
【０２５８】
ブロック２１２６において、ＰＥＭが常駐しているデバイスが、オブジェクト全体のリストを表示することが可能であるとき、オブジェクトのリスト全体が、ブロック２１２８で、取得され得る。取得されたリスト上のオブジェクトが、ブロック２１３０で表示され得る。ブロック２１２６において、デバイスがオブジェクトのリスト全体を表示することが可能でないとき、オブジェクトの一部だけが、ブロック２１３２で取得され、ブロック２１３４で表示される。仮想デバイスに関して先述されるように、ユーザが、ブロック２１３６でオブジェクトのリストをスクロールすることを所望するかどうかが決定される。ユーザがスクロールすることを所望するとき、ブロック２１３８で、現在見られているオブジェクトが処分され、動作がブロック２１３２に戻る。そこでは、さらなるオブジェクトが取得され、表示される。
【０２５９】
図２２を参照して、ブロック２１４０では、ユーザがオブジェクトに対するＳＶの実際の値をレビューすることを所望するかどうかが決定さえる（図２２は、図２１のパスＣおよびＤから継続しているフローチャート図２１の続きである）。ユーザがレビューすることを所望しないとき、動作は、ブロック２１４２で終了する。ユーザがＳＶをレビューすることを所望するとき、ＳＶのリストが、ブロック２１４４で要求され、取得される。ブロック２１４６では、取得されたリスト上のすべてのＳＶが表示され得るかどうかが決定される。デバイスが、ＳＶのリスト全体を表示することが可能であるとき、リスト全体が、ブロック２１４８で取得され、ブロック２１５０で表示される。それ以外の場合には、ＳＶの一部がブロック２１５２で取得され、ブロック２１５４で表示される。ブロック２１５６において、リストからさらなるＳＶが所望されるかどうかが決定される。所望されないとき、動作は、ブロック２１５８で終了する。さらなる所望されるＳＶがあるとき、ユーザは、ＳＶをスクロールし得る。現在表示されているＳＶが、ブロック２１６０で処分される。動作は、それから、さらなるＳＶを取得し、表示するためにブロック２１５２に戻る。
【０２６０】
図２３は、（図８および図９に示される）ノード・インスタンス化エンジンの動作の例を示すフローチャートである。プロダクト・プラグインが、ブロック２３０２において、オーディオ・ノード構造に対応する格納されている所定のコントロール・パネル・ビューを有するかどうかが決定される。プロダクト・プラグインが格納されている所定のコントロール・パネル・ビューを有するとき、所定のコントロール・パネル・ビューが、ブロック２３０４において、プロダクト・プラグインのコントロール・パネル・ライブラリから選択される。対応するコントロール・パネル・ビューがないとき、コントロール・パネル・ビューが、ブロック２３０６において、ジェネリック・プラグインを用いて構築され得る。ノード構造のいずれかが、ブロック２３０８において、コントロール・パネル・ビューから欠けているかどうかが決定される。ノード構造のいずれかが欠けているとき、ブロック２３１０において、欠けている構造は、ＧＵＩのコアの発見エンジンを用いて充填される。ブロック２３０８において、コントロール・パネル・ビューからの構造が完了するとき、ノード・インスタンス化エンジンは、ブロック２３１２において、コントロール・パネル・ビューにおけるＳＶの１つ以上へのサブスクリプションをセットアップし得る。
【０２６１】
ブロック２３１４において、ノード・インスタンス化エンジンは、コントロール・パネル・ビューにおけるＳＶのリンク・マネージャに通知し得る。ブロック２３１６において、表示デバイスが、さらなるオーディオ・ノード構造を格納し、かつ、コントロール・パネル・ビューをインスタンス化する能力を有するかどうかが決定される。表示デバイスが能力を有しないとき、動作はブロック２３１８で終了する。表示デバイスが、追加的な能力を有するとき、ブロック２３２０において、インスタンス化されていないさらなるオーディオ・ノード構造があるかどうかが決定される。さらなるオーディオ・ノード構造がないとき、動作は、ブロック２３１８で終了する。コントロール・パネル・ビューにおいてインスタンス化されるさらなるオーディオ・ノード構造があるとき、動作は、残りのオーディオ・ノード構造のコントロール・パネル・ビューの１つ以上の層がインスタンス化され、格納され得るようにブロック２３０２に戻る。
【０２６２】
（Ｘ．リンク・マネージャ）
図２４は、このシステムに用いられ得るリンク・マネージャのフローチャートである。ＳＶが変化するとき、すべての関連したコントロール・パネル・ビューおよびデバイスが、ＳＶの新しい値を有してアップデータされるように、この方法が用いられ得る。コントロール・パネル・ビューにおけるＳＶの値が変化するとき（ブロック２４０２）、この新しいＳＶ値は、プロダクト・プラグインに送達され得る（ブロック２４０４）。プロダクト・プラグインは、ブロック２４０６に示されるように、対応するコントロール・パネル・ビューにおいてＳＶの値をアップデートし得る。リンク・マネージャはまた、ＳＶ値がブロック２４０８に示されるように変化したことを通知され得る。リンク・マネージャは、コントロール・パネル・ビューが、変化されたＳＶにサブスクライブされているか否かを決定し得る（ブロック２４１０）。ＳＶとコントロール・パネル・ビューとの間でサブスクリプションが存在するとき、リンク・マネージャは、変化されたＳＶに関連したコントロール・パネル・ビューのそれぞれに注意を促し得る（ブロック２４１２）。注意を促されたコントロール・パネル・ビューは、それから、ＳＶの新しい値を決定するためにプロダクト・プラグインまたは別のデバイスにクエリし得る（ブロック２４１４）。リンク・マネージャはまた、いずれかのデバイスが、変化されたＳＶにサブスクライブしているか否かを決定し得る（ブロック２４１６）。ＳＶとデバイスとの間でサブスクリプションが存在するとき、リンク・マネージャは、変化されたＳＶに関連したデバイスのそれぞれに注意を促し得る（ブロック２４１８）。注意を促されたコントロール・パネル・ビューは、それから、ＳＶの新しい値を決定するためにプロダクト・プラグインまたは別のデバイスにクエリし得る（ブロック２４２０）。
【０２６３】
（ＸＩ．サブスクリプション）
図２５は、デバイス間のサブスクリプションが、１つ以上の他のオーディオ関連デバイスを用いて１つ以上のオーディオ関連デバイスにおけるパラメータをモニタおよび／または制御するように用いられ得る方法を示すブロック図である。サブスクリプションは、先述されるように１つ以上のサブスクライブするものに、ＳＶの値における変化を通知するために用いられ得る。加えて、サブスクリプションは、１つ以上のデバイスにおけるＳＶの値の変化を指示するために用いられ得る。さらに、モニタおよび制御するためにサブスクリプションの組み合わせが、オーディオ関連デバイス間でセットアップされ得る。図２５に示される例は、第１のオーディオ関連デバイス２５０２、第２のオーディオ関連デバイス２５０４、および第３のオーディオ関連デバイス２５０６を含む。
【０２６４】
第２のオーディオ関連デバイス２５０４は、第１のオーディオ関連デバイス２５０２とサブスクライブ・ストリングをセットアップする。サブスクライブ・ストリングは、図１５に示されるようなＳＶＳｕｂｓｃｒｉｂｅＳｔｒｉｎｇメッセージといったサブスクリプション・メッセージ２５０８を用いてセットアップされ得る。人間読み取り可能ストリングが、サブスクリプション応答メッセージ２５１０に含まれ得る。ＳＶＳｕｂｓｃｒｉｂｅＳｔｒｉｎｇメッセージの例は、以下を含む。
【０２６５】
【表６】
0004621523.tif 000007
この図解される例では、ソース・アドレスは、第１のオーディオ関連デバイス２５０２のノードＩＤであり、目的アドレスは、第２のオーディオ関連デバイス２５０４のノードＩＤであり得る。メッセージＩＤは、サブスクライブ・ストリング・メッセージとしてメッセージを識別し得る。フラグ、ホップ・カウントおよびシーケンス・ナンバーは、オーディオ・システム特定の値であり得、ペイロードは、サブスクライブ・ストリング要求メッセージを含み得る。サブスクライブするもののアドレスは、第１のオーディオ関連デバイス２５０２のオーディオ・ノード・アドレスであり得る。サブスクリプションの数は、どれだけの数の第１のオーディオ関連デバイス２５０２へのサブスクリプションがサブスクライブ・ストリング要求に含まれているか示し得る。第１のサブスクライブするもののＳＶ  ＩＤは、第２のオーディオ関連デバイス２５０４におけるＳＶであって、第１のオーディオ関連デバイス２５０２における第１のサブスクライブされるもののＳＶ  ＩＤに対応するＳＶを示し得る。
【０２６６】
サブスクライブ・ストリングが、第１のオーディオ関連デバイス２５０２における１つ以上のＳＶと、対応する１つ以上の第２のオーディオ関連デバイス２５０４におけるＳＶとの間でマッピングされ得る。サブスクライブ・ストリングは、サブスクリプションに基づいて提供されるデータが、ユーザによって容易に解読され得るフォーマット（人間読み取り可能フォーマット）であるサブスクリプションを要求し得る。従って、サブスクリプションに関連したＳＶの値が変化するとき、新しい値が、サブスクリプション応答メッセージ２５１０で、第２のオーディオ関連デバイス２５０４に送達され得る。新しい値が表示される前に、第２のオーディオ関連デバイス２５０４が、複数のデータ・タイプ間で変換することを必要されないように、その値は人間読み取り可能ストリングとして送達さえ得る。
【０２６７】
第３のオーディオ関連デバイス２５０６は、サブスクリプション・メッセージ２５１２を用いて第１のオーディオ関連デバイス２５０２とサブスクリプションをセットアップし得る。サブスクリプション・メッセージは、値、または割合であるサブスクリプション応答を要求し得る。第３のオーディオ関連デバイス２５０６は、第１のオーディオ関連デバイス２５０２におけるサブスクライブされるもののＳＶのデータ・タイプを知っているとき、サブスクリプション・メッセージは、所定の条件に基づいて実際の値を要求し得る。第３のオーディオ関連デバイス２５０６のノード構造のコンポーネントが第１のオーディオ関連デバイス２５０２においてミラーされるとき、データ・タイプは知られていないかもしれない。第３のオーディオ関連デバイス２５０６は、サブスクライブされるもののＳＶのデータ・タイプを知らないとき、サブスクリプション・メッセージが、割合で要求され得る。
【０２６８】
第１のオーディオ・デバイス２５０２がＳＶの値を送達するのではなく、０％から１００％間で変化の割合が、サブスクリプション応答メッセージ２５１４として送達され得る。従って、ユニット特定の変数ではなくユニット特定の変数を表している割合が送達され、かつ、受け取られ得る。その割合に基づいて、第３のオーディオ関連デバイス２５０６が、識別された割合分、現存の値を調整し得る。あるいは、第３のオーディオ・デバイスは、その割合から実際の値を決定するために、その割合に対応する実際の値のレンジを有し得る。従って、第３のオーディオ・デバイスは、割合が用いられるとき、データ・タイプおよび／またはユニット値を知ることを必要としない。
【０２６９】
図２５において、第１のオーディオ関連デバイス２５０２は、サブスクライブ・メッセージ２５１４を用いて第３のオーディオ関連デバイス２５０６におけるＳＶの値をセットし得る。ＳＶの値が、ＳＶの実際の値を送達する、または割合を送達することによって変化され得る。しかしながら、オーディオ関連デバイスを割合を用いてセットする利点はサブスクライブするもののオーディオ関連デバイスが、データを送達するサブスクライブされるもののオーディオ関連デバイスデータ・タイプを知る必要がないことである。
【０２７０】
この例のために、第２のオーディオ関連デバイス２５０４が、第１のオーディオ関連デバイス２５０２のＳＶに対してサブスクライブ・ストリングをセットアップすると仮定する。さらに、第３のオーディオ関連デバイス２５０６が、ＳＶの値をセットするように構成されていると仮定する。このセットアップでは、第３のオーディオ関連デバイス２５０６からのＳＶのセットポイントが、人間読み取り可能形式で、変化されたＳＶ値を有する第１のオーディオ関連デバイス２５０２から第２のオーディオ関連デバイス２５０４に出力を生成する。
【０２７１】
第３のオーディオ関連デバイス２５０６および第２のオーディオ関連デバイス２５０４の双方は、ＳＶのデータ・フォーマットを必ずしも知る必要はない。いくつかの状況において、第３のオーディオ関連デバイス２５０６は、ＳＶのデータ・フォーマットまたはデータ・タイプを知り得る。このような場合において、第３のオーディオ関連デバイス２５０６は、変化された値をＳＶのデータ・フォーマットで、そのＳＶに特別に割り当て得る。しかしながら、他の例において、第３のオーディオ関連デバイス２５０６は、ＳＶのデータ・フォーマットを知らないかもしれない。このような例において、第３のオーディオ関連デバイス２５０６は、第１のオーディオ関連デバイス２５０２のノード構造にクエリすることによって、ＳＶのデータ・フォーマットを発見し得る。第１のオーディオ関連デバイスが、ＳＶのデータ・フォーマットを決定することを試みるか否かは、第３のオーディオ関連デバイス２５０６の処理能力または他の要因に依存し得る。ＳＶのデータ・フォーマットが第３のオーディオ関連デバイス２５０６に対して未知であるとき（および第３のオーディオ関連デバイス２５０６がデータ・フォーマットを決定できないとき）、第３のオーディオ関連デバイスは依然として、相対的な割合でＳＶの値をセットすることによってＳＶの値を変化し得る。
【０２７２】
第３のオーディオ関連デバイス２５０６は、相対的な割合で第１のオーディオ関連デバイス２５０２にＳＶの値を変化するよう命令することによってそのＳＶの値をセットし得る。例えば、第３のオーディオ関連デバイス２５０６は、第１のオーディオ関連デバイスに、２５％分、ＳＶの値を増加するように命令し得る。この態様では、第３のオーディオ関連デバイス２５０６は、ＳＶの値をセットするためにＳＶのデータ・フォーマットを知る必要はない。ＳＶをセットする第３のオーディオ関連デバイス２５０６に応答して、第１のオーディオ関連デバイス２５０２は、人間読み取り可能ストリングを、フィードバック表示として第２のオーディオ関連デバイス２５０４に出力し得る。フィードバック表示の例は、その割合に応答して変化する出力である。人間読み取り可能ストリングは、第２のオーディオ関連デバイス２５０４によるさらなる処理を施すことなく、ユーザによって理解され得るので、第２のオーディオ関連デバイス２５０４は、ＳＶのデータ・フォーマットを知ることなく、ＳＶの変化された値をユーザに表示し、それ以外の場合には、伝え得る。あるいは、第２のオーディオ関連デバイス２５０４が、不フィードバック表示の所定のデータ・タイプを有するように構成されている際には、第１のオーディオ関連デバイス２５０２は、適切なユニットでフィードバック値を取得するために、第２のオーディオ関連デバイス２５０４によって処理される値を出力し得る。
【０２７３】
先例は、第３のオーディオ関連デバイス２５０６におけるセットポイント制御入力ＳＶであって、サブスクリプションを用いて、第１のオーディオ関連デバイス２５０２におけるセットポイントＳＶを変化するために用いられるセットポイント制御入力ＳＶの点から記載されている。他の例において、サブスクリプションは、第３のオーディオ関連デバイス２５０６の動作パラメータＳＶであるモニタ値ＳＶであって、第１のオーディオ関連デバイス２５０２を用いて表示されるように構成されているモニタ値ＳＶを変化するために用いられ得る。
【０２７４】
さらなる別の例において、サブスクリプションは、第１のオーディオ関連デバイスにおけるセットポイントＳＶにマッピングされている、およびセットポイントＳＶを調整するセットポイント制御入力ＳＶであって、第３のオーディオ関連デバイスにおけるセットポイント制御入力ＳＶを調整するように用いられ得る。加えて、セットポイントＳＶに応答する第１のオーディオ関連デバイス２５０２における動作パラメータＳＶは、第３のオーディオ関連デバイス２５０６におけるモニタ値ＳＶにマッピングされ得る。従って、動作中に、第３のオーディオ関連デバイス２５０６は、第１のオーディオ関連デバイス２５０２のセットポイントＳＶを調整し、モニタ値ＳＶを有する第１のオーディオ関連デバイスの出力（動作パラメータＳＶ）をモニタし得る。先述されるように、動作パラメータＳＶはまた、第２のオーディオ関連デバイス２５０４にマッピングされ得る。
【０２７５】
（ＸＩＩ．薄いパフォーマンス機器マネージャ）
図２６は、オーディオ・ネットワーク１２０を有するオーディオ・システムにおいて用いられ得る能力ベースのＰＥＭ２６００のブロック図である。能力ベースのＰＥＭ２６０２は、図５に示される「薄いアプリケーション層」のデバイスに対応し、図５に示されるＰＥＭの例と同一のコンポーネントの多くを有する。従って、簡潔にするために、以下の記載は、図２６の「薄い」ＰＥＭと図５の「厚い」ＰＥＭとの間の違いを中心とする。
【０２７６】
ネットワーク・トラフィックの制約またはＰＥＭが動作しているデバイスの能力のために、能力ベースのＰＥＭ２６００は、制限された態様で動作するかもしれない。例えば、ＰＥＭが動作するデバイスの処理速度、メモリ・ストレージおよび／またはディスプレイ能力が、能力ベースのＰＥＭ２６００の動作を制限し得る。先述されたように、ノードに対するすべての仮想デバイス、オブジェクトおよびＳＶに対するコントロール・パネル・ビューを、一度にインスタンス化するのではなく、オーディオ・ノード構造の異なる部分がユーザによって表示されるように要求されるので、能力ベースのＰＥＭ２６００は１つずつそのようにし得る。ノード構造を発見し、かつ、対応するコントロール・パネル・ビューをインスタンス化する能力ベースのＰＥＭ２６００の動作の例が、図２０〜２３を参照して先述された。
【０２７７】
図２６において、能力ベースのＰＥＭ２６００は、ネットワーク・インターフェース２６０２、ノード分解能モジュール２６０４、システム・プラグイン・ノード・マネージャ２６０６、リンク・マネージャ発見マネージャ２６０８、発見エンジン２６１０およびリンク・マネージャ２６１２を含む。この図解された例において、この例の能力ベースのＰＥＭ２６０２の能力がプロダクト・プラグインを提供しないので、能力ベースのＰＥＭ２６０２は、プラグイン・ローダを含まないかもしれず、ジェネリック・プラグイン５２４とだけ通信し得る。加えて、未知のコンポーネントおよび／またはコントロール・パネル・ビューもしくはアスペクトを検索する他のプロダクト・プラグインがないので、ノード発見マネージャ２６０８は、属性要求エンジン２６２０だけ含む。
【０２７８】
オーディオ関連デバイスの属性を要求すると、属性要求エンジンは、属性をジェネリック・プラグイン５２４にパスし得る。ジェネリック・プラグイン５２４は、オーディオ関連デバイスへの通信パスをセットアップするようにＡＰＩインターフェースを有効にし、かつ、能力ベースのＰＥＭ２６００が動作しているデバイスの能力に依存しているオーディオ関連デバイスのオーディオ・ノード構造のコンポーネントのいくらかの部分を要求するようにＡＰＩインターフェースを有効にし得る。ジェネリック・プラグインは、オーディオ・ノード構造の部分に対して対応するコントロール・パネル・ビューを決定し、ディスプレイをインスタンス化し得る。さらなるオーディオ・ノード構造が、ユーザによって見られることを要求されるとき、現在のコントロール・パネル・ビューが処分され、さらなる情報が、別のコントロール・パネル・ビューの生成をサポートするようにオーディオ関連デバイスから要求され得る。あるいは、能力ベースのＰＥＭ２６００は、十分な処理能力が利用可能なときには構築され得るコントロール・パネル・ビューのセットのサブセットを構築し得る。コントロール・パネル・ビューのサブセットは、能力ベースのＰＥＭ２６００が動作しているデバイスの能力に依存して１つ以上のコントロール・パネル・ビューを含み得る。
【０２７９】
能力ベースのＰＥＭ２６００は、生成されるコントロール・パネル・ビューの複雑さを考慮し得る。ディスプレイおよび／または処理能力が制限されているとき、能力ベースのＰＥＭ２６００は、比較的シンプルなＧＵＩのアスペクトを含むコントロール・パネル・ビューを生成し得る。例えば、自動的に作成された三次元ＧＵＩのアスペクトが自動的に作成されない二次元ボックスに変換され得る。加えて、能力ベースのＰＥＭ２６００は、表示デバイスの能力に基づいて、コントロール・パネル・ビューに含まれているエレメントの大きさおよび／または数を調整し得る。さらにコントロール・パネル・ビューを生成するためにオーディオ関連デバイスから取得されるオーディオ・ノード構造の量は、表示デバイスの能力に基づいて、能力ベースのＰＥＭ２６００によって変化され得る。
【０２８０】
先述されるように、このシステムは、種々の複雑さを持つ複数のオーディオ・コンポーネントを有するオーディオ・システムにおいて動作可能である。このシステムは、さまざまな物理ネットワークおよび通信プラットフォームのいずれかを用いて、種々の複雑さを有する複数の異なるオーディオ関連デバイスをシームレスに統合するネットワーク独立プロトコルを提供する。加えて、このシステムは、まだ既知でない特定のオーディオ関連デバイスのアスペクトを発見するメッセージング機能を提供することによって、システム内のオーディオ関連デバイスのアップグレード、変更、追加が可能である。このメッセー機能はまた、選択されたオーディオ関連デバイス間でオーディオデータおよび関連情報が効率的に、および最小のネットワーク・トラフィックで送達されることを可能にする。
【０２８１】
ＰＥＭは、オーディオ関連デバイスのオーディオ・ノード構造が既知であるかどうかを決定し得る。オーディオ・ノード構造のいずれかの部分が未知であるとき、ＰＥＭは、未知の部分を定義するようにさらなる情報を取得し得る。加えて、ＰＥＭは、オーディオ・システム全体のコントロール・パネル・ビューを取り出しおよび／または生成し得る。さらに、ＰＥＭは、対応するオーディオ・ノード構造に基づいて、オーディオ・システム内の各特定のオーディオ関連デバイスに対してコントロール・パネル・ビューを取り出しおよび／または生成し得る。コントロール・パネル・ビューは、オーディオ・システム内のオーディオ関連デバイスの協調された管理、制御およびモニタを可能にする。このシステム内で用いられるに通信プロトコルは、デバイス・ツー・デバイス通信と同様に、パフォーマンス機器マネージャとオーディオ関連デバイス間の標準通信を可能にする。
【０２８２】
本発明のさまざまな実施形態が記述されてきた一方で、本発明の範囲内において、より多くの実施形態およびインプリメンテーションが可能であることが当業者には明らかである。従って、本発明は、添付の請求項およびその均等物によってのみ制限される。
【０２８３】
オーディオ・システムにおいて動作可能なオーディオ関連デバイスの機能性を決定するためのシステムは、パフォーマンス機器マネージャを含む。パフォーマンス機器マネージャは、オーディオ関連デバイスから、対応するオーディオ関連デバイスを表しているオーディオ・ノード構造を受け取る。受け取られたオーディオ・ノード構造は、パフォーマンス機器マネージャにおいてすべてのコンポーネントがあらかじめ決定されているかを決定するためにレビューされ得る。既知であるコンポーネントに対して、発見は必要とされず、オーディオ関連デバイスにおける変更可能なパラメータの実際の値が取得される。未知であるコンポーネントに対して、パフォーマンス機器マネージャは、未知のコンポーネントに関連した変化可能な実際の値を取得するために、オーディオ・ノード構造のさらなる部分および／または未知のコンポーネントに関連した属性を識別するために発見をおこなう。
【０２８４】
本発明は、以下の図面および説明を参照してより良く理解され得る。図面中の構成要素は、必ずしも一定比で拡大されず、代わりに、本発明の原理を示す際に強調が課されている。さらに、図面において、同様の参照番号は、種々の図全体を通じて対応する部分を示す。
【図面の簡単な説明】
【０２８５】
【図１】オーディオ・システムの一例のブロック図である。
【図２】図１のオーディオ・システムに図解されるオーディオ関連デバイスの１つのブロック図の例である。
【図３】図２オーディオ関連デバイスおよび図１に示されるオーディオ関連デバイスの一部のより詳細なブロック図である。
【図４】オーディオ関連デバイスを表すオーディオ・ノード構造の例のブロック図である。
【図５】ＰＥＭの例および図１に示されるオーディオ・システムの一部のブロック図である。
【図６】図５のＰＥＭのＧＵＩのコアの一部の詳細なブロック図である。
【図７】図５のＰＥＭのインターフェース・モジュールの一部のブロック図である。
【図８】図５のＰＥＭのプロダクト・プラグインの一部のブロック図である。
【図９】図５のＰＥＭのジェネリック・プラグインの一部のブロック図である。
【図１０】図２のオーディオ関連デバイスの一部のより詳細なブロック図である。
【図１１】図１のオーディオ・システムにおけるオーディオ関連デバイスを発見するためのフローチャートの例である。
【図１２】図３のスイッチおよび複数のオーディオ関連デバイスの構成の例のより詳細なブロック図である。
【図１３】オーディオ関連デバイスとの通信パスを決定するためのフローチャートの例である。
【図１４】オーディオ・デバイス間の通信のためのプロトコル構造の例である。
【図１５】図１４に図解されるプロトコルにおけるオーディオ関連デバイス間で通信され得るアプリケーション層のメッセージおよびアドレス層のメッセージＩＤの例のテーブルである。
【図１６】図１４に図解されるプロトコルにおけるオーディオ関連デバイス間で通信され得るルーティング層のメッセージおよびルーティング層のメッセージＩＤの例のテーブルである。
【図１７】プロダクト・プラグインと関連したオーディオ関連デバイスのオーディオ・ノード構造を決定するためのフローチャートの例である。
【図１８】プロダクト・プラグインと関連したオーディオ関連デバイスのオーディオ・ノード構造を決定するための図１７のフローチャートの例の第２の部分である。
【図１９】プロダクト・プラグインと関連していないオーディオ関連デバイスのオーディオ・ノード構造を決定するためのフローチャートの例である。
【図２０】表示デバイスの能力に基づいて、どのように対応するオーディオ関連デバイスのＧＵＩのコントロール・パネル・ビューが表示され得るかを決定するためのフローチャートの例である。
【図２１】表示デバイスの能力に基づいて、どのように対応するオーディオ関連デバイスのＧＵＩのコントロール・パネル・ビューが表示され得るかを決定するためのフローチャートの別の例である。
【図２２】表示デバイスの能力に基づいて、どのように対応するオーディオ関連デバイスのＧＵＩのコントロール・パネル・ビューが表示され得るかを決定するための図２０のフローチャートの例の第２の部分である。
【図２３】対応するオーディオ関連デバイスのコントロール・パネル・ビューを構築するためのフローチャートの例である。
【図２４】異なる複数のコントロール・パネル・ビューに表示されるデータ変数をアップデートするためのフローチャートの例である。
【図２５】１つのオーディオ関連デバイスから別のオーディオ関連デバイスへのデータ変数の通信のさまざまな例を示すフローチャートである。
【図２６】図４のＰＥＭのＧＵＩのコアの部分の別の例の詳細なブロック図である。
【図２７】例示的なシステムのＧＵＩベニュー・ビューを示すコントロール・パネル・ビューの例である。
【図２８】図２７に示される製品のプロダクト・ビューを示すコントロール・パネル・ビューの例である。
【図２９】例示的なシステムのＧＵＩプロダクト・ビューを示すコントロール・パネル・ビューの例である。
【符号の説明】
【０２８６】
１００  オーディオ・システム
１１４  マイクロフォン
１１６  スピーカ
１２６、１２８  オーディオ・プロセッサ
２０２  通信ポート
２０６  メモリ
３０２、５０４  ネットワーク・インターフェース
３３０、３３２  スイッチ
４００  オーディオ・ノード構造
４０４、４０６  仮想デバイス
５０８  Ｅｔｈｅｒｎｅｔ（登録商標）
５１０  ＦｉｒｅＷｉｒｅ
５１２  ＵＳＢ５１２
５１４  ＲＳ２３２
５１６  ＲＳ４８５
５１８  ルーティング・テーブル
５２４  ジェネリック・プラグイン
８０２  ノード・インスタンス化エンジン
８０４  コントロール・パネル・ライブラリ
８０８  コントロール・パネル・ビュー・バッファ
８１８  ノード構造ストレージ
９０４  ノード・インスタンス化エンジン
９１０  コントロール・パネル・ビュー・バッファ
９１２  ノード構造ストレージ
１００８  ノード識別モジュール
【図１】
0004621523.tif 000008
【図２】
0004621523.tif 000009
【図３】
0004621523.tif 000010
【図５】
0004621523.tif 000011
【図６】
0004621523.tif 000012
【図７】
0004621523.tif 000013
【図８】
0004621523.tif 000014
【図９】
0004621523.tif 000015
【図１０】
0004621523.tif 000016
【図１１】
0004621523.tif 000017
【図１２】
0004621523.tif 000018
【図１３】
0004621523.tif 000019
【図１４】
0004621523.tif 000020
【図１５】
0004621523.tif 000021
【図１６】
0004621523.tif 000022
【図１７】
0004621523.tif 000023
【図１８】
0004621523.tif 000024
【図１９】
0004621523.tif 000025
【図２０】
0004621523.tif 000026
【図２１】
0004621523.tif 000027
【図２２】
0004621523.tif 000028
【図２３】
0004621523.tif 000029
【図２４】
0004621523.tif 000030
【図２５】
0004621523.tif 000031
【図２６】
0004621523.tif 000032
【図４】
0004621523.tif 000033
【図２７】
0004621523.tif 000034
【図２８】
0004621523.tif 000035
【図２９】
0004621523.tif 000036