JP2006268409A - 信号処理装置 - Google Patents

信号処理装置 Download PDF

Info

Publication number
JP2006268409A
JP2006268409A JP2005085348A JP2005085348A JP2006268409A JP 2006268409 A JP2006268409 A JP 2006268409A JP 2005085348 A JP2005085348 A JP 2005085348A JP 2005085348 A JP2005085348 A JP 2005085348A JP 2006268409 A JP2006268409 A JP 2006268409A
Authority
JP
Japan
Prior art keywords
signal processing
circuit configuration
plug
graph
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005085348A
Other languages
English (en)
Other versions
JP4622611B2 (ja
Inventor
Katsuaki Yamashita
功誠 山下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2005085348A priority Critical patent/JP4622611B2/ja
Priority to US11/386,007 priority patent/US8555251B2/en
Priority to KR1020060025978A priority patent/KR101260295B1/ko
Priority to CNB2006100741042A priority patent/CN100444111C/zh
Priority to EP06251614A priority patent/EP1705569A3/en
Publication of JP2006268409A publication Critical patent/JP2006268409A/ja
Application granted granted Critical
Publication of JP4622611B2 publication Critical patent/JP4622611B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • DTEXTILES; PAPER
    • D05SEWING; EMBROIDERING; TUFTING
    • D05BSEWING
    • D05B59/00Applications of bobbin-winding or -changing devices; Indicating or control devices associated therewith
    • D05B59/02Devices for determining or indicating the length of thread still on the bobbin
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Abstract

【課題】信号処理遅延を防止して、効率の良い信号処理を可能にする信号処理装置を提供する。
【解決手段】複数の信号処理単位要素からなる信号処理をソフトウエア処理により行なう信号処理装置である。信号処理単位要素をソフトウエア処理によりそれぞれ行なう信号処理モジュールの複数個を接続して回路を構成し、その回路構成情報を、回路構成情報格納管理部に保持して管理する。信号処理順序決定手段は、初期経路探索とループ探索とを実行して、回路構成情報格納管理部に格納されている前記複数個の信号処理モジュールのそれぞれの信号処理順序を、ループを構成する信号モジュール群は、信号処理順序としては、局所化して、ひとまとめになるように決定する。信号処理実行手段は、決定された信号処理順序で、前記信号処理モジュールのそれぞれを逐次的に実行させて信号処理を実行する。
【選択図】図1

Description

この発明は、複数の信号処理単位要素からなる信号処理をソフトウエア処理により行なう信号処理装置に関する。
近年の市販のコンピュータは性能が著しく向上し、従来では難しかった動画や音楽のコンピュータ上での再生が可能となってきた。特に、動画や音声の信号処理を行なうアプリケーションに関しては、従来のDSP(Digital Signal Processor)等の専用信号処理デバイスや専用ハードウエアを用いなくとも、ソフトウエア処理にて、容易にリアルタイム信号処理が可能となってきた。
これらの信号処理アプリケーションを支える技術として、各種の信号処理ミドルウエアが存在している。例えば、Microsoft(登録商標)社製のDirectShow(非特許文献1参照)や、The MathWorks(登録商標)社製のMATLAB(非特許文献2参照)、Cycling‘74社製のMax/MSP(非特許文献3参照)などがある。
信号処理アプリケーションは、これらのミドルウエアを利用することにより、高度な機能を比較的容易に実現することができる。例えば、音声について言えば、録音・再生、入出力、ミキシング、特殊効果等が、信号処理アプリケーションにより実現されている。また、動画について言えば、ノンリニア編集等の高度な編集機能を有する信号処理アプリケーションが実現されている。
また、この種のミドルウエアとして、プラグイン構造を有するものも提案されている(特許文献1(特開2001−109628公報)および特許文献2(特開平7−302195号公報)参照)。ここで、プラグインとは、機能をモジュール化したものであり、ソフトウエアアプリケーションである。なお、この明細書では、信号処理を扱うので、プラグインは、信号処理モジュールを構成するソフトウエアアプリケーションのことを指す。
このプラグインを用いることにより、ユーザは、必要なときに必要な信号処理モジュールをアドオンして利用することができる。プラグインは、単体で使われることが多いが、近年、これらのプラグインを複数組み合わせて、複合的な機能を作り出すことのできる新たなシステムがいくつか存在してきている。この複合プラグインシステムは、新たな付加価値を生み出すシステムとして今後の主流となって行くものと予想される。
上記の特許文献は以下の通りである。また、非特許文献は、次に示すアドレスのサイトにおいて説明されている。
特開2001−109628公報 特開平7−302195号公報 http://msdn.microsoft.com/library/defalt.asp?url=/library/en-us/directx9_c/directX/htm/directshow.asp http://www.mathworks.com/ http://www.cycling74.com/products/maxmsp.html
ところで、信号処理装置において、信号処理を止めず、かつ、信号出力を止めることなく、信号処理装置の回路構成を柔軟かつ任意の回路に変更することができれば非常に便利である。例えば、ライブ演奏等における音声信号処理の場合、音声出力を止めずに回路構成を変更することができれば、リバーブやディストーションなどの音声特殊効果処理を、特定のパートで施したり、あるいは特定のパートでは施さなかったりすることが容易にできるようになる。
ハードウエア構成の信号処理装置において、信号処理を止めずに、回路構成を変更しようとする場合には、想定される全ての回路構成を予め準備しておき、スイッチなどにより回路構成を切り替えるようにすることが考えられる。この場合に、全ての回路構成を予め準備しておく必要があるため、状況に応じて想定外の任意の回路に変更する事は不可能であり自由度が極めて乏しい。また予め全ての回路構成を準備しておく必要があるためコスト高であるという問題がある。
また、FPGA(Field Programmabe Gate Array)のように回路構成情報をダウンロードすることで切り替え可能なハードウエアでも、原理上、回路切り替えに時間を要することや、切り替え前後の回路の整合性が保証されていないことから、回路切り替え時に音切れやノイズが発生してしまう。連続的に音声信号を出力しながら動的に回路構成を切り替えることは極めて困難である。
上述した信号処理モジュールを組み合わせて信号処理装置を構成する場合には、ハードウエア構成とは異なり、ソフトウエアを変更することにより、信号処理回路の回路構成を変更することが可能であるので、ハードウエア構成のスイッチが不要となり、柔軟かつ任意の回路に変更できる上、切り替え時のノイズを原理上、除去することが可能となると考えられる。
しかし、一つ注意すべき点がある。ソフトウエア信号処理の場合には処理負荷を軽減するため、パケット単位での信号処理を行なうことが多い。フィードフォワード型の回路構成であれば、順方向に信号が流れるため、たとえパケット処理の途中であっても、動的に回路構成を切り替えても処理される音声データに何ら不整合は発生しない。
しかしながら、回路構成にフィードバックループが含まれている場合には、パケット処理の途中で回路構成を単純に切り替えると信号処理に不整合が生じてしまう。これはデジタル信号処理理論におけるフォードバックループの因果性というものが起因しているためである。因果性により、フィードバックループ回路は、たとえパケット内であっても、1サンプル単位で逐次的に処理する必要がある。そのため、フィードフォワード型とフィードバックループ型の二つの型が混在した回路構成では、フィードフォワード型の回路はパケット単位で、フィードバックループ型の回路は1サンプル単位で信号処理を行なう必要があり、同一パケット時間内において混在した二つの制御処理を行なう必要がある。
問題となるのは、このような二つの回路型が混在した状況下において、何も考えずに単純に回路を切り替えてしまうと、処理される音声データに不整合が発生してしまうことである。フィードフォワード型の回路とフィードバックループ型の回路では、切り替え可能なタイミングが異なる。このことにより、単純な回路切り替えを行なってしまうと、切り替え前の回路構成において処理された音声データと、切り替え後の回路構成において処理された音声データが同一パケット内に混在してしまうケースがあり、その結果、処理される音声データに不整合が生じ、ノイズ発生等の不具合が生じることがある。
この発明は、上記の問題点にかんがみ、信号処理を止めず、かつ、信号出力を止めることなく、信号処理装置の回路構成を変更することができるようにした信号処理装置を提供することを目的とする。
上記の課題を解決するために、請求項1の発明は、
複数の信号処理単位要素からなる信号処理を、予め定められたデータサンプル数の処理データ単位で、ソフトウエア信号処理により行なう信号処理装置であって、
前記信号処理単位要素をソフトウエア処理によりそれぞれ行なう信号処理モジュールの複数個と、
前記複数個の信号処理モジュールと、前記複数個の信号処理モジュールの入出力の仮想的な接続状態により表わされる回路構成情報を記憶して管理する回路構成情報格納管理部と、
経路探索を実行して、前記回路構成情報格納管理部に格納されている回路構成情報を構成する前記複数個の信号処理モジュールのそれぞれの信号処理順序を決定する信号処理順序決定手段と、
前記信号処理順序決定手段で決定された信号処理順序で、前記信号処理モジュールのそれぞれを逐次的に実行させて前記信号処理を実行する信号処理実行手段と、
前記信号処理実行手段で前記信号処理を実行中において、回路構成変更要求があるか否かを判別し、前記回路構成変更要求があると判別されたときに、前記処理データ単位での前記ソフトウエア信号処理が終了した後、次の処理データ単位の先頭までの間で、変更後の回路構成情報を前記回路構成情報格納管理部に記憶させると共に、前記信号処理順序決定手段に前記経路探索を再実行させ、変更後の回路構成情報における前記複数個の信号処理モジュールのそれぞれの信号処理順序を決定させるようにする回路構成変更手段と、
を備え、
前記回路構成変更手段で変更された回路構成により、前記次の処理データ単位の先頭から、ソフトウエア信号処理がなされる
ことを特徴とする信号処理装置を提供する。
この請求項1の発明によれば、信号処理順序を定めて、複数の信号処理モジュールによるソフトウエア信号処理を逐次的に行なうので、各信号処理モジュールでは、非同期バッファに一旦格納して処理するなどの冗長な処理遅延を防止することができる。
そして、請求項1の発明によれば、信号処理の実行中において、回路構成変更要求があったときには、処理データ単位でのソフトウエア信号処理が終了した後、次の処理データ単位の先頭までの間で、変更後の回路構成情報を回路構成情報格納管理部に記憶させると共に、信号処理順序決定手段を実行して新たな信号処理順序を探索し、信号処理実行手段は、新たな信号処理順序で前記信号処理を実行する。
この場合、回路構成の変更時点は、ある処理データ単位と、次の処理データ単位との間であって、変更後の回路構成による信号処理は、前記次の処理データ単位の先頭から開始されて、処理データ単位の途中とはならないので、処理データ単位の信号においては、変更前の回路構成による処理結果と、変更後の回路構成による処理結果とが混じることはなく、ループを含む回路構成であっても、何ら支障なく信号処理が継続される。
以上のように、請求項1の発明によれば、信号処理動作中であっても、信号出力を止めることなく、回路構成を変更することができ、変更した回路構成により、信号処理動作を継続することができる。
この発明によれば、信号処理動作中であっても、回路構成を動的に変更することができる。また、信号処理モジュールを多段に結線しても信号処理遅延が増加しない信号処理装置を実現することができる。さらに、閉ループを含む信号処理であっても、回路構成を動的に変更したときに、不具合の発生を防止することができる。
以下、この発明による信号処理装置の実施形態を、図を参照しながら説明する。以下に説明する実施形態の信号処理装置は、複合プラグインシステムとして構成されるものであるが、従来のこの種のものに比べて優れた特徴を有すものである。
すなわち、現在存在している複合プラグインシステムには、以下のようないくつかの欠点がある。
(a)プラグインを多段に結線すると処理遅延(レーテンシー)が比例して増大する。
(b)プラグイン間の結線に制限があり、フィードバックループの結線ができない。
(c)信号処理動作中にプラグイン間の結線状態を変更できない。
(d)処理速度が遅いために多くの機能をリアルタイムで実行する事が難しい。
(e)音声と画像の同期やパラメータの変更においてサンプル精度での制御ができない。
(f)1台のコンピュータ上で閉じた形でしか信号処理できない。
これまで、上記欠点を部分的に解決するミドルウエアはいくつか存在しているが、全ての欠点を同時に解決することができるミドルウエアは存在していない。何故なら、相反する問題(ある一つの問題を解決すると他の問題へ悪影響を与える問題)を含んでいるからである。例えば、上記(b)と(d)を同時に解決することは非常に難しい。
これらの欠点が存在することで、従来のミドルウエアの製品への組み込み利用において致命的な障壁となっているケースも少なくない。
以下に説明する信号処理装置は、上記欠点を解決することができるものとして構成されている。
この発明による信号処理装置の実施形態は、汎用信号処理ミドルウエアであり、以下、このミドルウエアをSSP(Software Signal Processor)と呼ぶ。なお、以下の実施形態の説明においては、信号処理として音声信号処理の場合を例にとる。
SSPは、図2に示すように、汎用OS(Operating System)と、アプリケーションソフトウエアとの間に位置するもので、アプリケーションは、SSPを利用することで、容易に高度な信号処理機能を実現することができる。また、SSPはGUI(Graphical User Interface)を持つことを必要としないミドルウエアであるので、表示装置を持たない組み込み機器用の信号処理エンジン用としても利用することができる。
[実施形態の信号処理装置の概要]
この発明による信号処理装置の実施形態のSSPは、グラフ構造を有するミドルウエアであり、基本的には、一つのコンピュータに実現されるが、後で説明するように、ネットワークを通じて接続された複数台のコンピュータにおいて、実現することもできる。
SSPとしての実施形態の信号処理装置は、この例においては、ソフトウエアで構成されるグラフモジュール(以下、単にグラフという)と、ソフトウエアで構成されるプラグインモジュール(以下、単にプラグインという)との2大要素により構成されている。
プラグインモジュールは、信号処理の単位要素、例えば、フィルタ、イコライザ、ゲイン制御などを実行する信号処理モジュール(ソフトウエア)である。
プラグインは、この例では、複数の入力ポートおよび複数の出力ポートを有することが可能であり、入力ポートから入力された音声信号に対して、当該プラグイン固有の信号処理を施して、出力ポートから出力する働きを持つ。
プラグインの出力ポートを他のプラグインの入力ポートに接続(ハードウエア的に結線接続されるのではなく、あるプラグインの出力信号が、他のプラグインに入力されることを意味する仮想的な接続状態となること。以下、単に接続と記す)することにより、複数個のプラグインを接続して、複合的な信号処理機能を実現することが可能である。ここで、プラグインは、入力ポートと出力ポートの組み合わせでのみ接続することができ、入力ポート同士や出力ポート同士を接続することはできない。
グラフは、SSPのシステムとしての役割を担っている部分であり、複数のプラグインを包含する働きを持つ。そして、グラフは、ユーザからの操作入力を受けて、プラグインの生成、削除、ポート間の結線を行ない、その結果の回路構成情報を保持する。したがって、グラフ内部には、プラグインからなる任意の回路を構成することができる。
そして、グラフは、当該グラフの信号処理関数がコールされると、自分が受け取った時刻情報付の音声データを内包するプラグインに順次渡してゆく。プラグインに音声データや付随情報の入出力を行なうのもグラフの役割である。
また、グラフは、プラグインの性質を持っている。このため、グラフは、プラグインと同様に、入出力ポートを持ち、他のプラグインと相互に接続することもできる。そして、グラフは複数のプラグインを包含できるため、グラフを作成することにより、複数のプラグインからなる回路ブロック(グラフ)を一つのプラグインとして扱うことができる。この場合のプラグインとして扱われるグラフは、複数の回路をまとめて一つの部品として扱うことができる働きを持つことになる。
[グラフの例]
図3に、内部に複数個のプラグインを包含するグラフの一例を示す。なお、実施形態の信号処理装置では、パーソナルコンピュータで構成することができ、ユーザの入出力を受け付けて、このパーソナルコンピュータの表示部に、ユーザ指示に応じて、グラフやプラグイン、それらの接続状態をグラフィック表示することできるようにされている。
この図3の例では、ユーザは、先ず、最初に基本となるルートグラフ200を作ってから、このグラフ200内に、複数のプラグイン201〜204からなる回路を作成するようにする。プラグイン201〜204のそれぞれは、予め、パーソナルコンピュータに格納されているのを選択して用いることができる。ここで言う格納状態とはオブジェクト指向におけるクラスというテンプレート状態であり、まだ実際のオブジェクトは生成されていない状態を指す。
ユーザは、例えば、プラグイン201〜204のそれぞれを、パーソナルコンピュータの格納部に格納されているプラグインから選択して、グラフ200内に動的に生成(設置)する。ここで初めてオブジェクト指向におけるオブジェクトが生成される。そして、ユーザは、プラグイン201〜204の出力ポートと入力ポートとの結線、また、グラフ200と、プラグイン201、204との結線などの指示をして、図3に示すような回路を構成する。
グラフ200は、内部のプラグイン201〜204の回路構成情報を保持する。そして、ユーザが、ルートグラフ200の信号処理関数を一回コールするだけで、ルートグラフの信号処理関数内から、順に、内包するプラグインの信号処理関数が再帰的にコールされ、信号処理に関する計算処理が逐次に行なわれてゆく。この再帰的な信号処理関数コールの伝播が、SSPシステムそのものである。
図4は、内部に複数個のプラグインを包含するグラフの他の例を示す。前述したように、グラフは、プラグインでもある。したがって、グラフは、内部にグラフ以外のプラグインと、グラフ自身(子グラフ)を含むことができる再帰的な構造をとることができる。また、他のプラグインと同様に入出力ポートも持っている。グラフの内部は、グラフ外から見るとブラックボックスになっている。グラフ内部には、複数のプラグインからなる回路ブロックが形成されている。
図4において、グラフ400が親グラフである。この親グラフ400の内部に、子グラフのグラフ401とプラグイン405を保持している。さらに、子グラフ401は内部にプラグイン402、プラグイン403、プラグイン404を保持している。親グラフ400からは、子グラフ401内部のプラグイン402、プラグイン403、プラグイン404は見えずに、子グラフ401が一つのプラグインとして見える。
ユーザは、まず、最初に、ルートとなるルートグラフ(親グラフ400)を一つ作る。ユーザは、このルートグラフ400のプラグイン生成削除関数を呼び出すことで、ルートグラフ内部に子グラフ401やプラグイン405を生成することができる。
さらに、ユーザは、子グラフ401のプラグイン生成削除関数を呼び出すことで、同様に、プラグイン402、プラグイン403、プラグイン404を生成することができる。
信号処理実行を行なうには、ユーザは、まず、このルートグラフ400の信号処理関数をコールする。すると、ルートグラフ400の信号処理関数内から順に内包するプラグインとしての子グラフ401、プラグイン405の信号処理関数が再帰的にコールされ、計算処理が逐次行なわれていく。この再帰的な信号処理関数コールの順番を決定するのもグラフの機能である。
子グラフ401では、この子グラフ401の信号処理関数が最初にコールされる。そして、当該子グラフ401の信号処理関数内から、順に内包するプラグイン402,403,404の信号処理関数が再帰的にコールされ、計算処理が逐次行なわれていく。
SSPシステムとは、以上のようなグラフの働きそのものである。プラグインの生成削除処理、プラグイン間の結線処理、プラグイン間のデータの受け渡し処理、プラグインに対する時刻情報・音声情報と映像情報との同期付与処理、各プラグインの信号処理関数の逐次的な呼び出しとその呼び出し順の決定など、システムに必要な機能をこのグラフというプラグイン自身が処理している。
以下の説明において、システムという語を用いる場合における当該「システム」という語は、グラフそのもの、およびグラフが有する機能のことを指す。
図5は、実装例としてのSSPミドルウエアの全体構造を示すUML(Unified Modeling Language)クラス図である。オブジェクト指向で表現しており、クラスとインターフェース(API(Application Programming Interface))が定義されている。
プラグインクラス(CPlugin)は、プラグインインインターフェース(IPlugin)を継承しており、プラグイン固有のインターフェースを実装するものである。プラグインクラスは、複数の入力ポートクラス(CInputPort)および出力ポートクラス(COutputPort)を保持している。
また、プラグインクラスは、その働きに応じて複数の種類が存在している。例を挙げると、例えば足し算を行なうプラグインクラスは、アダープラグイン(Adder Plugin)クラスであり、掛け算を行なうプラグインクラスは、マルチプライヤープラグイン(Multiplier Plugin)クラスである。これらのクラスは、自作プラグイン(CMyPlugin)クラスとして分類される。自作プラグインクラスは、プラグインクラスを継承している。この例のミドルウエアユーザは、プラグインテンプレートを使用することにより、容易に自作プラグインを作成することができる。
次に、グラフクラスについて説明する。グラフクラス(CGraph)は、複数のプRグインクラスを包含するものである。グラフクラスもプラグインクラス同様、プラグインインターフェース(Plugin Interface(IPlugin))を継承しており、グラフクラス自身もプラグインクラスの一つである。
そのため、グラフ内部に更に別のグラフ、プラグインを包含するという再帰的な階層構造を構成することができる。これは、一般的なオブジェクト指向設計手法である「デザインパターン」のコンポジットパターン(Composite Pattern)と呼ばれる構造に相当する。
さらに、グラフはプラグインの性質も兼ね備えているため、他のプラグイン同様、入出力ポートを持ち、他のプラグインと相互に結線することができる。グラフオブジェクトを作成することにより、複数のプラグインオブジェクトからなる回路ブロックを一つの部品オブジェクトとして扱うことができる。
グラフクラス、プラグインクラスともに、インターフェース(API)が定義されており、SSPミドルウエアのクライアントとなるアプリケーションからは、このAPIをコールすることにより、このオブジェクトを制御することができる。ユーザがSSPシステムに対して行なう操作とは、この2つのオブジェクトに対する操作のことである。
[プラグインの構成について]
図6は、プラグインの構成の一例を示す図である。前述もしたように、プラグインは、ソフトウエア信号処理モジュールであるので、この図6の構成の各部は、ハードウエアとして備えるのではなく、ソフトウエアの機能として備えるものである。
図6に示すように、プラグイン600は、信号処理部601を備えると共に、0個以上の入力ポート602と、0個以上の出力ポート603とを持つことが可能であり、この入力ポート602および出力ポート603を通して、他のプラグインと信号のやり取り、この例では音声データのやり取りをすることができる。この例においては、1ポート当たり1チャンネル分の音声信号を入出力する。
プラグイン600に対して入力ポート602および出力ポート603の追加・削除を、ユーザが指示することで、プラグイン600が持つ入力ポート602および出力ポート603の数を信号処理中でも動的に変更することができるように構成されている。入力ポート602および出力ポート603には、追加した順番により0〜N(Nは任意の自然数)および0〜M(Mは任意の自然数)の識別番号が与えられ、ユーザは、この識別番号により、入力ポート602の一つおよび出力ポート603の一つを指定することができる。
また、プラグイン600は、内部に0個以上のパラメータ保持部(パラメータバッファ)604を備え、当該パラメータ保持部604に0個以上のパラメータを持つことが可能である。ここで、パラメータとは、信号処理における効果の量などを設定する可変値のことであり、ユーザにより入力設定される。例えば、プラグイン600がアンプの場合を例に取ると、増幅ゲイン値などがそれに相当する。プラグイン600を使用するユーザは、プラグイン600のパラメータ値を変更することにより、信号処理の効果を変えることができる。
この例では、パラメータには、0〜K(Kは任意の自然数)の識別番号が割り当てられている。ユーザは、任意のパラメータの識別番号を指定することにより、任意のタイミングでパラメータバッファの内容を変更することができる。プラグイン600の機構として、ユーザから与えられたパラメータは、一旦、プラグイン600内部のパラメータバッファ604に保持される。そして、システム(グラフのこと)から与えられるサンプルデータに同期した時刻情報に基づいてパラメータが読み出されて、信号処理部601に送られて、その信号処理に用いられる。
また、プラグイン600には、時刻情報のレジスタ部605を備え、このレジスタ部605には、SSPシステム(グラフのことである)から、常に、時刻情報が入力されている。この時刻情報とは、SSPシステムを開始した時点(グラフの信号処理関数を開始した時点)を起点とする音声入出力データサンプルの積算カウント数である。この積算カウント数がSSPシステムで最も基本となる時刻情報である。
この実施形態のSSPシステムでは、時刻情報と音声入出力データは完全に同期している。すなわち、SSPシステムは、プラグイン600に対して音声データと同時に時刻情報を与える。したがって、時刻情報は、プラグイン600に入力される音声データのデータサンプルのタイムスタンプの役割を果たしている。このため、プラグイン600自身は、これから信号処理の対象となる入力データが、絶対時刻で何サンプル目かという詳細な時刻情報を知ることができる。SSPシステム内に存在する全てのプラグインは、この絶対時刻を参照して同期しているため、SSPシステム内の回路全体として、サンプル精度の同期信号処理を実現することができる。
プラグイン600は、内部に信号処理部601を持っている。他のプラグインから入力された音声データは、入力ポート602を通じて信号処理部601へ送られる。信号処理部601では、入力ポート602から得た音声データに対して、時刻情報や信号処理部601へ送られてきたパラメータ値を参照しながら、そのプラグイン固有の信号処理を施す。信号処理部601で処理された音声データは、出力ポート603を経て他のプラグインへ送信される。
プラグイン600での信号処理は、時刻情報に同期することにより、1サンプル単位だけではなく、複数サンプル単位、例えば複数サンプルからなるパケット単位で行なうことができる。プラグインでは、処理データ単位毎に、信号処理関数のコールを行なう。したがって、パケット単位で信号処理をする場合には、信号処理関数のコールが1パケットで一回となり、関数コールが少なくなる分だけ、信号処理速度が速くなる。
また、この実施形態では、音声データと共に映像データを処理する場合において、音声データの処理を、映像データの映像フレームに同期(以下、AV同期と言う)させることができるようにされている。このAV同期処理については、後で詳述するが、音声データの処理を、映像データの映像フレームに同期させるようにする場合には、システムから、時刻情報と共に、映像データの垂直同期情報Vsをプラグイン600に送るようにする。
そして、プラグイン600では、システムからの時刻情報に同期する垂直同期情報Vsをチェックして、垂直同期情報Vsのタイミングであると判別したときに、映像と音声とで同期を取ってする処理、例えば、パラメータバッファ604から信号処理部601に送るパラメータの変更処理を、この垂直同期情報Vsのタイミングに同期して行なう。この仕組みにより、グラフ内に構成された回路内の全てのプラグインの全てのパラメータが、垂直同期情報Vsに同期して同時に更新され、AV同期が取られる。
[グラフの構成例]
図7は、グラフの一例を示す構成図である。前述もしたように、グラフは、ソフトウエア処理モジュールであるので、この図7におけるグラフ700の構成の各部は、ハードウエアとして備えるのではなく、ソフトウエアの機能として備えるものである。
前述したように、グラフはプラグインとしての性質をも有するものであり、信号処理部701と、入力ポート702と、出力ポート703と、パラメータバッファ704と、時刻情報のレジスタ部705とを備えている。信号処理部701は、当該グラフ内に包含されるプラグインを読み出す処理を行なうものである。入力ポート702と、出力ポート703と、パラメータバッファ704と、時刻情報のレジスタ部705の機能は、図6を用いて説明したプラグイン600の、対応する部位と同様であるので、ここでは、その説明は省略する。なお、パラメータバッファ704のパラメータは、グラフ700に対するパラメータであることは言うまでもない。
次に、グラフ特有の機能について説明する。
グラフ700は、内部にプラグイン生成・保持部706を備えている。グラフ700は、0個以上のプラグインを内部に包含することができる。ユーザは、グラフに対してプラグインの追加・削除を指示することで、信号処理中でも動的にプラグインの生成・削除することができる。信号処理中の動的なプラグインの生成・削除については後で、詳述する。
グラフ700においては、生成したプラグインには追加した順番により0〜J(Jは任意の自然数)の識別番号が与えられる。このため、ユーザは、この識別番号によりプラグインを識別することができる。但し、グラフ700は、プラグイン生成・保持部706には、この識別番号の順番でプラグインを保持しているわけではない。グラフ700内のプラグインは、後述する逐次計算順序の順番にソートされた状態で、プラグイン生成・保持部706に保持している。
ユーザは、グラフ700に対して、当該グラフ700が内包するプラグイン間の結線も指示することができる。任意のプラグインの出力ポートと任意のプラグインの入力ポートの結線状態を、信号処理中でも動的に変更することが可能である。これらは、ユーザがグラフ700に対してプラグインの識別番号とポートの識別番号とを指定することで実行することができる。グラフ700は、ユーザからの結線変更指示により、プラグインの結線状態を変更する処理を行なう。
ユーザは、グラフ700に対して、信号処理の開始を指示する。ユーザが、グラフ700の信号処理関数をコールすると、グラフ700の信号処理関数内から順に、当該グラフ700が内包するプラグインの信号処理関数が再帰的にコールされる。信号処理関数がコールされると、プラグイン生成・保持部706に、逐次計算順序の順番にソートされた状態で保持されている、グラフ700が内包するグラフやプラグインの信号処理部が、前記逐次計算順序に従って、順次、実行処理される。グラフ700が内包するグラフやプラグインの計算処理が逐次的に行なわれていくことで、グラフ700内に構成された回路全体の複合的な信号処理が実現される。この逐次計算順序は、プラグイン間の結線構造により、システム(グラフ700)が決定する。
ユーザの指示によりプラグインの追加・削除・入力ポート・出力ポートの結線状態の変更など、回路状態に変更がある場合、グラフ700は、後述するような経路探索を実行することにより、自己が内包するプラグインおよび子グラフについて最適な逐次計算順序を自動的に求める。子グラフが内包するプラグインについての最適な逐次計算順序は、当該子グラフが、経路探索を実行することにより自動的に求める。
上記のグラフで行なわれる経路探索の結果、プラグイン生成・保持部706のプラグイン群(プラグインとしての子グラフを含む)は、この最適な逐次計算順序の順番でソートされた状態で保持されている。グラフが備える経路探索のアルゴリズムについては、後で詳細に説明する。
[グラフの機能ブロック図]
図1は、グラフが備える機能をブロック化して示したグラフの構成の機能ブロック図である。すなわち、グラフは、指示入力受付機能部1と、プラグイン生成削除機能部2と、プラグイン間結線処理機能部3と、回路構成情報格納管理機能部4と、経路探索機能部5と、信号処理順序管理機能部6と、信号処理実行機能部7と、信号処理関数格納部8と、回路構成変更機能部9とを備える。
指示入力受付機能部1は、ユーザからのプラグイン生成あるいは削除指示、入出力ポートの結線指示、パラメータ入力指示などを受け付け、プラグイン生成あるいは削除指示は、プラグイン生成削除機能部2に渡し、入出力ポートの結線指示は、プラグイン間結線処理機能部3に渡す。また、プラグイン生成あるいは削除指示、また、入出力ポートの結線指示があると、指示入力受付機能部1は、経路探索機能部5を起動させて、経路探索を実行させるようにする。また、指示入力受付機能部1は、パラメータ入力指示を受け付けたときには、パラメータバッファに入力されたパラメータを保持する機能を備えている。
プラグイン生成削除機能部2は、指示入力受付機能部1からのプラグイン生成あるいは削除指示を受けて、プラグインの生成あるいは削除処理を行なう。すなわち、プラグイン生成時には、生成されたプラグインに識別番号を付与し、回路構成情報格納管理機能部4に、当該識別番号を含むプラグインの生成情報を渡す。また、プラグイン削除時には、削除されたプラグインの識別番号と、その削除依頼とを含む削除情報を回路構成情報格納管理機能部4に渡す。
プラグイン間結線処理機能部3は、指示入力受付機能部1からのプラグイン間の結線指示を受けて、当該結線指示により指定されたプラグインの出力ポートと入力ポートとの結線情報を回路構成情報格納管理機能部4に渡す。
回路構成情報格納管理機能部4は、プラグイン生成削除機能部2やプラグイン間結線処理機能部3からのプラグインの生成情報、削除情報、結線情報から、グラフ内に構成される回路情報を記憶し、管理する。
経路探索機能部5は、指示入力受付機能部1からの、プラグイン生成あるいは削除指示、また、入出力ポートの結線指示に基づく起動依頼を受けて、後述する経路探索のアルゴリズムを、起動して実行する。この経路探索のアルゴリズムの実行の結果、定められたプラグインの逐次計算順序(信号処理順序)の情報を、信号処理順序管理機能部6に送る。
信号処理順序管理機能部6は、前述したように、プラグイン生成・保持部に、当該信号処理順序の順番でプラグインの識別情報を並べて保持するようにする。
信号処理実行機能部7は、図1に示すように、データ受け渡し処理部71と、信号処理関数呼出部72と、信号処理時刻管理部73と、信号処理同期管理部74とを備えている。
信号処理実行機能部7は、指示入力受付機能部1を通じて入力される信号処理開始指示に基づいて、グラフ内に構成された回路による信号処理を開始する。ユーザが、グラフ700の信号処理関数のコールを指示すると、信号処理関数呼出部72が、信号処理関数格納部8から指示されたグラフの信号処理関数を読み出す。信号処理関数呼出部72は、グラフの信号処理関数は、ユーザ指示により読み出しを行なうが、グラフ内の各プラグインの信号処理関数は、前記グラフの信号処理関数内から順に、それぞれのプラグインの信号処理関数を再帰的に呼び出す。
そして、信号処理実行機能部7のデータ受け渡し処理部71は、回路構成情報格納管理機能部4の格納回路情報を参照し、回路構成に従って、この例では、音声データを順次に処理データ単位毎(例えば、1サンプル単位あるいは1パケット単位)でプラグインに渡してゆくようにする。
信号処理時刻管理部73は、このデータ受け渡し処理部71によるデータサンプル単位の時刻を管理する。信号処理同期管理部74は、パケット単位の信号処理時のパケット同期処理(例えばパケットの先頭の管理)や、前述した音声データの処理タイミングを、映像データのフレームに同期させるAV同期などを管理する。
回路構成変更機能部9は、信号処理実行機能部7において信号処理を実行中において、指示入力受付機能部1を通じたユーザ操作に基づく回路構成変更要求を検出し、回路構成変更要求があったときには、ある処理データ単位の信号処理終了時点から、次の処理データ単位の信号の先頭までの間において、変更後の回路構成情報を、回路構成情報格納管理機能部4に書き込んで、回路構成情報を変更後のものに更新すると共に、経路探索機能部5および信号処理順序管理機能部6を起動する。
経路探索機能部5は、信号処理実行機能部7による信号処理中であっても、回路構成変更機能部9からのグラフ内の回路構成の変更要求指示および指示入力受付部1からの、プラグイン生成あるいは削除指示、また、入出力ポートの結線指示に基づく起動依頼を受けて、後述する経路探索のアルゴリズムを起動し、変更された回路構成についての経路探索を実行し、その探索結果を回路構成情報格納管理機能部4および信号処理順序管理機能6に伝える。これにより、信号処理実行機能部7は、その後は、変更された回路構成において、変更後の経路探索結果に基づいた信号処理順序で信号処理が実行される。
この実施形態では、回路構成変更機能部9は、信号処理実行機能部7により信号処理の実行中における指示入力受付機能部1を通じたユーザからのプラグイン生成あるいは削除指示、また、入出力ポートの結線指示を、回路構成変更要求として検出する。この回路構成変更要求に対応して実行される回路変更処理については、後述する。
[グラフ構造を有する回路作成処理]
次に、この発明の実施形態による信号処理回路の作成処理の流れを、図8の回路構成をグラフ内に作成する場合を例にとって説明する。以下の説明においては、グラフやプラグインを総称してオブジェクトと呼ぶ。オブジェクトとは、オブジェクト指向におけるインスタンスを指し、グラフやプラグインの実体そのものである。
オブジェクト生成時の各グラフや各プラグインのデフォルト入出力ポート数(初期値)は下記の通りである。なお、ユーザは、オブジェクト生成後に入力ポートおよび/または出力ポートを追加又は削除することが可能である。
親グラフ800:入力ポート数0、出力ポート数0
プラグイン801:入力ポート数0、出力ポート数1
プラグイン802:入力ポート数1、出力ポート数0
子グラフ803:入力ポート数1、出力ポート数1
プラグイン804:入力ポート数1、出力ポート数1
プラグイン805:入力ポート数2、出力ポート数2
プラグイン806:入力ポート数1、出力ポート数1
なお、以下の説明において、入力ポートおよび出力ポートの後の数字は、ポート番号であり、0,1,2が用いられている。
[回路作成手順]
次に、図8の回路の作成手順を、図9〜図12のフローチャートを参照しながら説明する。なお、図9〜図12は、説明の理解を容易にするため、ユーザの指示と、実施形態の信号処理装置における処理とを対応させて示したものである。図示は、省略したが、実施形態の信号処理装置は、表示画面に、ユーザの指示入力に応じた表示を行なってゆくものであり、ユーザは、その表示画面を見ながら操作入力をすることができるものである。
先ず、ユーザは、グラフ800(親グラフ)のオブジェクトの作成指示をする(ユーザ指示(1))。すると、信号処理装置では、ルートオブジェクトとして、親グラフ800を生成して、登録する(ステップS101)。
次に、ユーザは、グラフ800のオブジェクトに対してプラグイン801オブジェクトの作成を指示する(ユーザ指示(2))。すると、信号処理装置では、作成されたグラフ800のプラグイン生成削除機能により、グラフ800内にプラグイン801が生成されて登録される(ステップS102)。グラフ800内の経路探索機能部は、このプラグインの生成指示に基づいて、経路探索を実行する(ステップS103)。
次に、ユーザは、グラフ800のオブジェクトに対してプラグイン802オブジェクトの作成を指示する(ユーザ指示(3))。すると、信号処理装置では、グラフ800のプラグイン生成削除機能により、グラフ800内にプラグイン802が生成されて登録される(ステップS104)。グラフ800内の経路探索機能部は、このプラグインの生成指示に基づいて、経路探索を実行する(ステップS105)。
次に、ユーザは、グラフ800のオブジェクトに対してグラフ803オブジェクト(子グラフ)の作成を指示する(ユーザ指示(4))。すると、グラフ800では、プラグイン生成削除機能により、グラフ800内に子グラフ803をプラグインとして生成して登録する(ステップS106)。グラフ800内の経路探索機能部は、このプラグインの生成指示に基づいて、経路探索を実行する(ステップS107)。
次に、ユーザは、グラフ803のオブジェクトに対して入力ポート0(外)の作成を指示する(ユーザ指示(5))。すると、信号処理装置では、生成された子グラフ803の機能として、入力ポート0(外)が生成され、子グラフ803内に登録される(ステップS111)。そして、子グラフ803では、入力ポート0(外)に対応する内部の出力ポート0(内)を自動的に生成する(ステップS112)。そして、子グラフ803内の経路探索機能部は、このポート作成指示に基づいて、経路探索を実行する(ステップS113)。
次に、ユーザは、子グラフ803のオブジェクトに対して、出力ポート0(外)の作成を指示する(ユーザ指示(6))。すると、信号処理装置では、生成された子グラフ803の機能として、出力ポート0(外)が生成され、子グラフ803内に登録される(ステップS114)。そして、子グラフ803では、出力ポート0(外)に対応する内部の入力ポート0(内)を自動的に生成する(ステップS115)。そして、子グラフ803内の経路探索機能部は、このポート作成指示に基づいて、経路探索を実行する(ステップS116)。
次に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン804オブジェクトの作成を指示する(ユーザ指示(7))。すると、子グラフ803のプラグイン生成削除機能により、子グラフ803内にプラグイン804が生成されて登録される(ステップS117)。子グラフ803内の経路探索機能部は、このプラグインの生成指示に基づいて、経路探索を実行する(ステップS118)。
次に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン805オブジェクトの作成を指示する(ユーザ指示(8))。すると、子グラフ803のプラグイン生成削除機能により、子グラフ803内にプラグイン805が生成されて登録される(ステップS119)。子グラフ803内の経路探索機能部は、このプラグインの生成指示に基づいて、経路探索を実行する(ステップS120)。
次に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン806オブジェクトの作成を指示する(ユーザ指示(9))。すると、子グラフ803のプラグイン生成削除機能により、子グラフ803内にプラグイン806が生成されて登録される(ステップS131)。子グラフ803内の経路探索機能部は、このプラグインの生成指示に基づいて、経路探索を実行する(ステップS132)。
次に、ユーザは、グラフ800のオブジェクトに対して、プラグイン801の出力ポート0と子グラフ803の入力ポート0(外)の結線を指示する(ユーザ指示(10))。すると、グラフ800では、プラグイン間接続処理機能部により、プラグイン801の出力ポート0と、子グラフ803の入力ポート0(外)とを結線して、当該グラフ800内に登録する(ステップS133)。グラフ800内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS134)。
次に、ユーザは、グラフ800のオブジェクトに対して、子グラフ803の出力ポート0(外)とプラグイン802の入力ポート0の結線を指示する(ユーザ指示(11))。すると、グラフ800では、プラグイン間接続処理機能部により、子グラフ803の出力ポート0(外)と、プラグイン802の入力ポート0とを結線して、当該グラフ800内に登録する(ステップS135)。グラフ800内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS136)。
次に、ユーザは、子グラフ803のオブジェクトに対して、子グラフ803の内部の出力ポート0(内)とプラグイン804の入力ポート0との結線を指示する(ユーザ指示(12))。すると、子グラフ803では、プラグイン間接続処理機能部により、子グラフ803の内部の出力ポート0(内)と、プラグイン804の入力ポート0とを結線して、当該子グラフ803内に登録する(ステップS137)。子グラフ803内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS138)。
次に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン804の出力ポート0とプラグイン805の入力ポート0との結線を指示する(ユーザ指示(13))。すると、子グラフ803では、プラグイン間接続処理機能部により、プラグイン804の出力ポート0とプラグイン805の入力ポート0とを結線して、当該子グラフ803内に登録する(ステップS141)。子グラフ803内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS142)。
次に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン805の出力ポート1とプラグイン806の入力ポート0との結線を指示する(ユーザ指示(14))。すると、子グラフ803では、プラグイン間接続処理機能部により、プラグイン805の出力ポート1とプラグイン806の入力ポート0とを結線して、当該子グラフ803内に登録する(ステップS143)。子グラフ803内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS144)。
次に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン806の出力ポート0とプラグイン805の入力ポート1との結線を指示する(ユーザ指示(15))。すると、子グラフ803では、プラグイン間接続処理機能部により、プラグイン806の出力ポート0とプラグイン805の入力ポート1とを結線して、当該子グラフ803内に登録する(ステップS145)。子グラフ803内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS146)。
最後に、ユーザは、子グラフ803のオブジェクトに対して、プラグイン805の出力ポート0と子グラフ803の内部の入力ポート0(内)との結線を指示する(ユーザ指示(16))。すると、子グラフ803では、プラグイン間接続処理機能部により、プラグイン805の出力ポート0と子グラフ803の内部の入力ポート0(内)とを結線して、当該子グラフ803内に登録する(ステップS147)。子グラフ803内の経路探索機能部は、ポート接続指示に基づいて、経路探索を実行する(ステップS148)。
以上の手順により、図8の回路が、グラフ800内に構成される。そして、ユーザが、グラフ800に対して、信号処理開始の指示をすると、前述したようにして、経路探索により定められた信号処理順序に従って、各プラグインでの信号処理が逐次実行される。
上述したように、この実施形態の信号処理装置においては、ユーザの、上述の例の場合の合計16手順は、グラフオブジェクトに対する操作であるので、当該操作の度に回路のグラフ構造が変化するため、各手順毎に経路探索アルゴリズムが、システム(グラフ)により自動的に実行される。そして、回路構成の生成処理が完了したときには、経路探索も完了して、信号処理順序も定まった状態となる。
次に、図8の例で作成した回路の信号処理実行の流れを説明する。
グラフ800内のプラグイン生成・保持部には、経路探索アルゴリズムにより、最適な逐次計算順序でソートされた状態でプラグインが保持されている。図8の例において、既に最適な順番でプラグインが保持されているものと仮定して、以下に信号処理実行の流れを説明する。
(1) ユーザは、先ず、グラフ800に対して信号処理の開始を指示する。
(2) すると、グラフ800の信号処理関数が実行される。
(3)次に、グラフ800の信号処理関数内からプラグイン801の信号処理関数が実行される。
(4)次に、グラフ800の信号処理関数内から子グラフ803の信号処理関数が実行される。
(4−1)次に、子グラフ803の信号処理関数内からプラグイン806の信号処理関数が実行される。
(4−2)次に、子グラフ803の信号処理関数内からプラグイン804の信号処理関数が実行される。
(4−3)次に、子グラフ803の信号処理関数内からプラグイン805の信号処理関数が実行される。
(5)次に、グラフ800の信号処理関数内からプラグイン802の信号処理関数が実行される。
上記の手順において、最初のグラフ800に対する信号処理の開始指示の手順(1)のみが、ユーザの指示によるものであり、その後の手順(2)〜(5)は、グラフ800および子グラフ803により自動的に実行されるものである。
なお、各プラグインの信号処理関数内では、下記の動作が行なわれる。
(1)入力ポートから入力データを受け取る。
(2)入力データに対して信号処理を施す。
(3)信号処理した入力データを出力ポートへ出力する。
[実施形態の経路探索アルゴリズム]
次に、この実施形態において、グラフの処理機能とされている経路探索アルゴリズムについて説明する。
以下に説明する経路探索アルゴリズムは、実施形態のシステムの要部を構成するものであり、この経路探索アルゴリズムにより、グラフが内包するプラグインが、最適な順序にソーティングされる。信号処理時は、このソーティングされた順序で、各プラグインが持つ固有の信号処理関数が逐次的に呼び出され実行される。
一般に、信号処理をDSP(Digital Signal Processor)等の信号処理デバイスで行なう場合、DSP内部のALU(Arithmetic Logical Unit)等の演算回路部において逐次的に計算処理を行なうことで、所望の信号処理を実現している。このDSP等による逐次処理方法は、この実施形態のミドルウエアのCPUによる演算についても同様である。
すなわち、この実施形態では、与えられた回路をシグナルフローグラフと見なし、そのグラフから逐次計算順序を探索し、探索結果に基づいた順序で、逐次的に計算処理を行なうようにする。この実施形態のミドルウエアであるSSPは、この独自の経路探索アルゴリズムを有していることをも特徴としている。
この経路探索アルゴリズムを用いることで、フィードバックループを含む任意のデジタル回路構成を、完全にエミュレートすることができる。また、現実のハードウエア回路の世界では不可能な動的な回路構成の変更が実現できる。
この実施形態において、この経路探索アルゴリズムは、グラフ状に結線されたプラグインからなる回路の信号処理を実現するために、どのプラグインから順番に信号処理すれば良いかという逐次計算順序を求めるアルゴリズムである。ここで、経路探索の対象となる、グラフ内に構成される回路は、フィードバックループ状の回路構成を含んでいても良い。
この経路探索アルゴリズムは、グラフが保持しており、グラフの中のプラグイン生成・保持部が、この経路探索アルゴリズムを実行する。
ユーザから、グラフに対して、グラフ構造を変更する操作が行なわれた場合に、グラフ自身が自動的に経路探索を実行し、新たな逐次計算順序を求める。回路内に複数のグラフが存在している場合には、経路探索は、各グラフ単位で独立して行なわれ、変更があったグラフのみ経路探索が実行される。この経路探索は、非常にシンプルであるため、短時間で完了する。
この実施形態の経路探索アルゴリズムの詳細を以下に説明する。
この実施形態の経路探索アルゴリズムでは、グラフ状に形成されている回路の要素であるプラグインをノードと見なす。ノードとは、グラフ理論における節となる要素のことである。この実施形態では、回路は、ノード間が方向をもつ矢印で結合される有向線分グラフで表現することができる。ノードへ向かう矢印をノードへの入力、ノードから外へ向かう矢印をノードからの出力と定義する。この実施形態の経路探索アルゴリズムは、グラフ状に結線されたノードを順に巡って、信号順序を定めてゆく。以下、この実施形態の経路探索アルゴリズムをノードスキャンアルゴリズムと称する。
このノードスキャンアルゴリズムは、経路探索のベースとなる初期経路探索アルゴリズム(プライマリーノードスキャンアルゴリズム)と、経路のループ情報を加味する探索を行なうループサーチアルゴリズムとからなる。
そして、この実施形態においては、図13に示すように、ノードスキャンアルゴリズムにおいては、先ず、初期経路探索アルゴリズムを行なう(ステップS151)。そして、初期経路探索アルゴリズムを終了すると(ステップS152)、ループサーチアルゴリズムを実行するようにする(ステップS153)。
[初期経路探索アルゴリズムについて]
この初期経路探索アルゴリズムは、次のような「解決すべき命題」を設定し、後述のような「探索条件」の下で、行なうものである。
「解決すべき命題」
グラフ状に結線されたノードを順に辿ることを想定する。1回の巡回かつ下記条件の下で、全てのノードを一度に通過したい。それが可能となる巡回順序を求めよ。但し、巡回するノード間がグラフで直接結線されている必要は無く、ノードを飛び飛びに巡回しても構わない。
「探索条件」
(a)入力の無いノードは無条件で通過することができる。
(b)遅延素子となるプラグインのノードは、無条件で通過することができる。
(c)通過したノードは出力が確定する。
(d)ノードAの入力に接続されている前段のノードBの出力が確定すると、ノードAの入力が確定する。
(e)ノードの全入力が確定するとそのノードを通過することができる。
なお、ノードの識別子として予め順番に固有番号が割り当てられている。この番号をノードナンバー(ノードNo.)と呼ぶ。これは任意の番号で良く、例えばプラグインのオブジェクトの生成順にノードナンバーを割り当てておけば良い。なお、プラグインには、LTP(Latency Type Plugin)と、NLTP(Non Latency Type Plugin)との種類のタイプがある。LTPは、遅延素子となるプラグインであり、1サンプル以上の遅延が発生する。NLTPは、ゲート素子となるプラグインであって、遅延は発生しない。
以上の初期経路探索アルゴリズムは、図14のフローチャートにより実行できる。
先ず、最初のノードをチェックし(ステップS161)、当該ノードに対してノード順序番号(以下、ノードインデックスと呼ぶ)が付与済みであるかどうか判別する(ステップS162)。付与済みであれば、全てのノードにノードインデックスが付与されているか否か判別し(ステップS169)、全てのノードにノードインデックスが付与されていると判別したときには、この処理ルーチンを終了する。
また、ステップS169で、全てのノードには、ノードインデックスを付与し手はいないと判別したときには、次のノードをチェックし(ステップS165)、その後、ステップS162に戻り、ステップS162以降を繰り返す。
ステップS162で、ノードインデックスが付与済みではないと判別したときには、無条件で通過できるノードか否か、つまり、プラグインがLTPであるか否か判別する(ステップS163)。
このステップS163で、無条件で通過できるノードではないと判別したときには、そのノードの全ての入力が確定しているか否か判別する(ステップS164)。このステップS164で、全ての入力は確定していないと判別したときには、次のノードをチェックし(ステップS165)、その後、ステップS162に戻り、ステップS162以降を繰り返す。
ステップS163で、無条件で通過できるノードであると判別したとき、また、ステップS164で、そのノードの全入力が確定していると判別したときには、当該ノードを通過して当該ノードの出力を確定する(ステップS166)。そして、当該ノードが接続されているノードの入力を確定する(ステップS167)。そして、当該ノードに、ノードインデックスを付与する(ステップS168)。
次に、全てのノードにノードインデックスが付与されているか否か判別し(ステップS169)、全てのノードにノードインデックスが付与されていると判別したときには、この処理ルーチンを終了する。
以上のような初期経路探索アルゴリズムによるノードインデックスの付与の具体例を、図15のフラグの回路構成の場合を例に説明する。図15においては、対象となるノードは、ノードNo.0〜No.6の7個である。ノードNo.4とノードNo.6はLTPとする。この場合の初期経路探索アルゴリズムは、下記のようになる。すなわち、ノードNo.0からノードNo.6まで、順に下記のチェックを行なう。ノードNo.0からノードNo.6までを1巡として、全ノードが通過できるまで、下記のチェックを何巡でも繰り返す。
(1)ノードNo.0は、入力が無いので通過OK。よって、ノードNo.0の出力(0)確定。
(2)ノードNo.1は、入力(1)が確定していないのでパス。
(3)ノードNo.2は、入力が無いので通過OK。よって、ノードNo.2の出力(0)確定。
(4)ノードNo.3は、全ての入力(0,1,2)が確定していないのでパス。
(5)ノードNo.4は、LTPなので通過OK。よって、ノードNo.4の出力(0)確定。
(6)ノードNo.5は、入力(0)が確定していないのでパス。
(7)ノードNo.6は、LTPなので通過OK。よって、ノードNo.6の出力(0)確定。
以上で、1巡目を終了する。次に、通過できずに出力の確定していないノードに対して、次のようにして、2巡目の探索を行なう。
(1)ノードNo.1は、全ての入力(0, 1)が確定したので通過OK。よって、ノードNo.1の出力(0)確定。
(2)ノードNo.3は、全ての入力(0,1,2)が確定したので通過OK。よって、ノードNo.3の出力(0,1,2)確定。
(3)ノードNo.5は、入力(0)が確定したので通過OK。よって確定。
以上のようにして、全てのノードを通過して出力が確定したので、以上で探索が完了となる。この場合、2巡目で探索が完了したことになる。
[初期経路探索アルゴリズムによる探索結果]
上記の初期経路探索アルゴリズムの探索手順において、出力が確定した順にノードに番号を振って行くと、経路探索結果が求まる。この新たなノードの順序番号がノードインデックスである。図15のグラフの回路構成例の場合の探索結果を図16に示す。
グラフ内では、プラグインはノードインデックス順に、プラグイン作成・保持部に格納されている。経路探索アルゴリズムが実行される毎に、プラグイン作成・保持部における、当該プラグインの格納順が更新される。信号処理時は、グラフがノードインデックス順に各プラグインの信号処理関数をコールすることで、所望の信号処理を実現している。
以上説明したように、初期経路探索アルゴリズムにおいては、2巡目、3巡目と繰り返しながら、前記命題の解が求まるまで、ノードのチェックを行なうが、1巡の探索において、通過可能なノードが必ず一つは見つかるという性質がある。
但し、一つだけ例外がある。フィードバックループ内に遅延素子であるLTPが含まれない場合は、1巡の探索において、通過可能なノードをただ一つも見つけることができない。これは、回路構成上、異常なケースである。
一般的なデジタル信号処理理論では、因果律を満たすために、フィードバックループ内に必ず一つ以上の遅延素子を含む必要がある。この実施形態における初期経路探索アルゴリズムでは、ユーザが、この基本原則を守らない回路を作成した場合は、上記例外が発生するという性質がある。
そこで、この実施形態の初期経路探索アルゴリズムにおいては、この例外発生をエラー警告に利用することができる。すなわち、ユーザが遅延素子を含まないフィードバック回路を作成した場合には、初期経路探索アルゴリズムにおいて、上述のような経路探索の例外発生が生じるので、その場合を検出したときには、回路を再構成するよう、システムからユーザに警告を発するようにする。
[ループサーチアルゴリズムについて]
次に、ループサーチアルゴリズムについて説明する。これは信号処理実行時におけるCPU負荷の改善を提供するアルゴリズムである。信号処理のリアルタイム性を確保するには、重要な技術である。
前記の初期経路探索アルゴリズムで求めた探索結果によっても、所望の回路の信号処理は実現できる。しかし、初期経路探索アルゴリズムで求めた探索結果では、フィードバックループを含む回路構成においては、必ずしも速度性能的には有利であるとは言えないという問題がある。
フィードバックループを含む回路構成においては、「入力が確定しない状態で出力を確定することはできない」というデジタル信号処理理論における因果律を満たす必要がある。そのため、フィードバックループを含む回路においては、1サンプル単位で逐次的に各プラグインの信号処理を行なう必要がある。すなわち、1サンプル単位でプラグインに対し音声データの入出力及び信号処理を行なう必要があるということである。
ここで、問題となるのは、信号処理する毎に発生する関数コールである。一般に、ソフトウエア処理において、関数コールはCPU負荷が高い(コスト高である)という性質がある。ソフトウエアのリアルタイム信号処理においては、この関数コール回数を1回でも少なくするということが、処理速度性能の向上につながる。そこで、関数コール回数を削減する方法が、処理速度性能の向上を考える場合に望まれる。
関数コール回数を減らす一般的な手法としては、複数データサンプルを1単位とする、例えばパケット単位の処理が挙げられる。1サンプルづつ処理するのではなく、所定数の複数データサンプルをブロック化してまとめて一括処理する方法である。例えば、パケットサイズが1024サンプルの場合は、1024サンプルの音声データをまとめてブロック化して、1回の関数コールで処理する。こうすることにより、関数コールの回数を減らすことができる。
しかしながら、回路にフィードバックループが含まれる場合は、上述したように、1サンプル単位で関数コールする必要がある。このため、パケット処理が行なえない。
そこで、この実施形態の経路探索アルゴリズムでは、初期経路探索アルゴリズムの後に、以下に説明するループサーチアルゴリズムを行なうことにより、この問題を解決するものである。
一般に、フィードバックループを含む回路において、ループを形成するノードは、回路全体の一部であることが多い。この実施形態におけるループサーチアルゴリズムは、この点を利用して、ループを構成するノードの群と、ループを構成しないノードの群とを、信号処理順序の上で、区分けして、ループを構成しないノードの群では、パケット処理を可能にすることにより、信号処理全体として、高速化を図るものである。
例えば、図15に示した回路構成の場合、ループを構成するノードは、ノードNo.3、ノードNo.4、ノードNo.6、の3個であり、全体のノード数7個に対して半分以下である。
そこで、ループを形成するノードのみ1サンプル単位で処理し、それ以外のノードをパケット単位で処理することにより、速度劣化を必要最小限に抑えることができる。全体の回路構成において、ループを形成するノードの割合が小さければ小さいほど、より効果的に速度劣化を抑えることができる。
図17に、このループサーチアルゴリズムの処理のフローチャートを示す。先ず、閉路探索アルゴリズムを用いて、ループを構成するノードを求める(ステップS171)。閉路探索アルゴリズムは、一般的なグラフ理論の閉路探索アルゴリズムを利用することができる。この一般的なグラフ理論の閉路探索アルゴリズムは周知であるので、ここでは、その詳細な説明は省略する。
次に、初期経路探索アルゴリズムで定められた信号処理順序では、ループを構成するノードの間に、信号処理順序として、ループを構成しないノードが入っているかどうかをチェックする(ステップS172)。
そして、ループを構成するノードの間に、信号処理順序として、ループを構成しないノードが入っていると判別したときには(ステップS173)、ループを構成しないノードを、ループを構成するノードの前となるように、信号処理順序を入れ換える(ステップS174)。つまり、ノードインデックスの振り直し行なう。
ステップS173で、ループを構成するノードの間に、信号処理順序として、ループを構成しないノードが入っていないと判別したときには、そのまま、このループサーチアルゴリズムを終了する。
このループサーチアルゴリズムを、図15に示した回路構成の場合に適用した場合を例に、具体例を以下に説明する。
図15に示した回路構成について、初期経路探索アルゴリズムを実行した結果は、図16に示した通りである。この図16の探索結果について、閉路探索アルゴリズムの探索結果である、ループを構成するノード、つまり、ノードNo.3、ノードNo.4、ノードNo.6を、斜線で付して示すと、図18の左側のようになる。
この図18の左側の図から明らかなように、初期経路探索アルゴリズムの探索結果では、信号処理順序として、ループを構成するノードの間に、ループを構成しないノードであるノードNo.1が存在することがわかる。そのため、このままの信号処理順序では、本来1サンプル単位で処理を行なう必要のないノードNo.1も、1サンプル単位で処理を行なう必要がある。
しかし、ループサーチアルゴリズムを適用したときには、前記ステップS174において、ループを構成しないノードは、ループを構成するノードの前となるように、信号処理順序を変更する。
この場合に、信号処理順序が変更されても、初期経路探索アルゴリズムの解決命題を満たすことが必要である。そこで、ループサーチアルゴリズムにおいては、信号処理順序を変更するときには、変更後も初期経路探索アルゴリズムの解決命題を満たすかどうかのチェックを行なうようにしてもよいが、この例では、ループの先頭のノードよりも、ループを構成しないノードを前の信号処理順序となるように変更することにより、このようなチェックを不要としている。すなわち、上述の順序変更方法は信号処理の順序性を正しく保つという性質がある。
図15の例の場合であれば、ノードNo.4とノードNo.6とは、LTPであるので、入力が確定せずとも出力が確定すると言う性質を持っている。この性質を利用すると、ノードNo.4とノードNo.6は、ノードNo.1より後の処理となっても構わない。
この例では、ループサーチアルゴリズムにより、図18の右側に示すように、ループを構成しないノードであるノードNo.1は、信号処理順序を3番にして、ループを構成するノードの先頭のノードNo.4よりも前となるように、信号処理順序が変更される。
このようにされると、ループを構成するノードは、図18の右側において斜線を付して示すように、ひとまとめとされる。つまり、ループを構成するノード群は、信号処理順序として局所化されていることになる。
この図18の右側に示すような信号処理順序で信号処理を、以下のようにして、実行することにより関数コールを必要最小限に抑えることが可能である。
すなわち、
(1)ノードインデックスが1番から3番のノードは、ループ外であるので、パケット単位で処理する。
(2)ノードインデックスが4番から6番のノードは、ループ内であるので、1サンプル単位で処理する。
(3)ノードインデックスが7番のノードは、ループ外であるので、パケット単位で処理する。
以上のようにして信号処理を実行すれば、関数コールを少なくして、信号処理速度の劣化を防止することができる。次に、パケットサイズを1024サンプルとした場合の例を下記に挙げる。
(1)ノードNo.0に、1024サンプルのデータを渡し処理を実行する。(関数コール1回)
(2)ノードNo.2に、1024サンプルのデータを渡し処理を実行する。(関数コール1回)
(3)ノードNo.1に、1024サンプルのデータを渡し処理を実行する。(関数コール1回)
(4)下記操作(4−1)〜(4−3)を1024回繰り返す。(関数コール3×1024回)
(4−1)ノードNo.4に、1サンプルのデータを渡し処理を実行する。(関数コール1回)
(4−2)ノードNo.6に、1サンプルのデータを渡し処理を実行する。(関数コール1回)
(4−3)ノードNo.3に、1サンプルのデータを渡し処理を実行する。(関数コール1回)
(5)ノードNo.5に1024サンプルのデータを渡し処理を実行する。(関数コール1回)
したがって、以上の(1)〜(5)の信号処理によって、1024サンプル信号処理するために必要な関数コール回数の合計は、3076回となる。
仮に、上述の例において、全てのノードを1サンプルづつ処理した場合の関数コール回数の合計は、7168回となる。よって、この実施形態のノードスキャンアルゴリズムを実行して、ループを構成するノード群を局所化させて、当該ノード群のみは1サンプルごとに関数コールを実行し、その他のループを構成しないノードは、パケット単位で一回関数コールするようにすることにより、上述の例の場合には、約57%の関数コール数が削減されたことになる。
なお、この実施形態のシステムでは、パケットサイズは、固定値ではなく動的にそのサイズを変更することが可能である。
[AV同期について]
前述もしたが、この実施形態の信号処理装置は、サンプル精度で演算することができる。また、サンプル精度でAV同期を取ることができる。従来のミドルウエアにおいては、複数のプラグインを多段接続すると接続数に比例した遅延が発生するため、全てのプラグインを同期して処理することは困難である。
これに対して、この実施形態では、どのような接続においても遅延の増加が発生しないので、サンプル精度で各プラグインが同期して動作することが可能であり、サンプル精度でAV同期を取ることができる。
このAV同期のために、この実施形態では、時刻情報に付随する形で、映像データの垂直同期情報Vsとして、システム(グラフ)から、V同期フラグが付加されている。時刻情報がサンプル単位で更新されるので、このV同期フラグは、全てのサンプルについて付加されるものである。そして、V同期フラグは、フレームの先頭の時刻タイミングでのみ、例えば「1」となり、他はすべて「0」とされている。
V同期フラグは、映像のフレームと、音声データのサンプルを対応付ける同期パルス情報である。例えば、映像情報が30フレーム/秒、音声データのサンプリング周波数が48kHzの場合、映像情報の1フレーム当たりの音声データのサンプル数は、48000÷30=1600[サンプル/フレーム]である。音声データをパケット単位で処理する場合に、1パケット当たりのサンプル数が、前述のように例えば1024である場合には、パケットとフレームとは一致していない。そこで、この例では、V同期フラグを用いてAV同期を取るようにする。
システム(グラフ)は、映像情報の1フレーム当たりの音声データサンプル数を、予め算出しておく。システム(グラフ)は、音声データをプラグインに対して与えるときに、その音声データのサンプル時刻情報と共に、当該サンプル時刻が、映像フレームの先頭であるか否かの情報として前記V同期フラグを、プラグインに同時に与える。
各プラグインは、入力された音声データが映像情報の1フレームの先頭であることを、V同期フラグから検出した場合に、内部保持パラメータを、この映像フレームの先頭に同期して変更することで、AV同期処理を実現する。
ただし、前提条件として、システム(グラフ)からのサンプル単位の時刻情報と、映像フレームのV同期フラグとが何らかの方法により対応付けられていることが必要である。そこで、この例では、この実施形態の信号処理装置で、信号処理が開始された起点時刻を映像フレームの先頭と定義し、システム(グラフ)が予め算出している映像情報の1フレーム当たりの音声データサンプル数を利用して、起点時刻以降の時刻情報と、V同期フラグとを対応付けるようにしている。
図19に、このAV同期のためのプラグインでも処理のフローチャートを示す。
まず、音声データサンプルのプラグインへの入力に同期して、当該プラグインにシステム(グラフ)から入力される時刻情報としての絶対時刻カウント値tを取得する(ステップS181)。つまり、システムからのサンプル単位の時刻情報を読み込む。このとき、システムからは、時刻情報に付加されているV同期フラグも取得する。
プラグインでは、サンプル単位のV同期フラグが「1」であるかどうかにより、V同期フラグが「真」、つまり、映像フレームの先頭であるかどうかをチェックする(ステップS182)。V同期フラグが「真」であると判別したときには、AV同期処理として、この例では、パラメータの更新を行なう(ステップS183)。そして、当該時刻tにおける信号処理を実行する(ステップS184)。
ステップS182で、V同期フラグが「真」ではないと判別したときには、パラメータを変更せずに、当該時刻tにおける信号処理を実行する(ステップS184)。
そして、次の音声データサンプルのプラグインへの入力に同期して変更される次の絶対時刻カウント値(t+1)を取得し(ステップS185)、上述のステップS182〜184と同様の処理動作を繰り返す(ステップS186〜188)。以下、順次、サンプル入力に同期して、以上の処理を繰り返す。
[動的な回路構成の変更処理;第1の例]
この実施形態の信号処理装置では、前述したように、信号処理中であっても、ユーザからの、グラフへの変更指示(回路構成変更指示)に従い、グラフ構造を動的に変更することができる。そして、信号処理中であっても、再度、この実施形態の経路探索アルゴリズム(ノードスキャンアルゴリズム)を実行することで、回路構成の変更に対応できる。
また、この回路構成の変更処理を、処理データ単位の信号の処理終了時点から次の処理データ単位の信号の先頭前の間で行なうことで、変更された回路構成による信号処理が、処理データ単位の途中からではなく、処理データ単位の先頭からなされるようにして、回路構成変更に伴う不具合を防止している。
この機能により、例えば、実施形態の信号処理装置で処理されて出力された音声をユーザが聞きながらでも、実施形態の信号処理装置を新たな回路構成に変更することができる。このため、用途としてライブ演奏装置等に、この実施形態を活用できるというメリットがある。
図20に、この動的な回路構成変更処理のフローチャートを示す。このフローチャートの実行主体は、グラフである。また、図21に、このときのタイミングチャートを示す。この実施形態では、サンプリング周波数が例えば48kHzのデジタル音声データを、例えば1024サンプルを1パケットとして、パケット単位で処理をするようにしている。そして、図21において、時刻t、t+1、t+2、t+3・・・は、この1024サンプル毎の時刻であり、ある時刻t+i(iは整数)と、次の時刻t+(i+1)との間の時間Pdは、この例では20ミリ秒である。
ここで、信号処理装置におけるパケット単位のデジタル音声データの処理は、高速のクロックが用いられて、時間Pdよりも短い時間で終了する。回路構成上、ループがあるところでは、パケットを分解してサンプル単位で信号処理されるが、それでも、時間Pdよりも短い時間で、信号処理は終了する。
信号処理が終了したパケット単位のデータは、例えばFIFO(First−In First−Out)メモリからなるバッファメモリに書き込まれ、通常は、図21に示すように、当該パケット単位の信号処理終了後の、次のパケット単位の処理開始時刻から再生される。これにより、パケット単位の音声データが連続的に再生される。
パケット単位のデジタル音声データの処理は、時間Pdよりも短い時間で終了するので、図21から明らかなように、パケット単位のデータ処理の終了時点から次のパケット単位のデータの先頭までの間は、信号処理的にはアイドル時間となっている。そこで、この実施形態では、このアイドル時間を、回路構成動的変更処理可能期間に割り当てるようにしている。
そして、このように、パケット単位のデータ処理の終了時点から次のパケット単位のデータの先頭までの間で回路構成を動的に変更して、変更後の回路構成によって、次のパケットの先頭のデータから処理が開始されるので、パケットの途中で回路構成が変更されることはなく、冒頭で述べたような不具合は発生しない。
まず、時刻tでの信号処理を行なう(ステップS191)。すなわち、回路構成情報格納管理機能部4に格納されている回路構成情報を用いると共に、信号処理順序管理機能部6で保持されている信号処理順序にしたがって、信号処理実行機能部7がパケット単位のデータ処理を実行する。
そして、パケット単位のデータの処理が終了して、回路構成動的変更処理可能期間になると、グラフは、信号処理中であっても、この実施形態では、指示入力受付機能部1を通じてプラグイン生成あるいは削除指示や、入力ポート、出力ポートの生成あるいは結線指示などがなされたか否かにより、回路構成変更機能部9は、グラフ変更要求(回路構成変更要求)があるか否か判別する(ステップS192)。
そして、ステップS192で、グラフ変更要求があると判別したときには、グラフは、回路構成情報格納管理機能部4に変更後の回路構成情報を保持するようにすると共に、経路探索の再実行を行って、グラフの回路構成の再構成を行う(ステップS193)。このとき経路探索の結果の新たな信号処理順序の情報は、信号処理順序管理機能部6に保持される。
そして、次の時刻(t+1)での信号処理に移行する(ステップS194)。すると、この時刻(t+1)でのパケットは、その先頭のデータから、変更後の回路構成により信号処理される。
ステップS192で、グラフ変更要求がないと判別したときには、回路構成動的変更処理を行なわずに、そのまま、次の時刻(t+1)での信号処理に移行する(ステップS194)。
このステップS194以降は、ステップS192〜ステップS193と同様の処理を繰り返す(ステップS195〜196)。
このときの回路構成変更指示操作の一例を図22に示す。この図22の例は、パーソナルコンピュータなどのグラフィカル・ユーザ・インターフェースの画面において、前述したグラフおよびプラグインを、ブロックなどにより視覚的に表示し、これらブロック間の結線を、マウスなどのポインティングデバイスを用いて指示するようにするものである。
図22において、グラフィカル・ユーザ・インターフェース画面の左側のリスト1001は、プラグイン候補リストである。ユーザは、例えばプラグインを追加したい場合には、このリスト1001から追加するプラグインを選択する。すると、グラフィカル・ユーザ・インターフェース画面に、選択されたプラグインが表示される。
次に、ユーザは、プラグインとプラグインとの結線を行なう。すなわち、結線をしようとするプラグインの出力端にカーソル1002を合わせ、そのままドラッグして結線しようとする相手のプラグインの入力端の方向に移動すると、図22に示すように、結線の線分が表示される。
そして、カーソルのドラッグを、結線しようとする相手のプラグインの入力端のところで離す(リリース)することにより、プラグイン間の結線ができる。また、プラグインの入力端あるいは出力端のところにカーソルを持ってきて、クリックすると、結線が薄く表示され、あるいは、点線となり、実行すると削除することができる。
以上のようなユーザ指示操作により、回路構成の変更指示をすることができる。例えば、図23は、3個プラグイン901,902,903が順次に接続されている回路構成から、プラグイン901と、プラグイン902との間に新たなプラグイン904を挿入した回路構成に変更した場合である。この場合、プラグイン901と902との間の結線を削除し、その代わりに、プラグイン901とプラグイン904とを結線すると共に、プラグイン904とプラグイン902とを結線するようにする。
また、図24は、4個プラグイン911,912,913,914が順次に接続されている回路構成から、プラグイン912を削除した回路構成に変更した場合である。この場合、プラグイン912を削除すると共に、プラグイン912とプラグイン913との間の結線およびプラグイン911とプラグイン912との間の結線を削除し、その代わりに、プラグイン911とプラグイン913とを結線する。
また、図25は、4個プラグイン921,922,923,924が順次に接続されている回路構成において、プラグイン922をプラグイン925に変更した回路構成に変更した場合である。
この場合、プラグイン922を削除すると共に、プラグイン921とプラグイン922との間の結線およびプラグイン922とプラグイン923との間の結線を削除し、その代わりに、プラグイン925を挿入し、プラグイン921とプラグイン925とを結線すると共に、プラグイン925とプラグイン923とを結線する。
図26は、4個プラグイン931,932,933,934が順次に接続されている回路構成を、プラグイン932とプラグイン933との間の結線を増加したものに変更した場合である。
さらに、図27の例は、4個プラグイン941,942,943,944が順次に接続されているだけの回路構成を、2個のプラグイン945,946を、プラグイン943とプラグイン942との間のフィードバックループ中に追加した回路構成に変更した場合である。
この図27の例の場合には、ループが形成されることにより、データは、サンプル単位で前のデータと加算するなど、当該前のデータとミックスされる処理に変化する。しかし、この実施形態では、パケット単位のデータの途中で回路構成が切り換わることはないので、不具合は生じない。
[動的な回路構成の変更処理;第2の例]
以上の第1の例では、ユーザが、信号処理中に、グラフィカル・ユーザ・インターフェースを通じて回路構成の動的変更操作をしたとき、当該変更操作を回路構成の動的変更要求として処理するようにしたが、回路構成の動的変更要求を発生させる方法としては、ユーザがグラフィカル・ユーザ・インターフェースを通じた回路構成の変更操作をする場合に限らない。
この第2の例においては、予め、信号処理中に、切り替え変更して使用したい1個または複数個の回路構成をプリセット情報として保持しておくようにする。このプリセット情報の一例を図28に示す。この図28の例は、図27(A)に示した回路構成変更前の回路構成をプリセット1(図28(A))とし、図27(B)に示した回路構成変更後の回路構成をプリセット2(図28(B))とするものである。
このプリセット1およびプリセット2の回路情報は、グラフの回路構成情報格納管理機能部4に予め登録しておくか、あるいは、プリセット回路情報記憶部をグラフ内に設けて、回路構成変更要求があったときに、当該プリセット回路情報記憶部から、指示されたプリセットの回路情報を読み出して、回路構成情報格納管理機能部4に登録するようにしても良い。
また、この場合、プリセット2の回路情報は、図28(B)に示した回路情報のすべてを記憶しておくようにしても良いし、図28(B)において、「追加」として示した差分の部分の回路情報を記憶して、図28(A)の回路構成に追加することにより、変更後の回路構成をするようにしても良い。
以上のようにして、1または複数の回路情報をプリセットしたものの中から、この例では、ユーザの指示操作により指定されたプリセットの回路情報に、グラフの構成が動的変更される。
例えば、図29の例は、フットスイッチ2000が用いられる場合である。このフットスイッチは、ユーザの足による押下操作部2001,2002,2003,2004が設けられている。そして、この例では、各押下操作部2001,2002,2003,2004のそれぞれに、プリセット回路情報が対応付けられる。図29の例では、押下操作部2001には、プリセット1の回路情報が対応付けられ、押下操作部2002には、プリセット2の回路情報が対応付けられる。
そして、信号処理中に、例えばフットスイッチ2000の押下操作部2001が押下操作されると、その操作情報がグラフに送られる。グラフは、押下操作部2001の押下操作を、プリセット1の回路情報への変更要求として判断し、グラフ内に保持しているプリセット1の回路情報を用いて、上述と同様にして、動的回路変更処理をするようにする。
この場合においても、押下操作部2001の押下操作を、プリセット1の回路情報への変更要求として判断し、回路変更処理をするのは、図21を用いて前述した回路構成動的変更処理可能期間においてであることは、前述の実施形態と変わることはない。
図29の例は、プリセットされた回路情報を指定するのに、フットスイッチを用いた例であるが、プリセットされた回路情報の指定を、ユーザの発生音声により行なうようにすることもできる。ユーザの発生音声により行なえるようにしたときには、例えば、演奏者が、演奏をしながら、特定の音声を発生することにより、回路構成を変更することができるというメリットがある。
すなわち、図30は、この場合の回路構成変更要求の仕方を説明するための図である。この例では、予め、プリセット回路情報と、ユーザの発生音声とを対応付けておくようにする。図30の例では、プリセット1の回路情報には、「ah〜(アー)」という発生音声を割り付け、プリセット2の回路情報には、「e〜(エー)」という発生音声を割り付けておくようにする。
そして、マイクロホン3001によりユーザの発生音声を収音し、収音したことにより得られる音声信号を、音声認識回路3002に供給する。音声認識回路3002では、ユーザが「ah〜(アー)」という発生音声を発したか、「e〜(エー)」という発生音声を発したかを認識する。そして、その認識結果を回路構成変更機能部3003に送る。回路構成変更機能部3003は、ユーザが「ah〜(アー)」という発生音声を発したという認識結果を受けたときには、プリセット1の回路情報への変更要求を発生する。また、回路構成変更機能部3003は、ユーザが「e〜(エー)」という発生音声を発したという認識結果を受けたときには、プリセット2の回路情報への変更要求を発生する。
この図30の例の場合には、音声認識回路3002および回路構成変更機能部3003は、グラフ内のプラグインとして構成することができる。
[動的な回路構成の変更処理;第3の例]
上述の第1の例および第2の例は、動的な回路構成の変更要求をユーザ指示を通じて発生するようにした場合であるが、ユーザ指示ではなく、予め、回路構成を動的に変更するタイミングと、変更する回路構成情報とを定めておき、その定めた制御データの通りに動的に回路構成変更するようにすることもできる。
すなわち、これは、いわゆるシーケンサの場合の例で、例えば、図31に示すように、ある曲の音楽データを再生するときに、再生開始時(ST)から第1の変更タイミング時点CHG1までは回路構成Aにより信号処理を行い、第1の変更タイミング時点CHG1から第2の変更タイミング時点CHG2までは回路構成Bにより信号処理を行い、第2の変更タイミング時点CHG2から再生終了時点(ED)までは回路構成Cにより信号処理を行うようにする。
この場合のシーケンス制御データは、再生開始時(ST)では、回路構成Aへの回路構成要求を意味するものとされ、第1の変更タイミング時点CHG1では、回路構成Bへの回路構成要求を意味するものとされ、第2の変更タイミング時点CHG2では、回路構成Cへの回路構成要求を意味するものとされている。
この場合、前述した第2の例と同様に、グラフ内に予め回路構成A、回路構成B、回路構成Cの情報を用意しておき、シーケンス制御データには、単に回路構成A、回路構成B、回路構成Cへの回路構成要求を含めるようにすることもできるし、シーケンス制御データには、回路構成A、回路構成B、回路構成Cの回路構成情報を登録しておき、グラフがシーケンス制御データから、これらの回路構成A、回路構成Bあるいは回路構成Cの回路構成情報を取得して、回路構成変更するようにしてもよい。
グラフは、前述したように、信号処理時間を管理しているので、シーケンス制御データに含まれる変更タイミング時点の情報(開始時点を含む)を監視し、変更タイミング時点になると、当該変更タイミング時点からの後の回路構成に、回路構成を変更するようにする。
この第3の例によれば、シーケンス制御データにより、予め定めた順序で、信号処理回路を順次に動的に変更しながら、信号処理をすることが可能になる。
[動的回路変更に伴い、考慮すべき処理の例]
前述したように、この実施形態では、パケット単位でデータ処理をするようにしているが、このとき、オーバヘッドができるだけ小さくなるように、パケットサイズを定めている。
ここでいうパケットサイズとはFIFOの深さ(段数)の概念とほぼ等価である。一般にパケットサイズを小さくすると、信号処理遅延(レーテンシー)が少なくなるというメリットがあるが、逆に、信号処理のオーバヘッドの占める割合が大きくなり、リアルタイム性が確保できずに、信号処理そのものが間に合わなくなるという欠点がある。複雑な信号処理であればある程、信号処理に要する時間が多く掛かることから、リアルタイム性を確保できなくなる可能性が高くなる。それでもライブ演奏のように遅延が気になるケースでは、信号処理が間に合う範囲で、可能な限りパケットサイズを小さくする必要がある。
しかし、以上のような動的回路変更したときに、変更後の回路構成においては、予め定めたパケットサイズでは、パケットサイズが小さすぎて、処理速度が追いつかなくなる場合が生じる可能性がある。
このような場合には、信号処理として破綻してしまうおそれがある。そこで、この実施形態では、次のような処理を行なうようにする。
図32は、この場合の処理を説明するためのフローチャートである。この図32のフローチャートに示す処理も、グラフが行なうものである。
すなわち、先ず、動的回路構成変更がなされたか否か判別し(ステップS1001)、動的回路構成変更がなされていないと判別したときには、この処理ルーチンをそのまま抜ける。
ステップS1001で、動的回路構成変更がなされたと判別したときには、信号処理速度が追いつかなくなっていないかどうか判別し(ステップS1002)、そうなっていないときにはそのままこの処理ルーチンを抜ける。
また、ステップS1002で、信号処理速度が追いつかなくなっていると判別したときには、パケットサイズを現在のものよりも大きいサイズに変更する(ステップS1003)。
なお、パケットサイズを大きいサイズに変更するのではなく、警告をユーザに報知し、ユーザのパケットサイズの指定の変更を受け付けるようにしても良い。
また、ステップS1003で変更するパケットサイズは、予めユーザが優先順位などを持って登録しておき、その登録されているパケットサイズを優先順位に従って用いるようにしても良い。
[プラグインでのパラメータ設定の他の方法]
前述したように、この実施形態の信号処理装置における信号処理においては、パラメータ属性を持たせることが可能である。ここで、パラメータとは、例えば乗算器の場合には、乗算係数に相当するものである。
通常のミドルウエアでは、このパラメータは、ユーザからのパラメータ設定関数により断続的に設定変更する構造となっている。この実施形態の信号処理装置においても、前述した例では、図33に示すように、従来と同様の構成となっている。すなわち、図6に示したように、プラグイン600はパラメータ保持部604を備えているが、このパラメータ保持部604には、ユーザからのパラメータ設定関数により断続的に設定変更する構造となっている。図33の例は、信号処理部6010がゲインコントロールアンプであり、当該アンプ6010のゲインが、パラメータ保持部604に保持されているパラメータにより、制御されるものである。
この図33の構成の場合には、例えば1サンプル単位で連続的かつ正確にパラメータを変化させることはできない。これは、音声データサンプルの1サンプル時間(約20マイクロ秒)に対して、一般的な0Sでは、リアルタイム性の確保が難しく、関数コールの間隔が、数十ミリ秒と、かなり大きくなってしまうためである。通常のOS上ではリアルタイム性を確保したとしても、数ミリ秒〜数十ミリ秒の精度が限界である。しかも、ソフトウエア的な時間のバラツキがあるため、サンプル精度のマイクロ秒オーダーで、パラメータ変更関数の呼び出しタイミングを制御することはできない。
そこで、この実施形態では、以下に説明するように、パラメータの設定方法を工夫することで、パラメータを1サンプル精度で正確に変化させることができるようにする。すなわち、この例においては、プラグイン内部に保持するパラメータを、ユーザが関数コールで設定するのではなく、プラグインの入力ポートに割り当てて設定するという機能を、グラフに設けることにより、新たなパラメータの設定方法を実現するものである。以下、この新たなパラメータの設定方法を、パラメータバインドと呼ぶ。
図34に、このパラメータバインドの例を示す。すなわち、プラグインに新たな入力ポート1を設定し、当該入力ポート1をパラメータ保持部604の接続する。そして、新たに設定した入力ポート1に音声データ値を割り当てる。
これにより、プラグイン内部のパラメータは、ユーザからの設定関数コールにより更新されるのではなく、入力ポート1に入力される音声データ値により更新される。音声データ値が、そのままパラメータ値となり、サンプル単位で更新される。
この場合、パラメータと音声データは特に区別が無い。この実施形態では、音声データは、全てサンプル精度で同期しているため、パラメータ変更と音声データの同期性を保つことができる。例えば、ユーザは、音声データに同期するパラメータ信号を同時に生成して、所望のプラグインのパラメータ保持部に接続された入力ポートに入力することで、音声データとサンプル精度で同期するパラメータ変更を実現できる。
次に、グラフに対するパラメータバインドの登録手順を図35に示す。すなわち、先ず、パラメータバインドを行なうプラグインに、パラメータバインドのための入力ポートを追加する(ステップS201)。次に、指定したパラメータが保持されるべきパラメータ保持部を、ステップS201で追加した入力ポートに接続する(ステップS202)。
そして、追加した入力ポートに、パラメータとして機能する音声データを入力する(ステップS203)。以上で、パラメータバインドのグラフへの登録を終了する。
次に、登録されているパラメータバインドの解除手順を、図36に示す。先ず、所定のプラグインに追加したパラメータバインドのための入力ポートへのデータ入力を停止する(ステップS211)。そして、データ入力を停止した入力ポートを、指定したパラメータが保持されるべきパラメータ保持部から切り離す(ステップS212)。その後、データ入力を停止した入力ポートを削除する(ステップS213)。以上で、登録されていたパラメータバインドのグラフからの解除処理手順を終了する。
なお、パラメータバインドの登録および解除は、信号処理中であっても、任意のタイミングで行なうことができる。
[リアルタイム分散処理]
以上説明した実施形態の信号処理装置は、通常は、1台のコンピュータにより実現され、信号処理は、当該1台のコンピュータ上で処理される。この処理を、ネットワークを介して接続される複数台のコンピュータに拡張することで、リアルタイムにCPU負荷の分散処理が行なえる。
この分散処理は、一般的なコンピューティング技術である分散オブジェクト技術を利用することで実現可能である。COM/DCOM(Component Object Model/Distributed Component Object Model)、CORBA(Common Object Request Broker Architecture)と言う技術がそれに該当する。
以下、主にWindows(登録商標)系のOSで用いられるCOM/DCOMと言う技術を利用した場合の例を示す。まず、この実施形態のミドルウエアのプラグインのオブジェクトを、全てCOMオブジェクトとして実装する。ここで、COMオブジェクトとはオブジェクト指向におけるコンポーネントモデルであり、位置透過性を特徴とする。位置透過性とは、あたかも、例えばローカルコンピュータ上に、COMオブジェクトを生成するかのごとく、リモートコンピュータ上にCOMオブジェクトを生成できるという機能である。
したがって、位置透過性を用いることにより、ローカルコンピュータ上、リモートコンピュータ上のいずれであるかを問わずに、同じ操作で、オブジェクトの生成が行なえる。これはCOMオブジェクトであるプラグインのオブジェクトを、ネットワークを意識せずとも、複数のコンピュータ上に統一的に生成できるということである。プラグインの生成に限らず、その他の操作もローカルコンピュータ上、リモートコンピュータ上を問わずに、統一した操作性で実現できる。
例えば、ローカルコンピュータ上に、音声入出力プラグインオブジェクトを配置し、リモートコンピュータ上に、エコープラグインオブジェクトを配置して、全体として一つの回路を構成することもできる。
図37に、リアルタイム分散処理される場合のグラフの構成例を示す。この図37の例は、ネットワーク3000を通じてローカルコンピュータ1000とリモートコンピュータ2000とが接続されている状況において、ルートグラフ2500が定義されて、回路が作成される場合である。
この図37を参照して、この例の回路作成の流れを説明する。ユーザは、ローカルコンピュータ1000のみで、回路作成する場合とほぼ同様にして、回路作成を行なう。リモートコンピュータ2000を意識するのは、一部のみである。
(1)ユーザが、グラフ2500のオブジェクトを作成する。このグラフ2500オブジェクトは、ローカルコンピュータ1000に生成される。
(2)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2501オブジェクトの作成を指示する。
(3)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2502オブジェクトの作成を指示する。
(4)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2503オブジェクトの作成を指示する。この場合、プラグイン生成関数に、リモートコンピュータ2000の識別子を付与する。
(5)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2504オブジェクトの作成を指示する。
(6)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2501の出力ポート0とプラグイン2502の入力ポート0の結線を指示する。
(7)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2502の出力ポート0とプラグイン2503の入力ポート0の結線を指示する。
(8)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2503の出力ポート0とプラグイン2504の入力ポート0の結線を指示する。
(9)ユーザが、グラフ2500のオブジェクトに対して、プラグイン2504の出力ポート0とプラグイン2502の入力ポート1の結線を指示する。
以上で回路が完成である。リモートコンピュータを意識する部分は手順(4)のみである。なお、信号処理の実行に関してもローカルコンピュータ1000のみの場合と特に差異は無い。
以上説明した実施形態によれば、以下のような効果が得られる。
すなわち、上記の実施形態によれば、ソフトウエアディジタル信号処理において、信号処理回路を多段に結線しても処理遅延が増加しない回路を作成することができる。また、フィードバック構造を含む任意のデジタル信号処理回路を作成することができる。
また、デジタル信号処理回路の回路構成を動的に変更することができる。この場合に、動的に更新可能な回路要素は、
・プラグインの追加・削除
・プラグイン間の結線状態
・プラグインの入出力ポートの追加・削除
・プラグインのパラメータ変更及びパラメータバインド
・信号処理時のパケットサイズ・サンプリング周波数など、信号処理に関連するパラメータ
である。
また、この実施形態の信号処理装置のミドルウエアを組み込むことにより、回路構成を動的に変更可能な製品を作ることができる。
また、作成した信号処理回路をファイルに保存することにより、後で、信号処理回路を復元することができる。さらに、そのファイルをやり取りすることにより、回路の交換や再利用が容易に行なえる。
また、信号処理回路の中にフィードバックループを含む回路構成を含んでいても、信号処理関数の呼び出し回数を必要最小限に抑えることができる。その結果、リアルタイム信号処理実行に必要なCPU負荷を軽減することができる。
また、回路のパラメータの更新や音声データとの同期性をサンプル精度で制御できる。さらに、音声データを用いてパラメータ値を更新することができる(パラメータバインド機能)。
また、ネットワークを使って、リアルタイムで分散処理を行なうことができる。ネットワーク上に存在する複数の回路をリアルタイムで同期して動作させることができる。
この発明による信号処理装置の実施形態の要部の機能ブロック図である。 この発明による信号処理装置の実施形態を説明するための図である。 この発明による信号処理装置の実施形態を説明するための図である。 この発明による信号処理装置の実施形態を説明するための図である。 この発明による信号処理装置の実施形態を説明するための図である。 この発明による信号処理装置の実施形態のプラグインの構成を説明するための図である。 この発明による信号処理装置の実施形態のグラフの構成を説明するための図である。 この発明による信号処理装置の実施形態における回路構成の一例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成手順の例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成手順の例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成手順の例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成手順の例を説明するための図である。 この発明による信号処理装置の実施形態における経路探索アルゴリズムを説明するためのフローチャートである。 この発明による信号処理装置の実施形態における経路探索アルゴリズムの一部を構成する初期経路探索アルゴリズムを説明するためのフローチャートである。 この発明による信号処理装置の実施形態における経路探索アルゴリズムの一部を構成する初期経路探索アルゴリズムを説明するための図である。 この発明による信号処理装置の実施形態における経路探索アルゴリズムの一部を構成する初期経路探索アルゴリズムの探索結果の例を示す図である。 この発明による信号処理装置の実施形態における経路探索アルゴリズムの一部を構成するループサーチアルゴリズムを説明するためのフローチャートである。 この発明による信号処理装置の実施形態における経路探索アルゴリズムの一部を構成するループサーチアルゴリズムを説明するための図である。 この発明による信号処理装置の実施形態におけるAV同期処理を説明するためのフローチャートである。 この発明による信号処理装置の実施形態における回路構成の動的変更処理を説明するためのフローチャートである。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更例を説明するための図である。 この発明による信号処理装置の実施形態における回路構成変更に伴う処理の例を説明するためのフローチャートである。 この発明による信号処理装置の実施形態におけるパラメータの設定方法の例を示す図である。 この発明による信号処理装置の実施形態におけるパラメータの設定方法の他の例を示す図である。 図34のパラメータの設定方法の他の例を説明するためのフローチャートである。 図34のパラメータの設定方法の他の例を説明するためのフローチャートである。 この発明による信号処理装置の実施形態におけるリアルタイム分散処理を説明するための図である。
符号の説明
1…指示入力受付機能部、2…プラグイン生成削除機能部、3…プラグイン間結線処理機能部、4…回路構成情報格納管理機能部、5…経路探索機能部、6…信号処理順序管理機能部、7…信号処理実行機能部、8…信号処理関数格納部、9…回路構成変更機能部

Claims (7)

  1. 複数の信号処理単位要素からなる信号処理を、予め定められたデータサンプル数の処理データ単位で、ソフトウエア信号処理により行なう信号処理装置であって、
    前記信号処理単位要素をソフトウエア処理によりそれぞれ行なう信号処理モジュールの複数個と、
    前記複数個の信号処理モジュールと、前記複数個の信号処理モジュールの入出力の仮想的な接続状態により表わされる回路構成情報を記憶して管理する回路構成情報格納管理部と、
    経路探索を実行して、前記回路構成情報格納管理部に格納されている回路構成情報を構成する前記複数個の信号処理モジュールのそれぞれの信号処理順序を決定する信号処理順序決定手段と、
    前記信号処理順序決定手段で決定された信号処理順序で、前記信号処理モジュールのそれぞれを逐次的に実行させて前記信号処理を実行する信号処理実行手段と、
    前記信号処理実行手段で前記信号処理を実行中において、回路構成変更要求があるか否かを判別し、前記回路構成変更要求があると判別されたときに、前記処理データ単位での前記ソフトウエア信号処理が終了した後、次の処理データ単位の先頭までの間で、変更後の回路構成情報を前記回路構成情報格納管理部に記憶させると共に、前記信号処理順序決定手段に前記経路探索を再実行させ、変更後の回路構成情報における前記複数個の信号処理モジュールのそれぞれの信号処理順序を決定させるようにする回路構成変更手段と、
    を備え、
    前記回路構成変更手段で変更された回路構成により、前記次の処理データ単位の先頭から、ソフトウエア信号処理がなされるようにする
    ことを特徴とする信号処理装置。
  2. 請求項1に記載の信号処理装置において、
    ユーザからの前記信号処理モジュールの生成または削除指示、および前記ユーザからの前記信号処理モジュールの入出力の接続指示を受け付ける指示入力受付手段と、
    前記指示入力受付手段で受け付けられた前記ユーザからの指示に応じて複数個の前記信号処理モジュールの入出力の仮想的な接続状態を設定する信号処理モジュール間接続手段と、
    を備え、
    前記回路構成変更手段は、前記信号処理実行手段で前記信号処理を実行中において、ユーザからの前記信号処理モジュールの生成または削除指示、および/または前記ユーザからの前記複数個の信号処理モジュールの入出力の接続指示を、前記回路構成変更要求と判別する
    ことを特徴とする信号処理装置。
  3. 請求項1に記載の信号処理装置において、
    前記信号処理実行手段で実行中の回路構成情報とは異なる回路構成情報が、予め用意されており、
    前記回路構成変更手段は、前記信号処理実行手段で前記信号処理を実行中において、ユーザからの回路構成の切替指示があったときに、当該切替指示を前記回路構成変更要求と判別し、前記回路構成情報格納管理部の回路構成情報を、前記異なる回路構成情報に変更すると共に、前記信号処理順序決定手段に前記経路探索を再実行させ、変更後の回路構成情報における前記複数個の信号処理モジュールのそれぞれの信号処理順序を決定させるようにする
    ことを特徴とする信号処理装置。
  4. 請求項3に記載の信号処理装置において、
    前記実行中の回路構成情報とは異なる回路構成情報は、複数個用意されており、前記ユーザからの切替指示には、前記複数個の回路構成情報のうちの、いずれの回路構成情報に切り替えるかの情報を含む
    ことを特徴とする信号処理装置。
  5. 請求項1に記載の信号処理装置において、
    前記回路構成情報の1または複数個を記憶すると共に、前記記憶する回路構成情報のそれぞれを、信号処理のいずれのタイミングで用いるかの指示情報を記憶する記憶部と、
    前記信号処理を実行しながら、前記記憶部に記憶されている前記指示情報を監視し、前記回路構成情報を用いるタイミングになったとき、前記回路構成変更要求を前記用いる回路構成情報を示す情報と共に前記回路構成変更手段に渡す手段と、
    を備え、
    前記回路構成変更手段は、前記回路構成変更要求を判別したときには、前記処理データ単位での前記ソフトウエア信号処理が終了した後、次の処理データ単位の先頭までの間で、変更後の回路構成情報を前記記憶部から得て、前記回路構成情報格納管理部に記憶させると共に、前記信号処理順序決定手段に前記経路探索を再実行させ、変更後の回路構成情報における前記複数個の信号処理モジュールのそれぞれの信号処理順序を決定させるようにする
    ことを特徴とする信号処理装置。
  6. 請求項3または請求項4に記載の信号処理装置において、
    前記ユーザからの切替指示は、ユーザのフットスイッチ操作によるものである
    ことを特徴とする信号処理装置。
  7. 請求項3または請求項4に記載の信号処理装置において、
    前記ユーザからの切替指示は、ユーザの音声によるものである
    ことを特徴とする信号処理装置。
JP2005085348A 2005-03-24 2005-03-24 信号処理装置 Expired - Fee Related JP4622611B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2005085348A JP4622611B2 (ja) 2005-03-24 2005-03-24 信号処理装置
US11/386,007 US8555251B2 (en) 2005-03-24 2006-03-21 Signal processing apparatus with user-configurable circuit configuration
KR1020060025978A KR101260295B1 (ko) 2005-03-24 2006-03-22 신호처리장치
CNB2006100741042A CN100444111C (zh) 2005-03-24 2006-03-23 信号处理装置
EP06251614A EP1705569A3 (en) 2005-03-24 2006-03-24 Signal processing apparatus with reconfigurable signal processing software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005085348A JP4622611B2 (ja) 2005-03-24 2005-03-24 信号処理装置

Publications (2)

Publication Number Publication Date
JP2006268409A true JP2006268409A (ja) 2006-10-05
JP4622611B2 JP4622611B2 (ja) 2011-02-02

Family

ID=36616887

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005085348A Expired - Fee Related JP4622611B2 (ja) 2005-03-24 2005-03-24 信号処理装置

Country Status (5)

Country Link
US (1) US8555251B2 (ja)
EP (1) EP1705569A3 (ja)
JP (1) JP4622611B2 (ja)
KR (1) KR101260295B1 (ja)
CN (1) CN100444111C (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008252654A (ja) * 2007-03-30 2008-10-16 Yamaha Corp ミキシング装置
JP2017502391A (ja) * 2013-12-05 2017-01-19 アビニシオ テクノロジー エルエルシー サブグラフから構成されるデータフローグラフ用のインターフェースの管理
JP2018143622A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018143623A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018143625A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018143624A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018175617A (ja) * 2017-04-19 2018-11-15 株式会社三共 遊技機
JP2019013638A (ja) * 2017-07-10 2019-01-31 株式会社三共 遊技機
JP2019013641A (ja) * 2017-07-10 2019-01-31 株式会社三共 遊技機
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886269B2 (en) 2005-04-29 2011-02-08 Microsoft Corporation XML application framework
US8132148B2 (en) * 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
KR101338980B1 (ko) * 2006-07-12 2014-01-03 삼성전자주식회사 통합 플러그인 기능을 가지는 호스트 장치 및 그의 통합플러그인 생성 방법
JP4903092B2 (ja) 2007-07-05 2012-03-21 株式会社リコー 画像処理装置、画像処理制御方法、及び画像処理制御プログラム
FI120857B (fi) * 2007-12-19 2010-03-31 Teliasonera Ab Päätelaite, tallennusmedia, palvelukeskus ja menetelmä
US8488951B2 (en) * 2009-07-09 2013-07-16 Nvidia Corporation Multimedia framework to provide ultra-low power multimedia playback
JP5391889B2 (ja) * 2009-07-13 2014-01-15 株式会社リコー 画像形成装置、画像処理装置、画像処理システム、画像処理方法、プログラム、及び記録媒体
US9413854B1 (en) * 2013-07-15 2016-08-09 Amazon Technologies, Inc. Network-accessible signal processing service
CN106132861B (zh) 2014-04-09 2019-09-17 三菱电机株式会社 电梯装置
US11327802B2 (en) * 2019-07-31 2022-05-10 Microsoft Technology Licensing, Llc System and method for exporting logical object metadata
CN111324470B (zh) * 2020-01-20 2023-11-07 北京百度网讯科技有限公司 用于生成信息的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09106388A (ja) * 1995-10-11 1997-04-22 Oki Electric Ind Co Ltd 信号処理用並列型計算機
JPH10149281A (ja) * 1996-11-15 1998-06-02 Casio Comput Co Ltd 信号処理装置
JP2002073439A (ja) * 2000-08-31 2002-03-12 Sony Corp 情報処理装置、情報処理方法及びプログラム格納媒体並びに情報処理システム
JP2004348327A (ja) * 2003-05-21 2004-12-09 Oki Electric Ind Co Ltd デジタル信号処理装置及びデジタル信号処理方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4378577A (en) * 1980-08-15 1983-03-29 Dictaphone Corporation Method and apparatus for recording and detecting indicating signals in a recording and/or reproducing device
US4796179A (en) * 1986-08-20 1989-01-03 Integrated Systems, Inc. Multirate real time control system code generator
US5249274A (en) 1990-10-24 1993-09-28 Vanderbilt University Simultaneous data-driven and demand-driven computational model for dynamically configured systems
US5331111A (en) * 1992-10-27 1994-07-19 Korg, Inc. Sound model generator and synthesizer with graphical programming engine
JPH0736858A (ja) * 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
AU5989194A (en) * 1993-09-13 1995-04-03 Taligent, Inc. Object-oriented audio record/playback system
US5793440A (en) * 1994-03-18 1998-08-11 Sony Corporation Key signal processing apparatus for video signal processing
US5883804A (en) * 1995-06-14 1999-03-16 Telex Communications, Inc. Modular digital audio system having individualized functional modules
US5913038A (en) * 1996-12-13 1999-06-15 Microsoft Corporation System and method for processing multimedia data streams using filter graphs
US5999906A (en) * 1997-09-24 1999-12-07 Sony Corporation Sample accurate audio state update
JP4158232B2 (ja) * 1998-07-23 2008-10-01 ソニー株式会社 画像情報変換装置および画像表示装置
US6185535B1 (en) * 1998-10-16 2001-02-06 Telefonaktiebolaget Lm Ericsson (Publ) Voice control of a user interface to service applications
US6937969B1 (en) * 1999-06-10 2005-08-30 Interuniversitair Microelektronica Centrum (Imec) Method for determining signals in mixed signal systems
GB2354105A (en) * 1999-09-08 2001-03-14 Sony Uk Ltd System and method for navigating source content
US6370682B1 (en) * 1999-09-15 2002-04-09 Siemens Atkiengesellschaft System and method for developing reusable flexible and platform independent software using components
US6829290B1 (en) * 1999-09-28 2004-12-07 Texas Instruments Incorporated Wireless communications system with combining of multiple paths selected from correlation to the primary synchronization channel
JP2001256050A (ja) 1999-11-30 2001-09-21 Texas Instr Inc <Ti> グラフィカル開発システム及び方法
US7080386B2 (en) * 2000-01-25 2006-07-18 Texas Instruments Incorporated Architecture with digital signal processor plug-ins for general purpose processor media frameworks
US6983464B1 (en) * 2000-07-31 2006-01-03 Microsoft Corporation Dynamic reconfiguration of multimedia stream processing modules
US20020065568A1 (en) * 2000-11-30 2002-05-30 Silfvast Robert Denton Plug-in modules for digital signal processor functionalities
GB2373975B (en) * 2001-03-30 2005-04-13 Sony Uk Ltd Digital audio signal processing
US7379877B2 (en) * 2001-09-13 2008-05-27 Nokia Corporation Signal processing device and signal processing method
US7742609B2 (en) * 2002-04-08 2010-06-22 Gibson Guitar Corp. Live performance audio mixing system with simplified user interface
DE60324149D1 (de) 2002-07-31 2008-11-27 Thomson Licensing Paketverarbeitungsarchitektur
US20040045009A1 (en) * 2002-08-29 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Observation tool for signal processing components
US20040045007A1 (en) * 2002-08-30 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Object oriented component and framework architecture for signal processing
US7441020B2 (en) * 2003-06-27 2008-10-21 Microsoft Corporation Media plug-in registration and dynamic loading
US7577940B2 (en) * 2004-03-08 2009-08-18 Microsoft Corporation Managing topology changes in media applications
US7609653B2 (en) * 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
JP4296421B2 (ja) 2004-06-09 2009-07-15 ソニー株式会社 信号処理装置
JP4348546B2 (ja) * 2005-01-20 2009-10-21 ソニー株式会社 信号処理装置、信号処理プログラムおよび記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09106388A (ja) * 1995-10-11 1997-04-22 Oki Electric Ind Co Ltd 信号処理用並列型計算機
JPH10149281A (ja) * 1996-11-15 1998-06-02 Casio Comput Co Ltd 信号処理装置
JP2002073439A (ja) * 2000-08-31 2002-03-12 Sony Corp 情報処理装置、情報処理方法及びプログラム格納媒体並びに情報処理システム
JP2004348327A (ja) * 2003-05-21 2004-12-09 Oki Electric Ind Co Ltd デジタル信号処理装置及びデジタル信号処理方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008252654A (ja) * 2007-03-30 2008-10-16 Yamaha Corp ミキシング装置
US10318252B2 (en) 2013-12-05 2019-06-11 Ab Initio Technology Llc Managing interfaces for sub-graphs
JP2017502391A (ja) * 2013-12-05 2017-01-19 アビニシオ テクノロジー エルエルシー サブグラフから構成されるデータフローグラフ用のインターフェースの管理
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
JP2018143623A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018143624A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018143625A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018143622A (ja) * 2017-03-08 2018-09-20 株式会社三共 遊技機
JP2018175617A (ja) * 2017-04-19 2018-11-15 株式会社三共 遊技機
JP2021183188A (ja) * 2017-04-19 2021-12-02 株式会社三共 遊技機
JP7164686B2 (ja) 2017-04-19 2022-11-01 株式会社三共 遊技機
JP2019013638A (ja) * 2017-07-10 2019-01-31 株式会社三共 遊技機
JP2019013641A (ja) * 2017-07-10 2019-01-31 株式会社三共 遊技機

Also Published As

Publication number Publication date
US20060218525A1 (en) 2006-09-28
CN1862490A (zh) 2006-11-15
EP1705569A2 (en) 2006-09-27
CN100444111C (zh) 2008-12-17
EP1705569A3 (en) 2007-10-31
KR101260295B1 (ko) 2013-05-03
JP4622611B2 (ja) 2011-02-02
KR20060103131A (ko) 2006-09-28
US8555251B2 (en) 2013-10-08

Similar Documents

Publication Publication Date Title
JP4622611B2 (ja) 信号処理装置
JP4296421B2 (ja) 信号処理装置
JP4348546B2 (ja) 信号処理装置、信号処理プログラムおよび記録媒体
JP2006260540A (ja) データバインドされたリッチなアプリケーション
Lauwereins et al. Geometric parallelism and cyclo-static data flow in GRAPE-II
Bärenz et al. Rhine: FRP with type-level clocks
Toro et al. An extension of interactive scores for multimedia scenarios with temporal relations for micro and macro controls
US8120610B1 (en) Methods and apparatus for using aliases to display logic
Malloch A framework and tools for mapping of digital musical instruments
Roberts et al. Mobile Controls On-The-Fly: An Abstraction for Distributed NIMEs.
Van Tendeloo et al. Unifying model-and screen sharing
JPH11134307A (ja) プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
JP3930255B2 (ja) システム仕様情報処理装置、システム仕様情報処理方法及びプログラム
Negrão NNdef: livecoding digital musical instruments in SuperCollider using functional reactive programming
Krauweel et al. Simpler coordination of JavaScript web workers
JP5162531B2 (ja) シミュレーション支援方法、シミュレーション支援プログラムを記憶した記憶媒体およびシミュレーション支援装置
CN111124386A (zh) 基于Unity的动画事件处理方法、装置、设备和存储介质
Nair et al. Interactive Exploration of Compact Sequence Diagrams-JIVE based approaches
Peachey et al. FAUSTMapper: Facilitating Complex Mappings for Smart Musical Instruments.
Kleimola et al. Native web audio api plugins
Guan et al. Self-modifiable color Petri nets for modeling user manipulation and network event handling
JP2005258917A (ja) 集積回路の設計支援システムおよび設計支援プログラム
JP2017045335A (ja) プログラム、記録媒体、情報処理装置及び制御方法
JP2990084B2 (ja) 演算装置合成方法
US8635055B1 (en) Composite signal configuration element for modeling environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070823

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090810

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100909

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101005

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101018

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees