以下、本発明の好ましい実施例について、添付図面を参照して説明する。図1は、本発明の一実施形態であるエフェクタ1(楽音信号処理装置の一例)を示したブロック図である。このエフェクタ1は、信号処理を施す対象となる楽音信号(以後、「抽出信号」と称す)の抽出を、複数の各条件(周波数、定位および最大レベルが一組となった条件の各々)にわたって行うことができるものである。
エフェクタ1は、Lch用アナログデジタルコンバータ(以下、「A/Dコンバータ」と称す)11Lと、Rch用A/Dコンバータ11Rと、デジタルシグナルプロセッサ(以下、「DSP」と称す)12と、Lch用第1デジタルアナログコンバータ(以下、「D/Aコンバータ」と称す)13L1と、Rch用第1D/Aコンバータ13R1と、Lch用第2D/Aコンバータ13L2と、Rch用第2D/Aコンバータ13R2と、CPU14と、ROM15と、RAM16と、バスライン17とを有している。各部11〜16は、バスライン17を介して互いに電気的に接続されている。
Lch用A/Dコンバータ11Lは、IN_L端子から入力された左チャンネル信号(楽音信号の一部)を、アナログ信号からデジタル信号へ変換して、デジタル化された左チャンネル信号を、バスライン17を介してDSP12へと出力するコンバータである。また、Rch用A/Dコンバータ11Rは、IN_R端子から入力された右チャンネル信号(楽音信号の一部)を、アナログ信号からデジタル信号へ変換して、デジタル化された右チャンネル信号を、バスライン17を介してDSP12へと出力するコンバータである。
DSP12は、Lch用A/Dコンバータ11Lから出力された左チャンネル信号およびRch用A/Dコンバータ11Rから出力された右チャンネル信号を入力すると、その入力した左チャンネル信号および右チャンネル信号へ信号処理を施して、その信号処理を施した左チャンネル信号および右チャンネル信号を、Lch用第1D/Aコンバータ13L1、Rch用第1D/Aコンバータ13R1、Lch用第2D/Aコンバータ13L2およびRch用第2D/Aコンバータ13R2へ出力するプロセッサである。
Lch用第1D/Aコンバータ13L1及びLch用第2D/Aコンバータ13L2は、DSP12で信号処理が施された左チャンネル信号を、デジタル信号からアナログ信号へ変換して、そのアナログ信号を、メインスピーカのLチャンネル側(図示せず)が接続される端子(OUT1_L端子,OUT2_L端子)へ出力するコンバータである。なお、Lch用第1D/Aコンバータ13L1及びLch用第2D/Aコンバータ13L2には、それぞれ、DSP12で各々独立した信号処理がなされて出力された左チャンネル信号が入力される。
Rch用第1D/Aコンバータ13R1及びRch用第2D/Aコンバータ13R2は、DSP12で信号処理が施された右チャンネル信号を、デジタル信号からアナログ信号へ変換して、そのアナログ信号を、メインスピーカのRチャンネル側(図示せず)が接続される端子(OUT1_R端子,OUT2_R端子)へ出力するコンバータである。なお、Rch用第1D/Aコンバータ13R1及びRch用第2D/Aコンバータ13R2には、それぞれ、DSP12で各々独立した信号処理がなされて出力された右チャンネル信号が入力される。
CPU14は、各部11L〜13R2,15,16を制御する中央制御装置である。ROM15は、エフェクタ1で実行される制御プログラム等を格納した書換不能なメモリである。図2〜図6で後述するDSP12による処理は、制御プログラムとして、ROM15に記憶されている。RAM16は、各種のデータを一時的に記憶するためのメモリである。
次に、図2を参照して、DSP12の処理について説明する。図2は、DSP12で実行される処理を、機能ブロックを用いて模式的に示した図である。DSP12は、機能ブロックとして、第1処理部S1と第2処理部S2とを有している。DSP12は、エフェクタ1の電源オン中、図2に示す処理を繰り返し実行する。
DSP12は、IN_L端子から入力された時間領域における左チャンネル信号(以下、「IN_L[t]信号」と称す。[t]は、信号が時間領域で示されることを表わしている)と、IN_R端子から入力された時間領域における右チャンネル信号(以下、「IN_R[t]信号」と称す)とを入力し、第1処理部S1および第2処理部S2における処理を実行する。
ここで、第1処理部S1と第2処理部S2とにおける処理は、同一の処理であり、かつ、所定間隔毎に実行されるのであるが、第2処理部S2における処理は、第1処理部S1における処理の実行開始から所定時間遅れて実行開始される。これにより、第2処理部S2における処理は、第1処理部S1における処理の実行終了から実行開始までのつなぎ目を補い、第1処理部S1における処理は、第2処理部S2における処理の実行終了から実行開始までのつなぎ目を補っている。よって、第1処理部S1により生成された信号と第2処理部S2により生成された信号とが合成された信号、即ち、DSP12から出力される、時間領域における第1左チャンネル信号(以後、「OUT1_L[t]信号」と称す)と、時間領域における第1右チャンネル信号(以後、「OUT1_R[t]信号」と称す)と、時間領域における第2左チャンネル信号(以後、「OUT2_L[t]信号」と称す)と、時間領域における第2右チャンネル信号(以後、「OUT2_R[t]信号」と称す)とが、不連続となることを防止している。なお、本実施形態では、第1処理部S1及び第2処理部S2は、0.1秒毎に実行され、第2処理部S2における処理が、第1処理部S1における処理の実行開始から0.05秒後に実行開始されるものとする。しかし、第1処理部S1及び第2処理部S2の実行間隔、並びに、第1処理部S1における処理の実行開始から第2処理部S2における処理の実行開始までの遅延時間は、0.1秒及び0.05秒に限定されず、サンプリング周波数と楽音信号の数とに応じた値を適宜利用可能である。
第1処理部S1および第2処理部S2は、機能ブロックとして、Lch解析処理部S10、Rch解析処理部S20、メイン処理部S30、L1ch出力処理部S60、R1ch出力処理部S70、L2ch出力処理部S80およびR2ch出力処理部S90をそれぞれ有している。
Lch解析処理部S10は、入力したIN_L[t]信号を、周波数領域で示される左チャンネル信号(以後、「IN_L[f]信号」と称す。[f]は、信号が周波数領域で示されることを表わしている)に変換して出力するものであり、Rch解析処理部S20は、入力したIN_R[t]信号を、周波数領域で示される右チャンネル信号(以後、「IN_R[f]信号」と称す)に変換して出力するものである。なお、Lch解析処理部S10およびRch解析処理部S20の詳細は、図3を参照して後述する。
メイン処理部S30は、Lch解析処理部S10から入力されたIN_L[f]信号とRch解析処理部S20から入力されたIN_R[f]信号に対し、後述する第1信号処理、第2信号処理、及び、指定以外を取り出す処理を施し、各処理からの出力結果に基づき、周波数領域で示される左チャンネル信号及び右チャンネル信号を出力するものである。なお、メイン処理部S30の処理の詳細は、図4〜6を参照して後述する。
L1ch出力処理部S60は、メイン処理部S30から出力された周波数領域で示される左チャンネル信号の1つ(以下、「OUT_L1[f]信号と称す)が入力された場合に、そのOUT_L1[f]信号を、時間領域で示される左チャンネル信号(以後、「OUT1_L[t]信号」と称す)へ変換するものである。R1ch出力処理部S70は、メイン処理部S30から出力された周波数領域で示される右チャンネル信号の1つ(以下、「OUT_R1[f]信号と称す)が入力された場合に、そのOUT_R1[f]信号を、時間領域で示される右チャンネル信号(以後、「OUT1_R[t]信号」と称す)へ変換するものである。
L2ch出力処理部S80は、メイン処理部S30から出力されたもう1つの周波数領域で示される左チャンネル信号(以下、「OUT_L2[f]信号と称す)が入力された場合に、そのOUT_L2[f]信号を、時間領域で示される左チャンネル信号(以後、「OUT2_L[t]信号」と称す)へ変換するものである。R2ch出力処理部S90は、メイン処理部S30から出力されたもう1つの周波数領域で示される右チャンネル信号(以下、「OUT_R2[f]信号と称す)が入力された場合に、そのOUT_R2[f]信号を、時間領域で示される右チャンネル信号(以後、「OUT2_R[t]信号」と称す)へ変換するものである。L1ch出力処理部S60、R1ch出力処理部S70、L2ch出力処理部S80およびR2ch出力処理部S90の処理の詳細は、図3を参照して後述する。
なお、第1処理部S1の各出力処理部S60〜S90から出力されるOUT_L1[f]信号、OUT_R1[f]信号、OUT_L2[f]信号およびOUT_R2[f]信号と、第2処理部S2の各出力処理部S60〜S90から出力されるOUT_L1[f]信号、OUT_R1[f]信号、OUT_L2[f]信号、およびOUT_R2[f]信号とは、それぞれ、クロスフェードで合成される。
次に、図3を参照して、メイン処理部30を除く、Lch解析処理部S10、Rch解析処理部S20、L1ch出力処理部S60、R1ch出力処理部S70、L2ch出力処理部S80およびR2ch出力処理部S90で実行される処理の詳細について説明する。図3は、各部S10、S20およびS60〜S90で実行される処理を示した図である。
まず、Lch解析処理部S10およびRch解析処理部S20について説明する。Lch解析処理部S10では、まず、IN_L[t]信号に対して、ハニング窓をかける処理である窓関数処理を実行する(S11)。その後、IN_L[t]信号に対して、高速フーリエ変換(FFT)を行う(S12)。この高速フーリエ変換により、IN_L[t]信号は、IN_L[f]信号へ変換される(フーリエ変換された各周波数[f]を横軸とするスペクトル信号となる)。なお、このIN_L[f]信号は、実数部と虚数部を持つ式(以後、「複素式」と称す)で表現される。ここで、S11の処理で、IN_L[t]信号に対してハニング窓をかけるのは、入力されたIN_L[t]信号における始点と終点とが、高速フーリエ変換へ与える影響を軽減するためである。
S12の処理後、Lch解析処理部S10では、IN_L[f]信号のレベル(以後、「INL_Lv[f]」と称す)およびIN_L[f]信号の位相(以後、「INL_Ar[f]」と称す)を、各周波数[f]毎に算出する(S13)。具体的には、INL_Lv[f]は、IN_L[f]信号の複素式における実数部を2乗した値と、IN_L[f]信号の複素式における虚数部を2乗した値とを足し合わせ、その足し合わせた値の平方根を算出することで求める。また、INL_Ar[f]は、IN_L[f]信号の複素式における虚数部を実数部で除した値のアークタンジェント(tan^(−1))を算出することで求める。S13の処理後、メイン処理部S30の処理へと移行する。
Rch解析処理部S20では、IN_R[t]信号に対して、S21〜S23の処理が行われる。なお、このS21〜S23の処理は、S11〜S13の処理と同様の処理であり、S11〜S13の処理と異なる点は、処理対象が、IN_R[t]信号であり、IN_R[f]信号が出力される点である。よって、S21〜S23の処理の詳細な説明は省略する。なお、S23の処理後、メイン処理部S30の処理へと移行する。
次に、L1ch出力処理部S60、R1ch出力処理部S70、L2ch出力処理部S70、R2ch出力処理部S90について説明する。
L1ch出力処理部S60では、まず、逆高速フーリエ変換(逆FFT)が実行される(S61)。この処理では、具体的には、メイン処理部S30で算出されたOUT_L1[f]信号と、Lch解析処理部S10のS13の処理で算出されたINL_Ar[f]とを使用して、複素式を求め、その複素式に対して、逆高速フーリエ変換を行う。その後、逆高速フーリエ変換で算出された値に対して、Lch解析処理部S10およびRch解析処理部S20で使用したハニング窓と同一の窓をかける窓関数処理を実行する(S62)。例えば、Lch解析処理部S10およびRch解析処理部S20で使用した窓関数が、ハニング窓であるとすれば、S62の処理でも、ハニング窓を、逆高速フーリエ変換で算出した値に対してかける。これにより、OUT1_L[t]信号が生成される。なお、S62の処理で、逆高速フーリエ変換で算出された値に対してハニング窓をかけるのは、各出力処理部S60〜S90から出力される信号をクロスフェードしながら合成するためである。
R1ch出力処理部S70では、S71〜S72の処理が行われる。なお、このS71〜S72の処理は、S61〜S62の処理と同様の処理であり、S61〜S62の処理と異なる点は、逆高速フーリエ変換で使用する複素式を求める際の値が、メイン処理部S30で算出されたOUT_R1[f]信号と、Rch解析処理部S20のS23の処理で算出されたINR_Ar[f]となるところである。それ以外は、S61〜S62の処理と同一である。よって、S71〜S72の処理の詳細な説明は省略する。
また、L2ch出力処理部S80では、S81〜S82の処理が行われる。なお、このS81〜S82の処理は、S61〜S62の処理と同様の処理であり、S61〜S62の処理と異なる点は、逆高速フーリエ変換で使用する複素式を求める際の値が、メイン処理部S30で算出されたOUT_L2[f]信号となるところである(Lch解析処理部S10のS13の処理で算出されたINL_Ar[f]を使用するところは同じ)。それ以外は、S61〜S62の処理と同一である。よって、S81〜S82の処理の詳細な説明は省略する。
また、R2ch出力処理部S90では、S91〜S92の処理が行われる。なお、このS91〜S92の処理は、S61〜S62の処理と同様の処理であり、S61〜S62の処理と異なる点は、逆高速フーリエ変換で使用する複素式を求める際の値が、メイン処理部S30で算出されたOUT_R2[f]信号と、Rch解析処理部S20のS23の処理で算出されたINR_Ar[f]となるところである。それ以外は、S61〜S62の処理と同一である。よって、S91〜S92の処理の詳細は省略する。
次に、図4を参照して、メイン処理部S30で実行される処理の詳細について説明する。図4は、メイン処理部S30で実行される処理を示した図である。
メイン処理部S30では、まず、IN_L[t]信号及びIN_R[t]信号に対して行ったフーリエ変換(S12、S22)により得られた各周波数毎に定位w[f]を求めると共に、INL_Lv[f]とINR_Lv[f]とのうち、大きいほうのレベルを、各周波数における最大レベルML[f]として設定する(S31)。S31で求められた定位w[f]および設定された最大レベルML[f]は、RAM16の所定領域に記憶される。なお、S31において、定位w[f]は、(1/π)×(arctan(INR_Lv[f]/INL_Lv[f])+0.25で求められる。よって、任意の基準点で楽音を受音した場合に、即ち、任意の基準点でIN_L[t]およびIN_R[t]を入力した場合に、INR_Lv[f]がINL_Lv[f]に対して十分大きければ、定位w[f]は0.75となる一方、INL_Lv[f]がINR_Lv[f]に対して十分大きければ、定位w[f]は0.25となる。
次に、メモリのクリアを行う(S32)。具体的には、RAM16の内部に設けられた、1L[f]メモリ、1R[f]メモリ、2L[f]メモリおよび2R[f]メモリをゼロクリアする。なお、1L[f]メモリおよび1R[f]メモリは、メイン処理部S30から出力されるOUT_L1[f]信号およびOUT_R1[f]信号によって形成される定位を変更する場合に使用されるメモリであり、2L[f]メモリおよび2R[f]メモリは、メイン処理部S30から出力されるOUT_L2[f]信号およびOUT_R2[f]信号によって形成される定位を変更する場合に使用されるメモリである。
S32の実行後、第1取り出し処理(S100)、第2取り出し処理(S200)および指定以外を取り出す処理(S300)がそれぞれ実行される。第1取り出し処理(S100)は、予め設定された第1条件で、信号処理を施す対象となる信号を、つまり抽出信号を抽出する処理であり、第2取り出し処理(S200)は、予め設定された第2条件で、抽出信号を抽出する処理である。また、指定以外を取り出す処理(S300)は、第1条件および第2条件以外で、抽出信号を抽出する処理である。なお、指定以外を取り出す処理(S300)は、第1取り出し処理(S100)および第2取り出し処理(S200)の処理結果を使用するので、第1取り出し処理(S100)および第2取り出し処理(S200)の処理完了後に実行される。
第1取り出し処理(S100)の実行後は、その処理(S100)で抽出された抽出信号へ信号処理を施す第1信号処理が実行される(S110)。また、第2取り出し処理(S200)の実行後は、その処理(S200)で抽出された抽出信号へ信号処理を施す第2信号処理が実行される(S210)。更に、指定以外を取り出す処理(S300)の実行後は、その処理(S300)で抽出された抽出信号へ信号処理を施す指定外信号処理が実行される(S310)。
ここで、図5を参照して、第1取り出し処理(S100)、第1信号処理(S110)、第2取り出し処理(S200)および第2信号処理(S210)を説明し、次に、図6を参照して、指定以外を取り出す処理(S300)および指定外信号処理(S310)を説明する。
まず、第1取り出し処理(S100)、第1信号処理(S110)、第2取り出し処理(S200)および第2信号処理(S210)について説明する。図5は、第1取り出し処理(S100)、第1信号処理(S110)、第2取り出し処理(S200)および第2信号処理(S210)で行われる処理の詳細を示した図である。
第1取り出し処理(S100)では、周波数[f]が、予め設定された第1周波数範囲内であり、かつ、第1周波数範囲内の周波数における定位w[f]および最大レベルML[f]がそれぞれ、予め設定された第1設定範囲内であるか否か、即ち、楽音信号が第1条件を満たすか否かが判定される(S101)。周波数[f]が、予め設定された第1周波数範囲内であり、かつ、第1周波数範囲内の周波数における定位w[f]および最大レベルML[f]がそれぞれ、予め設定された第1設定範囲内である場合には(S101:Yes)、その周波数[f]における楽音信号(左チャンネル信号および右チャンネル信号)は、抽出信号であると判定され、配列rel[f][1]に1.0が代入される(S102)。なお、配列rel[f][1]に記載のfには、S101でYesと判定された時点の周波数が代入される。また、配列rel[f][1]に記載の1は、配列rel[f][1]が、第1取り出し処理(S100)における抽出信号であることを示している。
なお、周波数[f]が、予め設定された第1周波数範囲内でないか、または、第1周波数範囲内の周波数[f]における定位w[f]が第1設定範囲内でないか、或いは、第1周波数範囲内の周波数[f]における最大レベルML[f]が、第1設定範囲内でない場合には(S101:No)、その周波数[f]における楽音信号(左チャンネル信号および右チャンネル信号)は、抽出信号でないと判定され、配列rel[f][1]に0.0が代入される(S103)。
S102またはS103の処理後、フーリエ変換された全ての周波数について、S101の処理が完了したか否かが判定され(S104)、S104の判定が否定される場合には(S104:No)、S101の処理へ戻る一方、S104の判定が肯定される場合には(S104:Yes)、第1信号処理(S110)へ移行する。
第1信号処理(S110)では、OUT_L1[f]信号の一部となる1L[f]信号のレベルを調整すると共に、OUT_R1[f]信号の一部となる1R[f]信号のレベルを調整することで、第1取り出し処理(S100)での抽出信号によって形成される定位(メインスピーカから出力される分)を調整するS111の処理が行われる。また、このS111の処理と平行して、第1信号処理(S110)では、OUT_L2[f]信号の一部となる2L[f]信号のレベルを調整すると共に、OUT_R2[f]信号の一部となる2R[f]信号のレベルを調整することで、第1取り出し処理(S100)での抽出信号によって形成される定位(サブスピーカから出力される分)を調整するS114の処理が行われる。
S111の処理では、OUT_L1[f]信号の一部となる1L[f]信号が算出される。具体的には、「INL_Lv[f]×ll+INR_Lv[f]×lr)×rel[f][1]×a」が、IN_L[t]信号及びIN_R[t]信号に対して行ったフーリエ変換(S12、S22)により得られた全ての周波数について行われて、1L[f]信号が算出される。同様に、S111の処理では、OUT_R1[f]信号の一部となる1R[f]信号が算出される。具体的には、「INL_Lv[f]×rl+INR_Lv[f]×rr)×rel[f][1]×a」が、S12,S22においてフーリエ変換された全ての周波数について行われて、1R[f]信号が算出される。
なお、aは、第1信号処理に対して予め定められた係数であり、ll,lr,rl,rrは、楽音信号(左チャンネル信号、右チャンネル信号)から求められる定位w[f]と、第1信号処理に対して予め定められた目標とする定位(例えば、0.25〜0.75の範囲内の値)とに応じて決定される係数である。ここで、図7を参照して、ll,lr,rl,rrについて説明する。図7は、定位w[f]と目標とする定位とに応じて決定される各係数を説明するためのグラフである。図7のグラフにおいて、横軸は、(目標とする定位−定位w[f]+0.5)の値であり、縦軸は、各係数(ll,lr,rl,rr,ll´,lr´,rl´,rr´)である。
llとrrとの関係は、図7(a)に示す通りである。よって、(目標とする定位−定位w[f]+0.5)の値が0.5である場合に、llとrrとは、互いに最大の係数となる。逆に、lrとrlとの関係は、図7(b)に示すようになり、(目標とする定位−定位w[f]+0.5)の値が0.5である場合に、lrとrlとは、互いに最小の(ゼロの)係数となる。
図5の説明に戻る。S111の処理後、1L[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S112)。なお、ピッチ変更、レベル変更、及びリバーブ付与(所謂、コンボリューション・リバーブ)については、いずれも公知技術であるので、それらの具体的説明は省略する。1L[f]信号に対してS112の処理が行われると、OUT_L1[f]信号を構成する1L_1[f]信号が生成される。同様に、S111の処理後、1R[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S113)。1R[f]信号に対してS113の処理が行われると、OUT_R1[f]信号を構成する1R_1[f]信号が生成される。
また、S114の処理では、OUT_L2[f]信号の一部となる2L[f]信号が算出される。具体的には、「INL_Lv[f]×ll´+INR_Lv[f]×lr´)×rel[f][1]×b」が、IN_L[t]信号及びIN_R[t]信号に対して行ったフーリエ変換(S12、S22)により得られた全ての周波数について行われて、2L[f]信号が算出される。同様に、S114の処理では、OUT_R2[f]信号の一部となる2R[f]信号が算出される。具体的には、「INL_Lv[f]×rl´+INR_Lv[f]×rr´)×rel[f][1]×b」が、S12,S22においてフーリエ変換された全ての周波数について行われて、2R[f]信号が算出される。
なお、bは、第1信号処理に対して予め定められた係数である。この係数bは、係数aと同じであっても異なっていてもよい。また、ll´,lr´,rl´,rr´は、楽音信号から求められる定位w[f]と、第2信号処理に対して予め定められた目標とする定位(例えば、0.25〜0.75の範囲内の値)とによって決定される係数である。ここで、図7を参照して、ll´,lr´,rl´,rr´について説明する。ll´とrr´との関係は、図7(a)に示すようになり、(目標とする定位−定位w[f]+0.5)の値が0.0である場合に、ll´は最大の係数となる一方で、rr´は最小の(ゼロの)係数となる。逆に、(目標とする定位−定位w[f]+0.5)の値が1.0である場合に、ll´は最小の(ゼロの)係数となる一方で、rr´は最大の係数となる。
同様に、lr´とrl´との関係は、図7(b)に示すようになり、(目標とする定位−定位w[f]+0.5)の値が0.0である場合に、lr´は最大の係数となる一方で、rl´は最小の(ゼロの)係数となる。逆に、(目標とする定位−定位w[f]+0.5)の値が1.0である場合に、lr´は最小の(ゼロの)係数となる一方で、rl´は最大の係数となる。
図5の説明に戻る。S114の処理後、2L[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S115)。2L[f]信号に対してS115の処理が行われると、OUT_L2[f]信号を構成する2L_1[f]信号が生成される。同様に、S114の処理後、2R[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S116)。2R[f]信号に対してS116の処理が行われると、OUT_R2[f]信号を構成する2R_1[f]信号が生成される。
第1取り出し処理S100と平行して実行される第2取り出し処理S200では、周波数[f]が、予め設定された第2周波数範囲内であり、かつ、第2周波数範囲内の周波数における定位w[f]および最大レベルML[f]がそれぞれ、予め設定された第2設定範囲内であるか否か、即ち、楽音信号が第2条件を満たすか否かが判定される(S201)。本実施形態では、第2周波数範囲は、第1周波数範囲とは異なる範囲(範囲開始と範囲終了とが完全には一致しない範囲)であり、第2設定範囲は、第1設定範囲とは異なる範囲(範囲開始と範囲終了とが完全には一致しない範囲)とする。なお、第2周波数範囲は、第1周波数範囲に一部重なる範囲であってもよいし、第1周波数範囲と完全に一致する範囲であってもよい。第2設定範囲もまた、第1設定範囲に一部重なる範囲であってもよく、第1設定範囲と完全に一致する範囲であってもよい。
周波数[f]が、予め設定された第2周波数範囲内であり、かつ、第2周波数範囲内の周波数における定位w[f]および最大レベルML[f]がそれぞれ、予め設定された第2設定範囲内である場合には(S201:Yes)、その周波数[f]における楽音信号(左チャンネル信号および右チャンネル信号)は、抽出信号であると判定され、配列rel[f][2]に1.0が代入される(S102)。なお、配列rel[f][2]に記載の2は、配列rel[f][2]が、第2取り出し処理S200における抽出信号であることを示している。
なお、周波数[f]が、予め設定された第2周波数範囲内でないか、または、第2周波数範囲内の周波数[f]における定位w[f]が第2設定範囲内でないか、或いは、第2周波数範囲内の周波数[f]における最大レベルML[f]が、第2設定範囲内でない場合には(S201:No)、その周波数[f]における楽音信号(左チャンネル信号および右チャンネル信号)は、抽出信号でないと判定され、配列rel[f][2]に0.0が代入される(S203)。
S202またはS203の処理後、フーリエ変換された全ての周波数について、S201の処理が完了したか否かが判定され(S204)、S204の判定が否定される場合には(S204:No)、S201の処理へ戻る一方、S204の判定が肯定される場合には(S204:Yes)、第2信号処理(S210)へ移行する。
第2信号処理(S210)では、OUT_L1[f]信号の一部となる1L[f]信号のレベルを調整すると共に、OUT_R1[f]信号の一部となる1R[f]信号のレベルを調整することで、第2取り出し処理(S200)での抽出信号によって形成される定位(メインスピーカから出力される分)を調整するS211の処理が行われる。また、このS211の処理と平行して、第2信号処理(S210)では、OUT_L2[f]信号の一部となる2L[f]信号のレベルを調整すると共に、OUT_R2[f]信号の一部となる2R[f]信号のレベルを調整することで、第2取り出し処理(S200)での抽出信号によって形成される定位(サブスピーカから出力される分)を調整するS214の処理が行われる。
ここで、第2信号処理(S210)におけるS211〜S216の各処理は、以下に説明する点が異なっていること以外は、第1信号処理(S110)におけるS111〜S116の各処理と同様に行われるので、その説明は省略する。第2信号処理(S210)と第1信号処理(S110)との第1の相違点は、第1信号処理に入力される信号が、第1取り出し処理(S100)からの抽出信号であるのに対し、第2信号処理に入力される信号は、第2取り出し処理(S200)からの抽出信号である点であり、第2の相違点は、第1信号処理では、配列rel[f][1]を用いるのに対し、第2信号処理では、配列rel[f][2]をそれぞれ用いる点であり、第3の相違点は、第1信号処理から出力される信号が、1L_1[f]、1R_1[f]、1L_2[f]、及び1R_2[f]であるのに対し、第2信号処理から出力される信号は、2L_1[f]、2R_1[f]、2L_2[f]、及び2R_2[f]である点である。
なお、第1信号処理(S110)で目標とする定位と、第2信号処理(S210)で目標とする定位とは、同じであっても異なっていてもよい。つまり、第1信号処理と第2信号処理とで目標とする定位が異なる場合には、第1信号処理で用いる係数ll,lr,rl,rr,ll´,lr´,rl´,rr´と、第2信号処理で用いる係数ll,lr,rl,rr,ll´,lr´,rl´,rr´が異なることになる。また、第1信号処理で用いる係数a,bと、第2信号処理で用いる係数a,bとは、同じであっても異なっていてもよい。また、第1信号処理の中で実行される加工処理S112,S113,S115,S116の内容と、第2信号処理(S210)の中で実行される加工処理S212,S213,S215,S216の内容は、同じであっても異なっていてもよい。
次に、指定以外を取り出す処理(S300)および指定外信号処理(S310)について説明する。図6は、指定以外を取り出す処理(S300)および指定外信号処理(S310)で行われる処理の詳細を示した図である。
指定以外を取り出す処理(S300)では、まず、S12,S22においてフーリエ変換された周波数のうち、最も低い周波数におけるrel[f][1]が0.0であり、かつ、最も低い周波数におけるrel[f][2]が0.0であるか、即ち、最も低い周波数における楽音信号(左チャンネル信号および右チャンネル信号)が抽出信号として、第1取り出し処理(S100)または第2取り出し処理(S200)で抽出されていないかを判定する(S301)。なお、本実施形態では、第1取り出し処理(S100)におけるS102,S103で設定されたrel[f][1]の値、及び、第2取り出し処理(S200)におけるS202,S203で設定されたrel[f][2]の値を用いてS301の判定を行うものとする。また、S301の処理を行う前に、第1、第2取り出し処理(S100,S200)と同様の処理を別途実行し、その際に得られたrel[f][1]の値及びrel[f][2]の値を用いてS301の判定を行ってもよい。
最も低い周波数におけるrel[f][1]が0.0であり、かつ、最も低い周波数におけるrel[f][2]が0.0である場合には(S301:Yes)、最も低い周波数における楽音信号が抽出信号として、第1取り出し処理(S100)または第2取り出し処理(S200)で未だ抽出されていないと判定されて、配列remain[f]に、1.0を代入する(S302)。ここで、remain[f]に代入される1.0は、最も低い周波数における楽音信号が指定以外を取り出す処理(S300)における抽出信号であることを示している。なお、remain[f]に記載のfには、S301でYesと判定された時点の周波数が代入される。
一方、最も低い周波数におけるrel[f][1]が1.0である場合、または、最も低い周波数におけるrel[f][2]が1.0である場合、或いは、両方が1.0である場合には(S301:No)、最も低い周波数における楽音信号が抽出信号として、第1取り出し処理S100または第2取り出し処理S200で既に抽出されていると判定され、配列remain[f]に、0.0を代入する(S302)。ここで、remain[f]に代入される0.0は、最も低い周波数における楽音信号が指定以外を取り出す処理(S300)における抽出信号とはならないことを示している。
S302またはS303の処理後、S12,S22においてフーリエ変換された全ての周波数について、S301の処理が完了したか否かが判定され(S304)、S304の判定が否定される場合には(S304:No)、S301の処理へ戻り、S301の判定が未だ行われていない周波数のうち、最も低い周波数に対して、S301の判定が行われる一方、S304の判定が肯定される場合には(S304:Yes)、指定外信号処理(S310)へ移行する。
指定外信号処理(S310)では、OUT_L1[f]信号の一部となる1L[f]信号のレベルを調整すると共に、OUT_R1[f]信号の一部となる1R[f]信号のレベルを調整することで、指定以外を取り出す処理(S300)での抽出信号によって形成される定位(メインスピーカから出力される分)を調整するS311の処理が行われる。また、このS311の処理と平行して、指定外信号処理(S310)では、OUT_L2[f]信号の一部となる2L[f]信号のレベルを調整すると共に、OUT_R2[f]信号の一部となる2R[f]信号のレベルを調整することで、指定以外を取り出す処理(S300)での抽出信号によって形成される定位(サブスピーカから出力される分)を調整するS314の処理が行われる。
S311の処理では、OUT_L1[f]信号の一部となる1L[f]信号が算出される。具体的には、「INL_Lv[f]×ll+INR_Lv[f]×lr)×remain[f]×c」が、S12,S22においてフーリエ変換された全ての周波数について行われて、1L[f]信号が算出される。同様に、S311の処理では、OUT_R1[f]信号の一部となる1R[f]信号が算出される。具体的には、「INL_Lv[f]×rl+INR_Lv[f]×rr)×remain[f]×c」が、S12,S22においてフーリエ変換された全ての周波数について行われて、1R[f]信号が算出される。なお、cは、この指定外信号処理(S310)において1L[f]及び1R[f]を算出するために予め定められた係数であり、この係数cは、上述した係数a,bと同じであっても異なっていてもよい。
S311の処理後、1L[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S312)。1L[f]信号に対してS312の処理が行われると、OUT_L1[f]信号を構成する1L_3[f]信号が生成される。同様に、S311の処理後、1R[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S313)。1R[f]信号に対してS113の処理が行われると、OUT_R1[f]信号を構成する1R_3[f]信号が生成される。
また、S314の処理では、OUT_L2[f]信号の一部となる2L[f]信号が算出される。具体的には、「INL_Lv[f]×ll´+INR_Lv[f]×lr´)×remain[f]×d」が、S12,S22においてフーリエ変換された全ての周波数について行われて、2L[f]信号が算出される。同様に、S314の処理では、OUT_R2[f]信号の一部となる2R[f]信号が算出される。具体的には、「INL_Lv[f]×rl´+INR_Lv[f]×rr´)×remain[f]×d」が、S12,S22においてフーリエ変換された全ての周波数について行われて、2R[f]信号が算出される。なお、dは、この指定外信号処理(S310)において2L[f]及び2R[f]を算出するために予め定められた係数であり、この係数dは、上述した係数a,b,cと同じであっても異なっていてもよい。
S314の処理後、2L[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S315)。2L[f]信号に対してS315の処理が行われると、OUT_L2[f]信号を構成する2L_3[f]信号が生成される。同様に、S314の処理後、2R[f]信号に対して、ピッチ変更、レベル変更やリバーブ付与を行う加工処理が行われる(S316)。2R[f]信号に対してS316の処理が行われると、OUT_R2[f]信号を構成する2R_3[f]信号が生成される。
上述した通り、メイン処理部S30では、図5及び図6に示すように、S111,S211,S311の処理に加え、S114,S214,S314の処理が実行される。これにより、抽出された抽出信号における左チャンネル信号および右チャンネル信号を分配して、その分配した左チャンネル信号および右チャンネル信号に対し、各々独立した信号処理を施すことができる。そのため、抽出された抽出信号から分配された左および右チャンネル信号の各々に対して、異なる信号処理(定位を変更する処理)を施すことができる。もちろん、抽出された抽出信号から分配された左および右チャンネル信号の各々に対して、同一の信号処理を施すことも可能である。ここで、S111,S211,S311の処理で生成された信号は、加工処理の後、メインスピーカ用の端子であるOUT1_L端子およびOUT1_R端子から出力される一方で、S114,S214,S314の処理で生成された信号は、加工処理の後、サブスピーカ用の端子であるOUT2_L端子およびOUT2_R端子から出力される。よって、所望の条件毎に抽出信号を抽出した後、所望の条件における抽出信号(言い換えれば、1の条件における抽出信号)に対して、異なる信号処理や加工処理を施した場合には、その異なる信号処理や加工処理を施した各々の抽出信号を、OUT1端子およびOUT2端子の各々から、別々に出力することができる。
図4の説明に戻る。第1信号処理(S110)、第2信号処理(S210)および指定外信号処理(S310)が実行完了すると、第1信号処理(S110)で生成された1L_1[f]信号と第2信号処理(S210)で生成された1L_2[f]信号と指定外信号処理(S310)で生成された1L_3[f]信号とが合成されて、OUT_L1[f]信号が生成される。そして、そのOUT_L1[f]信号がL1ch出力処理部S60(図3参照)に入力されると、L1ch出力処理部S60は、入力したOUT_L1[f]信号をOUT1_L[t]へ変換して、バスライン17を介し、Lch用第1D/Aコンバータ13L1(図1参照)へ出力する。
同様に、第1信号処理(S110)で生成された1R_1[f]信号と第2信号処理(S210)で生成された1R_2[f]信号と指定外信号処理(S310)で生成された1R_3[f]信号とが合成されて、OUT_R1[f]信号が生成される。そして、そのOUT_R1[f]信号がR1ch出力処理部S70(図3参照)に入力されると、R1ch出力処理部S70は、入力したOUT_R1[f]信号をOUT1_R[t]信号へ変換して、バスライン17を介し、Rch用第1D/Aコンバータ13R1(図1参照)へ出力する。なお、OUT_L2[f]信号およびOUT_R2[f]信号の生成と、OUT2_L[t]信号およびOUT2_R[t]信号の変換も、上述と同様に行われる。
このように、OUT_L1[f]信号の生成においては、第1信号処理(S110)で生成された1L_1[f]信号と第2信号処理(S210)で生成された1L_2[f]信号との合成に加え、指定外信号処理(S310)で生成された1L_3[f]信号が合成される。同様に、OUT_R1[f]信号の生成においては、第1信号処理(S110)で生成された1R_1[f]信号と第2信号処理(S210)で生成された1R_2[f]信号との合成に加え、指定外信号処理(S310)で生成された1R_3[f]信号が合成される。よって、所望の条件毎に抽出された抽出信号に対し、第1信号処理(S110)または第2信号処理(S210)で抽出されなかった信号を合成することができる。従って、OUT_L1[f]信号およびOUT_R1[f]を、入力された楽音信号と同様の信号に、即ち、広がりのある自然な楽音にすることができる。
上述した通り、本実施形態のエフェクタ1では、第1取り出し処理(S100)あるいは第2取り出し処理(S200)で抽出された抽出信号に対し、信号処理(S110,S210)を行う。ここで、第1取り出し処理(S100)および第2取り出し処理(S200)は、設定された各条件毎に(周波数、定位および最大レベルが一組となった条件毎に)、各々の条件を満たす楽音信号を(左チャンネル信号および右チャンネル信号を)、抽出信号として抽出する。よって、信号処理を施す対象となる抽出信号の抽出を、複数の各条件(周波数、定位および最大レベルが一組となった条件の各々)にわたって行うことができる。
以上、本実施形態に基づき本発明を説明したが、本発明は上記形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の変形改良が可能であることは容易に推察できるものである。
上述の実施形態では、第1取り出し処理(S100)および第2取り出し処理(S200)における抽出信号の抽出に、周波数、定位および最大レベルが一組となった条件を使用したが、これに限られるものではない。即ち、抽出信号を抽出する条件として、周波数だけ、定位だけ、または、最大レベルだけを用いても良い。或いは、これらを適宜組み合わせても良い(例えば、周波数と定位とを組み合わせても良い)。
例えば、抽出信号を抽出する条件として、周波数だけを使用する場合には、第1取り出し処理(S100)内のS101の判定内容を、「周波数[f]が、予め設定された第1周波数範囲内であるか否か」へ変更すればよい。また、例えば、抽出信号を抽出する条件として、定位だけを使用する場合には、第1取り出し処理(S100)内のS101の判定内容を、「定位w[f]が、予め設定された第1設定範囲内であるか否か」へ変更すれば良い。また、例えば、抽出信号を抽出する条件として、最大レベルだけを使用する場合には、第1取り出し処理(S100)内のS101の判定内容を、「最大レベルML[f]が、予め設定された第1設定範囲内であるか否か」へ変更すれば良い。ここで、S101の判定内容変更に伴い、第2取り出し処理(S200)内のS201の判定内容を変更する場合には、S101の判定内容の変更と同様の変更を行えば良い。
なお、上述の実施形態では、抽出信号を抽出する条件として、周波数、定位および最大レベルが一組となった条件を使用しているので、条件外に中心周波数を持つノイズや、条件を超えたレベルを持つノイズ、或いは、条件を下回ったレベルを持つノイズから受ける影響を抑制することができる。よって、上述の実施形態では、抽出信号を正確に抽出することができる。
上述の実施形態のS101,S201では、周波数f、定位w[f]、および最大レベルML[f]がそれぞれ予め設定された範囲内であるか否かを判定したが、周波数f、定位w[f]、および最大レベルML[f]のうち少なくとも2つを変数とする任意の関数を用い、その関数により得られる値が設定された範囲内であるか否かを判定するようにしてもよい。これにより、より複雑な範囲を設定することができる。
上述の実施形態で実行される各加工処理(S112,S113,S115,S116,S212,S213,S215,S216,S312,S313,S315,S316)では、ピッチ変更、レベル変更、リバーブ付与が行われたが、これらの変更やリバーブ付与を、全ての加工処理で同一の内容に設定しても良いし、各加工処理の内容が異なっていてもよい。例えば、第1信号処理における加工処理(S112,S113,S115,S116)と、第2信号処理における加工処理(S212,S213,S215,S216)と、指定外信号処理における加工処理(S312,S313,S315,S316)とで、それぞれ異なる内容に設定しても良い。なお、第1信号処理、第2信号処理、及び指定外信号処理における各加工処理の内容が異なる場合には、各条件毎に抽出された各抽出信号に対して、異なる信号処理を施すことができる。
上述の実施形態では、左右2チャンネルの楽音信号を、信号処理を施す対象としてエフェクタ1に入力する構成としたが、左右に限らず、上下又は前後、あるいは任意の2方向に定位する2チャンネルの楽音信号を、信号処理を施す対象としてエフェクタ1に入力する構成であってもよい。また、エフェクタ1に入力する楽音信号を、3チャンネル以上の楽音信号としてもよい。エフェクタ1に3チャンネル以上の楽音信号を入力する場合には、各チャンネルの定位に応じた定位w[f](定位情報)を算出し、算出された各定位w[f]が設定範囲に収まるか否かを判定すればよい。例えば、左右の定位w[f]に加えて、上下及び/又は前後の定位を算出し、算出された左右の定位w[f]と上下及び/又は前後の定位が設定範囲に収まるか否かを判定する。左右前後4チャンネルの楽音信号を例にすると、それぞれ対となる2組の楽音信号(左右、前後)の定位を算出し、算出された左右の定位と前後の定位が設定範囲に収まるか否かを判定する。
上述の実施形態では、取り出し処理(S100,S200)において、設定範囲との比較を行う各信号のレベル(最大レベルML[f])として、楽音信号の振幅を用いる構成としたが、楽音信号のパワーを用いる構成としてもよい。即ち、上述の実施形態では、INL_Lv[f]を求めるために、IN_L[f]信号の複素式における実数部を2乗した値と、IN_L[f]信号の複素式における虚数部を2乗した値とを足し合わせ、その足し合わせた値の平方根を算出するものとしたが、例えば、IN_L[f]信号の複素式における実数部を2乗した値と、IN_L[f]信号の複素式における虚数部を2乗した値とを足し合わせることにより、INL_Lv[f]を求めてもよい。
上述の実施形態では、定位w[f]を左右チャンネル信号のレベルの比に基づいて算出する構成としたが、左右チャンネル信号のレベルの差に基づいて算出する構成としてもよい。
上述の実施形態では、定位w[f]を2チャンネルの楽音信号から各周波数帯域毎に一意的に求めたが、各周波数帯域においてそれぞれ求めた定位に基づいて、連続する複数の周波数帯域をグループとして、そのグループ内での定位の確率分布を求め、その定位の確率分布を定位情報(定位w[f])として用いてもよい。かかる場合、例えば、定位が所定の確率以上である範囲が、設定範囲(方向範囲として設定された範囲)に収まるか否かを判定することにより、所望する楽音信号を抽出することができる。
上述の実施形態では、S111,S114,S211,S214,S311,S314において、各取り出し処理(S100,S200,S300)により抽出された左右の楽音信号(即ち、抽出信号)から求められる定位w[f]と目標とする定位とに基づいて、抽出信号によって形成される定位を調整する構成とした。これに換えて、抽出された左右の楽音信号から、例えばそれらの信号を単に足し合わせる等によってモノラルの楽音信号を合成し、合成したモノラルの楽音信号に対し、目標とする定位に基づいて、抽出信号によって形成される定位を調整する構成としてもよい。
上述の実施形態では、各取り出し処理(S100,S200,S300)により抽出信号及び指定以外の信号をそれぞれ取り出した後、抽出信号及び指定以外の信号に対して各信号処理(S110,S210,S310)を施し、その後、得られた各信号(即ち、処理後の抽出信号及び指定以外の信号)を出力チャンネル毎に合成して、合成後の信号(OUT_L1[f]、OUT_R1[f]、OUT_L2[f]、およびOUT_R2[f])を得、その後、これらの合成後の信号に対してそれぞれ逆FFT処理(S61,S71,S81,S91)を施すことにより、出力チャンネル毎の時間領域の信号を得る構成とした。
これに換えて、各取り出し処理(S100,S200,S300)により抽出信号及び指定以外の信号をそれぞれ取り出した後、抽出信号及び指定以外の信号に対して各信号処理(S110などに相当する処理)を施し、その後、得られた各信号(即ち、処理後の抽出信号及び指定以外の信号)に対してそれぞれ逆FFT処理(S61などに相当する処理)を施すことにより時間領域の信号に変換し、その後、得られた各信号(即ち、時間領域で表された処理後の抽出信号及び指定以外の信号)を出力チャンネル毎に合成することにより、出力チャンネル毎の時間領域の信号を得る構成としてもよい。かかる場合もまた、上述した実施形態と同様に、周波数軸上での信号処理が可能である。
あるいは、各取り出し処理(S100,S200,S300)により抽出信号及び指定以外の信号をそれぞれ取り出した後、抽出信号及び指定以外の信号に対してそれぞれ逆FFT処理(S61などに相当する処理)を施すことにより時間領域の信号に変換し、その後、得られた各信号(即ち、時間領域で表された抽出信号及び指定以外の信号)に対して各信号処理(S110などに相当する処理)を施し、その後、得られた各信号(即ち、時間領域で表された処理後の抽出信号及び指定以外の信号)を出力チャンネル毎に合成することにより、出力チャンネル毎の時間領域の信号を得る構成としてもよい。
上述の実施形態では、左右チャンネル信号から抽出信号を抽出するための条件の1つとして、最大レベルML[f]を用いる構成としたが、最大レベルML[f]の代わりに、複数のチャンネル信号における各周波数帯域のレベルの和や平均などを抽出条件として用いる構成としてもよい。
上述の実施形態では、抽出信号を取り出すための取り出し処理を、2つ(第1取り出し処理S100、第2取り出し処理S200)としたが、3つ以上の取り出し処理を設ける構成としてもよい。即ち、抽出条件(例えば、周波数、定位および最大レベルが一組となった条件)を2つでなく、3つ以上とする構成としてもよい。また、抽出信号を取り出すための取り出し処理を3つ以上とした場合に、その数に応じて信号処理を増やす構成としてもよい。
上述の実施形態では、指定以外を取り出す処理(S300)を設け、左右チャンネル信号における抽出信号以外の信号を取り出す構成としたが、指定以外を取り出す処理(S300)を設けない構成としてもよい。即ち、左右チャンネル信号における抽出信号以外の信号は取り出さない構成としてもよい。指定以外を取り出す処理(S300)を設けない場合には、指定以外信号処理(S310)も設けないようにすればよい。
上述の実施形態では、左右1組の出力端子を、2組(即ち、OUT1_L端子とOUT1_R端子との組、及び、OUT2_L端子とOUT2_R端子との組)としたが、出力端子の組は、1組であってもよいし、3組以上であってもよい。例えば、5.1チャンネルなどであってもよい。出力端子の組が1組である場合には、各信号処理において各チャンネル信号の分配を行わず、図7(a)及び(b)のグラフにおける0.25〜0.75の範囲を0.0〜1.0に(つまり、2倍に)引き伸ばしたグラフを用いて、S111,S211,S311の計算を行うようにすればよい。
上述の実施形態の各信号処理(S110,S210,S310)では、抽出した楽音(抽出信号)の定位の変更と、ピッチ変更、レベル変更、及びリバーブ付加から構成される加工処理を行うものとしたが、抽出した楽音に対して行う信号処理は常時同じ処理でなくてもよい。即ち、抽出条件毎に信号処理の実行内容を適宜取捨選択し、抽出条件毎に信号処理の実行内容が異なるように構成してもよい。また、信号処理の内容として、定位の変更と、ピッチ変更、レベル変更、及びリバーブ付加に加えて、その他の公知の信号処理を行ってもよい。
上述の実施形態では、係数ll,lr,rl,rr,ll´,lr´,rl´,rr´が、図7(a)及び(b)に示すように、横軸に対して直線的に変化するものとしたが、増加又は減少する部分については、直線的増加又は直線的減少でなく、曲線(例えば、サインカーブ)的な増加又は減少としてもよい。
上述の実施形態では、窓関数としてハニング窓を用いたが、ハミング窓やブラックマン窓を用いてもよい。