JP4127130B2 - データ処理装置およびプログラム - Google Patents
データ処理装置およびプログラム Download PDFInfo
- Publication number
- JP4127130B2 JP4127130B2 JP2003176206A JP2003176206A JP4127130B2 JP 4127130 B2 JP4127130 B2 JP 4127130B2 JP 2003176206 A JP2003176206 A JP 2003176206A JP 2003176206 A JP2003176206 A JP 2003176206A JP 4127130 B2 JP4127130 B2 JP 4127130B2
- Authority
- JP
- Japan
- Prior art keywords
- coefficient
- bit
- multiplication
- data
- basic
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、楽音を表すデータなどのデジタルデータに対して各種の処理を施す技術に関し、特に、デジタルデータに乗ぜられる係数の値を順次に変更するための技術に関する。
【0002】
【従来の技術】
音を表すデジタルデータ(以下「サンプルデータ」という)に対してエコーやリバーブといった各種の音楽的な効果を付与する装置(例えばDSP(Digital Signal Processor))が普及している。この種の装置において実行される典型的な処理のひとつとして、サンプルデータと特定の係数(以下「演算用係数Cx」という)とを乗算する処理がある。この乗算に際して演算用係数Cxの値を段階的に増加または減少させれば、楽音の音量を段階的に増加させるフェードインや音量を段階的に減少させるフェードアウトなどの効果が得られる(例えば特許文献1参照)。
【0003】
演算用係数Cxを初期値Cstartから目標値CendまでN段階にわたって徐々に変化させる場合、各時点における演算用係数Cxの値は以下のように算定される。
初期値:Cx=Cstart
第1段階:Cx=Cstart+{(Cend−Cstart)/N}×1
第2段階:Cx=Cstart+{(Cend−Cstart)/N}×2
……
第N段階:Cx=Cstart+{(Cend−Cstart)/N}×N=Cend
この方法によれば、例えば「0」から「1」まで「0.1」ずつ増加するように(すなわち0→0.1→0.2→0.3→…→0.9→1といった具合に)、演算用係数Cxの値を段階的に変化させることができる。
【0004】
【特許文献1】
特開平7−122973号公報(段落0021、段落0022、および第1図)
【0005】
【発明が解決しようとする課題】
しかしながら、この方法によって演算用係数Cxを変化させた場合には、各段階ごとの演算用係数Cxの変化量Caddは一定(Cadd=(Cend−Cstart)/N)となる。このため、この演算用係数CxとサンプルデータXとの乗算結果に基づいて発せられる音が聴感上において単調になってしまうという問題があった。この問題を解消するために、演算用係数Cxを初期値から目標値に向かって指数関数的に変化させる構成も考えられる。しかしながら、この構成のもとでは、演算用係数Cxの変化量Caddを指数関数的に変化させるための演算回路を別途に設ける必要があり、回路規模の肥大化を招くといった問題が生じ得る。
【0006】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、演算に供される係数を決定するための特別な回路を要することなく、その係数の多様な変化を実現することにある。
【0007】
【課題を解決するための手段】
請求項1に係る発明は、固定小数点型のビット列として表された基礎係数を順次に特定する特定手段と、前記特定手段によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が0でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が0である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換手段と、前記変換手段から出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算手段と、前記乗算手段から出力された乗算データに対し、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施して出力するシフト手段とを具備するデータ処理装置を提供する。
【0008】
請求項2に係る発明は、請求項1に記載のデータ処理装置において、第1のモードおよび第2のモードのいずれかを指定する制御手段を具備し、前記変換手段は、前記制御手段によって前記第1のモードが指定されている場合に、前記特定手段によって特定された基礎係数をそのまま前記演算用係数として出力する一方、前記制御手段によって前記第2のモードが指定されている場合に、前記仮数部を変換して得られる演算用係数と前記指数部とを出力し、前記シフト手段は、前記制御手段によって前記第1のモードが指定されている場合に、前記乗算データをそのまま出力する一方、前記制御手段によって前記第2のモードが指定されている場合に、前記乗算データに対して前記ビットシフトを施して出力することを特徴とする。
【0009】
請求項3に係る発明は、請求項1または2に記載のデータ処理装置において、前記基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、前記特定手段は、前記基礎係数が前記初期値から前記補間回数に応じた回数の更新を経て前記目標値に至るように、前記基礎係数を順次に更新することを特徴とする。
【0010】
請求項4に係る発明は、請求項1に記載のデータ処理装置において、前記特定手段は、複数の基礎係数を特定し、前記変換手段は、前記複数の基礎係数の各々について前記演算用係数および前記指数部を出力し、前記乗算手段は、処理対象たる複数のサンプルデータの各々について、前記複数の基礎係数から得られた演算用係数のいずれかを用いた乗算を行なうとともに、各サンプルデータについて得られた乗算データを出力し、前記シフト手段は、前記乗算手段から出力された複数の乗算データの各々について、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施し、複数のシフトデータを加算する累積手段に対して、前記ビットシフトにより得られたシフトデータを出力することを特徴とする。
【0011】
請求項5に係る発明は、請求項4に記載のデータ処理装置において、前記複数の基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、前記特定手段は、前記複数の基礎係数の各々が、当該基礎係数について前記取得手段が取得した初期値から補間回数に応じた回数の更新を経て目標値に至るように、当該基礎係数を順次に更新することを特徴とする。
【0012】
請求項6に係る発明は、コンピュータに、固定小数点型のビット列として表された基礎係数を特定する特定処理と、前記特定処理によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が0でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が0である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換処理と、前記変換処理によって出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算処理と、前記乗算処理によって出力された乗算データに対し、前記変換処理によって出力された指数部が示す数値に応じたビットシフトを施して出力するシフト処理とを実行させるためのプログラムを提供する。
【0013】
【発明の実施の形態】
以下、図面を参照して、本発明の好適な実施形態について説明する。
【0014】
<A:実施形態の構成>
図1は、本発明の実施形態に係るミキサの構成を示すブロック図である。このミキサ80は、楽音を表す信号(以下「楽音信号」という)が電子楽器などの上位装置から入力端子81に入力されると、この楽音信号に対して各種の音楽的な効果(例えば音響効果)を付与したうえで出力端子85から出力する装置である。出力端子85には、ミキサ80から出力された楽音信号を増幅するためのアンプ87が接続されている。スピーカ88は、このアンプ87から出力された楽音信号に基づいて音を発する。
【0015】
図1に示すように、ミキサ80は、A/D(Analog to Digital)変換部82、データ処理装置100、累積部83、D/A(Digital to Analog)変換部84および操作部86を有する。このうちA/D変換部82は、入力端子81から入力された楽音信号をサンプリングし、これにより得られたデジタルデータたるサンプルデータXを順次に出力する。本実施形態におけるひとつのサンプルデータXは合計24ビットのデータである。
【0016】
データ処理装置100は、A/D変換部82から出力されたサンプルデータXに対して各種の演算処理を行なう。本実施形態においては、サンプルデータXに対してフェードインまたはフェードアウトの効果が付与される場合を想定する。一方、操作部86は、キーや摘みといった多数の操作子を備えており、利用者による操作に応じた信号をデータ処理装置100に出力する。利用者は、この操作部86を適宜に操作することにより、データ処理装置100による演算処理の内容を任意に変更することができる。
【0017】
累積部83は、データ処理装置100から出力されたデータに対し、必要に応じて累積演算を行なうものである。累積部83から出力されたデータは、D/A変換部84によってアナログ信号たる楽音信号に変換された後に出力端子85から出力される。
【0018】
次に、図2は、データ処理装置100の構成を示すブロック図である。同図に示すように、データ処理装置100は、データレジスタ1、係数レジスタ2、セレクタ3、乗算部4、シフタ5、係数決定部6および制御部7を有する。このうちセレクタ3、乗算部4、シフタ5、係数決定部6および制御部7の各部は、DSP(Digital Signal Processor)などのハードウェアのみによって実現されてもよいし、CPU(Central Processing Unit)などのハードウェアと当該CPUが実行するプログラムとの協働によって実現されてもよい。
【0019】
データレジスタ1は、A/D変換部82から供給されたサンプルデータXを記憶するための手段である。一方、係数レジスタ2は、基礎係数Cfを記憶するための手段である。この基礎係数Cfは、サンプルデータXに乗算されるべき演算用係数Cxを算定するための基礎となる係数であり、サンプルデータXと同様に合計24ビットのビット列である。基礎係数Cfは、固定小数点型のビット列として表現されている。
【0020】
係数決定部6は、制御部7による制御のもと、新たな基礎係数Cfを順次に特定して係数レジスタ2に出力する。より具体的には、係数決定部6は、初期値Cstartから目標値Cendに向かって段階的に変化するように基礎係数Cfの値を算定する。係数レジスタ2は、係数決定部6から新たな基礎係数Cfが供給されるたびに、それまでに保持していた基礎係数Cfを新たな基礎係数Cfに更新する。
【0021】
制御部7は、データ処理装置100の各部を制御するための手段である。例えば、制御部7は、操作部86に与えられた操作に応じて、動作モードを示す信号(以下「コントロール信号」という)CTRをセレクタ3およびシフタ5に出力する。ここで、本実施形態においては、データ処理装置100の動作モードとして第1のモードと第2のモードとが用意されている。このうち第1のモードは、上述した従来の技術と同様に、サンプルデータXに乗算されるべき演算用係数Cxを直線的に変化させるモードである。これに対し、第2のモードは、サンプルデータXに乗ぜられる係数を指数関数的に変化させるモードである。利用者は、操作部86を操作することによって第1および第2のモードのいずれかを任意に選択することができる。制御部7は、第1のモードが選択されている場合にはコントロール信号CTRをLレベルとする一方、第2のモードが選択されている場合にはコントロール信号CTRをHレベルとする。
【0022】
セレクタ3は、コントロール信号CTRによって指示される動作モードに応じて、係数レジスタ2に格納された基礎係数Cfと、この基礎係数Cfに所定の処理を施して得られる係数とのうちのいずれかを選択する手段である。このセレクタ3によって選択された係数は、演算用係数Cxとして乗算部4に出力される。さらに詳述すると、第1のモードが選択されている場合、セレクタ3は、係数レジスタ2に格納された基礎係数Cfを、そのまま(すなわち何らの処理も施すことなく)演算用係数Cxとして出力する。これに対し、第2のモードが選択されている場合、セレクタ3は、基礎係数Cfを浮動小数点型のビット列として取り扱い、この基礎係数Cfを所定の変換則に従って変換する。そして、セレクタ3は、この変換により得られた数値を演算用係数Cxとして出力する。より具体的には、セレクタ3は、基礎係数Cfを仮数部Yと指数部Eとに区分し、このうち仮数部Yを所定の変換則に従って変換したものを演算用係数Cxとして乗算部4に出力する一方、指数部Eをシフタ5に出力する。なお、仮数部Yの変換則については後に詳述する。
【0023】
乗算部4は、入力端子T1と入力端子T2とに供給されたデータを積算し、これにより得られたデータを乗算データXtとして出力する。乗算部4の入力端子T1にはサンプルデータXがデータレジスタ1から順次に供給される。一方、入力端子T2には演算用係数Cxがセレクタ3から順次に供給される。したがって、乗算部4は、サンプルデータXと演算用係数Cxとの乗算により得られたデータを乗算データXtとしてシフタ5に出力する。
【0024】
シフタ5は、コントロール信号CTRによって指示される動作モードに応じて乗算データXtにビットシフトを施し、これにより得られたデータをシフトデータXsとして出力する。より具体的には、第1のモードが選択されている場合、シフタ5は、乗算データXtに対してビットシフトを施すことなくそのまま出力する。これに対し、第2のモードが選択されている場合、シフタ5は、乗算データXtを、セレクタ3から供給される指数部Eに応じたビット数だけビットシフトさせたデータをシフトデータXsとして出力する。このシフトデータXsは累積部83に供給されて加算処理に供される。
【0025】
<B:実施形態の動作>
次に、本実施形態の動作を説明する。なお、以下の説明において、ある数値が「“」および「”」によって囲まれている場合には、その数値が二進数として表記されていることを示している。
【0026】
まず、上位装置から入力端子81に入力された楽音信号が、A/D変換部82によってサンプルデータXに変換されたうえでデータ処理装置100に供給される。このサンプルデータXは、データレジスタ1に順次に格納される。
【0027】
一方、利用者は、操作部86を適宜に操作することにより、サンプルデータXに対する乗算処理に関するパラメータと動作モードとを入力する。乗算処理に関するパラメータは、基礎係数Cfの初期値Cstart、目標値Cend、補間回数Mおよび補間時間Tである。このうち補間回数Mは、初期値Cstartから目標値Cendまでの間において基礎係数Cfを補間する回数を示す数値である。一方、補間時間Tは、基礎係数Cfが初期値Cstartから変化して目標値Cendに至るまでの時間を示している。制御部7は、操作部86に与えられた操作に応じて初期値Cstart、目標値Cend、補間回数Mおよび補間時間Tを取得し、これらのパラメータを係数決定部6に出力する。また、制御部7は、初期値Cstartを係数レジスタ2に出力して記憶させる。
【0028】
さらに、制御部7は、係数決定部6に対し、補間回数Mと補間時間Tとに応じた時間間隔でタイミングパルスTMを順次に出力する。このタイミングパルスTMは、係数決定部6が新たな基礎係数Cfの算定を行なうべきタイミングを指示するためのパルス信号である。したがって、利用者により指定された補間回数Mが大きいほど、または利用者により指定された補間時間Tが短いほど、各タイミングパルスTMが出力される時間間隔(すなわち係数決定部6が基礎係数Cfを算定する時間間隔)は短くなる。また、制御部7は、セレクタ3およびシフタ5に供給されるコントロール信号CTRを、選択された動作モードに応じたレベルに設定する。
【0029】
一方、係数決定部6は、制御部7から供給されたパラメータに基づいて係数変化量Caddを算定する。この係数変化量Caddは、初期値Cstartから目標値Cendに至るまでの各段階間における基礎係数Cfの変化量であり、以下の式により算定される。
Cadd=(Cstart−Cend)/M
【0030】
また、係数決定部6は、制御部7からタイミングパルスTMが供給されるたびに、新たな基礎係数Cfを固定小数点型のビット列として算定し、この基礎係数Cfを係数レジスタ2に出力する。具体的には、係数決定部6は、タイミングパルスTMが供給されるたびに係数変化量Caddだけ増加するように基礎係数Cfを算定する。したがって、初期値Cstartから目標値Cendに至るまでの合計M個の段階のうち第i(iは0≦i≦Mを満たす整数)段階における基礎係数Cfの数値は以下の式により算定される。
Cf(i)=Cstart+Cadd×i
ただし、基礎係数Cfが初期値Cstartに一致する段階を第0段階とし、基礎係数Cfが目標値Cendに一致することになる段階を第M段階とする。
【0031】
以上の動作により、係数レジスタ2に格納される基礎係数Cfは、タイミングパルスTMが制御部7から出力されるたびに係数変化量Caddだけ増加して第M段階目に目標値Cendに到達する。係数レジスタ2に格納された基礎係数Cfはセレクタ3に対して順次に出力される。ここで、セレクタ3およびシフタ5の動作は、利用者によって選択された動作モードに応じて異なる。このため、以下では、第1のモードが選択されている場合と第2のモードが選択されている場合とに分けて以後の動作を説明する。
【0032】
(1)第1のモードが選択されている場合
第1のモードが選択されている場合、セレクタ3は、係数レジスタ2から出力される基礎係数Cfをそのまま乗算部4に演算用係数Cxとして出力する。この場合、セレクタ3からシフタ5に対する指数部Eの供給は実行されない。
【0033】
一方、乗算部4は、データレジスタ1から供給されるサンプルデータXとセレクタ3から供給される演算用係数Cxとを乗算し、これによって得られた乗算データXtを出力する。一方、シフタ5は、乗算部4から供給される乗算データXtをそのままシフトデータXsとして出力する。このシフトデータXsは、累積部83によって累積演算に供された後に、D/A変換部84によってアナログ信号たる楽音信号に変換されて出力端子85から出力される。
【0034】
ここで、図5のグラフAは、第1のモードにおけるセレクタ3の入力値(基礎係数Cfの数値)と出力値(演算用係数Cxの数値)との関係を示している。同図において、横軸はセレクタ3に対する入力値を表し、縦軸はセレクタ3からの出力値を表している。同図に示すように、第1のモードが選択されている場合には、セレクタ3に対する入力値と出力値とは等しくなる。一方、上述したように基礎係数Cfは直線的に変化するから、第1のモードにおいては、従来の技術と同様に、ミキサ80から出力される楽音信号の信号レベルが直線的に変化することとなる。
【0035】
(2)第2のモードが選択されている場合
一方、第2のモードが選択されている場合、セレクタ3は、係数レジスタ2から出力される基礎係数Cfを浮動小数点型のビット列として取り扱い、この基礎係数Cfを所定の変換則に従って変換するとともに、この変換により得られた数値を演算用係数Cxとして出力する。この変換の内容について詳述すると以下の通りである。
【0036】
いま、図3に示すように、基礎係数Cfがビット“b23”からビット“b0”までの合計24個のビットからなるビット列である場合を想定する。なお、以下では、ビット列を構成する各ビットを、最上位ビットから数えて表現する。例えば、最上位ビットから数えて第3番目のビット(図3に示すビット“b21”)については、単に「第3番目のビット」と表記する。
【0037】
セレクタ3は、基礎係数Cfのうち最上位ビット“b23”を符号ビットSとして取り扱う。例えば、最上位ビット“b23”が“0”であれば基礎係数Cfは正数であり、同ビットが“1”であれば基礎係数Cfは負数であるといった具合である。
【0038】
第2のモードが選択されている場合、セレクタ3は、基礎係数Cfのビット列の一部を仮数部Yとし、他の一部を指数部Eとして取り扱う。さらに詳述すると、セレクタ3は、基礎係数Cfのうち第2番目のビット“b22”から第5番目のビット“b19”までの合計4ビットからなるビット列を指数部Eとして特定する。また、セレクタ3は、基礎係数Cfのうち、符号ビットS(最上位ビット“b23”)と、第6番目のビット“b18”から第24番目のビット“b0”までの合計19ビットと、4ビット分の“0”データとを最上位からみてこの順に配列させたビット列を仮数部Yとして特定する。
【0039】
そして、セレクタ3は、この仮数部Yを所定の変換則に従って変換して演算用係数Cxを生成する。さらに詳述すると、この変換によって得られる演算用係数Cxの内容は、指数部Eが十進数としての「0」に等しいか否かに応じて異なる。より具体的には、図3に示すように、指数部Eが「0」でない場合、セレクタ3は、基礎係数Cfの符号ビットS“b23”と、この符号ビットSを反転したビット“!b23”と、ビット“b18”からビット“b0”までの19ビットと、3ビット分の“0”データとを最上位からみてこの順に配列させた合計24ビットのビット列を、演算用係数Cxとして生成する。すなわち、十進数表記に即して表現すれば、仮数部Yは、(0.5+0.5Y)または(−0.5+0.5Y)に変換されることとなる。一方、指数部Eが「0」である場合、セレクタ3は、基礎係数Cfの符号ビットS“b23”と、この符号ビットSに等しいビット“b23”と、ビット“b18”からビット“b0”までの19ビットと、3ビット分の“0”データとを最上位からみてこの順に配列させた合計24ビットのビット列を、演算用係数Cxとして生成する。すなわち、十進数表記に即して表現すれば、仮数部Yは(0.5Y)に変換されることとなる。セレクタ3は、以上の手順を経て得られた演算用係数Cxを乗算部4に出力する一方、指数部Eをシフタ5に出力する。
【0040】
一方、乗算部4は、データレジスタ1から供給されるサンプルデータXとセレクタ3から供給される演算用係数Cxとを乗算し、これによって得られた乗算データXtをシフタ5に出力する。この乗算部4による演算の内容は、第1のモードが選択されている場合と変わらない。
【0041】
次に、シフタ5は、乗算部4から供給される乗算データXtを、セレクタ3から供給された指数部Eが示す数値に相当するビット数だけビットシフトし、これにより得られたビット列をシフトデータXsとして出力する。上述したように指数部Eは4ビットであるから十進数としての「0」から「15」までの数値をとり得る。したがって、シフタ5は、「0」ビットから「15」ビットまでのいずれかのビット数だけ乗算データXtをシフトする。シフタ5から出力されたシフトデータXsは、累積部83によって累積演算に供された後にアナログ信号たる楽音信号に変換されて出力端子85から出力される。
【0042】
ここで、第2のモードが選択されているときにセレクタ3と乗算部4とシフタ5とによって実行される演算の内容を符号ビットSと指数部Eの十進数表示とに応じてまとめれば以下の通りになる。なお、以下の各式における「^」はべき乗を表す演算子である。
(a)符号ビットS“b23”が“0”の場合(すなわち基礎係数Cfが正である場合)
▲1▼指数部Eが「0」でないとき
Xs=2^(E−16)×(1+Y)×X
=2^(E−15)×(0.5+0.5Y)×X
=2^(E−15)×(0.9999…〜0.5)×X
▲2▼指数部Eが「0」のとき
Xs=2^(−15)×Y×X
=2^(−14)×(0.5×Y)×X
=2^(−14)×(0.4999…〜0)×X
なお、上式において、「0.9999…〜0.5」とは、「0.5」以上「1」未満の数値である。同様に、「0.49999…〜0」とは、「0」以上「0.5」未満の数値である。
(b)符号ビットS“b23”が「1」の場合(すなわち基礎係数Cfが負である場合)
▲1▼指数部Eが「0」でないとき
Xs=2^(E−16)×(−1+Y)×X
=2^(E−15)×(−0.5+0.5×Y)×X
=−2^(E−15)×(0.500…1〜1.0)×X
▲2▼指数部Eが「0」のとき
Xs=2^(−15)×Y×X
=2^(−14)×(0.5×Y)×X
=−2^(−14)×(0.00…1〜0.5)×X
なお、上式において、「0.500…1〜1.0」とは、「0.5」よりも大きく「1.0」以下の数値である。同様に、「0.00…1〜0.5」とは、「0」よりも大きく「0.5」以下の数値である。
以上に示された演算により得られるシフトデータXsの内容は、指数部Eの数値に応じて図4のように変化する。
【0043】
図5に示すグラフBは、第2のモードにおけるセレクタ3の入力値と出力値との関係を示している。すなわち、横軸はセレクタ3に対して入力される基礎係数Cfの数値を示し、縦軸はセレクタ3から出力される演算用係数Cxと指数部Eとを併せて浮動小数点型の数値と捉えたときの当該数値を示している。換言すれば、図5の縦軸は、上述した(a)および(b)の演算を通じて結果的にサンプルデータXに乗ぜられることとなる係数を示している。このグラフBに示されるように、第2のモードにおけるセレクタ3の出力値は、入力値の増減に応じて指数関数的に変化する。したがって、シフタ5から出力されたシフトデータXsによれば、第1のモードのように基礎係数Cfを固定小数点型のビット列として取り扱った場合よりも、楽音の音圧レベルの変化を人間の聴覚にとって自然なものとすることができる。
【0044】
また、第2のモードにおけるセレクタ3への入力値に対する出力値(浮動小数点型のビット列の数値)の大小関係は、第1のモードにおけるセレクタ3への入力値に対する出力値(固定小数点型のビット列の数値)の大小関係と一致する。すなわち、第2のモードにおける浮動小数点型のビット列の数値と、第1のモードにおける固定小数点型のビット列の数値とは、双方ともセレクタ3への入力値の増加に伴なって増加する(セレクタ3への入力値の減少に伴なって減少する)。したがって、固定小数点型の基礎係数Cfをセレクタ3において浮動小数点型の係数として取り扱っているにも拘わらず、不自然な楽音が発せられることはない。このように、本実施形態によれば、演算用係数Cxを指数関数的に変化させるための演算回路を別途に設けることなく、その係数の多様な変化が実現される。
【0045】
しかも、本実施形態によれば、これらの効果を、ビット列を単に並べ替える構成によって得ることができる。したがって、例えば基礎係数Cfを指数関数的に変化させるための演算回路を別途に設けた場合と比較して、構成の簡素化を図るとともに回路規模の肥大化を抑えることができる。
【0046】
<C:変形例>
以上の形態は本発明の一例に過ぎず、この形態には本発明の趣旨の範囲内において種々の変形を施すことが可能である。具体的には、以下のような変形例が考えられる。
【0047】
<C−1:変形例1>
係数レジスタ2として複数の基礎係数Cfを格納する記憶手段を採用し、その各々を独立に更新し得る構成としてもよい。
図6は、本変形例に係るデータ処理装置の構成を示すブロック図である。同図に示すように、データ処理装置200の係数レジスタ2には、係数決定部6によって生成されたn個の基礎係数Cf1〜Cfnが記憶される。この係数レジスタ2には、基礎係数Cf1〜Cfnのいずれかが格納された記憶領域を指定するための信号(以下「選択信号」という)SELが制御部7から供給される。係数決定部6から新たな基礎係数Cfi(iは1≦i≦nを満たす正数)が供給されると、係数レジスタ2は、選択信号SELによって指定された記憶領域の基礎係数Cfを新たな基礎係数Cfiに更新する。一方、制御部7は、利用者による操作部86への操作に基づき、n個の基礎係数Cf1〜Cfnの各々について、初期値Cstart、目標値Cendおよび補間回数Mを特定して係数決定部6に指示する。係数決定部6は、n個の基礎係数Cf1〜Cfnの各々が、当該基礎係数Cfiについて特定された初期値Cstartから補間回数Mに応じた回数の更新を経て目標値Cendに至るように、新たな基礎係数Cfiを特定して係数レジスタ2に出力する。この構成により、係数レジスタ2に格納されたn個の基礎係数Cf1〜Cfnの各々が、初期値Cstartから目標値Cendまで独立して段階的に更新されることとなる。
【0048】
一方、データレジスタ1には、A/D変換部82による過去のサンプリングによって得られたn個のサンプルデータXm〜Xm-n+1が格納される。データレジスタ1は、A/D変換部82から新たなサンプルデータXが供給されるたびに、その時点において最も古いサンプルデータXを破棄するとともに新たなサンプルデータXを記憶する。
【0049】
以上の構成のもと、係数レジスタ2に格納されたn個の基礎係数Cf1〜Cfnの各々は、A/D変換部82による楽音信号のサンプリングに同期して読み出されてセレクタ3に出力される。一方、セレクタ3、乗算部4およびシフタ5は、n個の基礎係数Cf1〜Cfnの各々について、上記実施形態に示された処理を動作モードに応じて実行する。詳述すると以下の通りである。
【0050】
まず、第1のモードが選択されている場合、セレクタ3は、n個の基礎係数Cf1〜Cfnをそのまま乗算部4に出力する。これに対し、第2のモードが選択されている場合、セレクタ3は、n個の基礎係数Cf1〜Cfnの各々について演算用係数Cxと指数部Eとを生成して出力する。また、乗算部4は、動作モードに拘わらず、データレジスタ1に格納されたn個のサンプルデータXの各々と、セレクタ3から供給されるn個の演算用係数Cxの各々とを乗算し、これにより得られたn個の乗算データXtを出力する。シフタ5は、第1のモードが選択されている場合には乗算データXtをそのまま出力する一方、第2のモードが選択されている場合には、n個の乗算データXtの各々について、セレクタ3から出力された指数部Eに応じたビットシフトを施して出力する。シフタ5から出力されたn個のシフトデータXsは累積部83によって加算される。
【0051】
この構成によれば、n個の基礎係数Cf1〜Cfnの各々を初期値Cstartから目標値Cendまで段階的に変化させることによって、エコーやリバーブといった音響効果について指数関数的な変化を実現することができる。
【0052】
<C−2:変形例2>
基礎係数Cfのうちいずれのビット列を仮数部Yおよび指数部Eとして取り扱うかは任意に変更され得る。要は、基礎係数Cfから重複しないように2種類のビット列が抽出され、このうちの一方が仮数部Yとして用いられるとともに他方が指数部Eとして用いられる構成であればよい。また、基礎係数CfのすべてのビットがサンプルデータXに対する演算に供される必要は必ずしもなく、その一部のみが用いられる構成としてもよい。例えば、最下位ビットから数えて数ビットを切り捨て、残りのビット列から仮数部Yおよび指数部Eを特定する構成としてもよい。さらに、基礎係数Cfのうち仮数部Yとされるビット列と指数部Eとされるビット列とを利用者が任意に選定できる構成としてもよい。
【0053】
<C−3:変形例3>
上記実施形態においては、利用者が操作部86を操作することによって動作モードが選定される構成を例示したが、動作モードを選定する構成はこれに限られない。例えば、上位装置からミキサ80に対して動作モードが指示される構成としてもよい。また、上記実施形態においては、基礎係数Cfの初期値Cstart、目標値Cend、補間回数Mおよび補間時間Tが利用者によって入力される構成を例示したが、これらのパラメータが上位装置から入力される構成としてもよいし、あるいはデータ処理装置内に予め記憶されている構成としてもよい。
【0054】
<C−4:変形例4>
上記実施形態においては、乗算部4から出力された乗算データXtを指数部Eが示すビット数だけビットシフトする構成を例示したが、指数部Eの補数(例えば1の補数)に応じたビット数だけビットシフトする構成としてもよい。また、上記実施形態においては、基礎係数や演算用係数Cxを合計24ビットのビット列としたが、これらの係数を表すビット列のビット数は任意に変更され得る。
【0055】
【発明の効果】
以上に説明したように、本発明によれば、演算に供される係数を決定するための特別な回路を要することなく、その係数の多様な変化が実現される。
【図面の簡単な説明】
【図1】 本発明の実施形態に係るミキサの構成を示すブロック図である。
【図2】 ミキサが備えるデータ処理装置の構成を示すブロック図である。
【図3】 データ処理装置が備えるセレクタの動作を説明するための図である。
【図4】 第2のモードにおける演算内容を示す図である。
【図5】 各動作モードにおけるセレクタの入出力の関係を示すグラフである。
【図6】 変形例に係るデータ処理装置の構成を示すブロック図である。
【符号の説明】
100,200……データ処理装置、1……データレジスタ、2……係数レジスタ、3……セレクタ(変換手段)、4……乗算部(乗算手段)、5……シフタ(シフト手段)、6……係数決定部(特定手段)、7……制御部(制御手段、取得手段)、83……累積部(累積手段)、Cf,Cf1〜Cfn……基礎係数、Cx……演算用係数、X……サンプルデータ、Xt……乗算データ、Xs……シフトデータ、Cstart……初期値、Cend……目標値、M……補間回数、Y……仮数部、E……指数部。
Claims (6)
- 固定小数点型のビット列として表された基礎係数を順次に特定する特定手段と、
前記特定手段によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が0でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が0である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換手段と、
前記変換手段から出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算手段と、
前記乗算手段から出力された乗算データに対し、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施して出力するシフト手段と
を具備するデータ処理装置。 - 第1のモードおよび第2のモードのいずれかを指定する制御手段を具備し、
前記変換手段は、前記制御手段によって前記第1のモードが指定されている場合に、前記特定手段によって特定された基礎係数をそのまま前記演算用係数として出力する一方、前記制御手段によって前記第2のモードが指定されている場合に、前記仮数部を変換して得られる演算用係数と前記指数部とを出力し、
前記シフト手段は、前記制御手段によって前記第1のモードが指定されている場合に、前記乗算データをそのまま出力する一方、前記制御手段によって前記第2のモードが指定されている場合に、前記乗算データに対して前記ビットシフトを施して出力する
請求項1に記載のデータ処理装置。 - 前記基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、
前記特定手段は、前記基礎係数が前記初期値から前記補間回数に応じた回数の更新を経て前記目標値に至るように、前記基礎係数を順次に更新する
請求項1または2に記載のデータ処理装置。 - 前記特定手段は、複数の基礎係数を特定し、
前記変換手段は、前記複数の基礎係数の各々について前記演算用係数および前記指数部を出力し、
前記乗算手段は、処理対象たる複数のサンプルデータの各々について、前記複数の基礎係数から得られた演算用係数のいずれかを用いた乗算を行なうとともに、各サンプルデータについて得られた乗算データを出力し、
前記シフト手段は、前記乗算手段から出力された複数の乗算データの各々について、前記変換手段から出力された指数部が示す数値に応じたビットシフトを施し、複数のシフトデータを加算する累積手段に対して、前記ビットシフトにより得られたシフトデータを出力する
請求項1に記載のデータ処理装置。 - 前記複数の基礎係数の初期値および目標値と当該初期値から目標値に変化するまでの補間回数とを取得する取得手段を具備し、
前記特定手段は、前記複数の基礎係数の各々が、当該基礎係数について前記取得手段が取得した初期値から補間回数に応じた回数の更新を経て目標値に至るように、当該基礎係数を順次に更新する
請求項4に記載のデータ処理装置。 - コンピュータに、
固定小数点型のビット列として表された基礎係数を特定する特定処理と、
前記特定処理によって特定された基礎係数のビット列の一部を仮数部とする一方、他の一部を指数部とし、前記指数部が0でない場合には、前記基礎係数の最上位ビットと、該最上位ビットを反転したビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力し、前記指数部が0である場合には、前記基礎係数の最上位ビットと、該最上位ビットに等しいビットと、前記仮数部から該最上位ビットを除いたビットとを最上位からみてこの順に配列させたビット列を演算用係数として生成し、生成された演算用係数と前記指数部とを出力する変換処理と、
前記変換処理によって出力された演算用係数と処理対象たるサンプルデータとを乗算し、これにより得られた乗算データを出力する乗算処理と、
前記乗算処理によって出力された乗算データに対し、前記変換処理によって出力された指数部が示す数値に応じたビットシフトを施して出力するシフト処理と
を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003176206A JP4127130B2 (ja) | 2003-06-20 | 2003-06-20 | データ処理装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003176206A JP4127130B2 (ja) | 2003-06-20 | 2003-06-20 | データ処理装置およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005010597A JP2005010597A (ja) | 2005-01-13 |
JP4127130B2 true JP4127130B2 (ja) | 2008-07-30 |
Family
ID=34099149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003176206A Expired - Fee Related JP4127130B2 (ja) | 2003-06-20 | 2003-06-20 | データ処理装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4127130B2 (ja) |
-
2003
- 2003-06-20 JP JP2003176206A patent/JP4127130B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2005010597A (ja) | 2005-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9478203B2 (en) | Resonance tone generation apparatus and resonance tone generation program | |
US7612281B2 (en) | Reverberation effect adding device | |
EP0312062A2 (en) | Electronic musical instrument | |
EP0734018A2 (en) | Audio data processing apparatus | |
US20090266219A1 (en) | Resonance tone generating apparatus and electronic musical instrument | |
CN101149916A (zh) | 滤波装置以及使用滤波装置的电子乐器 | |
US9040800B2 (en) | Musical tone signal generating apparatus | |
JP4127130B2 (ja) | データ処理装置およびプログラム | |
JP2009175677A (ja) | 共鳴音付加装置および電子楽器 | |
US20060005690A1 (en) | Sound synthesiser | |
JPH0535277A (ja) | 電子楽器 | |
JP4432951B2 (ja) | 楽音発生装置および電子楽器 | |
JP2905904B2 (ja) | 電子楽器の信号処理装置 | |
JP5593590B2 (ja) | 共鳴音発生装置、電子楽器および共鳴音発生プログラム | |
JP3778361B2 (ja) | 音源装置および音源装置を備えた電子機器 | |
US7390953B2 (en) | Waveform data interpolation device and waveform data interpolation program | |
JP4329276B2 (ja) | 楽音発生装置及び楽音発生処理のプログラム | |
JP3674154B2 (ja) | 楽音合成装置 | |
JP5035388B2 (ja) | 共鳴音発生装置および電子楽器 | |
JPH1185155A (ja) | ミキシング装置および楽器用集積回路 | |
JP2814939B2 (ja) | 波形処理装置 | |
JPH0656553B2 (ja) | 楽音信号発生装置 | |
JPH02179688A (ja) | 楽音信号発生装置 | |
JPH05323970A (ja) | 楽音発生装置 | |
JPH0652480B2 (ja) | 電子楽器の入力装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051125 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070626 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070827 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080111 |
|
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: 20080422 |
|
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: 20080505 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110523 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130523 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |