以下、図面を用いてこの発明の実施の形態を説明する。
図1は、この発明の一実施形態であるディジタルミキサのエンジンの構成を示す。このエンジン100は、中央処理装置(CPU)101、フラッシュメモリ102、RAM(ランダム・アクセス・メモリ)103、PC入出力インターフェース(I/O)104、MIDI I/O105、その他I/O106、表示器107、操作子108、波形I/O109、信号処理部(DSP群)110、カスケードI/O111、およびシステムバス120を備える。
中央処理装置(CPU)101は、このミキサ全体の動作を制御する処理装置である。フラッシュメモリ102は、CPU101や信号処理部110のDSPなどが使用する各種のプログラムやデータを格納した不揮発性メモリである。RAM103は、CPU101が実行するプログラムのロード領域やワーク領域に使用する揮発性メモリである。PC I/O104は、外部のパーソナルコンピュータ(以下、PCと言う)130を接続するインターフェース(例えば、LAN、USB、シリアルI/Oなど)である。MIDI I/O105は、各種MIDI機器を接続するインターフェースである。その他I/O106は、その他の機器を接続するためのインタフェースである。表示器107は、このミキサの外部パネル上に設けられた各種の情報を表示するためのディスプレイである。操作子108は、外部パネル上に設けられたユーザが操作するための各種の操作子である。波形I/O109は、外部機器との間で音響信号をやり取りするためのインターフェースであり、例えば、アナログの音響信号を入力してディジタル信号に変換して信号処理部110に渡すA/D(アナログ・ディジタル)変換機能、ディジタルの音響信号を入力して信号処理部110に渡すディジタル信号入力機能、および信号処理部110から出力されたディジタルの音響信号をアナログの音響信号に変換してサウンドシステムに出力するD/A(ディジタル・アナログ)変換機能などを実現する。信号処理部110は、幾つかのDSP(ディジタル・シグナル・プロセッサ)などからなる。これらのDSPは、CPU101の指示に基づいて各種のマイクロプログラムを実行することにより、波形I/O109経由で入力した波形信号のミキシング処理、効果付与処理、および音量レベル制御処理などを行ない、処理後の波形信号を波形I/O109経由で出力する。カスケードI/O111は、他のディジタルミキサとカスケード接続するためのインターフェースである。カスケード接続することにより、入出力チャンネル数やDSP処理力を増やすことができる。
本ディジタルミキサのエンジン100では、信号処理部110で実現するミキサ構成をカスタムメイドすることができる。そのミキサ構成は、PC130上で動作する所定のミキサ制御プログラム131によりPC130の画面上で作成・編集することができる。作成したミキサ構成をコンフィグレーション(PC上での実体はCFデータである)と呼ぶ。ミキサ制御プログラム131は、ユーザの画面上での操作指示に応じて、コンフィグレーションをメモリ上にコンフィグ(CF)データ132として生成する。CFデータ132は、PC130から書き込み可能な任意の記憶装置にファイルとして保存できる。また、PC130側のメモリまたは記憶装置上のCFデータは(コンパイル(後述)した後)エンジン100に転送できる。エンジン100は、PC130から転送されたCFデータをフラッシュメモリ102に格納して保存しておくことができる。所定の操作によりフラッシュメモリ102に格納されたCFデータをRAM103上のカレントメモリ(後述する)に読み出し、あるいはPC130から転送されたCFデータを直接カレントメモリに展開し、カレントメモリ上のCFデータに基づいてエンジン100を動作させることにより、当該CFデータで定義されるミキサ構成のミキサが実現する。
なお、PC130によりCFデータを作成・編集するユーザは、エンドユーザに限らず、業者の場合もある。例えば、ある会場にミキサが設置された場合、その会場に業者が出向いて、そのミキサにPC130を接続し、当該PC130からその会場に合わせたミキサ構成のCFデータを作成・編集し、そのCFデータをフラッシュメモリ102に格納する。この場合、ミキサはノンプログラマブル(エンドユーザに対してミキサ構成の作成・編集を許可せず、エンドユーザは業者が作り込んだミキサ構成を呼び出して利用するだけ)でもよい。エンドユーザは、パネル上の操作子108を用いてフラッシュメモリ102に格納されたCFデータを読み出し、そのCFデータで定義されたミキサ構成のミキサとして動作させることができるので、動作時にPC130を接続する必要はない。もちろん、PC130を接続し、そのPC130からの操作でミキサを制御することは可能である(後述する実行モード)。
図2(a)は、ミキサ制御プログラム131によりPC130上でCFデータ132を作成・編集しているときの画面(コンフィグレーション画面と呼ぶ)例を示す。201は入力コンポーネント、202と203は3ウェイクロスオーバ(入力信号を高、中、低の3つの周波数チャンネルに分ける機能)のコンポーネント、204は31バンドのグラフィックイコライザのコンポーネント、205は1チャンネル(ch)のスイッチのコンポーネント、206は出力コンポーネントを示す。コンポーネントとはコンフィグレーションを構成する部品ブロックであり、例えば、ミキサ、コンプレッサ、エフェクト、クロスオーバなどのオーディオプロセッサや、フェーダ、スイッチ、パン、メータなどの個々のパーツのプリセットのコンポーネントが用意されている。ユーザは、所定の操作で、選択可能な複数のコンポーネントから任意にコンポーネントを選択し、画面上に配置することができる。またユーザは、所定の操作により、各コンポーネントの端子間に結線(例えば211,212)を引くことができる。結線を引くことは、コンポーネント間の信号の入出力関係を定義することに相当する。このようにして完成したCFデータ132は、ハードディスクなどに保存することができ、またコンパイル(CFデータをエンジン100が解釈できる情報に変換すること)した後、PC130からPC I/O104を介してエンジン100側に転送することができる。メモリカードなどの着脱可能な記憶媒体によりエンジン100側に読み取らせてもよい。
ミキサ制御プログラム131は、操作モードとして編集モードと実行モードを有する。所定の操作により、編集モードと実行モードとを切り換えることができる。編集モードは、CFデータを作成・編集するモードである。実行モードは、PC130のミキサ制御プログラム131からエンジン100をリアルタイムに制御するモードである。例えば、コンフィグレーション画面上に表示されたミキサ構成中にフェーダを備えたコンポーネントが存在する場合、実行モードでは、そのフェーダをマウスを用いて操作するとその操作はリアルタイムにエンジン100に反映される。実行モードでは、コンポーネントの構成と結線は変更できない。実行モードは、PC130側でカレントメモリに呼び出されているコンフィグレーション(コンフィグレーション画面に表示されている)とエンジン100側でカレントメモリに呼び出されているコンフィグレーションとが一致しているときのみ選択できる。
図2(b)は、コンポーネントのパラメータ設定画面の例を示す。図2(a)のコンフィグレーション画面で任意のコンポーネントをダブルクリックすることにより当該コンポーネントのパラメータ設定画面が開く。パラメータ設定画面により、そのコンポーネントの各種のパラメータ項目の値(数値だけでなくオン/オフなども含む)を設定できる。図2(b)では一例として、HPF(ハイパスフィルタ)のコンポーネントのパラメータ設定画面を図示した。コンポーネントの種類が異なれば、そのコンポーネントで設定可能なパラメータ項目も異なるので、パラメータ設定画面はコンポーネントの種類毎にある。パラメータ設定画面でコンポーネントのパラメータ値を変更すると、実行モードのときは、その変更がリアルタイムにエンジン100に反映され、編集モードのときは、オフライン編集(エンジン100には反映されず、PC130内のデータのみ変更される)となる。各パラメータ項目の現在設定値をカレント値と呼ぶ。新たにコンポーネントを選択してコンフィグレーション画面に配置したときには、そのコンポーネントのカレント値としてデフォルト値が設定されるものとする。
図3(a)は、PC130のミキサ制御プログラム131が使用するプリセットのコンポーネントデータの構成を示す。このコンポーネントデータは、ミキサ制御プログラム131がアクセスできる任意の記憶手段に予め格納されている。コンポーネントデータは、コンポーネントの種類毎のPC(プリセットコンポーネント)データからなる。ここではコンポーネントの種類がNpc個あるものとする。1つのPCデータは、PCヘッダ、PC構成情報、PE構成情報、PP構成情報、PC処理ルーチン、PE処理ルーチン、PP処理ルーチン、および表示・編集処理ルーチンからなる。PCヘッダは、コンポーネントID(C_ID)およびコンポーネントバージョン(C_Ver)などからなる。C_IDとC_Verにより、PCデータを特定することができる。
PC構成情報は、そのコンポーネントがどのようなエレメントから構成されているかを示す情報(エレメントの順番も含む)であり、そのコンポーネントのパラメータ設定画面などの表示データを含む。エレメントは、コンポーネントを構成する部品(例えば、パラメータ設定画面の構成要素)に相当する。PE構成情報は、上記PC構成情報に示されている各エレメント毎のパラメータ項目構成情報(例えば、当該エレメントのパラメータが、単一の値、1次元配列、2次元配列のどのデータ形式であるかなど)である。PP構成情報は、上記PE構成情報に示されている各パラメータ項目の構成情報(例えば、パラメータ値の形式が整数値あるいは浮動小数点など)である。PC処理ルーチンはPC構成情報に関する各種の処理、PE処理ルーチンはPE構成情報に関する各種の処理、PP処理ルーチンはPP構成情報に関する各種の処理を、それぞれ行なうためのプログラムである。ミキサ制御プログラム131がCFデータを処理する際には、コンポーネント毎のPC処理ルーチン、PE処理ルーチン、およびPP処理ルーチンを用いる。表示・編集処理ルーチンは、CFデータを作成・編集する際に用いるプログラム群である。
図3(b)は、PC130において、ミキサ制御プログラム131によって作成され保存されたCFデータの構成を示す。各CFデータ1〜Ncfは、それぞれ、1つのミキサ構成を規定するCFデータである。各CFデータは、それぞれ1ファイルとして任意の記憶装置(例えば、PC内のハードディスクなど)に格納できる。ここでは、CFファイル1、CFファイル2、…と並べて図示したが、各ファイルは、PC130上のファイルシステムで独立してコピーや移動ができる単位である。「CFファイル」というときは、ハードディスクなどに保存されたCFデータを指すものとする。単に、「CFデータ」と言うときは、どのような形態で記憶されているかを問わず、図示した内容のデータからなる1つのミキサ構成を定義するデータを指すものとする。
図3(b)に示すように、1つのCFデータは、CFヘッダ、PC用CADデータ、およびNs個のシーンデータからなる。CFヘッダは、コンフィグID(CF_ID)、コンフィグバージョン(CF_Ver)、およびシステムバージョン(SYS_Ver)などからなる。PC用CADデータは、当該CFデータのミキサ構成がどのようなコンポーネントをどのように結線して構成したものかを定義するデータであり、図2(a)で説明したコンフィグレーション画面を表示するための表示データを含む。PC用CADデータは、使用するコンポーネントを特定するC(コンポーネント)データ、およびそれらのコンポーネント間を結ぶ結線データからなる。この図では、CデータがA〜Dの4つあるので、このCFデータのミキサ構成は4つのコンポーネントから構成されることが分かる。Cデータは、コンポーネントID(C_ID)、コンポーネントバージョン(C_Ver)、ユニークID(U_ID)、およびその他のデータ(例えば、プロパティなど)などからなる。
シーンデータ(図のシーン1、シーン2、…、シーンNsの1つ1つがシーンデータである)について説明する。シーンとは、1つのコンフィグレーションを構成するすべてのコンポーネントのパラメータ(図2(b)で説明したパラメータ設定画面でその値を設定する)の組であり、そのデータ構成は、PC用CADデータの各CデータのC_ID及びC_Verで指定されたPCデータ(図3(a))、および、同Cデータのプロパティに基づいて決められている。シーンデータは、1つのシーンを定義するデータ、すなわち当該コンフィグレーションの各コンポーネントが動作する際に使用する具体的なパラメータ値のデータセットである。PC130側で、現在(PC130内の)カレントメモリ上にあるパラメータ設定画面等の各種画面での編集対象となるシーンデータをカレントシーンと呼ぶ。エンジン100側も同様に、現在(エンジン100内の)カレントメモリ上にある信号処理部100における処理で使用中のシーンデータをカレントシーンと呼ぶ。同じミキサ構成でも、場面に応じてそのミキサ構成におけるパラメータを変更したい場合があるので、1つのCFデータ中に複数シーン分のシーンデータを含めることができるようになっている。シーンはシーン番号nで特定してシーンnと呼ぶものとし、図中のシーン1、シーン2、…、シーンNsのn=1,2,…,Nsがシーン番号である。シーンnへのストア(保存)が指示されたとき、カレントシーンがその指定されたシーンnのシーンデータ記憶領域へ保存され、シーンnからのリコール(呼出)が指示されたとき、シーンnのシーンデータ記憶領域から読み出されたシーンデータがカレントシーンへ呼び出される(書き込まれる)。
シーンデータは、各コンポーネントのパラメータ値を示すコンポーネントシーン(以下、Cシーンと呼ぶ)の並びからなる。この並びの順序は、PC用CADデータ中のCデータの並びと対応している。図では、CデータAで特定されるコンポーネントのパラメータがCシーン3A、CデータBで特定されるコンポーネントのパラメータがCシーン3B、…である。カレントメモリに記憶されているカレントシーンや各シーンのシーンデータは、上述したようなPC用CADデータで規定されるデータ構成を有している。
図4は、図3のシーンデータの詳細な構成を示す。図4のコンポーネントシーンは図3(b)のコンポーネントシーンに対応する。1つのCシーンは、対応する1つのコンポーネントを構成する各エレメントに設定するパラメータの並び(エレメントシーン)からなる。エレメントシーンの並びは、そのコンポーネントのPC構成情報(図3(a))が示すエレメントの並びに対応するものとなっている。例えば図4のエレメントシーンE3B1は、Cシーン3Bのコンポーネントを構成する第1番目のエレメントのパラメータを示す。ここではCシーン3Bのコンポーネントは4つのエレメントからなるので、エレメントシーンも4つある。各エレメントシーンは、単一の値、1次元配列、または2次元配列の何れかのデータ形式を取る。例えば、エレメントシーンE3B1やE3B4は単一のパラメータ値からなるエレメントシーンである。E3B2は、要素数が8の1次元配列からなる。E3B3は、2次元配列のデータ形式を持つエレメントシーンである。
1つのエレメントシーンは、そのデータ形式に応じた幾つかのパラメータ値(パラメータシーン)からなる。同種のコンポーネントであれば、そのコンポーネントのエレメント構成(順序も含める)は常に同じであり、従って、対応するCシーン内のエレメントシーンの並びの順序も同じである。ただし、同種のコンポーネントでも設定されたパラメータに応じてエレメントシーンの1次元配列または2次元配列の要素数は変化するので、エレメントシーンのデータ長が変わることはある。エレメントシーンが1次元配列または2次元配列である場合の要素数は、対応するCデータのプロパティ(図3(b))に格納されている。
図3に戻って、PC130内のデータ構成の説明を続ける。
図3(c)は、PC130のミキサ制御プログラム131により処理される対象のCFデータのRAM上での構成を示す。PC130のRAM上に設けられたカレントメモリには、CFデータの全体(すなわち、CFヘッダとPC用CADデータと複数のシーンデータ)を格納する領域、現在設定中のシーンデータであるカレントシーンを格納する領域、およびエンジン用CADデータ形成バッファが設けられている。カレントメモリ上のPC用CADデータに基づいて、図2(a)のようなコンフィグレーション画面が表示される。コンフィグレーション画面上で行なわれた編集は、カレントメモリ上のPC用CADデータに反映される。カレントシーンは、表示されているコンフィグレーションの各コンポーネントのパラメータ現在値(カレント値)を表す。パラメータ設定画面によりコンポーネントのパラメータに対して行なわれた編集はカレントシーンに反映される。カレントシーンの構成は、図4で説明したのと同様である。エンジン用CADデータ形成バッファは、CFデータをコンパイルしたとき、PC用CADデータからエンジン用CADデータを生成するバッファである。
以上のように、PC130のミキサ制御プログラム131により、図2のような画面上の操作で、図3(a)のコンポーネントデータを使用して、図3(c)のカレントメモリ上にCFデータを作成・編集し、図3(b)のような構成でCFファイルとして保存できる。既に説明したように、PC130側で保存したCFファイルは、コンパイルした後、エンジン100に転送してフラッシュメモリ102に格納できる。エンジン100では、表示器107に表示された画面を見ながらパネル上の操作子108を操作することにより、フラッシュメモリ102に格納されたCFファイルを指定してRAM103内のカレントメモリにロードできる。エンジン100は、カレントメモリ上のCFデータで定義されるミキサ構成のミキサとして動作する。
図5(a)は、エンジン100内のフラッシュメモリ102に格納されるCFデータの一部を示す。フラッシュメモリ102に格納されるCFデータは、図3(b)および図4に示したPC内のCFデータの構成とほとんど同じであるので、図5(a)は異なる部分のみを示した。すなわち、エンジン100側では、図3(b)のPC用CADデータの部分が、図5(a)のエンジン用CADデータに置き換わる。エンジン用CADデータは、コンフィグレーション画面で示されるようなミキサ構成を表すデータである点はPC用CADデータと同じだが、エンジン内では図2(a)の画面におけるコンポーネントや配線の表示位置などのデータは不要であるため、またデータ量を少なくするため、表示データを含まずバイナリ形式で表現されている。エンジン用CADデータは、コンパイルにより図3(c)のエンジン用CADデータ形成バッファ上に生成されたものである。PC130側では、図3(b)の形式でCFファイルを任意の記憶装置に保存しているが、コンパイル後は、図5(a)の形式でやはり任意の記憶装置に保存できる。その図5(a)の形式のCFファイルをPC130からエンジン100に転送してフラッシュメモリ102に格納する。なお、フラッシュメモリ102上には、所定のファイルシステム(PC上のファイルシステムに準拠するものである必要はない)が構築されており、CFデータはCFファイルの形で複数格納されている。
図5(b)は、エンジン100上のCFデータのRAM103上での構成を示す。RAM103上のカレントメモリには、CFデータのうち、CFヘッダとエンジン用CADデータを格納する領域、現在設定されているシーンデータであるカレントシーンを格納する領域、およびマイクロプログラム形成バッファが設けられている。カレントメモリにエンジン用CADデータが読み込まれたときには、自動的に、当該CADデータのミキサ構成を実現するマイクロプログラムがマイクロプログラム形成バッファ上に展開され、そのマイクロプログラムが信号処理部110に転送される。これにより、信号処理部110のDSP群はカレントメモリ上のCADデータのミキサ構成の動作を実現する。ここで、フラッシュメモリからの読み出しはPCの記憶装置(ハードディスクなど)からに比べて高速なので、複数のシーンデータについてはカレントメモリに読み込まなくてもシーンリコールの速度は遅くならない。また、エンジン用CADデータについても必ずしもカレントメモリに読み込まなくても良く、フラッシュメモリ上のデータを直接利用しても良い。
カレントシーンは、カレントメモリに展開されているエンジン用CADデータのミキサ構成の各コンポーネントのパラメータのカレント値である。カレントメモリにカレントシーンが読み込まれたとき、あるいはそのカレントシーンが変更されたときには、自動的に、当該カレントシーンが信号処理部110に転送される。信号処理部110は、転送されたカレントシーンをDSP群の係数メモリに展開する。信号処理部110のDSP群は当該係数メモリの係数を使用して上記転送されたマイクロプログラムを実行し、これにより信号処理部110は、カレントメモリ上のCADデータのミキサ構成で、かつカレントシーンのパラメータ値での動作を実現する。エンジン100上のカレントシーンの構成は、図4で説明したのと同様である。
図5(c)は、フラッシュメモリ102に予め格納されているプリセットのコンポーネントデータの構成の一部を示す。このコンポーネントデータは、図3(a)に示したPC内でのコンポーネントデータの構成とほとんど同じであるので、図5(c)は異なる部分のみを示した。すなわち、エンジン100側では、図3(a)の表示・編集処理ルーチンの部分が、図5(c)のPCマイクロプログラムに置き換わる。エンジン100では、図2(a)、(b)に示されるコンフィグレーション画面における各コンポーネントの表示や複数操作子を有するパラメータ設定画面の表示はできないので、その表示・編集のための表示・編集ルーチンは不要である。その代わり、エンジン100では、エンジン用CADデータのミキサ構成に応じたマイクロプログラム(マイクロプログラム形成バッファ上に生成)を形成してDSP群に送る必要があるため、図5(c)のような各コンポーネント対応のPCマイクロプログラムが必要である。また図示しないが、PC処理ルーチン、PE処理ルーチン、およびPP処理ルーチンは、エンジン中で各構成情報を処理するための各種のプログラムであるものとする。なお、各コンポーネントの入出力数はパラメータの設定によって変化するが、コンポーネントデータ中のPCマイクロプログラムにはそれらの入出力数のバリエーションが全て格納されているものとする。
本実施形態のディジタルミキサのシステムの特徴は、異なるミキサ構成間でシーンを相互利用可能としたことにある。具体的には、所定の条件下で、異なるCFデータ間でシーンデータをやり取りすることができる。図3および図5から、シーンデータが存在する場所としては、(a)PC130の記憶手段に格納された複数のCFファイルの中の複数のシーンデータ、(b)PC130のカレントメモリのカレントシーンおよび複数のシーンデータ、(c)エンジン100のフラッシュメモリ102に格納された複数のCFファイルの中の複数のシーンデータ、(d)エンジン100のカレントメモリのカレントシーン、の4つあるから、原理的にはシーンデータのやり取りは(a)〜(d)のうちの任意の2つ(同じもの同士を含む)の間で行なわれることになる。ただし、PC130の記憶装置に格納されたCFファイルや、エンジン100のフラッシュメモリに格納されたCFファイルは、そのままではデータのやり取りを行うのに時間がかかるので、データのやり取りを行うのに先立って、やり取りを行うCFファイルをPC130ないしエンジン100のRAM上のコピー用メモリにCFデータとして読み出し、そのRAM上のCFデータによってデータのやり取りを行い、やり取りが終了したら再び元の記憶装置ないしフラッシュメモリに書き戻す。本実施形態では、それをCFファイルのデータのやり取りと表現する。さらに、図1のPCとエンジンの組み合わせが2組ある場合を想定すると、一方のPCまたはエンジンの支配下にあるCFデータのシーンデータを、他方のPCまたはエンジンに移すケースもある。このようなシーンデータをやり取りするどのような場面でも、上述の本実施形態の特徴が有効である。
従来のミキサでは、現在開かれているCFファイルに含まれるシーンデータをカレントメモリにリコールしたり、逆にカレントメモリ上のカレントシーンを現在開かれているCFファイルにストアすることは可能であった。本実施形態では、現在開いているCFファイルではない別のCFファイルとカレントメモリとの間でシーンデータのリコールやストアが可能である。これは従来のミキサのシステムでは不可能であった。その理由は以下のとおりである。すなわち、CFファイルが異なるということは、基本的には、それぞれで定義しているミキサ構成が異なるということである。ミキサ構成が異なると、それぞれのCFファイル中のシーンデータの互換性はない。ミキサ構成が異なるということは、基本的にはそれぞれのCFファイル中のコンポーネントの構成が異なるということであり、コンポーネントの構成が異なれば各コンポーネント対応のコンポーネントシーンの構成も異なるので、一般的には互換性がない。
本実施形態におけるシーンデータのやり取りは、上述したようにシーンデータの存在場所に応じて種々のケースで行なわれるが、典型的には以下のようなケースがある。
(1)PC130ないしエンジン100において、1つのCFファイル中の1つのシーンのシーンデータを指定して、カレントシーンに、その指定されたシーンデータを読み込むとき。シーンのリコールは、このような別のCFファイルからカレントシーンへのシーンデータの読み込みを含むものとする。
(2)PC130ないしエンジン100において、1つのCFファイル中の1つのシーンのシーンデータを指定して、カレントシーンを、その指定されたCFファイルのシーンデータの記憶領域に書き込むとき。シーンのストアは、このようなカレントシーンの別のCFファイルへの書き込みを含むものとする。
(3)PC130ないしエンジン100において、読み出し元の1つのCFファイルないしCFデータの1(ないし複数)のシーンと書き込み先の1つのCFファイルないしCFデータの1(ないし複数)のシーンとを指定して、読み出し元として指定されたシーンデータの記憶領域から書き込み先として指定されたのシーンデータの記憶領域へシーンデータのコピーを行うとき。ここで、読み出し元のCFファイルないしCFデータと書き込み先のCFファイルないしCFデータは同じであってもよい。
(4)PC130上で2つのミキサ制御プロセスを動作させ、それぞれのコンフィグレーション画面が表示されている場合(それぞれ独立にカレントメモリが割り当てられている)に、2つのカレントメモリのカレントシーン(ないしシーンデータ)間でシーンデータのコピーを行なうとき。
また、本実施形態におけるコンポーネントデータのやり取りも、シーンデータの存在場所に応じて種々のケースで行われるが、典型的には以下のケースがある。
(1)1つのCFファイル中の1つのシーンデータの1つのコンポーネントシーンと、カレントシーンの1つのコンポーネントシーンとを指定して、指定されたCFファイル中のコンポーネントシーンを、指定されたカレントシーンのコンポーネントシーンに読み込むとき。
(2)カレントシーンの1つのコンポーネントシーンと、1つのCFファイルの1つのシーンデータの1つのコンポーネントシーンを指定して、指定されたカレントシーンのコンポーネントシーンを、指定されたCFファイル中のコンポーネントシーンに書き出すとき。
(3)読み出し元の1つのCFファイルないしCFデータの1つのシーンの1つのコンポーネントシーンと、書き込み先の1つのCFファイルないしCFデータの1つのシーンの1つのコンポーネントシーンとを指定し、読み出し元として指定されたコンポーネントシーンの記憶領域から書き込み先として指定されたコンポーネントシーンの記憶領域へコンポーネントシーンのコピーを行うとき。
このシーンデータないしコンポーネントデータのやり取りは、ユーザの選択したCADデータを読み込んでミキサ構成を変更する、ということのできない一般のディジタルミキサにも適用することができる。その場合、当該ディジタルミキサは、その固有のミキサ構成に対応した1つのCF_IDとCF_Verを有する。
この一般のディジタルミキサに本発明を適用した場合、次のようなシーンデータやコンポーネントシーンのやり取りを行うことができる。
(1)1つのCFファイル中の1つのシーンデータを指定して、指定したシーンデータを当該ディジタルミキサのカレントシーンに読み込む。
(2)1つのCFファイル中の1つ(ないし複数)のシーンデータと、当該ディジタルミキサの1つ(ないし複数)のシーンデータを指定して、指定されたCFファイルのシーンデータを、指定された当該ディジタルミキサのシーンデータの記憶領域に読み込む。
(3)1つのCFファイル中の1つのシーンデータの1つのコンポーネントシーンと、当該ミキサの固有のカレントシーンの1つのコンポーネントシーンを指定して、指定したCFファイル中のコンポーネントシーンを、カレントシーンのコンポーネントシーンに読み込む。
当該ディジタルミキサは、記憶している複数のシーンデータをシーンファイルとして外部記憶媒体に書き出すことができる。その際、そのシーンファイルには当該ディジタルミキサのCF_IDおよびCF_Verが付与される。他のディジタルミキサで保存されたシーンファイルにも同様にCF_IDおよびCF_Verが付与されていれば、当該ディジタルミキサは、(1)〜(3)のCFファイルからの読み込みと同様の処理により、該他のディジタルミキサのシーンファイルからシーンデータないしコンポーネントシーンを読み込むことができる。
なお、リコール、ストア、およびコピーという言葉は一般的にはデータの内容の変更を伴わずにデータをやり取りするものであるが、本実施形態においてシーンデータのリコール、ストア、およびコピーというときは、一般的には当該シーンデータの内容が変更されるものである。シーンデータはCFデータのミキサ構成に付随するデータであるので、シーンデータの読み出し元のミキサ構成と書き込み先のミキサ構成が異なる場合、シーンデータの構造も異なることになるからである。
本実施形態における、異なるCFデータ間でシーンデータをリコール、ストア、およびコピーできるという特徴について、さらに詳しく説明する。シーンデータのリコール、ストア、およびコピーの際には、読み出し元のシーンデータを特定する情報とそのシーンデータの書き込み先を特定する情報とを指定する必要がある。本実施形態では、図3や図5に示したCF_IDとCF_VerでCFデータを特定し、(C_IDと)U_IDでCデータを特定し、シーン番号でシーンを特定し、これにより異なるミキサ構成間であっても所定の条件を満たす場合にはシーンデータのリコール、ストア、およびコピーが可能となるようにしている。
CF_ID(コンフィグID)は、CFデータを特定するIDである(ファイル形態かカレントメモリ上かを問わない)。CF_Ver(コンフィグバージョン)は、初期値が例えば1.00で、その後CFデータを編集したときにカウントアップされていくバージョンを示す。任意のCFファイルをカレントメモリ上に開いて編集した後、保存(別ファイル名または上書き保存のどちらでもよい)すると、CF_IDは同じでCF_VerがカウントアップされたCFヘッダが付く。PC130上でCFデータを新規作成した場合、当該新規作成したCFデータには当該機種ないし他の機種で過去に作成されたCF_IDとは重複しない新たなCF_IDおよび初期値のCF_Verが付けられる。PC130では、次に付ける最新のCF_IDの値を管理しているものとする。なお、C_IDやCF_IDは、それらのデータを作成したPCなどの機器のIDを含ませることにより、偶然に一致したCC_IDやCF_IDが付与されることを防止する。また、業者が作成・編集するCFデータに付けるCF_IDと、エンドユーザが作成・編集するCFデータに付けるCF_IDとで、重ならないように範囲を分けるものとし、業者の管理下にあるCFデータの範囲内、あるいは各エンドユーザの管理下にあるCFデータの範囲内では、それぞれ上記の方式でCF_IDとCF_Verを付けていくものとする。以上のようにIDとバージョンを付けることにより、同じCF_IDを持つ別々のCFデータは、そのCFデータに至る編集の経過をさかのぼれば同じCF_IDでCF_Verが初期値のCFデータに行き着くはずである。同じCF_IDを持つCFデータは、同じ「系列」に属すると言うものとする。
C_ID(コンポーネントID)は、図3(a)で説明した各PCデータを特定するIDである。C_Ver(コンポーネントバージョン)は、そのPCデータのバージョンを示す。CFデータ中のCADデータの各Cデータでは、このC_IDとC_Verで各コンポーネントを特定している。
U_ID(ユニークID)は、CFデータのミキサ構成を順次編集していく際に、その系列内においてCデータを特定するためのIDである。例えば、初めにCFデータを新規作成する場合、Cデータを新規追加(コンポーネント追加)する毎に新たなU_IDの値が各Cデータに付けられる。Cデータを削除したときは、そのCデータのU_IDの値は空きとなり、当該CFデータの系列内ではU_IDとして使われることはない。空きのU_IDの値があったとしても、それ以後新規に追加されるCデータに対しては新たなU_IDの値が付けられる。これにより、CFデータが編集されていきCデータの追加や削除がなされ、その編集の途中の任意の段階でCFデータが保存されたとしても、その系列内において、U_IDの値が一致するCデータは同じCデータであると判別できる。なお、ここで「同じCデータ」というのは「全く同じデータ」を意味しない。U_IDの値が一致したとしても、別々のCFデータ内の2つのCデータということであるから、各CFデータ内でそれぞれパラメータ編集されれば、データとしては異なることがある。ただし、同じ種類のCデータであって、対応するCシーンの構造が同じ(エレメントシーンの配列要素数を除く)であることは保証される。
本発明では、各コンポーネントシーンに対してそのデータ互換性を示すC_IDが付与されており、そのC_IDによってコンポーネントシーン間のデータ互換性がチェックされる。すなわち、C_IDが同じであるということは、そのコンポーネントシーン間にデータ互換性があるということを意味する。
また、本発明では、各シーン(カレントシーンを含む)に対してそのデータ互換性を示すCF_IDが付与されており、そのCF_IDによってシーン間のデータ互換性がチェックされる。すなわち、CF_IDが同じであるということは、そのシーン間にはデータ互換性があるということを意味する。
図6は、CFデータを編集していくときのIDやバージョンの付け方およびシーンデータの構成の例を示す図である。601はコンフィグレーション画面で初めに新規作成したCADデータを示す。新規作成なので、新たなCF_ID=XXが付けられ、CF_Ver=1.00(初期値)になっている。このCADデータは、イコライザEQ611およびダイナミックスDYN612の2つのコンポーネントから成る。各コンポーネントを示すブロック内に記載された括弧内の3つの数値は、先頭からC_ID、C_Ver、およびU_IDを示す。EQ611はU_ID=1、DYN612はU_ID=2である。
602は、CFデータ601を元にして新たなコンポーネントであるクロスオーバーX_OVER623を追加し、結線し、その後、別名で保存したものである。CFデータ602の保存時には、CFデータ601と同じCF_ID=XXが付けられ、バージョンはカウントアップされてCF_Ver=1.01になっている。追加されたX_OVER623はU_ID=3となる。ここまでで本系列内ではU_ID=2まで使用しているからである。603は、CFデータ602を元にしてEQ621を削除し、その後、別名で保存したものである。CFデータ603の保存時には、CFデータ601,602と同じCF_ID=XXが付けられ、バージョンはカウントアップされてCF_Ver=1.02になっている。もしCFデータ603の状態からコンポーネントを追加するとU_ID=4となる。ここまでで本系列内ではU_ID=3まで使用しているからである。削除されたU_ID=1は空きとなるが、以後のこの系列のCFデータの編集においてU_ID=1が使われることはない。
641は、CFデータ601に対して作成された1つのシーンデータ(既に特定のシーン番号で保存されているものとする)を示す。CFデータ601の2つのコンポーネントの並びに応じて、EQ611に対応するCシーン651とDYN612に対応するCシーン652が並べられている。
642は、CFデータ602のシーンデータを示す。シーンデータ642の編集において、CFデータ601のシーンデータ641を指定してリコールを指示したとき、シーンデータ641のCシーン651,652が、それぞれ、シーンデータ642のCシーン661,662にコピーされる。このリコールは、CFデータ601とCFデータ602との間であるので、異コンフィグ間リコールである。異コンフィグ間リコールの場合、一般的にはミキサ構成が異なるので、その相違に基づきシーンデータの構造も異なることになる。従って、例えばCシーン651を読み出してきても、そのCシーンを、シーンデータ642のどこに書き込めばよいかは一般的には分からない。しかし、本実施形態のミキサのシステムでは、CADデータが編集され別名で保存されてもCF_IDは同じものが付され、また同じ系列内のCFデータであればU_IDにより各コンポーネントの対応が取れる。従って、リコール元とリコール先のCFデータのCF_IDが一致していることを確認した後、例えばシーンデータ641から読み出してきたCシーン651については、当該Cシーン651に対応するコンポーネントであるEQ611のU_IDが1であることを求め、CFデータ602からU_IDが1であるコンポーネントがEQ621であることを求め、当該EQ621に対応するCシーンの格納位置が661であることを求め、その位置661にCシーン651をコピーする。シーンデータ641をシーンデータ642にリコールしたとき、シーンデータ642のCシーン663については、リコール元に対応するCシーンが無いのでそのままとする。
CFデータ603のシーンデータ643の編集において、CFデータ602のシーンデータ642を指定してリコールを指示したときも上記と同様である。シーンデータ642のCシーン662,663が、それぞれ、シーンデータ643のCシーン672,673にコピーされる。リコールの処理シーケンスは、シーンデータ642のCシーン661についてもコピーしようとするが、このCシーンに対応するコンポーネントのU_IDは1であり、一方リコール先のCFデータ603にはU_ID=1のコンポーネントは無いので、Cシーン661はコピーされない。以上のようにして、異コンフィグ間リコールが実現される。
図7は、エレメントシーンの書き込み処理の例を示す。図6で説明したように、本実施形態のミキサのシステムでは、異CFデータ間でも、CF_IDが一致する場合にはU_IDによりCシーンの対応がとれる。同じU_IDのコンポーネントは同じC_IDが付与されているので基本的には相互にパラメータの互換性があるのであるが、その2つのコンポーネントでC_Verが異なっていたり、端子数等のコンポーネント規模を示すプロパティ情報が異なっている場合がある。そのため、例えば図6のCFデータ601のCシーン651をCFデータ602のCシーン661にコピーする場合、その2つのCシーン651とCシーン661では、その構造、すなわちエレメントシーンの並びの順序と形式(単一値か一次元配列か二次元配列か)については一致するが、その一部のエレメントシーンについて、何れかの一方にだけ存在していたり、配列要素数が異なっている可能性がある。Cシーンの各エレメントの有無は各コンポーネントのPC構成情報により制御され、Cシーンの各エレメントの要素数はCADデータの対応するCデータのプロパティ情報により制御される。要素数が変更されている場合、パラメータシーンの書き込みのルールを決めておく必要がある。
図7(a)は、エレメントシーンが単一の値から成る場合である。701は書き込むデータEx、702は書き込み先のデータEoを示す。エレメントシーンの書き込み処理により、703に示すように、書き込み先のデータがExに書き替わる。
図7(b)は、エレメントシーンのデータ形式が一次元配列の場合である。711は書き込むエレメントシーンのデータを示す。このデータの要素数は4である。書き込み先のエレメントシーン712の要素数が6のとき、書き込み処理により、713に示すように書き込み先のエレメントシーンの先頭から4番目の要素までが書き込むデータE[1]xからE[4]xに書き替わる。元からあるE[5]oとE[6]oは変化しない。一方、書き込み先のエレメントシーン714の要素数が2のときは、715に示すように2つの要素が書き替わり、E[3]xとE[4]xは無視される。
図7(c)は、エレメントシーンのデータ形式が二次元配列の場合である。書き込むエレメントシーンのデータ721は、行要素数が4、列要素数が3の形式である。書き込み先のエレメントシーン722は、行要素数が6、列要素数が2である。書き込み処理により、723に示すように、重なる部分のみが書き替えられ、その他は無視される。
以上のように、エレメントシーンが配列であるときは、書き込み元と書き込み先とで、要素の添字が一致する要素は書き替え、書き込み元のみに存在する添字の要素は無視し、書き込み先のみに存在する添字の要素はそのままとされる。
図8(a)は、CFファイルの複数のシーンデータの何れかからカレントシーンへのシーンリコール処理の流れを示す。上述したシーンデータのやり取りを行なう典型的なケースのうち(1)の場合であり、CFファイルからカレントメモリへシーンデータをコピーする場合の処理も基本的には同じである。なお、現在開いているCFファイルからシーンデータをリコールする処理も、この流れで処理可能であり、別のルーチンを用意する必要はない。
ステップ801でリコールするシーンデータを含むCFファイルを特定し、ステップ802でそのCFファイル内のリコールするシーンデータのシーン番号SNを特定する。これらの特定の方法は任意である。例えば、ユーザによる他CFファイルのシーンデータのリコールの指示に応じて、シーンデータを特定するためのウインドウを表示し、指定されたフォルダ内にあるCFファイルを選択肢として表示し、その中からCFファイルを選択させ、さらに当該CFファイル内のシーンデータのシーン番号を指定させるようにすればよい。この際、上記指定されたフォルダ内にある全てのCFファイルについてCF_IDを読み出し、当該CF_IDがカレントメモリ上のCFデータのCF_IDと一致するCFファイルのみを選択肢として表示する。これにより、リコールするシーンデータは常にCF_IDが一致するCFデータから指定されることとなる。
次に、ステップ803でカレントメモリをプロテクトし、他のプロセスから書き替えることができないようにする。ステップ804で、リコールするシーンデータを含むCFファイルのCADデータを読み出し、その最初のU_ID(昇順に見て一番若い番号)を準備する。ステップ805で、当該U_IDと一致するU_IDのコンポーネントがカレントメモリ上のCADデータ中に存在し、かつ、CFファイルのCADデータ中の当該U_IDに対応するコンポーネントのC_IDとカレントメモリのCADデータ中のU_IDが一致するコンポーネントのC_IDとが一致するか否かを判定する。存在しない又は存在してもC_IDが一致しない場合は、そのU_IDのコンポーネントのCシーンはリコールする必要がないから、ステップ810に進む。ステップ805で、当該U_IDのコンポーネントがカレントメモリ上にあり、かつ、C_IDが一致すると判定された場合は、そのU_IDのコンポーネントのCシーンをリコールするステップ806〜809の処理を行なう。
ステップ806〜809の処理は、図7で説明したエレメントシーンの書き込み処理である。まずステップ806で当該Cシーンの最初のエレメントを準備し、ステップ807でそのエレメントシーンのリコール処理(図7)を行なう。ステップ808で次のエレメントシーンを準備し、エレメントがあれば、ステップ809から807に戻って処理を続ける。処理するエレメントがなければ、ステップ810に進む。ステップ810では、次のU_IDを準備し、それがあればステップ805に戻って処理を続ける。リコール元のCFデータ中の全てのU_IDについて処理し終えたら、ステップ811から812に進み、カレントメモリのプロテクトを解除する。ステップ813で、リコールできなかったコンポーネントおよびエレメントを表示し、処理を終了する。
図8(b)は、カレントシーンをCFファイルの複数のシーンデータの何れかへストアするシーンストア処理の流れを示す。上述したシーンデータのやり取りを行なう典型的なケースのうち(2)の場合であり、カレントメモリからCFファイルへシーンデータをコピーする場合の処理も基本的には同じである。なお、カレントシーンを、現在開いているCFファイルへシーンデータをストアする処理も、この流れで処理可能であり、別のルーチンを用意する必要はない。
ステップ821,822でストア先のCF_IDとシーン番号SNを特定する。これはステップ801,802と同様に行なえばよい。カレントメモリ上のCFデータのCF_IDと一致するCFファイルのみを選択肢として表示し、ストア先として指定されるCFファイルがカレントシーンと同じCF_IDであるようにする。ステップ823〜833は、リコールのステップ803〜813と同様の処理である。リコールでは指定したCFファイルのシーンデータをカレントメモリにコピーするが、ストアではカレントシーンから、指定したCFファイルのシーンデータにコピーする。ステップ833では、ストアできなかったコンポーネントとエレメントを表示する。
図8(a)と(b)はカレントシーンのリコール処理及びストア処理であったので、1シーン分のシーンデータをコピーするようになっていたが、同様な手順で、上述したシーンデータのやり取りを行う典型的なケースの(1)ないし(3)でCFデータないしCFファイル間で複数シーン分のシーンデータを一括コピーする場合の処理を行なうことができる。
また、図8に示した処理では、予めCF_IDが一致するCFデータを選択肢として表示しその中からシーンデータのリコール元やストア先を指定させることにより、シーンデータをやり取りする元と先のCFデータのCF_IDが一致することを保証するようにしたが、任意のCFデータを選択肢として指定させ、各処理の初めの部分でCF_IDの一致をチェックするようにしてもよい。CF_IDが不一致の場合は、互換性がないものとしてエラーとする。
図9(a)は、2つのCFファイル間でコンポーネントシーン(Cシーン)をコピーするCシーンコピー処理の流れを示す。上述したコンポーネントシーンのやり取りを行なう典型的なケースのうちの(3)の場合であり、CFファイルとカレントメモリの間でCシーンをコピーする場合の処理も基本的には同じである。なお、同一のCFファイル内の異なるコンポーネント間でCシーンをコピーする場合や、同一のCFファイル内の同一のコンポーネントについて、異なるシーンデータ間でCシーンをコピーする場合の処理も、この流れで処理可能であり、別のルーチンを用意する必要はない。さらに、図8(a)のステップ807のエレメントシーンリコール処理、図8(b)のステップ827のエレメントシーンストア処理も同様の処理であり、同じルーチンで処理することができる。
ステップ901では、ユーザがコピー元として指定したコンポーネントシーンを示すCF_ID、CF_Ver、シーン番号SN、およびU_IDと、ユーザがコピー先として指定したコンポーネントシーンを示すCF_ID、 CF_Ver、シーン番号SN、およびU_IDを取り込む(コピー元や先がカレントシーンのときはSNは不要)。ここで、CF_ID、CF_Ver、SN、U_IDの組により、1つのCFファイルの1つのシーンデータの1つのコンポーネントシーンが特定される。これらの指定の方法は任意である。例えば、ユーザによるコンポーネントシーンのコピー指示に応じて、コピー元のコンポーネントシーンを特定するためのウインドウを表示し、そのウインドウでコピー元のCFファイル、シーン番号、コンポーネントを指定させ、さらに、コピー先のコンポーネントシーンを特定するためのウインドウを表示し、コピー先のCFファイル、シーン番号、コンポーネントを指定させる。ステップ902で、コピー元として指定されたコンポーネントシーンのコンポーネントのC_IDとコピー先として指定されたコンポーネントシーンのコンポーネントのC_IDとを比較し、一致しているときは、ステップ904〜907でエレメントシーンのコピーを行なう。ステップ904〜907の処理は、図8(a)のステップ806〜809や図8(b)のステップ826〜829と同様の処理である。図8(a)のリコールや図8(b)のストアではCFファイルとカレントメモリとの間でシーンデータをやり取りしているが、図9(a)のコピーでは、コピー元のCF_IDとCF_Verで特定されるCFデータのシーン番号SNのシーンデータのU_IDで特定されるコンポーネントシーンを、コピー先の CF_IDとCF_Verで特定されるCFデータのシーン番号SNのシーンデータのU_IDで特定されるコンポーネントシーンの位置にコピーしている。ステップ902でC_IDが不一致のときは、ステップ903でコピー元とコピー先のコンポーネントシーン間でデータに互換性がないことを示すエラー表示を行なって処理を終了する。なお、コピー先のコンポーネントシーンを特定するためのウインドウでは、コピー先として選択されたCFファイルのコンポーネントのうちの、コピー元として既に指定されているコンポーネントのC_IDと同じC_IDを有するコンポーネントだけを表示するようにしてもよい。その場合、C_IDが同じであることが確認できているので、ステップ902の処理を省略することができる。
図9(b)は、エレメントシーンの書込処理の流れを示す。この処理は、図7で説明した処理であり、ステップ807,827,905で実行される処理である。ステップ921で、書込元と書込先のエレメントシーンについて、パラメータ構成PS、配列タイプST、書込元のサイズ、および書込先のサイズを取り込む。ここで、パラメータ構成PSおよび配列タイプは、書込元ないし書込先のエレメントの属するコンポーネントのPE構成情報に含まれており、当該コンポーネントのPCデータを参照することにより取得される。また、書込元のサイズXX、XYおよび書込先のサイズOX、OYは、その配列タイプが一次元ないし二次元であった場合に、その配列数を示すデータであり、CADデータ中の当該コンポーネントのCデータのプロパティ情報に含まれている。ステップ922で、配列タイプSTを判定する。単一のパラメータ値であるときは(図7(a))、ステップ923で、その単一のパラメータ値のコピーを行なう。これはパラメータ構成PSの示すデータ構成のパラメータの組を書込元のエレメントシーンから書込先のエレメントシーンへコピーする処理である。配列タイプSTが一次元の配列であるときは(図7(b))、ステップ924で、一次元配列のコピーを行なう。これは、XXが示す書込元の要素数とOXが示す書込先の要素数に基づいて図7(b)に関して説明したような態様で、書込元のエレメントシーンから書込先のエレメントシーンへパラメータ構成PSの示すデータ構造のパラメータの組をコピーする処理である。配列タイプSTが二次元配列であるときは(図7(c))、ステップ925で、二次元配列のコピーを行なう。これは、XX、XYが示す書込元の行要素数、列要素数とOXとOYが示す書込先の行要素数、列要素数に基づいて図7(c)に関して説明したような態様で、書込元のエレメントシーンから書込先のエレメントシーンへパラメータ構成PSの示すデータ構造のパラメータの組をコピーする処理である。
なお上記実施形態は、プログラマブルまたはノンプログラマブルの何れのミキサエンジンにも適用することもできる。また、例えば、入力ch数や出力ch数、ミキシングバス数などが異なる上位のディジタルミキサと下位のディジタルミキサに同じコンフィグIDを持たせておけば、その2つのディジタルミキサ間で互いにシーンを相互利用できる。さらに、ディジタルミキサのミキサ構成を複数コンポーネントで構成するようにして、各コンポーネントにコンポーネントIDを付与しておけば、ミキサ構成の異なる2つのディジタルミキサであっても、そのコンポーネントIDの一致するコンポーネント間でコンポーネントシーンを相互利用できる。
100…エンジン、101…CPU、102…フラッシュメモリ、103…RAM、104…PC I/O、105…MIDI I/O、106…その他I/O、107…表示器、108…操作子、109…波形I/O、110…信号処理部(DSP群)、111…カスケードI/O、120…システムバス、130…パーソナルコンピュータ(PC)、131…ミキサ制御プログラム、132…コンフィグ(CF)データ。