(57)【特許請求の範囲】
【請求項１】
複数のスロットの各々に係る音データを生成する音源装置において、
ハードウェアで構成された複数の演算要素を備え、データを生成する演算を、前記演算要素を用いて行うことにより、複数種類の命令を実行する演算部と、
複数のプログラムコードを含むプログラムを記憶するプログラムメモリと、
前記演算部に一の前記スロットに係る音データを生成させるための第１及び第２のパラメータと、前記一のスロットに係る音データの生成過程で前記演算部に生成される第１及び第２の中間データと、前記一のスロットに係る音データと、別の前記スロットに係る音データとを記憶するワークメモリと、
一つの前記プログラムコードを実行するコード実行処理を前記複数のプログラムコードについて順次行って前記プログラムを実行するプログラム実行処理を行う制御部とを備え、
前記複数種類の命令は、
音量の時間的な変化を制御するエンベロープデータを生成する演算を前記ワークメモリから読み出された前記第１のパラメータ及び前記第１の中間データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第１の拡張命令と、
波形の周波数を制御するフェイズデータを生成する演算を、前記ワークメモリから読み出された前記第２のパラメータ、前記第２の中間データ及び前記別のスロットに係る音データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第２の拡張命令と、
結果データを生成する演算を前記エンベロープデータと前記フェイズデータと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第３の拡張命令とを含み、
前記プログラム実行処理は、前記ワークメモリから前記第１及び第２のパラメータと前記第１及び第２の中間データと前記別のスロットに係る音データとを読み出す一方、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第１の中間データ、前記第２の中間データ及び前記一のスロットに係る音データとして前記ワークメモリへ書き込むアクセス処理を含み、
前記制御部は、前記コード実行処理において、実行する前記プログラムコードが前記複数種類の命令のいずれかに対応していれば、対応する命令を前記演算部に実行させる、
ことを特徴とする音源装置。
【請求項２】
前記アクセス処理は、前記ワークメモリから前記第１及び第２の中間データと前記別のスロットに係る音データとを一括して読み出す第１処理と、前記ワークメモリから前記第１及び第２のパラメータを一括して読み出す第２処理と、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第１の中間データ、前記第２の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第３処理と含む、
ことを特徴とする請求項１に記載の音源装置。
【請求項３】
前記演算部をｋ（ｋは２以上の自然数）個備え、
前記ワークメモリは、前記ｋ個の演算部に共通して用いられ、
前記アクセス処理は、前記ワークメモリからｋ組の前記第１の中間データ、前記第２の中間データ及び前記別のスロットに係る音データを一括して読み出す第４処理と、前記ワークメモリからｋ組の前記第１及び第２のパラメータを一括して読み出す第５処理と、ｋ組の前記エンベロープデータ、前記フェイズデータ及び前記結果データを、ｋ組の前記第１の中間データ、前記第２の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第６処理とを含む、
ことを特徴とする請求項１に記載の音源装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音の波形を電子的に出力する音源を備えた音源装置に関する。
【背景技術】
【０００２】
上記の音源の一つとしてＦＭ（Frequency Modulation）音源が知られている。ＦＭ音源は、周波数変調の仕組みを使って音色を作り出す音源である。ＦＭ音源では、エンベロープジェネレータ（ＥＧ）が音量の時間的な変化を制御するエンベロープデータを生成し、フェイズジェネレータ（ＰＧ）が波形の周波数を制御するフェイズデータを生成し、オペレータ（ＯＰ）と呼ばれる波形発生部が、エンベロープデータとフェイズデータとに基づいて音データ（波形）を生成する。
【０００３】
ＦＭ音源としては、ハードウェアで構成されたものと、主にソフトウェアで実現されるものが知られている。以降、前者を「ハードＦＭ音源」と呼び、後者を「ソフトＦＭ音源」と呼ぶ。図７は、ハードＦＭ音源の基本スロットの構成を示すブロック図である。ハードＦＭ音源は、基本スロット１１０を複数個組み合わせて実現される。基本スロット１１０は、ＯＰ１２０、ＥＧ１３０、ＰＧ１４０及びレジスタ１５１〜１５３を備える。レジスタ１５１〜１５３には、各スロットの音色データが格納される。以降の説明では、スロット番号を角括弧で示す。
【０００４】
ＥＧ１３０は、セレクタ１３１と加算器１３２とを備え、レジスタ１５１に設定されたＡＤＳＲ［ｎ］とＴＬ［ｎ］とに基づいてエンベロープデータ（ｅｎｖ［ｎ］）を生成する。ＡＤＳＲ［ｎ］とＴＬ［ｎ］は、それぞれ、エンベロープを制御するパラメータである。
【０００５】
ＰＧ１４０は、加算器１４１、１４２と乗算器１４３とを備え、レジスタ１５２に設定されたｏｐｅ［ｍ］と、レジスタ１５３に設定されたＮＴ［ｎ］とＭＬ［ｎ］とに基づいてフェイズデータ（ｐｈａｓｅ［ｎ］）を生成する。ｏｐｅ［ｍ］は、別のスロット［ｍ］で生成された音データである。ＮＴ［ｎ］及びＭＬ［ｎ］は、それぞれ、周波数を制御するパラメータである。
【０００６】
ＯＰ１２０は、ＥＧ１３０が生成したｅｎｖ［ｎ］を指数形式からリニア形式へ変換して出力するＥｘｐ演算部１２１と、ＰＧ１４０が生成したｐｈａｓｅ［ｎ］に応じた正弦波データを出力するＳｉｎ演算部１２２と、両演算部の出力を乗算する乗算器１２３とを備え、音データ（ｏｐｅ［ｎ］）を生成する。Ｅｘｐ演算部１２１はＥｘｐＲＯＭ（Read Only Memory）を有し、Ｓｉｎ演算部１２２はＳｉｎＲＯＭを有する。以降、ＥＧ、ＰＧ及びＯＰが行う演算を「スロット演算」と呼ぶ。
【０００７】
一方、ソフトＦＭ音源では、上記の基本スロットが主にソフトウェアで実現される。このＦＭ音源では、ＤＳＰ（Digital Signal Processor）またはＣＰＵ（Central Processing Unit）が、複数個のスロットに係る処理をスロット毎に順に実行する。特許文献１には、ＤＳＰで実現された音源が開示されている。ソフトＦＭ音源では、レジスタはメモリ上にマップされ、スロット毎に、メモリへのアクセスが行われる。
【特許文献１】特開２０００−２２１９８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、音源装置の機能構成を動的に変更することができれば便利である。例えば、一つの音源装置の機能構成を動的に変更し、１２８音（同時発音数が１２８）の音源とシーケンサの機能を持つ装置や、３２音の音源とシーケンサと圧縮オーディオの伸長の機能を持つ装置として使用することができれば便利である。しかし、ハード音源では、機能構成を動的に変更することは困難である。一方、ソフト音源では、プログラムを入れ替えることで機能構成を動的に変更することができるが、ＤＳＰまたはＣＰＵにおいて多数の処理を一つずつソフトウェアで実行しなければならず、十分な処理速度を実現することが困難である。
【０００９】
本発明は、このような状況を鑑みてなされたものであり、処理が高速で機能の動的再構成が可能な音源装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明の音源装置は、複数のスロットの各々に係る音データを生成する音源装置において、ハードウェアで構成された複数の演算要素を備え、データを生成する演算を、前記演算要素を用いて行うことにより、複数種類の命令を実行する演算部と、複数のプログラムコードを含むプログラムを記憶するプログラムメモリと、前記演算部に一の前記スロットに係る音データを生成させるための第１及び第２のパラメータと、前記一のスロットに係る音データの生成過程で前記演算部に生成される第１及び第２の中間データと、前記一のスロットに係る音データと、別の前記スロットに係る音データとを記憶するワークメモリと、一つの前記プログラムコードを実行するコード実行処理を前記複数のプログラムコードについて順次行って前記プログラムを実行するプログラム実行処理を行う制御部とを備え、前記複数種類の命令は、音量の時間的な変化を制御するエンベロープデータを生成する演算を前記ワークメモリから読み出された前記第１のパラメータ及び前記第１の中間データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第１の拡張命令と、波形の周波数を制御するフェイズデータを生成する演算を、前記ワークメモリから読み出された前記第２のパラメータ、前記第２の中間データ及び前記別のスロットに係る音データと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第２の拡張命令と、結果データを生成する演算を前記エンベロープデータと前記フェイズデータと前記複数の演算要素のうち少なくとも二つとを用いて行うことを命じる第３の拡張命令とを含み、前記プログラム実行処理は、前記ワークメモリから前記第１及び第２のパラメータと前記第１及び第２の中間データと前記別のスロットに係る音データとを読み出す一方、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第１の中間データ、前記第２の中間データ及び前記一のスロットに係る音データとして前記ワークメモリへ書き込むアクセス処理を含み、前記制御部は、前記コード実行処理において、実行する前記プログラムコードが前記複数種類の命令のいずれかに対応していれば、対応する命令を前記演算部に実行させる、ことを特徴とする。
この音源装置によれば、演算部に対して、データを生成する演算を、ハードウェアで構成された複数の演算要素のうち少なくとも二つを用いて行うことを命じる第１乃至第３の拡張命令が用意されているから、ソフト音源では実行に長時間を要したスロット演算を短時間で実行することができる。つまり、この音源装置によれば、音の波形を出力する処理が高速化される。例えば、ワークメモリへのアクセスに要する時間（例えば、８回のコード実行処理に要する時間）だけで音データを生成することも可能である。また、この音源装置では、制御部に読み出されるプログラムコード群を変更することで、音源装置の機能を動的に再構成することができる。
【００１１】
上記の音源装置において、前記制御部は、前記アクセス処理は、前記ワークメモリから前記第１及び第２の中間データと前記別のスロットに係る音データとを一括して読み出す第１処理と、前記ワークメモリから前記第１及び第２のパラメータを一括して読み出す第２処理と、前記エンベロープデータ、前記フェイズデータ及び前記結果データを、前記第１の中間データ、前記第２の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第３処理と含む、ようにしてもよい。
この態様によれば、ワークメモリから第１及び第２の中間データと音データとが一括して読み出され、ワークメモリから第１及び第２のパラメータが一括して読み出され、ワークメモリへ第１及び第２の中間データと生成された音データとが一括して書き込まれるから、すなわちワークメモリに対してマルチワードアクセスが行われるから、更なる高速化が可能となる。例えば、ワークメモリへのアクセスに要する時間（例えば、３回のコード実行処理に要する時間）だけで音データを生成することも可能である。
【００１２】
上記の音源装置において、前記演算部をｋ（ｋは２以上の自然数）個備え、前記ワークメモリは、前記ｋ個の演算部に共通して用いられ、前記アクセス処理は、前記ワークメモリからｋ組の前記第１の中間データ、前記第２の中間データ及び前記別のスロットに係る音データを一括して読み出す第４処理と、前記ワークメモリからｋ組の前記第１及び第２のパラメータを一括して読み出す第５処理と、ｋ組の前記エンベロープデータ、前記フェイズデータ及び前記結果データを、ｋ組の前記第１の中間データ、前記第２の中間データ及び前記一のスロットに係る音データとして一括して前記ワークメモリに書き込む第６処理とを含む、ようにしてもよい。
この態様によれば、ワークメモリからｋ組の第１の中間データ、第２の中間データ及び音データが一括して読み出され、ワークメモリからｋ組の第１及び第２のパラメータが一括して読み出され、ワークメモリへｋ組の第１の中間データ、第２の中間データ及び音データが一括して書き込まれるから、すなわちＳＩＭＤ（Single Instruction / Multiple Data）で処理が行われるから、更なる高速化が可能となる。例えば、ｋを適宜に定めることにより、ハード音源を備えた音源装置と同等の処理速度とすることも可能である。
【発明を実施するための最良の形態】
【００１３】
本発明の実施の形態について図面を参照して説明する。
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る音源装置１００を備える装置のハードウェア構成を示すブロック図である。この装置は、音源装置１００、ホストＣＰＵ９１及びアナログ回路９２を備える。音源装置１００は、ＴＬＭ(Transaction Level Modeling)によるバス（例えばＡＭＢＡ（登録商標））に接続された、マイコンＩ／Ｆ（インターフェイス）８１、オーディオコーデック８２、ワークメモリ８３、プログラムメモリ８４及びカスタムＤＳＰ１０を備える。
【００１４】
マイコンＩ／Ｆ８１にはホストＣＰＵ９１が接続され、オーディオコーデック８２にはアナログ回路９２が接続される。マイコンＩ／Ｆ８１は、ＳＤＩ（Serial Data In）及びＳＤＯ（Serial Data Out）を行うシリアルデータインターフェイスを備える。オーディオコーデック８２は、ＡＤＣ（Analog Digital Convertor）及びＤＡＣ（Digital Analog Convertor）を備える。
【００１５】
ワークメモリ８３は、例えばＲＡＭ（Random Access Memory）であり、後述の、第１及び第２のパラメータと、第１及び第２の中間データと、音データとを一時的に記憶する。プログラムメモリ８４は、例えばＲＡＭまたはＲＯＭであり、複数のプログラムコードを含む複数のプログラム（ファームウェア）を記憶している。各プログラムは順序付けられた複数のプログラムコードを含む。
【００１６】
カスタムＤＳＰ１０は、ＤＳＰ１０１及び拡張ハードウェア（Custom Instruction）１０２を有する。ＤＳＰ１０１は、一般的なＤＳＰが備える複数の演算要素（具体的には、複数の加算器、複数の乗算器及び複数のアキュムレータ）を備える。これらの演算要素は、いずれもハードウェアで構成されている。拡張ハードウェア１０２は、一般的なＤＳＰが備えていない複数の演算要素（具体的には、セレクタ、ＥｘｐＲＯＭ及びＳｉｎＲＯＭ）を備える。これらの演算要素は、いずれもハードウェアで構成されている。
【００１７】
ＤＳＰ１０１の一部及び拡張ハードウェア１０２は、ハードウェアで構成された複数の演算要素を備え、データを生成する演算を、これらの演算要素のうち少なくとも一つを用いて行うことにより、複数種類の命令を実行する演算部Ａとして機能する。複数種類の命令には、シーケンサ、ＦＭ音源、ＷＴ（Wave Table）音源、及びディジタル信号処理の実現に用いられる命令が含まれている。このような命令としては、ＦＭ音源の実現に用いられる第１乃至第３の拡張命令が挙げられる。詳しくは後述するが、第１乃至第３の拡張命令は、それぞれ、演算部Ａに対して、データを生成する演算を、演算部Ａが備える複数の演算要素のうち少なくとも二つを用いて行うことを命じる。なお、ＷＴ音源は、楽器等の音をデータとして記録しておき、それを再生する音源である。
【００１８】
ＤＳＰ１０１の他の一部は、演算部Ａを制御する制御部Ｂとして機能する。制御部Ｂは、マイコンＩ／Ｆ８１からコマンドが渡されると、このコマンドに応じたプログラムをプログラムメモリ８４から読み出し、プログラム実行処理を行う。プログラム実行処理は、一つのプログラムコードを実行するコード実行処理を一定の実行周期（例えば、１秒／１５０ＭＨｚ）で複数のプログラムコードについて順次行うことによって、読み出されたプログラムを実行する処理である。また、制御部Ｂは、コード実行処理において、実行するプログラムコードが、上記の複数種類の命令のいずれか一つに対応していれば、対応している一つの命令を演算部Ａに実行させる。つまり、音源装置１００は、制御部Ｂに実行されるプログラムに応じた機能を持つ。
【００１９】
図２は、カスタムＤＳＰ１０におけるプログラム実行処理の流れの一例を示す図である。カスタムＤＳＰ１０は、サンプリング周期に同期して動作するものであり、この図には、１サンプリング期間分における流れが示されている。この例のプログラムは、音源装置１００を高機能音源（シーケンサの機能と、６４音のＦＭ音源の機能と、６４音のＷＴ（Wave Table）音源の機能を持ち、ディジタル信号処理を実現可能なもの）として機能させるものであり、１サンプリング期間分のプログラムコードとして、レジスタアクセスコード群、シーケンスコード群、ＦＭコード群、ＷＴコード群及びＤＳＰコード群を含む。各コード群は、分割されたプログラムであり、順序付けられた複数のプログラムコードを含む。制御部Ｂは、各サンプリング期間において、１サンプリング期間分のプログラムコードを先頭から順に実行する。具体例を次に述べる。
【００２０】
まず、レジスタアクセスコード群についてプログラム実行処理が行われる（Ｓ１０１）。この処理では、マイコンＩ／Ｆ８１からのコマンドに対応する機能がワークメモリ８３に展開される。具体的には、ワークメモリ８３上へのレジスタのマッピングや、ワークメモリ８３へのデータの書き込み、音色データや音符データの転送等の処理が行われる。次に、シーケンスコード群についてプログラム実行処理が行われる（Ｓ１０２）。この処理では、音符データに従って対応するキー（Key）のオン・オフを行うシーケンサが実現され、キーノート（Key Note）がワークメモリ８３に書き込まれる。
【００２１】
次に、ＦＭコード群についてプログラム実行処理が行われる（Ｓ１０３）。この処理では、演算部Ａが、ＦＭ音源の複数のスロットにそれぞれ対応する複数のＦＭ機能部（FM function）として機能する。各ＦＭ機能部は、対応するスロットに係るスロット演算を行うものであり、図には、ｎ番目のスロットに対応するＦＭ機能部［ｎ］が例示されている。ＦＭ機能部の構成やＦＭコード群についてのプログラム実行処理の具体的内容については、後に詳述する。
【００２２】
次に、ＷＴコード群についてプログラム実行処理が行われる（Ｓ１０４）。この処理では、演算部Ａは、ＷＴ音源の複数のスロットにそれぞれ対応する複数のＷＴ機能部（WT function）として機能する。各ＷＴ機能部は、対応するスロットに係るスロット演算を行うものであり、図には、ｎ番目のスロットに対応するＷＴ機能部［ｎ］が例示されている。ＷＴ機能部はＦＭ機能部に準じた構成を有する。また、ＷＴコード群についてのプログラム実行処理の内容は、ＦＭコード群についてのプログラム実行処理の内容に準じる。
【００２３】
次に、ＤＳＰコード群についてプログラム実行処理が行われる（Ｓ１０５）。この処理では、エフェクタ（Effector）や、サンプリングレートコンバータ（SRC）、オーバーサンプリングフィルタ（OSF）等のディジタル信号処理が行われる。この例では、外部のアナログ回路９２からのアナログ信号がＡＤＣを介して入力され、この信号と、ＦＭコード群及びＷＴコード群についてのプログラム実行処理で生成された信号（音データ）とのミキシングが行われ、ミキシング後の信号に対してエフェクタが実行され、実行後の信号が、オーバーサンプリングフィルタを通してＤＡＣ経由でアナログ回路９２へ出力される。なお、サンプリングレートコンバータ（SRC）は、ＳＤＩの入力信号のサンプリング周波数をカスタムＤＳＰ１０用のサンプリング周波数に変換するものである。
【００２４】
そして、１サンプリング期間分のプログラムコードについてのプログラム実行処理が終了すると、制御部Ｂは、カスタムＤＳＰ１０をサスペンドモードへ移行させ、１サンプリング期間が終了するまで、消費電力を抑える。ただし、この例では、１サンプリング期間分のプログラムコードの実行が終了するとともに当該１サンプリング期間が終了するから、サスペンドモードへの移行は行われず、次の１サンプリング期間分のプログラムコードの実行が開始される。
【００２５】
図３は、一般的なソフトＦＭ音源のスロット［ｎ］に係る複数のプログラムコードの実行イメージを示す図である。この図において、プログラムコードの欄に記載されたプログラムコードは、演算を命じる命令に対応していないプログラムコードである。この図に示すように、一般的なソフトＦＭ音源は、ＦＭ機能部［ｎ］に相当する機能部を有する。この機能部は、ＦＭ機能部［ｎ］と同様に、オペレータ（ＯＰ）２０と、エンベロープジェネレータ（ＥＧ）３０と、フェイズジェネレータ（ＰＧ）４０と、アキュムレータＡＣＣ１及びＡＣＣ２とを有する。
【００２６】
ＥＧ３０は、加算器３１及びセレクタ３２を有する。セレクタ３２には、ワークメモリ８３に相当する内部メモリから読み出された第１の中間データ（ｅｎｖ［ｎ］）と、内部メモリから読み出された二つの第１のパラメータ（ＡＤＳＲ［ｎ］及びＴＬ［ｎ］）が供給される。ＡＤＳＲ［ｎ］及びＴＬ［ｎ］は、いずれも、機能部にスロット［ｎ］に係る音データ（ｏｐｅ［ｎ］）を生成させるための定数データである。第１の中間データ（ｅｎｖ［ｎ］）は、ｏｐｅ［ｎ］の生成過程で機能部に生成されたエンベロープデータである。エンベロープデータは、音量の時間的な変化を制御するデータである。
【００２７】
セレクタ３２の出力データは、アキュムレータＡＣＣ１に記憶される。加算器３１は、アキュムレータＡＣＣ１に記憶された出力データと、内部メモリから読み出された第１の中間データ（ｅｎｖ［ｎ］）とを加算してエンベロープデータ（ｅｎｖ［ｎ］）を生成する。このｅｎｖ［ｎ］は、アキュムレータＡＣＣ１に記憶される。アキュムレータＡＣＣ１に記憶されたｅｎｖ［ｎ］は、第１の中間データとして内部メモリに書き込まれる一方、ＯＰ２０で使用される。
【００２８】
ＰＧ４０は、加算器４１、４２及び乗算器４３を有する。加算器４１は、内部メモリから読み出された第２の中間データ（ｐｈａｓｅ［ｎ］）と、内部メモリから読み出された音データ（ｏｐｅ［ｍ］）とを加算する。この加算結果は、アキュムレータＡＣＣ１に記憶される。第２の中間データ（ｐｈａｓｅ［ｎ］）は、ｏｐｅ［ｎ］の生成過程で機能部に生成されたフェイズデータである。フェイズデータは、波形の周波数を制御するデータである。ｏｐｅ［ｍ］は、別のスロット［ｍ］に係る音データである。
【００２９】
乗算器４３は、内部メモリから読み出された二つの第２のパラメータ（ＮＴ［ｎ］及びＭＬ［ｎ］）を乗算する。ＮＴ［ｎ］及びＭＬ［ｎ］は、いずれも、機能部にスロット［ｎ］に係る音データ（ｏｐｅ［ｎ］）を生成させるための定数データである。加算器４２は、この乗算器４３の乗算結果と、アキュムレータＡＣＣ１に記憶された加算結果とを加算してフェイズデータ（ｐｈａｓｅ［ｎ］）を生成する。このｐｈａｓｅ［ｎ］は、アキュムレータＡＣＣ２に記憶される。アキュムレータＡＣＣ２に記憶されたｐｈａｓｅ［ｎ］は、第２の中間データとして内部メモリに書き込まれる一方、ＯＰ２０で使用される。
【００３０】
ＯＰ２０は、乗算器２１、Ｅｘｐ演算部２２及びＳｉｎ演算部２３を有する。Ｅｘｐ演算部２２は、アキュムレータＡＣＣ１からエンベロープデータ（ｅｎｖ［ｎ］）を読み出し、これを指数形式からリニア形式へ変換して出力する。Ｓｉｎ演算部２３は、アキュムレータＡＣＣ２からフェイズデータ（ｐｈａｓｅ［ｎ］）を読み出し、これに応じた正弦波データを出力する。乗算器２１は、Ｅｘｐ演算部２２の出力データとＳｉｎ演算部２３の出力データとを乗算して結果データ（ｏｐｅ［ｎ］）を生成する。このｏｐｅ［ｎ］は、アキュムレータＡＣＣ１に記憶される。アキュムレータＡＣＣ１に記憶されたｏｐｅ［ｎ］は、スロット［ｎ］に係る音データとして内部メモリに書き込まれる。
【００３１】
ところで、一般的なソフトＦＭ音源では、セレクタ３２、Ｅｘｐ演算部２２及びＳｉｎ演算部２３が、ソフトウェアで実現される。したがって、セレクタ３２、Ｅｘｐ演算部２２およびＳｉｎ演算部２３の動作には、それぞれ、数十ステップ（実行周期）を要する。これでは、十分な処理速度の確保が困難である。これに対し、本実施形態では、加算器３１、４１、４２及び乗算器２１、４３のみならず、セレクタ３２、Ｅｘｐ演算部２２及びＳｉｎ演算部２３もハードウェアで構成されている。例えば、Ｅｘｐ演算部２２はＥｘｐＲＯＭであり、Ｓｉｎ演算部２３はＳｉｎＲＯＭである。また、本実施形態では、前述の第１乃至第３の拡張命令が用意されている。
【００３２】
第１の拡張命令が演算部Ａに命じる演算を式で表すと、ｅｎｖ［ｎ］＝ＥＧ（ｅｎｖ［ｎ］，ＡＤＳＲ［ｎ］，ＴＬ［ｎ］）＝ＳＥＬ（ｅｎｖ［ｎ］，ＡＤＳＲ［ｎ］，ＴＬ［ｎ］）＋ｅｎｖ［ｎ］、となる。つまり、第１の拡張命令は、エンベロープデータ（ｅｎｖ［ｎ］）を生成する演算を、ワークメモリ８３から読み出された第１のパラメータ（ＡＤＳＲ［ｎ］及びＴＬ［ｎ］）及び第１の中間データ（ｅｎｖ［ｎ］）と、ハードウェアで構成された加算器３１、セレクタ３２およびアキュムレータＡＣＣ１とを用いて行うことを演算部Ａに命じる。
【００３３】
第２の拡張命令が演算部Ａに命じる演算を式で表すと、ｐｈａｓｅ［ｎ］＝ＰＧ（ｐｈａｓｅ［ｎ］，ＮＴ［ｎ］，ＭＬ［ｎ］）＝ｐｈａｓｅ［ｎ］＋ｏｐｅ［ｍ］＋ＮＴ［ｎ］＊ＭＬ［ｎ］、となる。つまり、第２の拡張命令は、フェイズデータ（ｐｈａｓｅ［ｎ］）を生成する演算を、ワークメモリ８３から読み出された第２のパラメータ（ＮＴ［ｎ］及びＭＬ［ｎ］）、第２の中間データ（ｐｈａｓｅ［ｎ］）及び別のスロットに係る音データ（ｏｐｅ［ｍ］）と、ハードウェアで構成された加算器４１、加算器４２、乗算器４３、アキュムレータＡＣＣ１及びアキュムレータＡＣＣ２とを用いて行うことを演算部Ａに命じる。
【００３４】
第３の拡張命令が演算部Ａに命じる演算を式で表すと、ｏｐｅ［ｎ］＝ＯＰ（ＡＣＣ１，ＡＣＣ２）＝Ｅｘｐ（ＡＣＣ１）＊Ｓｉｎ（ＡＣＣ２）、となる。つまり、第３の拡張命令は、結果データ（ｏｐｅ［ｎ］）を生成する演算を、アキュムレータＡＣＣ１に記憶されたエンベロープデータ（ｅｎｖ［ｎ］）と、アキュムレータＡＣＣ２に記憶されたフェイズデータ（ｐｈａｓｅ［ｎ］）と、ハードウェアで構成された乗算器２１、Ｅｘｐ演算部２２及びＳｉｎ演算部２３とを用いて行うことを演算部Ａに命じる。
【００３５】
第１〜第３の拡張命令が命じる演算は、いずれも、アキュムレータを除いたとしても、少なくとも二つの演算要素を用いる演算である。したがって、本実施形態によれば、ソフト音源では一つずつ実行しなければならなかった複数の処理を一挙に実行することができる。また、第１〜第３の拡張命令により行われる演算は、いずれも、ハードウェアで構成された演算要素のみを用いて行われる。よって、本実施形態によれば、スロット演算を極めて短時間（１実行周期未満の時間）で実行可能である。
【００３６】
また、ＦＭ音源のスロット［ｎ］に係るＦＭコード群についてのプログラム実行処理には、演算部Ａ（ＦＭ機能部［ｎ］）に第１の拡張命令を実行させる前にワークメモリ８３からＡＤＳＲ［ｎ］、ＴＬ［ｎ］及び第１の中間データ（ｅｎｖ［ｎ］）を読み出し、演算部Ａ（ＦＭ機能部［ｎ］）に第２の拡張命令を実行させる前にワークメモリ８３からＮＴ［ｎ］、ＭＬ［ｎ］、第２の中間データ（ｐｈａｓｅ［ｎ］）及びｏｐｅ［ｍ］を読み出し、生成されたエンベロープデータ（ｅｎｖ［ｎ］）、フェイズデータ（ｐｈａｓｅ［ｎ］）及び結果データ（ｏｐｅ［ｎ］）を、第１の中間データ（ｅｎｖ［ｎ］）、第２の中間データ（ｐｈａｓｅ［ｎ］）及びスロット［ｎ］に係る音データ（ｏｐｅ［ｎ］）としてワークメモリ８３に書き込むアクセス処理が含まれている。
【００３７】
アクセス処理の実現形態は様々である。例えば、制御部Ｂが８回のコード実行処理を連続して行うことによって一つのスロットに係るプログラム実行処理を完了する形態が挙げられる。この形態では、例えば、スロット［ｎ］について、図３に示すように、１番目のコード実行処理（「ｅｎｖ［ｎ］ｒｅａｄ」に係る処理）において第１の中間データが読み出され、２番目のコード実行処理（「ＡＤＳＲ［ｎ］ＴＬ［ｎ］ｒｅａｄ」に係る処理）において第１のパラメータが読み出され、この読み出しが終了してから３番目のコード実行処理（「ｅｎｖ［ｎ］ｗｒｉｔｅ」に係る処理）が開始されるまでの間に演算部Ａ（ＦＭ機能部［ｎ］）によって第１の拡張命令が実行され、３番目のコード実行処理において、第１の拡張命令の実行によって生成されたｅｎｖ［ｎ］が第１の中間データとして書き込まれ、４番目のコード実行処理（「ｐｈａｓｅ［ｎ］ｒｅａｄ」に係る処理）において第２の中間データが読み出され、５番目のコード実行処理（「ｏｐｅ［ｍ］ｒｅａｄ」に係る処理）において別のスロット［ｍ］に係る音データが読み出され、６番目のコード実行処理（「ＮＴ［ｎ］ＭＬ［ｎ］ｒｅａｄ」に係る処理）において第２のパラメータが読み出され、この読み出しが終了してから７番目のコード実行処理（「ｐｈａｓｅ［ｎ］ｗｒｉｔｅ」に係る処理）が開始されるまでの間に演算部Ａ（ＦＭ機能部［ｎ］）によって第２の拡張命令が実行され、７番目のコード実行処理において、第２の拡張命令の実行によって生成されたｐｈａｓｅ［ｎ］が第２の中間データとして書き込まれ、この生成が終了してから８番目のコード実行処理（「ｏｐｅ［ｎ］ｗｒｉｔｅ」に係る処理）が開始されるまでの間に演算部Ａ（ＦＭ機能部［ｎ］）によって第３の拡張命令が実行され、第３の拡張命令の実行によって生成されたｏｐｅ［ｎ］がスロット［ｎ］に係る音データとして書き込まれる。
【００３８】
この実現形態では、ワークメモリ８３への１ワード単位のアクセスに要する合計８ステップ（実行周期×８）でＦＭ音源の各スロットに係る処理を終えることができる。これは、ソフトＦＭ音源では各スロットに係る処理に約１００ステップを要することに鑑みると、大幅な高速化であるが、本実施形態では、更なる高速化を目指して、制御部Ｂが３回のコード実行処理を連続して行うことによって一つのスロットに係るプログラム実行処理を完了する形態を採用している。この形態の詳細は次に述べる通りである。
【００３９】
図４は、ＦＭ機能部［ｎ］に係るＦＭコード群の実行イメージを示す図である。この図に示すように、本実施形態に係るアクセス処理の実現形態では、制御部Ｂは、例えば、スロット［ｎ］について、１番目のコード実行処理（「ｅｎｖ［ｎ］／ｐｈａｓｅ［ｎ］／ｏｐｅ［ｍ］ｒｅａｄ」に係る処理）において、ワークメモリ８３から第１の中間データ、第２の中間データ及び別のスロット［ｍ］に係る音データを一括して読み出す第１処理を行い、２番目のコード実行処理（「ＡＤＳＲ［ｎ］／ＴＬ［ｎ］／ＮＴ［ｎ］／ＭＬ［ｎ］ｒｅａｄ」に係る処理）において、ワークメモリ８３から第１及び第２のパラメータを一括して読み出す第２処理を行い、この読み出しから３番目のコード実行処理（「ｅｎｖ［ｎ］／ｐｈａｓｅ［ｎ］／ｏｐｅ［ｎ］ｗｒｉｔｅ」に係る処理）において、第１の拡張命令の実行によって演算部Ａ（ＦＭ機能部［ｎ］）に生成されたｅｎｖ［ｎ］、第２の拡張命令の実行によって演算部Ａ（ＦＭ機能部［ｎ］）に生成されたｐｈａｓｅ［ｎ］及び第３の拡張命令の実行によって演算部Ａ（ＦＭ機能部［ｎ］）に生成されたｏｐｅ［ｎ］を、第１の中間データ、第２の中間データ及びスロット［ｎ］に係る音データとして一括してワークメモリ８３に書き込む第３処理を行う。
【００４０】
つまり、この実現形態では、ワークメモリ８３への３ワード（４８ビット）単位のアクセスが行われ、ワークメモリ８３への３ワード単位のアクセス（マルチワードアクセス）に要する合計３ステップ（実行周期×３）で、ＦＭ音源の各スロットに係る処理を終えることができる。以上、ＦＭ音源について説明したことは、ＷＴ音源にもあてはまる。
【００４１】
図５は、カスタムＤＳＰ１０におけるリソースの分配イメージを示す図である。この図では、カスタムＤＳＰの駆動周波数を約１５０ＭＨｚ、サンプリング周波数を約４８ｋＨｚとしたときのものであり、１サンプリング期間において配分可能なステップ（実行周期）は、約１５０ＭＨｚ／約４８ｋＨｚ＝３０７２ステップである。また、この図に示すように、音源装置１００は、制御部Ｂに実行させるプログラムを変更することにより、用途毎にカスタマイズ可能である。第１の用途は前述の高機能音源である。第２の用途は、音源（３２音のＦＭ音源及び３２音のＷＴ音源）及び圧縮オーディオ（２チャンネルのＭＰ３データの再生）である。第３の用途は汎用ディジタル信号処理である。第４の用途は、簡易音源（４音のＦＭ音源及びシーケンサ）及び浮動小数点ディジタル信号処理である。
【００４２】
高機能音源に注目すると、３０７２ステップのうち、７６８ステップがシーケンサに、７６８ステップが計１２８音の音源（６４音のＦＭ音源及び６４音のＷＴ音源）に、１５３６ステップがディジタル信号処理に分配されている。ソフト音源で同時発音数を１２８にするには、１音当たり２スロットとすると、１スロット当たり約１００ステップを要するから、約１００ステップ＊１２８音＊２スロット＝約２５６００ステップが必要となる。これに対し、音源装置１００では、１スロット当たり３ステップで済むから、１音当たり２スロットとすると、３ステップ＊１２８音＊２スロット＝７６８ステップで同時発音数を１２８とすることができる。このように、本実施形態によれば、ソフト音源では実現困難な機能を実現することができる。
【００４３】
＜第２の実施形態＞
図６は、本発明の第２の実施形態に係る音源装置における複数のプログラムコードの実行イメージを示す図である。この図に示すデータは、ワークメモリ８３と制御部Ｂとの間で授受される。この音源装置は、拡張ハードウェア１０２に相当するハードウェアを四つ備えている。また、ＤＳＰ１０１において演算部Ａを構成していた部分に相当するハードウェアを四つ備えている。つまり、この音源装置は、四つの演算部Ａを備えており、一つのワークメモリ８３を四つの演算部Ａに共通して用いる。
【００４４】
この音源装置では、ＳＩＭＤで処理が行われる。具体的には、この音源装置におけるアクセス処理は、四つのスロット単位で行われる。このアクセス処理は、ワークメモリ８３から４組の第１の中間データ、第２の中間データ及び別のスロットに係る音データを一括して読み出す第４処理と、ワークメモリ８３から４組の第１及び第２のパラメータを一括して読み出す第５処理と、４組のエンベロープデータ、フェイズデータ及び結果データを、４組の第１の中間データ、第２の中間データ及び一のスロットに係る音データとして一括してワークメモリ８３に書き込む第６処理とを含む。
【００４５】
例えば、四つのスロット［ｎ〜ｎ＋３］に対応するアクセス処理は、第４処理として、ワークメモリ８３から、ｅｎｖ［ｎ〜ｎ＋３］、ｐｈａｓｅ［ｎ〜ｎ＋３］及びｏｐｅ［ｍ〜ｍ＋３］を一括して読み出す処理を、第５処理として、ワークメモリ８３から、ＡＤＳＲ［ｎ〜ｎ＋３］、ＴＬ［ｎ〜ｎ＋３］、ＮＴ［ｎ〜ｎ＋３］及びＭＬ［ｎ〜ｎ＋３］を一括して読み出す処理を、第６処理として、ｅｎｖ［ｎ〜ｎ＋３］、ｐｈａｓｅ［ｎ〜ｎ＋３］及びｏｐｅ［ｎ〜ｎ＋３］を一括してワークメモリ８３に書き込む処理を含む。
【００４６】
つまり、本実施形態では、ワークメモリ８３への３ワード×４スロット＝１２ワード（１９２ビット）単位のアクセスが行われる。そして、本実施形態では、ハードウェアによって１ステップ当たり２スロット分のスロット演算が行われる。よって、本実施形態によれば、４ステップで４スロット分の処理を実行可能である。これは、１ステップで１スロットの処理を実行するのと等価な速度である。つまり、本実施形態によれば、ハードＦＭ音源と同等の処理速度を得ることができる。
【００４７】
＜変形例＞
第１の実施形態を変形し、１サンプリング期間分のプログラムコードについてのプログラム実行処理が終了すると、１サンプリング期間が終了するまで、カスタムＤＳＰ１０がサンプリング周期とは非同期の別の処理を行う形態としてもよい。また、第２の実施形態を変形し、演算部Ａの数（ｋ）を、３以下としてもよいし、５以上としてもよい。この場合、演算部Ａの数に応じて、一括して処理するスロットの数も増減させるべきである。また、各実施形態を変形し、１スロット当たり２ワード以下のワード単位でアクセスを行う形態としてもよいし、１スロット当たり４ワード以上のワード単位でアクセスを行う形態としてもよいし、ＤＳＰ１０１が行う処理をＣＰＵが行う形態としてもよい。これらの形態は、本発明の技術的範囲に含まれ得る。
【図面の簡単な説明】
【００４８】
【図１】本発明の第１の実施形態に係る音源装置１００を備える装置のハードウェア構成を示すブロック図である。
【図２】音源装置１００のカスタムＤＳＰ１０におけるプログラム実行処理の流れの一例を示す図である。
【図３】一般的なソフトＦＭ音源のスロット［ｎ］に係る複数のプログラムコードの実行イメージを示す図である。
【図４】カスタムＤＳＰ１０のＦＭ機能部［ｎ］に係るＦＭコード群の実行イメージを示す図である。
【図５】カスタムＤＳＰ１０におけるリソースの分配イメージを示す図である。
【図６】本発明の第２の実施形態に係る音源装置における複数のプログラムコードの実行イメージを示す図である。
【図７】ハードＦＭ音源の基本スロットの構成を示すブロック図である。
【符号の説明】
【００４９】
１０…カスタムＤＳＰ、２０…オペレータ（ＯＰ）、３０…エンベロープジェネレータ（ＥＧ）、４０…フェイズジェネレータ（ＰＧ）、８１…マイコンＩ／Ｆ、８２…オーディオコーデック、８３…ワークメモリ、８４…プログラムメモリ、９１…ホストＣＰＵ、９２…アナログ回路、１００…音源装置。
【図１】
0005071124.tif 000002
【図２】
0005071124.tif 000003
【図３】
0005071124.tif 000004
【図４】
0005071124.tif 000005
【図５】
0005071124.tif 000006
【図６】
0005071124.tif 000007
【図７】
0005071124.tif 000008