(57)【特許請求の範囲】
【請求項１】
固定小数点型のビット列として表された基礎係数を順次に特定する特定手段と、
前記特定手段によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が０でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が０である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換手段と、
前記変換手段から出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算手段と、
前記乗算手段から出力された乗算データに対し、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施して出力するシフト手段と
を具備するデータ処理装置。
【請求項２】
第１のモードおよび第２のモードのいずれかを指定する制御手段を具備し、
前記変換手段は、前記制御手段によって前記第１のモードが指定されている場合に、前記特定手段によって特定された基礎係数をそのまま前記演算用係数として出力する一方、前記制御手段によって前記第２のモードが指定されている場合に、前記仮数部を変換して得られる演算用係数と前記指数部とを出力し、
前記シフト手段は、前記制御手段によって前記第１のモードが指定されている場合に、前記乗算データをそのまま出力する一方、前記制御手段によって前記第２のモードが指定されている場合に、前記乗算データに対して前記ビットシフトを施して出力する
請求項１に記載のデータ処理装置。
【請求項３】
前記基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、
前記特定手段は、前記基礎係数が前記初期値から前記補間回数に応じた回数の更新を経て前記目標値に至るように、前記基礎係数を順次に更新する
請求項１または２に記載のデータ処理装置。
【請求項４】
前記特定手段は、複数の基礎係数を特定し、
前記変換手段は、前記複数の基礎係数の各々について前記演算用係数および前記指数部を出力し、
前記乗算手段は、処理対象たる複数のサンプルデータの各々について、前記複数の基礎係数から得られた演算用係数のいずれかを用いた乗算を行なうとともに、各サンプルデータについて得られた乗算データを出力し、
前記シフト手段は、前記乗算手段から出力された複数の乗算データの各々について、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施し、複数のシフトデータを加算する累積手段に対して、前記ビットシフトにより得られたシフトデータを出力する
請求項１に記載のデータ処理装置。
【請求項５】
前記複数の基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、
前記特定手段は、前記複数の基礎係数の各々が、当該基礎係数について前記取得手段が取得した初期値から補間回数に応じた回数の更新を経て目標値に至るように、当該基礎係数を順次に更新する
請求項４に記載のデータ処理装置。
【請求項６】
コンピュータに、
固定小数点型のビット列として表された基礎係数を特定する特定処理と、
前記特定処理によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が０でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が０である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換処理と、
前記変換処理によって出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算処理と、
前記乗算処理によって出力された乗算データに対し、前記変換処理によって出力された指数部が示す数値に応じたビットシフトを施して出力するシフト処理と
を実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音を表すデータなどのデジタルデータに対して各種の処理を施す技術に関し、特に、デジタルデータに乗ぜられる係数の値を順次に変更するための技術に関する。
【０００２】
【従来の技術】
音を表すデジタルデータ（以下「サンプルデータ」という）に対してエコーやリバーブといった各種の音楽的な効果を付与する装置（例えばＤＳＰ（Digital Signal Processor））が普及している。この種の装置において実行される典型的な処理のひとつとして、サンプルデータと特定の係数（以下「演算用係数Ｃx」という）とを乗算する処理がある。この乗算に際して演算用係数Ｃxの値を段階的に増加または減少させれば、楽音の音量を段階的に増加させるフェードインや音量を段階的に減少させるフェードアウトなどの効果が得られる（例えば特許文献１参照）。
【０００３】
演算用係数Ｃxを初期値Ｃstartから目標値ＣendまでＮ段階にわたって徐々に変化させる場合、各時点における演算用係数Ｃxの値は以下のように算定される。
初期値：Ｃx＝Ｃstart
第１段階：Ｃx＝Ｃstart＋｛（Ｃend−Ｃstart）／Ｎ｝×１
第２段階：Ｃx＝Ｃstart＋｛（Ｃend−Ｃstart）／Ｎ｝×２
……
第Ｎ段階：Ｃx＝Ｃstart＋｛（Ｃend−Ｃstart）／Ｎ｝×Ｎ＝Ｃend
この方法によれば、例えば「０」から「１」まで「０．１」ずつ増加するように（すなわち０→０．１→０．２→０．３→…→０．９→１といった具合に）、演算用係数Ｃxの値を段階的に変化させることができる。
【０００４】
【特許文献１】
特開平７−１２２９７３号公報（段落００２１、段落００２２、および第１図）
【０００５】
【発明が解決しようとする課題】
しかしながら、この方法によって演算用係数Ｃxを変化させた場合には、各段階ごとの演算用係数Ｃxの変化量Ｃaddは一定（Ｃadd＝（Ｃend−Ｃstart）／Ｎ）となる。このため、この演算用係数ＣxとサンプルデータＸとの乗算結果に基づいて発せられる音が聴感上において単調になってしまうという問題があった。この問題を解消するために、演算用係数Ｃxを初期値から目標値に向かって指数関数的に変化させる構成も考えられる。しかしながら、この構成のもとでは、演算用係数Ｃxの変化量Ｃaddを指数関数的に変化させるための演算回路を別途に設ける必要があり、回路規模の肥大化を招くといった問題が生じ得る。
【０００６】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、演算に供される係数を決定するための特別な回路を要することなく、その係数の多様な変化を実現することにある。
【０００７】
【課題を解決するための手段】
請求項１に係る発明は、固定小数点型のビット列として表された基礎係数を順次に特定する特定手段と、前記特定手段によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が０でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が０である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換手段と、前記変換手段から出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算手段と、前記乗算手段から出力された乗算データに対し、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施して出力するシフト手段とを具備するデータ処理装置を提供する。
【０００８】
請求項２に係る発明は、請求項１に記載のデータ処理装置において、第１のモードおよび第２のモードのいずれかを指定する制御手段を具備し、前記変換手段は、前記制御手段によって前記第１のモードが指定されている場合に、前記特定手段によって特定された基礎係数をそのまま前記演算用係数として出力する一方、前記制御手段によって前記第２のモードが指定されている場合に、前記仮数部を変換して得られる演算用係数と前記指数部とを出力し、前記シフト手段は、前記制御手段によって前記第１のモードが指定されている場合に、前記乗算データをそのまま出力する一方、前記制御手段によって前記第２のモードが指定されている場合に、前記乗算データに対して前記ビットシフトを施して出力することを特徴とする。
【０００９】
請求項３に係る発明は、請求項１または２に記載のデータ処理装置において、前記基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、前記特定手段は、前記基礎係数が前記初期値から前記補間回数に応じた回数の更新を経て前記目標値に至るように、前記基礎係数を順次に更新することを特徴とする。
【００１０】
請求項４に係る発明は、請求項１に記載のデータ処理装置において、前記特定手段は、複数の基礎係数を特定し、前記変換手段は、前記複数の基礎係数の各々について前記演算用係数および前記指数部を出力し、前記乗算手段は、処理対象たる複数のサンプルデータの各々について、前記複数の基礎係数から得られた演算用係数のいずれかを用いた乗算を行なうとともに、各サンプルデータについて得られた乗算データを出力し、前記シフト手段は、前記乗算手段から出力された複数の乗算データの各々について、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施し、複数のシフトデータを加算する累積手段に対して、前記ビットシフトにより得られたシフトデータを出力することを特徴とする。
【００１１】
請求項５に係る発明は、請求項４に記載のデータ処理装置において、前記複数の基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、前記特定手段は、前記複数の基礎係数の各々が、当該基礎係数について前記取得手段が取得した初期値から補間回数に応じた回数の更新を経て目標値に至るように、当該基礎係数を順次に更新することを特徴とする。
【００１２】
請求項６に係る発明は、コンピュータに、固定小数点型のビット列として表された基礎係数を特定する特定処理と、前記特定処理によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が０でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が０である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換処理と、前記変換処理によって出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算処理と、前記乗算処理によって出力された乗算データに対し、前記変換処理によって出力された指数部が示す数値に応じたビットシフトを施して出力するシフト処理とを実行させるためのプログラムを提供する。
【００１３】
【発明の実施の形態】
以下、図面を参照して、本発明の好適な実施形態について説明する。
【００１４】
＜Ａ：実施形態の構成＞
図１は、本発明の実施形態に係るミキサの構成を示すブロック図である。このミキサ８０は、楽音を表す信号（以下「楽音信号」という）が電子楽器などの上位装置から入力端子８１に入力されると、この楽音信号に対して各種の音楽的な効果（例えば音響効果）を付与したうえで出力端子８５から出力する装置である。出力端子８５には、ミキサ８０から出力された楽音信号を増幅するためのアンプ８７が接続されている。スピーカ８８は、このアンプ８７から出力された楽音信号に基づいて音を発する。
【００１５】
図１に示すように、ミキサ８０は、Ａ／Ｄ（Analog to Digital）変換部８２、データ処理装置１００、累積部８３、Ｄ／Ａ（Digital to Analog）変換部８４および操作部８６を有する。このうちＡ／Ｄ変換部８２は、入力端子８１から入力された楽音信号をサンプリングし、これにより得られたデジタルデータたるサンプルデータＸを順次に出力する。本実施形態におけるひとつのサンプルデータＸは合計２４ビットのデータである。
【００１６】
データ処理装置１００は、Ａ／Ｄ変換部８２から出力されたサンプルデータＸに対して各種の演算処理を行なう。本実施形態においては、サンプルデータＸに対してフェードインまたはフェードアウトの効果が付与される場合を想定する。一方、操作部８６は、キーや摘みといった多数の操作子を備えており、利用者による操作に応じた信号をデータ処理装置１００に出力する。利用者は、この操作部８６を適宜に操作することにより、データ処理装置１００による演算処理の内容を任意に変更することができる。
【００１７】
累積部８３は、データ処理装置１００から出力されたデータに対し、必要に応じて累積演算を行なうものである。累積部８３から出力されたデータは、Ｄ／Ａ変換部８４によってアナログ信号たる楽音信号に変換された後に出力端子８５から出力される。
【００１８】
次に、図２は、データ処理装置１００の構成を示すブロック図である。同図に示すように、データ処理装置１００は、データレジスタ１、係数レジスタ２、セレクタ３、乗算部４、シフタ５、係数決定部６および制御部７を有する。このうちセレクタ３、乗算部４、シフタ５、係数決定部６および制御部７の各部は、ＤＳＰ（Digital Signal Processor）などのハードウェアのみによって実現されてもよいし、ＣＰＵ（Central Processing Unit）などのハードウェアと当該ＣＰＵが実行するプログラムとの協働によって実現されてもよい。
【００１９】
データレジスタ１は、Ａ／Ｄ変換部８２から供給されたサンプルデータＸを記憶するための手段である。一方、係数レジスタ２は、基礎係数Ｃfを記憶するための手段である。この基礎係数Ｃfは、サンプルデータＸに乗算されるべき演算用係数Ｃxを算定するための基礎となる係数であり、サンプルデータＸと同様に合計２４ビットのビット列である。基礎係数Ｃfは、固定小数点型のビット列として表現されている。
【００２０】
係数決定部６は、制御部７による制御のもと、新たな基礎係数Ｃfを順次に特定して係数レジスタ２に出力する。より具体的には、係数決定部６は、初期値Ｃstartから目標値Ｃendに向かって段階的に変化するように基礎係数Ｃfの値を算定する。係数レジスタ２は、係数決定部６から新たな基礎係数Ｃfが供給されるたびに、それまでに保持していた基礎係数Ｃfを新たな基礎係数Ｃfに更新する。
【００２１】
制御部７は、データ処理装置１００の各部を制御するための手段である。例えば、制御部７は、操作部８６に与えられた操作に応じて、動作モードを示す信号（以下「コントロール信号」という）CTRをセレクタ３およびシフタ５に出力する。ここで、本実施形態においては、データ処理装置１００の動作モードとして第１のモードと第２のモードとが用意されている。このうち第１のモードは、上述した従来の技術と同様に、サンプルデータＸに乗算されるべき演算用係数Ｃxを直線的に変化させるモードである。これに対し、第２のモードは、サンプルデータＸに乗ぜられる係数を指数関数的に変化させるモードである。利用者は、操作部８６を操作することによって第１および第２のモードのいずれかを任意に選択することができる。制御部７は、第１のモードが選択されている場合にはコントロール信号CTRをＬレベルとする一方、第２のモードが選択されている場合にはコントロール信号CTRをＨレベルとする。
【００２２】
セレクタ３は、コントロール信号CTRによって指示される動作モードに応じて、係数レジスタ２に格納された基礎係数Ｃfと、この基礎係数Ｃfに所定の処理を施して得られる係数とのうちのいずれかを選択する手段である。このセレクタ３によって選択された係数は、演算用係数Ｃxとして乗算部４に出力される。さらに詳述すると、第１のモードが選択されている場合、セレクタ３は、係数レジスタ２に格納された基礎係数Ｃfを、そのまま（すなわち何らの処理も施すことなく）演算用係数Ｃxとして出力する。これに対し、第２のモードが選択されている場合、セレクタ３は、基礎係数Ｃfを浮動小数点型のビット列として取り扱い、この基礎係数Ｃfを所定の変換則に従って変換する。そして、セレクタ３は、この変換により得られた数値を演算用係数Ｃxとして出力する。より具体的には、セレクタ３は、基礎係数Ｃfを仮数部Ｙと指数部Ｅとに区分し、このうち仮数部Ｙを所定の変換則に従って変換したものを演算用係数Ｃxとして乗算部４に出力する一方、指数部Ｅをシフタ５に出力する。なお、仮数部Ｙの変換則については後に詳述する。
【００２３】
乗算部４は、入力端子Ｔ１と入力端子Ｔ２とに供給されたデータを積算し、これにより得られたデータを乗算データＸtとして出力する。乗算部４の入力端子Ｔ１にはサンプルデータＸがデータレジスタ１から順次に供給される。一方、入力端子Ｔ２には演算用係数Ｃxがセレクタ３から順次に供給される。したがって、乗算部４は、サンプルデータＸと演算用係数Ｃxとの乗算により得られたデータを乗算データＸtとしてシフタ５に出力する。
【００２４】
シフタ５は、コントロール信号CTRによって指示される動作モードに応じて乗算データＸtにビットシフトを施し、これにより得られたデータをシフトデータＸsとして出力する。より具体的には、第１のモードが選択されている場合、シフタ５は、乗算データＸtに対してビットシフトを施すことなくそのまま出力する。これに対し、第２のモードが選択されている場合、シフタ５は、乗算データＸtを、セレクタ３から供給される指数部Ｅに応じたビット数だけビットシフトさせたデータをシフトデータＸsとして出力する。このシフトデータＸsは累積部８３に供給されて加算処理に供される。
【００２５】
＜Ｂ：実施形態の動作＞
次に、本実施形態の動作を説明する。なお、以下の説明において、ある数値が「“」および「”」によって囲まれている場合には、その数値が二進数として表記されていることを示している。
【００２６】
まず、上位装置から入力端子８１に入力された楽音信号が、Ａ／Ｄ変換部８２によってサンプルデータＸに変換されたうえでデータ処理装置１００に供給される。このサンプルデータＸは、データレジスタ１に順次に格納される。
【００２７】
一方、利用者は、操作部８６を適宜に操作することにより、サンプルデータＸに対する乗算処理に関するパラメータと動作モードとを入力する。乗算処理に関するパラメータは、基礎係数Ｃfの初期値Ｃstart、目標値Ｃend、補間回数Ｍおよび補間時間Ｔである。このうち補間回数Ｍは、初期値Ｃstartから目標値Ｃendまでの間において基礎係数Ｃfを補間する回数を示す数値である。一方、補間時間Ｔは、基礎係数Ｃfが初期値Ｃstartから変化して目標値Ｃendに至るまでの時間を示している。制御部７は、操作部８６に与えられた操作に応じて初期値Ｃstart、目標値Ｃend、補間回数Ｍおよび補間時間Ｔを取得し、これらのパラメータを係数決定部６に出力する。また、制御部７は、初期値Ｃstartを係数レジスタ２に出力して記憶させる。
【００２８】
さらに、制御部７は、係数決定部６に対し、補間回数Ｍと補間時間Ｔとに応じた時間間隔でタイミングパルスＴＭを順次に出力する。このタイミングパルスＴＭは、係数決定部６が新たな基礎係数Ｃfの算定を行なうべきタイミングを指示するためのパルス信号である。したがって、利用者により指定された補間回数Ｍが大きいほど、または利用者により指定された補間時間Ｔが短いほど、各タイミングパルスＴＭが出力される時間間隔（すなわち係数決定部６が基礎係数Ｃfを算定する時間間隔）は短くなる。また、制御部７は、セレクタ３およびシフタ５に供給されるコントロール信号CTRを、選択された動作モードに応じたレベルに設定する。
【００２９】
一方、係数決定部６は、制御部７から供給されたパラメータに基づいて係数変化量Ｃaddを算定する。この係数変化量Ｃaddは、初期値Ｃstartから目標値Ｃendに至るまでの各段階間における基礎係数Ｃfの変化量であり、以下の式により算定される。
Ｃadd＝（Ｃstart−Ｃend）／Ｍ
【００３０】
また、係数決定部６は、制御部７からタイミングパルスＴＭが供給されるたびに、新たな基礎係数Ｃfを固定小数点型のビット列として算定し、この基礎係数Ｃfを係数レジスタ２に出力する。具体的には、係数決定部６は、タイミングパルスＴＭが供給されるたびに係数変化量Ｃaddだけ増加するように基礎係数Ｃfを算定する。したがって、初期値Ｃstartから目標値Ｃendに至るまでの合計Ｍ個の段階のうち第ｉ（ｉは０≦ｉ≦Ｍを満たす整数）段階における基礎係数Ｃfの数値は以下の式により算定される。
Ｃf(i)＝Ｃstart＋Ｃadd×ｉ
ただし、基礎係数Ｃfが初期値Ｃstartに一致する段階を第０段階とし、基礎係数Ｃfが目標値Ｃendに一致することになる段階を第Ｍ段階とする。
【００３１】
以上の動作により、係数レジスタ２に格納される基礎係数Ｃfは、タイミングパルスＴＭが制御部７から出力されるたびに係数変化量Ｃaddだけ増加して第Ｍ段階目に目標値Ｃendに到達する。係数レジスタ２に格納された基礎係数Ｃfはセレクタ３に対して順次に出力される。ここで、セレクタ３およびシフタ５の動作は、利用者によって選択された動作モードに応じて異なる。このため、以下では、第１のモードが選択されている場合と第２のモードが選択されている場合とに分けて以後の動作を説明する。
【００３２】
（１）第１のモードが選択されている場合
第１のモードが選択されている場合、セレクタ３は、係数レジスタ２から出力される基礎係数Ｃfをそのまま乗算部４に演算用係数Ｃxとして出力する。この場合、セレクタ３からシフタ５に対する指数部Ｅの供給は実行されない。
【００３３】
一方、乗算部４は、データレジスタ１から供給されるサンプルデータＸとセレクタ３から供給される演算用係数Ｃxとを乗算し、これによって得られた乗算データＸtを出力する。一方、シフタ５は、乗算部４から供給される乗算データＸtをそのままシフトデータＸsとして出力する。このシフトデータＸsは、累積部８３によって累積演算に供された後に、Ｄ／Ａ変換部８４によってアナログ信号たる楽音信号に変換されて出力端子８５から出力される。
【００３４】
ここで、図５のグラフＡは、第１のモードにおけるセレクタ３の入力値（基礎係数Ｃfの数値）と出力値（演算用係数Ｃxの数値）との関係を示している。同図において、横軸はセレクタ３に対する入力値を表し、縦軸はセレクタ３からの出力値を表している。同図に示すように、第１のモードが選択されている場合には、セレクタ３に対する入力値と出力値とは等しくなる。一方、上述したように基礎係数Ｃfは直線的に変化するから、第１のモードにおいては、従来の技術と同様に、ミキサ８０から出力される楽音信号の信号レベルが直線的に変化することとなる。
【００３５】
（２）第２のモードが選択されている場合
一方、第２のモードが選択されている場合、セレクタ３は、係数レジスタ２から出力される基礎係数Ｃfを浮動小数点型のビット列として取り扱い、この基礎係数Ｃfを所定の変換則に従って変換するとともに、この変換により得られた数値を演算用係数Ｃxとして出力する。この変換の内容について詳述すると以下の通りである。
【００３６】
いま、図３に示すように、基礎係数Ｃfがビット“ｂ２３”からビット“ｂ０”までの合計２４個のビットからなるビット列である場合を想定する。なお、以下では、ビット列を構成する各ビットを、最上位ビットから数えて表現する。例えば、最上位ビットから数えて第３番目のビット（図３に示すビット“ｂ２１”）については、単に「第３番目のビット」と表記する。
【００３７】
セレクタ３は、基礎係数Ｃfのうち最上位ビット“ｂ２３”を符号ビットＳとして取り扱う。例えば、最上位ビット“ｂ２３”が“０”であれば基礎係数Ｃfは正数であり、同ビットが“１”であれば基礎係数Ｃfは負数であるといった具合である。
【００３８】
第２のモードが選択されている場合、セレクタ３は、基礎係数Ｃfのビット列の一部を仮数部Ｙとし、他の一部を指数部Ｅとして取り扱う。さらに詳述すると、セレクタ３は、基礎係数Ｃfのうち第２番目のビット“ｂ２２”から第５番目のビット“ｂ１９”までの合計４ビットからなるビット列を指数部Ｅとして特定する。また、セレクタ３は、基礎係数Ｃfのうち、符号ビットＳ（最上位ビット“ｂ２３”）と、第６番目のビット“ｂ１８”から第２４番目のビット“ｂ０”までの合計１９ビットと、４ビット分の“０”データとを最上位からみてこの順に配列させたビット列を仮数部Ｙとして特定する。
【００３９】
そして、セレクタ３は、この仮数部Ｙを所定の変換則に従って変換して演算用係数Ｃxを生成する。さらに詳述すると、この変換によって得られる演算用係数Ｃxの内容は、指数部Ｅが十進数としての「０」に等しいか否かに応じて異なる。より具体的には、図３に示すように、指数部Ｅが「０」でない場合、セレクタ３は、基礎係数Ｃfの符号ビットＳ“ｂ２３”と、この符号ビットＳを反転したビット“！ｂ２３”と、ビット“ｂ１８”からビット“ｂ０”までの１９ビットと、３ビット分の“０”データとを最上位からみてこの順に配列させた合計２４ビットのビット列を、演算用係数Ｃxとして生成する。すなわち、十進数表記に即して表現すれば、仮数部Ｙは、（０．５＋０．５Ｙ）または（−０．５＋０．５Ｙ）に変換されることとなる。一方、指数部Ｅが「０」である場合、セレクタ３は、基礎係数Ｃfの符号ビットＳ“ｂ２３”と、この符号ビットＳに等しいビット“ｂ２３”と、ビット“ｂ１８”からビット“ｂ０”までの１９ビットと、３ビット分の“０”データとを最上位からみてこの順に配列させた合計２４ビットのビット列を、演算用係数Ｃxとして生成する。すなわち、十進数表記に即して表現すれば、仮数部Ｙは（０．５Ｙ）に変換されることとなる。セレクタ３は、以上の手順を経て得られた演算用係数Ｃxを乗算部４に出力する一方、指数部Ｅをシフタ５に出力する。
【００４０】
一方、乗算部４は、データレジスタ１から供給されるサンプルデータＸとセレクタ３から供給される演算用係数Ｃxとを乗算し、これによって得られた乗算データＸtをシフタ５に出力する。この乗算部４による演算の内容は、第１のモードが選択されている場合と変わらない。
【００４１】
次に、シフタ５は、乗算部４から供給される乗算データＸtを、セレクタ３から供給された指数部Ｅが示す数値に相当するビット数だけビットシフトし、これにより得られたビット列をシフトデータＸsとして出力する。上述したように指数部Ｅは４ビットであるから十進数としての「０」から「１５」までの数値をとり得る。したがって、シフタ５は、「０」ビットから「１５」ビットまでのいずれかのビット数だけ乗算データＸtをシフトする。シフタ５から出力されたシフトデータＸsは、累積部８３によって累積演算に供された後にアナログ信号たる楽音信号に変換されて出力端子８５から出力される。
【００４２】
ここで、第２のモードが選択されているときにセレクタ３と乗算部４とシフタ５とによって実行される演算の内容を符号ビットＳと指数部Ｅの十進数表示とに応じてまとめれば以下の通りになる。なお、以下の各式における「＾」はべき乗を表す演算子である。
（ａ）符号ビットＳ“ｂ２３”が“０”の場合（すなわち基礎係数Ｃfが正である場合）
▲１▼指数部Ｅが「０」でないとき
Ｘs＝２＾（Ｅ−１６）×（１＋Ｙ）×Ｘ
＝２＾（Ｅ−１５）×（０．５＋０．５Ｙ）×Ｘ
＝２＾（Ｅ−１５）×（０．９９９９…〜０．５）×Ｘ
▲２▼指数部Ｅが「０」のとき
Ｘs＝２＾（−１５）×Ｙ×Ｘ
＝２＾（−１４）×（０．５×Ｙ）×Ｘ
＝２＾（−１４）×（０．４９９９…〜０）×Ｘ
なお、上式において、「０．９９９９…〜０．５」とは、「０．５」以上「１」未満の数値である。同様に、「０．４９９９９…〜０」とは、「０」以上「０．５」未満の数値である。
（ｂ）符号ビットＳ“ｂ２３”が「１」の場合（すなわち基礎係数Ｃfが負である場合）
▲１▼指数部Ｅが「０」でないとき
Ｘs＝２＾（Ｅ−１６）×（−１＋Ｙ）×Ｘ
＝２＾（Ｅ−１５）×（−０．５＋０．５×Ｙ）×Ｘ
＝−２＾（Ｅ−１５）×（０．５００…１〜１．０）×Ｘ
▲２▼指数部Ｅが「０」のとき
Ｘs＝２＾（−１５）×Ｙ×Ｘ
＝２＾（−１４）×（０．５×Ｙ）×Ｘ
＝−２＾（−１４）×（０．００…１〜０．５）×Ｘ
なお、上式において、「０．５００…１〜１．０」とは、「０．５」よりも大きく「１．０」以下の数値である。同様に、「０．００…１〜０．５」とは、「０」よりも大きく「０．５」以下の数値である。
以上に示された演算により得られるシフトデータＸsの内容は、指数部Ｅの数値に応じて図４のように変化する。
【００４３】
図５に示すグラフＢは、第２のモードにおけるセレクタ３の入力値と出力値との関係を示している。すなわち、横軸はセレクタ３に対して入力される基礎係数Ｃfの数値を示し、縦軸はセレクタ３から出力される演算用係数Ｃxと指数部Ｅとを併せて浮動小数点型の数値と捉えたときの当該数値を示している。換言すれば、図５の縦軸は、上述した（ａ）および（ｂ）の演算を通じて結果的にサンプルデータＸに乗ぜられることとなる係数を示している。このグラフＢに示されるように、第２のモードにおけるセレクタ３の出力値は、入力値の増減に応じて指数関数的に変化する。したがって、シフタ５から出力されたシフトデータＸsによれば、第１のモードのように基礎係数Ｃfを固定小数点型のビット列として取り扱った場合よりも、楽音の音圧レベルの変化を人間の聴覚にとって自然なものとすることができる。
【００４４】
また、第２のモードにおけるセレクタ３への入力値に対する出力値（浮動小数点型のビット列の数値）の大小関係は、第１のモードにおけるセレクタ３への入力値に対する出力値（固定小数点型のビット列の数値）の大小関係と一致する。すなわち、第２のモードにおける浮動小数点型のビット列の数値と、第１のモードにおける固定小数点型のビット列の数値とは、双方ともセレクタ３への入力値の増加に伴なって増加する（セレクタ３への入力値の減少に伴なって減少する）。したがって、固定小数点型の基礎係数Ｃfをセレクタ３において浮動小数点型の係数として取り扱っているにも拘わらず、不自然な楽音が発せられることはない。このように、本実施形態によれば、演算用係数Ｃxを指数関数的に変化させるための演算回路を別途に設けることなく、その係数の多様な変化が実現される。
【００４５】
しかも、本実施形態によれば、これらの効果を、ビット列を単に並べ替える構成によって得ることができる。したがって、例えば基礎係数Ｃfを指数関数的に変化させるための演算回路を別途に設けた場合と比較して、構成の簡素化を図るとともに回路規模の肥大化を抑えることができる。
【００４６】
＜Ｃ：変形例＞
以上の形態は本発明の一例に過ぎず、この形態には本発明の趣旨の範囲内において種々の変形を施すことが可能である。具体的には、以下のような変形例が考えられる。
【００４７】
＜Ｃ−１：変形例１＞
係数レジスタ２として複数の基礎係数Ｃfを格納する記憶手段を採用し、その各々を独立に更新し得る構成としてもよい。
図６は、本変形例に係るデータ処理装置の構成を示すブロック図である。同図に示すように、データ処理装置２００の係数レジスタ２には、係数決定部６によって生成されたｎ個の基礎係数Ｃf1〜Ｃfnが記憶される。この係数レジスタ２には、基礎係数Ｃf1〜Ｃfnのいずれかが格納された記憶領域を指定するための信号（以下「選択信号」という）SELが制御部７から供給される。係数決定部６から新たな基礎係数Ｃfi（ｉは１≦ｉ≦ｎを満たす正数）が供給されると、係数レジスタ２は、選択信号SELによって指定された記憶領域の基礎係数Ｃfを新たな基礎係数Ｃfiに更新する。一方、制御部７は、利用者による操作部８６への操作に基づき、ｎ個の基礎係数Ｃf1〜Ｃfnの各々について、初期値Ｃstart、目標値Ｃendおよび補間回数Ｍを特定して係数決定部６に指示する。係数決定部６は、ｎ個の基礎係数Ｃf1〜Ｃfnの各々が、当該基礎係数Ｃfiについて特定された初期値Ｃstartから補間回数Ｍに応じた回数の更新を経て目標値Ｃendに至るように、新たな基礎係数Ｃfiを特定して係数レジスタ２に出力する。この構成により、係数レジスタ２に格納されたｎ個の基礎係数Ｃf1〜Ｃfnの各々が、初期値Ｃstartから目標値Ｃendまで独立して段階的に更新されることとなる。
【００４８】
一方、データレジスタ１には、Ａ／Ｄ変換部８２による過去のサンプリングによって得られたｎ個のサンプルデータＸm〜Ｘm-n+1が格納される。データレジスタ１は、Ａ／Ｄ変換部８２から新たなサンプルデータＸが供給されるたびに、その時点において最も古いサンプルデータＸを破棄するとともに新たなサンプルデータＸを記憶する。
【００４９】
以上の構成のもと、係数レジスタ２に格納されたｎ個の基礎係数Ｃf1〜Ｃfnの各々は、Ａ／Ｄ変換部８２による楽音信号のサンプリングに同期して読み出されてセレクタ３に出力される。一方、セレクタ３、乗算部４およびシフタ５は、ｎ個の基礎係数Ｃf1〜Ｃfnの各々について、上記実施形態に示された処理を動作モードに応じて実行する。詳述すると以下の通りである。
【００５０】
まず、第１のモードが選択されている場合、セレクタ３は、ｎ個の基礎係数Ｃf1〜Ｃfnをそのまま乗算部４に出力する。これに対し、第２のモードが選択されている場合、セレクタ３は、ｎ個の基礎係数Ｃf1〜Ｃfnの各々について演算用係数Ｃxと指数部Ｅとを生成して出力する。また、乗算部４は、動作モードに拘わらず、データレジスタ１に格納されたｎ個のサンプルデータＸの各々と、セレクタ３から供給されるｎ個の演算用係数Ｃxの各々とを乗算し、これにより得られたｎ個の乗算データＸtを出力する。シフタ５は、第１のモードが選択されている場合には乗算データＸtをそのまま出力する一方、第２のモードが選択されている場合には、ｎ個の乗算データＸtの各々について、セレクタ３から出力された指数部Ｅに応じたビットシフトを施して出力する。シフタ５から出力されたｎ個のシフトデータＸsは累積部８３によって加算される。
【００５１】
この構成によれば、ｎ個の基礎係数Ｃf1〜Ｃfnの各々を初期値Ｃstartから目標値Ｃendまで段階的に変化させることによって、エコーやリバーブといった音響効果について指数関数的な変化を実現することができる。
【００５２】
＜Ｃ−２：変形例２＞
基礎係数Ｃfのうちいずれのビット列を仮数部Ｙおよび指数部Ｅとして取り扱うかは任意に変更され得る。要は、基礎係数Ｃfから重複しないように２種類のビット列が抽出され、このうちの一方が仮数部Ｙとして用いられるとともに他方が指数部Ｅとして用いられる構成であればよい。また、基礎係数ＣfのすべてのビットがサンプルデータＸに対する演算に供される必要は必ずしもなく、その一部のみが用いられる構成としてもよい。例えば、最下位ビットから数えて数ビットを切り捨て、残りのビット列から仮数部Ｙおよび指数部Ｅを特定する構成としてもよい。さらに、基礎係数Ｃfのうち仮数部Ｙとされるビット列と指数部Ｅとされるビット列とを利用者が任意に選定できる構成としてもよい。
【００５３】
＜Ｃ−３：変形例３＞
上記実施形態においては、利用者が操作部８６を操作することによって動作モードが選定される構成を例示したが、動作モードを選定する構成はこれに限られない。例えば、上位装置からミキサ８０に対して動作モードが指示される構成としてもよい。また、上記実施形態においては、基礎係数Ｃfの初期値Ｃstart、目標値Ｃend、補間回数Ｍおよび補間時間Ｔが利用者によって入力される構成を例示したが、これらのパラメータが上位装置から入力される構成としてもよいし、あるいはデータ処理装置内に予め記憶されている構成としてもよい。
【００５４】
＜Ｃ−４：変形例４＞
上記実施形態においては、乗算部４から出力された乗算データＸtを指数部Ｅが示すビット数だけビットシフトする構成を例示したが、指数部Ｅの補数（例えば１の補数）に応じたビット数だけビットシフトする構成としてもよい。また、上記実施形態においては、基礎係数や演算用係数Ｃxを合計２４ビットのビット列としたが、これらの係数を表すビット列のビット数は任意に変更され得る。
【００５５】
【発明の効果】
以上に説明したように、本発明によれば、演算に供される係数を決定するための特別な回路を要することなく、その係数の多様な変化が実現される。
【図面の簡単な説明】
【図１】  本発明の実施形態に係るミキサの構成を示すブロック図である。
【図２】  ミキサが備えるデータ処理装置の構成を示すブロック図である。
【図３】  データ処理装置が備えるセレクタの動作を説明するための図である。
【図４】  第２のモードにおける演算内容を示す図である。
【図５】  各動作モードにおけるセレクタの入出力の関係を示すグラフである。
【図６】  変形例に係るデータ処理装置の構成を示すブロック図である。
【符号の説明】
１００，２００……データ処理装置、１……データレジスタ、２……係数レジスタ、３……セレクタ（変換手段）、４……乗算部（乗算手段）、５……シフタ（シフト手段）、６……係数決定部（特定手段）、７……制御部（制御手段、取得手段）、８３……累積部（累積手段）、Ｃf，Ｃf1〜Ｃfn……基礎係数、Ｃx……演算用係数、Ｘ……サンプルデータ、Ｘt……乗算データ、Ｘs……シフトデータ、Ｃstart……初期値、Ｃend……目標値、Ｍ……補間回数、Ｙ……仮数部、Ｅ……指数部。
【図１】
0004127130.tif 000002
【図２】
0004127130.tif 000003
【図３】
0004127130.tif 000004
【図４】
0004127130.tif 000005
【図５】
0004127130.tif 000006
【図６】
0004127130.tif 000007