(57)【特許請求の範囲】
【請求項１】
各種信号処理機能を表す機能ブロックをグラフィックシンボルとして画面表示し、当該グラフィックシンボルを表示画面上で任意に接続して所望の音響モデル信号を生成する音響モデル生成装置であって、予め各種グラフィックシンボルを登録するグラフィックシンボル登録手段と、複数のグラフィックシンボルを画面上に表示させると共に、各グラフィックシンボルの接続、編集を行ってグラフィックモデルを作成するグラフィック作成手段と、前記グラフィックシンボル及びこのグラフィックシンボルを接続、編集して作成されたグラフィックモデルを画面表示する表示手段と、前記グラフィックモデルに対応させて機能ブロックをコンパイルし、音響信号生成プログラムを作成する機能ブロックコンパイル手段と、前記音響信号生成プログラムに従って音響信号を生成する処理を行うディジタルシグナルプロセッサと、前記音響信号生成プログラムの各ステップのうち不要なもの及び冗長なものを削除する処理を行う最適化手段と、を有する音響モデル生成装置におけるプログラム最適化方法であって、
前記最適化手段は、
当該最適化手段内のレジスタ、アキュムレータ、外部メモリの使用状況をチェックし、無駄な外部メモリアクセスを行っている命令を特定すると共に、音響信号の流れを特定する第１のステップと、
前記無駄な外部メモリを使用したデータ渡しを内部レジスタを使用したデータ渡しに変更する第２のステップと、
前記音響信号生成プログラムの処理を完了させた後にその結果を出力させるために複数回実行されるＮＯＰ命令の位置及びその連続数をチェックする第３のステップと、
前記第１のステップにおける使用状況のチェックにて特定した音響信号の流れ、及び前記第３のステップにてチェックしたＮＯＰ命令の位置及びその連続数を参照して、ＮＯＰ命令位置に移動可能な命令を判別し、それらを移動する第４のステップと、
を有することを特徴とする音響モデル生成装置におけるプログラム最適化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、音響信号生成プログラムによるディジタル信号処理にて音響モデルを作成する音響モデル生成装置におけるプログラム最適化方法に関する。
【０００２】
【従来の技術】
近年のシンセサイザ（音響合成装置）においては、ＤＳＰ（デジタルシグナルプロセッサ）、あるいはＣＰＵを用いてディジタル信号処理プログラムを実行し、各種楽器音をリアルタイム演算によって合成することが多くなっている。
【０００３】
このようなシンセサイザの信号処理プログラムを作成する際には、目的とする楽器音を合成するための大まかな信号処理の流れをあらかじめ想定し、その後それに従ってＤＳＰあるいはＣＰＵによって実行される信号処理プログラムを作成する。しかしながら所望の楽器音は、このような机上の計算のみにより作成されたプログラムによって完全に合成することができるものではなく、実際にはプログラムを実行し、合成される音を作成者が自分の耳で聞き、所望の楽器音が出ているかどうかを判定し、必要であれば変更を加え、プログラムを作成して行かなければならない。例えば、バイオリンの音を合成したい場合には、どのような信号処理をすればよいかを決める際の大ざっぱな信号処理体系については机上の計算により求めることができるが、プログラムの細部に関しては、各種の処理を作成者の試行錯誤により決定、変更し、合成音を出力させ、本物のバイオリンの音に近い音が出ているかどうかを判断し、プログラムを完成させて行く。
【０００４】
従って、作成するプログラムは操作者の試行錯誤により変更しなければならず、このような作業は多大な労力を必要とするので操作者にとって苦痛を強いることになる。そこで、このような問題を解決するため従来において、米国特許５，３３１，１１１号に記載されているように、コンピュータの表示画面上において各種信号処理機能を表す機能ブロックをグラフィックシンボルとして表示させ、各グラフィックシンボルの入力側と出力側とを任意に接続することによって、各機能ブロックの接続関係を示すグラフィックモデルを作成し、該グラフィックモデルに対応するプログラムを自動生成することによって、操作者の試行錯誤による接続、変更に容易に対応する、音響モデル生成装置が発明された。
【０００５】
これを図７を用いて説明すると、ウィンドウ５１上にマウスにてグラフィックシンボルをドラッグすることにより、発信器５２、ローパスフィルタ５３、スピーカ５４を表示させ、更に、発信器５２の出力側とローパスフィルタ５３の入力側を接続線５５により接続し、このフィルタ５３の出力側とスピーカ５４の入力とを同様にて接続する。これにより、発信器５２から出力された励振信号がローパスフィルタ５３を通過して得られる音響信号がスピーカ５４から出力されることになる。実際には、各グラフィックシンボルに対応する信号処理機能が設定されており、モニタ画面５１上で各種グラフィックシンボル間の接続操作を行うと、このグラフィックシンボルに対応する信号処理機能のプログラムの連結が行われ、このプログラムに従って、音響信号の合成処理が行われる。この一連の処理手順をフローチャートで示すと、図８に示す如くとなる。
【０００６】
つまり、操作者が表示画面上にて、各種グラフィックシンボルを擬似的に配置、接続するとこの接続関係に対応するプログラムが自動作成される。従って、操作者が試行錯誤して所望の音響信号を作成したいときには、表示画面上にてグラフィックシンボルを任意に配置、接続するのみの操作でよく、プログラムをその都度書き換えるという面倒な操作を省略することができる。
【０００７】
【発明が解決しようとする課題】
しかしながら、上記した従来のプログラム作成方法では、試行錯誤により多種多様に機能ブロックを接続し、各種プログラムを容易に作成することができるものの、各機能ブロック間の接続の一般性を確保しなければならないという構造上の問題により、作成されたプログラムの全体の流れを考慮した適性化は図られていなかった。例えば、各機能ブロックは、その出力に於て外部メモリ内のあるアドレスにデータを退避させ、その直後に接続された次のブロックの入力にて再び同じデータを外部メモリから読み込まなければならず、この一旦外部メモリに退避させるという処理は単なる冗長であり、整理縮小することができるものである。
【０００８】
このように、従来における方法にて作成されたプログラムは、不要なものや冗長なものが整理縮小化されておらず、このため、プログラム全体としてのサイズが大きくなり、１サンプル周期内に実行できなくなる、あるいは冗長な処理の分だけプログラムの持つ機能を減らさなければならない等の問題があった。
【０００９】
この発明はこのような従来の課題を解決するためになされたものであり、その目的とするところは、自動操作で作成されたプログラムの全体の流れを通した適正化を図ることのできる音響モデル生成装置におけるプログラム最適化方法を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、本発明の音響モデル生成装置におけるプログラム最適化方法は、各種信号処理機能を表す機能ブロックをグラフィックシンボルとして画面表示し、当該グラフィックシンボルを表示画面上で任意に接続して所望の音響モデル信号を生成する音響モデル生成装置であって、予め各種グラフィックシンボルを登録するグラフィックシンボル登録手段と、複数のグラフィックシンボルを画面上に表示させると共に、各グラフィックシンボルの接続、編集を行ってグラフィックモデルを作成するグラフィック作成手段と、前記グラフィックシンボル及びこのグラフィックシンボルを接続、編集して作成されたグラフィックモデルを画面表示する表示手段と、前記グラフィックモデルに対応させて機能ブロックをコンパイルし、音響信号生成プログラムを作成する機能ブロックコンパイル手段と、前記音響信号生成プログラムに従って音響信号を生成する処理を行うディジタルシグナルプロセッサと、前記音響信号生成プログラムの各ステップのうち不要なもの及び冗長なものを削除する処理を行う最適化手段と、を有する音響モデル生成装置におけるプログラム最適化方法であって、
前記最適化手段は、
当該最適化手段内のレジスタ、アキュムレータ、外部メモリの使用状況をチェックし、無駄な外部メモリアクセスを行っている命令を特定すると共に、音響信号の流れを特定する第１のステップと、
前記無駄な外部メモリを使用したデータ渡しを内部レジスタを使用したデータ渡しに変更する第２のステップと、
前記音響信号生成プログラムの処理を完了させた後にその結果を出力させるために複数回実行されるＮＯＰ命令の位置及びその連続数をチェックする第３のステップと、
前記第１のステップにおける使用状況のチェックにて特定した音響信号の流れ、及び前記第３のステップにてチェックしたＮＯＰ命令の位置及びその連続数を参照して、ＮＯＰ命令位置に移動可能な命令を判別し、それらを移動する第４のステップと、
を有することを特徴とする。
【００１２】
上述の如く構成された本発明によれば、操作者は表示画面上にてマウスやキーボードを用いてグラフィックシンボルの接続操作を行うと、所望の接続関係を有するグラフィックモデルを作成することができる。そして、機能ブロックコンパイル手段において、この接続関係に対応する音響信号生成プログラムが作成され、更に、ディジタルシグナルプロセッサまたはＣＰＵにてこのプログラムが実行される。この際、音響信号の流れ、ＮＯＰ命令の位置及びその連続数を参照して、ＮＯＰ命令位置に移動可能な命令を判別し、それらを移動してプログラムステップの削減が図られ、ステップ数が整理縮小される。従って、プログラム全体としてのサイズが小さくなり、その分だけ１サンプル周期内に実行できる命令の数が増え、プログラムの持つ機能を増やすことができるようになる。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態の一例を図面に基づいて説明する。図１は本発明が適用された音響モデル生成装置１とその周辺機器の構成を示すブロック図であり、同図に示すようにこの音響モデル生成装置１は、総括的な演算制御処理を行うＣＰＵ２と、本発明によるグラフィックプログラミング手段を格納するホストメモリ３と、プログラムの実行命令に従って信号処理を行うＤＳＰ（ディジタルシグナルプロセッサ）ボード４と、フロッピーディスクドライブ５と、ハードディスクドライブ６と、ディスプレイ７と、マウス８と、キーボード９と、シリアルインターフェース１０と、から構成されている。
【００１４】
ホストメモリ３は、データメモリ３ａと命令メモリ３ｂとから構成されている。ＤＳＰボード４は、ＤＳＰメモリ４ａ、Ａ／Ｄコンバータ４ｂ、Ｄ／Ａコンバータ４ｃを含んでいる。
【００１５】
シリアルインターフェース１０はＭＩＤＩインターフェース１２を介してＭＩＤＩ機器１１と接続するためのものである。ＤＳＰメモリ４ａは、当該音響モデル生成装置にて生成された音響生成プログラムのうち、実際に音響信号を生成する部分（ＤＳＰコード）を格納する。Ａ／Ｄコンバータ４ｂは、外部から入力されるアナログの音響信号を取り込んでディジタル信号に変換するものである。Ｄ／Ａコンバータ４ｃは、当該音響モデル生成装置にて生成されたディジタルの音響信号をアナログ信号に変換して外部に出力するものであり、アンプ１３を介してスピーカ１４に接続されている。
【００１６】
図３は、本発明の特徴部分であるグラフィックプログラミング手段（ホストメモリ３内に格納されている）の詳細な構成を示すブロック図であり、同図に示すように、グラフィックプログラミング手段は各種の信号処理機能に対応する機能ブロックを表すグラフィックシンボルを多数登録するシンボル登録ファイル１５と、各機能ブロックの名称及び付随するパラメータを登録する名称登録ファイル１６と、入力部２４からインプットされる操作に応じて所望のグラフィックモデルを作成するグラフィック作成ツール１７と、各機能ブロック内のパラメータの操作、編集を行う機能ブロック編集ツール１８と、を有している。そして、これらを使用してグラフィックモデルを作成するに従い、グラフィックモデル表示ファイル１９及びマクロプリプロセッサ入力リスト２０が生成される。
【００１７】
図中破線内のプロセッサ依存部分は、音響合成に使用するプロセッサ（ＤＳＰ、又はＣＰＵ）によって内容が異なり、それぞれ前記マクロプリプロセッサ入力リスト２１をコンパイル可能な形式に変換するマクロプリプロセッサ２１と、該マクロプリプロセッサ２１の処理結果を実行可能な音響合成プログラムに翻訳するコンパイラ２２と、このプログラムの最適化処理を実行するオプティマイザ２３と、から構成されている。
【００１８】
次に、上述の如く構成された本実施形態の動作について説明する。例として図７にて示したようにオシレータの出力にフィルタを掛けて出力する音響生成プログラムを作成し、実行するものを取り上げる。操作者はウインドウ５１上で、マウス８やキーボード９を使用して、オシレータ、フィルタ、アウトプットの機能ブロックを表すグラフィックシンボル５２、５３、５４を画面上にドラッグし、更に、各グラフィックシンボル間の入力、出力間を接続線５５  により接続し、グラフィックモデルを作成する。
【００１９】
この際、図３に示すグラフィック作成ツール１７は、機能ブロックシンボル登録ファイル１５を参照し、グラフィックモデル表示ファイル１９を生成し、ＣＰＵ２（図１参照）はこのファイルを参照してウインドウ５１上に該グラフィックモデルを表示する。またこれと同時に前記グラフィック作成ツール１７は、機能ブロック名称登録ファイル１６を参照し、マクロプリプロセッサ入力リスト２０を生成する。
【００２０】
またこの時操作者は、機能ブロック編集ツール１８により、オシレータの発振周波数、フィルタのカットオフ周波数等、各機能ブロック内のパラメータを設定することができ、それらの結果は前記グラフィックモデル表示ファイル１９、マクロプリプロセッサ入力リスト２０に反映される。
【００２１】
次に操作者はマクロプリプロセッサ２１、コンパイラ２２、オプティマイザ２３に対して、機能ブロック編集ツール１８を経由して順番に実行の指示を行い、マクロプリプロセッサ入力リスト２０をコンパイル可能な形式に変換する処理、その処理結果を実行可能な音響合成プログラムにコンパイルする処理、その実行可能な音響合成プログラムから不要なステップや冗長であるステップを整理縮小する処理を行い、最適化処理された実行可能な音響生成プログラムを得る。
【００２２】
最後にこのプログラムを実行すると、この音響生成プログラム内の、音響信号生成を制御する部分がＣＰＵ２（図１参照）にて実行されＤＳＰカード４を制御し、これに伴いこの音響生成プログラム内で実際に音響生成を行う部分がＤＳＰカード４にて実行され、その結果としての音響信号がＤ／Ａコンバータ４ｃから出力され、アンプ１３により増幅され、最後にスピーカ１４より実際の音響として出力される。
【００２３】
上記のマクロプリプロセッサ２１、コンパイラ２２、オプティマイザ２３での処理の詳細をフローチャートにて示すと図４に示す如くとなる。
【００２４】
次に、オプティマイザ２３における具体的な処理について説明する。以下に示す数１は、オプティマイザ２３にて最適化する前（Ａ）と最適化した後（Ｂ）のプログラムの例を示す。
【００２５】
【数１】
0003612391.tif 000002
【００２６】
上記数１に示した例は、ＤＳＰとしてモトローラの５６０００を使用し、かけ算ブロックを二つ直列接続し、かけ算を二回連続して実行する例を示している。上記式において、０番地（＄００００）〜６番地（＄０００６）が第１のかけ算ブロックでの処理であり、７番地（＄０００７）〜Ｄ番地（＄０００Ｄ）が第２のかけ算ブロックでの処理を示している。
【００２７】
この例では、５番地（＄０００５）と６番地（＄０００６）に記述された命令で一旦計算結果をＸメモリの２番地（＄０００００２）に書き込み、その直後に７番地（＄０００７）と８番地（＄０００８）に記述された命令により再度Ｘメモリの２番地（＄０００００２）から同一の計算結果を読み出すという処理を実行している。この処理は単なる冗長であり、整理縮小が可能であるので、本願発明のオプティマイザ２３では、この部分の最適化を図り、前記した数１の「最適化処理後」に示すように、この部分の処理ステップを削減している。これにより、プログラムのサイズが３ステップ減少することになり、その分だけ１サンプル周期内に実行できる命令の数が増加し、プログラムの持つ機能を増やすことができる。
【００２８】
以下に示す数２は、オプティマイザ２３による最適化処理の第２の例を示すものであり、（Ａ）は最適化処理前のプログラム、（Ｂ）は最適化処理後のプログラムをそれぞれ示している。
【００２９】
【数２】
0003612391.tif 000003
【００３０】
この例は、内部処理を完了させた後に結果を出力させるため、ブロック内部にてＮＯＰ命令（無動作待機命令）を数回実行する場合についての例であり、ＤＳＰとしてテキサスインストゥルメンツ５７０００を使用し、相互に接続されていないかけ算ブロックを二つ配置し、かけ算を二回続けて行う場合を例として取り上げている。
【００３１】
「最適化処理前」のプログラムにおいて、０番地（＄００００００）〜３番地（＄０００００３）は、第１のかけ算ブロックでの処理を示しており、４番地（＄０００００４）〜７番地（＄０００００７）は、第２のかけ算ブロックでの処理を示している。
【００３２】
そして、この例では２番地に存在するＮＯＰ命令が必要でなく、整理縮小が可能である。従って、本発明ではオプティマイザ２３の処理により処理前に４番地にあった命令が処理後の２番地に移動され、全体としてプログラムサイズが１ステップ減少する。
【００３３】
図５は、オプティマイザ２３内部の処理手順を示すフローチャートであり、同図を参照しながら、オプティマイザ２３による処理手順を説明すると、まず、ステップＳＴ１にてコード内のレジスタ、アキュムレータ、外部メモリの使用状況をチェックし、無駄な外部メモリアクセスを行っている命令を特定する（ステップＳＴ２の処理のための準備である）。また、このレジスタ、アキュムレータ、外部メモリの使用状況から判断し、ステップＳＴ４での処理のために必要な「信号の流れ」を特定する。
【００３４】
ステップＳＴ２においては、無駄な外部メモリを使用したブロック間のデータ渡しを内部レジスタを使用したものに修正する。ステップＳＴ３では、コード内の無駄なＮＯＰ命令の位置、及びそれがいくつ連続しているかをチェックし、ステップＳＴ４のための準備をする。
【００３５】
ステップＳＴ４では、ステップＳＴ１にて特定した信号の流れ、及びステップＳＴ３にてチェックしたＮＯＰ命令の位置、及びその連続数を参照し、それらＮＯＰ命令の位置に移動できるその他の命令群を判別し、移動を行う。こうして、オプティマイザ２３による最適化処理が行われるのである。
【００３６】
このようにして、本実施形態では、オプティマイザ２３によるプログラムの最適化処理により不要なプログラム、冗長なプログラムを整理、縮小することができるので、全体的な処理の効率を向上させることができるようになり、１サンプル周期内に実行できる命令の数が増加し、プログラムの持つ機能を増やすことができる。
【００３７】
また、上記の実施形態においては、ＤＳＰカード４を使用してプログラムを実行する例について説明したが、ＤＳＰカード４を使用せず、ＣＰＵ２内の処理により実行することもできる。この場合には、図２に示すような構成となり、図６のフローチャートに示す如くの処理手順にて実行することができる。
【００３８】
【発明の効果】
以上説明したように、本発明によれば、オプティマイザによる最適化処理が行われるので、従来の方法と比較してプログラムの整理縮小を図ることができ、プログラムステップを削減することができるようになる。これにより、１サンプル周期内に実行できる命令の数が増加し、プログラムの持つ機能を増やすことができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明に係る音響モデル生成装置の一実施形態の構成を示すブロック図。
【図２】本発明の変形例に係る音響モデル生成装置の一実施形態の構成を示すブロック図。（音響生成にＣＰＵを使用し、ＤＳＰを使用しない場合。）
【図３】ＤＳＰ及びグラフィックプログラミング手段の詳細な構成を示すブロック図。
【図４】本発明の一実施形態に係る音響モデル生成装置の処理手順を示すフローチャート図。
【図５】オプティマイザにおける処理手順を示すフローチャート図。
【図６】本発明の変形例に係る音響モデル生成装置の処理手順を示すフローチャート図（音響生成にＣＰＵを使用し、ＤＳＰを使用しない場合）。
【図７】表示画面上に表示されたグラフィックシンボルを接続する様子を示す説明図。
【図８】従来における音響モデル生成装置の処理手順を示すフローチャート図。
【符号の説明】
１  音響モデル生成装置
２  ＣＰＵ
３  ホストメモリ
３ａ  データメモリ
３ｂ  命令メモリ
４  ＤＳＰ（ディジタルシグナルプロセッサ）ボード
４ａ  Ａ／Ｄコンバータ
４ｂ  Ｄ／Ａコンバータ
５  フロッピーディスクドライブ
６  ハードディスクドライブ
７  ディスプレイ
８  マウス
９  キーボード
１０  シリアルインターフェース
１１  ＭＩＤＩ機器
１２  ＭＩＤＩインターフェース
１３  アンプ
１４  スピーカ
１５  機能ブロックシンボル登録ファイル
１６  機能ブロック名称登録ファイル
１７  グラフィック作成ツール
１８  機能ブロック編集ツール
１９  グラフィックモデル表示ファイル
２０  マクロプリプロセッサ入力リスト
２１  マクロプリプロセッサ
２２  コンパイラ
２３  オプティマイザ
２４  入力部
５１  ウインドウ
５２  発信器
５３  ローパスフィルタ
５４  スピーカ
５５  接続線
【図１】
0003612391.tif 000004
【図２】
0003612391.tif 000005
【図３】
0003612391.tif 000006
【図４】
0003612391.tif 000007
【図５】
0003612391.tif 000008
【図６】
0003612391.tif 000009
【図７】
0003612391.tif 000010
【図８】
0003612391.tif 000011