(57)【特許請求の範囲】
【請求項１】
入力信号にピッチ変換処理を施して加工信号を生成する加工信号生成手段と、
前記入力信号と前記加工信号とを混合して出力する混合手段と、
ある音階の所定範囲の全ての音階音のピッチを記憶するピッチ記憶手段と、
前記入力信号と対応する音階音を推定する推定手段とを備え、
前記加工信号生成手段が、前記推定手段が入力信号と対応する音階音を推定できた場合のみ、前記入力信号のピッチをその推定した音階音のピッチに近づけるように前記ピッチ変換処理を行って前記加工信号を生成する手段であり、
前記推定手段が、前記入力信号のピッチと、前記ピッチ記憶手段に記憶されているある音階音のピッチとの差が所定誤差範囲内の場合に、その音階音が前記入力信号と対応する音階音であると推定する手段であり、
前記所定誤差範囲は、前記ピッチ記憶手段がピッチを記憶する音階音の全てについて、ある音階音についての誤差範囲が他の音階音についての誤差範囲と重ならないように定めたものであることを特徴とする音響信号処理装置。
【請求項２】
コンピュータを、
入力信号にピッチ変換処理を施して加工信号を生成する加工信号生成手段と、
前記入力信号と前記加工信号とを混合して出力する混合手段と、
ある音階の所定範囲の全ての音階音のピッチを記憶するピッチ記憶手段と、
前記入力信号と対応する音階音を推定する推定手段として機能させるためのプログラムであって、
前記加工信号生成手段が、前記推定手段が入力信号と対応する音階音を推定できた場合のみ、前記入力信号のピッチをその推定した音階音のピッチに近づけるように前記ピッチ変換処理を行って前記加工信号を生成する手段であり、
前記推定手段が、前記入力信号のピッチと、前記ピッチ記憶手段に記憶されているある音階音のピッチとの差が所定誤差範囲内の場合に、その音階音が前記入力信号と対応する音階音であると推定する手段であり、
前記所定誤差範囲は、前記ピッチ記憶手段がピッチを記憶する音階音の全てについて、ある音階音についての誤差範囲が他の音階音についての誤差範囲と重ならないように定めたものであることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力信号と、入力信号に対して処理を施して得た信号とを混合して出力するエフェクト機能を有する音響信号処理装置及び、コンピュータをこのような音響信号処理装置として機能させるためのプログラムに関する。
【背景技術】
【０００２】
従来から、入力信号と、入力信号に対して処理を施して得たボイス信号と呼ばれる信号とを混合して出力する、ダブリングエフェクトと呼ばれるエフェクトを付与するエフェクタが知られている。
このようなエフェクタにおいて、ボイス信号は、ディレイを用いて入力信号を遅延させて生成したり、入力信号のピッチを単に一定量ずらすピッチシフトを行ったりして生成したりすることが行われていた。
また、出力信号は、入力信号とボイス信号を重ねたり、これらの各信号をパンで左右に定位させたりしたものである。
【０００３】
このようなエフェクタについては、例えば以下の特許文献１乃至５に記載されている。
【特許文献１】特許第３１８３１１７号公報
【特許文献２】米国特許第５３０１２５９号明細書
【特許文献３】米国特許第５２３１６７１号明細書
【特許文献４】米国特許第５５６７９０１号明細書
【特許文献５】米国特許第６０４６３９５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のエフェクタにおいては、入力信号のピッチに関係なく同じ基準でボイス信号の生成を行うようにしていた。そしてこのため、入力信号の音程が音階音からずれている場合にもそのずれを強調してしまったり、ボイス信号のピッチが音階音のピッチから大きく外れてしまったりして、ダブリングエフェクトをかけると却って不自然な聴感になってしまう場合があるという問題があった。
この発明は、このような問題を解決し、常に自然な聴感の出力信号を得られるエフェクトを実現することを目的とする。
【課題を解決するための手段】
【０００５】
上記の目的を達成するため、この発明の音響信号処理装置は、入力信号にピッチ変換処理を施して加工信号を生成する加工信号生成手段と、上記入力信号と上記加工信号とを混合して出力する混合手段と、ある音階の所定範囲の全ての音階音のピッチを記憶するピッチ記憶手段と、上記入力信号と対応する音階音を推定する推定手段とを設け、上記加工信号生成手段を、上記推定手段が入力信号と対応する音階音を推定できた場合のみ、上記入力信号のピッチをその推定した音階音のピッチに近づけるように上記ピッチ変換処理を行って上記加工信号を生成する手段としたものであり、上記推定手段を、上記入力信号のピッチと、上記ピッチ記憶手段に記憶されているある音階音のピッチとの差が所定誤差範囲内の場合に、その音階音が上記入力信号と対応する音階音であると推定する手段としたものであり、上記所定誤差範囲を、上記ピッチ記憶手段がピッチを記憶する音階音の全てについて、ある音階音についての誤差範囲が他の音階音についての誤差範囲と重ならないように定めたものである。
【０００８】
また、この発明は、装置の発明として構成し、実施することができるのみならず、方法、コンピュータまたはデジタル信号プロセッサ等のプロセッサのプログラム、そのようなプログラムを記憶した記憶媒体等の形態で実施することもできる。
【発明の効果】
【０００９】
以上のようなこの発明の音響信号処理装置によれば、常に自然な聴感の出力信号を得られるエフェクトを実現することができる。
また、この発明のプログラムによれば、コンピュータを音響信号処理装置として機能させ、同様な効果を得ることができる。
【発明を実施するための最良の形態】
【００１０】
以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
〔第１の実施形態：図１乃至図１６〕
まず、図１を用いて、この発明の音響信号処理装置の第１の実施形態である電子楽器の構成について説明する。図１はその電子楽器の構成を示すブロック図である。
図１に示すように、この電子楽器１０は、ＣＰＵ１１，ＲＯＭ１２，ＲＡＭ１３，検出回路１４，表示回路１５，オーディオ信号インタフェース（Ｉ／Ｆ）１６，通信Ｉ／Ｆ１７，音源部１８，信号処理部１９を備え、これらがシステムバス２０によって接続されている。そして、検出回路１４には操作子２１が、表示回路１５には表示器２２が、信号処理部１９にはサウンドシステム２３が接続されている。
【００１１】
そして、ＣＰＵ１１は、電子楽器１０を統括制御する制御部であり、ＲＯＭ１２に記憶された所要の制御プログラムを実行することにより、検出回路１４を介した操作子２１の操作内容検出、表示回路１５を介した表示器２２の表示制御、オーディオ信号Ｉ／Ｆ１６を介したオーディオ信号の入力受付、通信Ｉ／Ｆ１７を介した通信の制御、音源部１８における波形データ生成の制御、信号処理部１９における信号処理の制御等の制御動作を行う。
【００１２】
ＲＯＭ１２は、ＣＰＵ１１が実行する制御プログラムや、変更する必要のないデータ等を記憶する記憶手段である。このＲＯＭ１２をフラッシュメモリ等の書き換え可能な不揮発性記憶手段によって構成し、これらのデータを更新できるようにすることも考えられる。
ＲＡＭ１３は、ＣＰＵ１１のワークメモリとして使用したり、一時的に使用するパラメータの値等を記憶したりする記憶手段である。
【００１３】
検出回路１４は、操作子２１に対してなされた操作内容を検出してその内容に従った信号をＣＰＵ１１に伝達するための回路である。また、操作子２１は、キー、ボタン、ダイヤル、スライダ等によって構成され、電子楽器１０に対するユーザからの操作を受け付けるための操作手段である。なお、タッチパネルをＬＣＤに積層する等して表示器２２と操作子２１とを一体に形成することもできる。また、電子楽器１０の種類に応じて、鍵盤、弦、パッド、ペダル、ブレスコントローラ等、演奏操作を受け付けるための操作子も含む。
【００１４】
表示回路１５は、ＣＰＵ１１からの指示に従って表示器２２における表示を制御する回路である。また、表示器２２は、液晶ディスプレイ（ＬＣＤ）や発光ダイオード（ＬＥＤ）ランプ等によって構成され、電子楽器１０の動作状態や設定内容あるいはユーザへのメッセージ、ユーザからの指示を受け付けるためのグラフィカル・ユーザ・インタフェース（ＧＵＩ）等を表示するための表示手段である。
【００１５】
オーディオ信号Ｉ／Ｆ１６は、マイクや他の音響機器等を接続し、オーディオ信号の入力を受け付けるためのインタフェースである。そして、ここに入力されたオーディオ信号は、信号処理部１９における信号処理に供するようにしている。このとき、ＲＡＭ１３等により信号をバッファできるようにしてもよい。また、アナログ信号の入力を受け付ける場合にはＡ／Ｄ変換を行ってデジタル信号に変換するようにしている。
【００１６】
通信Ｉ／Ｆ１７は、ＬＡＮ（ローカルエリアネットワーク）のようなネットワークに接続する等して、ＰＣ（パーソナルコンピュータ）等の外部装置と通信するためのインタフェースである。そして、例えばイーサネット（登録商標）規格のインタフェースを用いて構成することができる。
また、通信Ｉ／Ｆ１７として、他の電子楽器、音源装置等、ＭＩＤＩデータを取り扱う外部装置との間でＭＩＤＩデータの送受信を行うためのインタフェースを設けてもよい。このようなインタフェースは、例えばＵＳＢ規格や、ＩＥＥＥ１３９４（Institute of Electrical and Electronic Engineers 1394）規格、あるいはＲＳ２３２Ｃ（Recommended Standard 232 version C）規格等に準拠したインタフェースによって構成することができる。ＭＩＤＩデータとそれ以外のデータを、共通のインタフェースを介して送受信できるようにすることも考えられる。
【００１７】
音源部１８は、演奏操作子の操作に従ってＣＰＵ１１が生成したり、通信Ｉ／Ｆ１７を介して外部装置から受信したりしたＭＩＤＩ形式の演奏データを基に、複数の発音チャンネルでデジタル音響信号である波形データを生成する音源手段である。そして、生成した波形データは信号処理部１９に入力して信号処理に供する。
【００１８】
信号処理部１９は、エフェクタやミキサ等として機能し、音源部１８によって生成されたりオーディオ信号Ｉ／Ｆ１６を介して入力されたりした波形データに対し、ＣＰＵ１１により設定される処理パラメータに従ったエフェクト付与やミキシング等の信号処理を施す信号処理手段である。また、処理後の信号は、サウンドシステム２３に入力し、その信号に基づく発音を行わせるようにしている。
これらの音源部１８や信号処理部１９は、ソフトウェアによって実現してもハードウェアによって実現してもよい。
【００１９】
ところで、上述の電子楽器１０は、信号処理部１９に、入力信号に対してダブリングのエフェクトを付与するダブリングエフェクタを備えている。なおここでは、ダブリングとは、元の音に、その音を加工した音を重ね、音に厚みを出す処理を指すものとする。そして、このようなダブリング自体は、ダブルトラック録音やＡＤＴ（Artificial Double Tracking）を模した効果として広く利用されており、ボーカルだけでなくエレキギター等の楽器音に使われることも多い。
【００２０】
また、上記の「加工」としては例えば、ディレイ、パンニング、ピッチシフト、あるいはこれらにモジュレーションやデチューンを組み合わせた処理が使用されていた。
この電子楽器１０において行う「加工」も、処理の内容としてはこれらのものを利用可能であるが、これらの「加工」を、入力音のピッチと音階音のピッチとの関係を意識して行うようにしており、この点が、この実施形態の特徴である。
【００２１】
次に、図２に、信号処理部１９に備える上記のようなダブリングエフェクタの機能構成を示す。
図２に示すように、ダブリングエフェクタ３０は、ボイス信号生成部４０，遅延処理部５０，ミックス部６０を備えている。
このうち、ボイス信号生成部４０は、入力信号に対してピッチ変換処理を行ってボイス信号を生成する加工信号生成手段であり、その構成は図３に示すものである。
そして、図３に示すように、ボイス信号生成部４０は、ピッチ検出部４１，ピッチバッファ４２，音階音推定部４３，音高テーブル４４，推定値バッファ４５，ピッチ加工部４６，ピッチ変換部４７を備えている。
【００２２】
そして、ピッチ検出部４１は、入力信号のピッチ（１周期分の時間長もしくはその周波数）を検出してピッチ情報を取得する機能を有するピッチ検出手段である。ピッチ情報取得のためのピッチ検出処理の詳細については、後述する。
ピッチバッファ４２は、ピッチ検出部４１が検出した入力信号のピッチのサンプルを一時的に記憶しておく機能を有する。このピッチバッファは、容量が一杯になった場合に古いデータから消去するリングバッファとするとよい。
【００２３】
音階音推定部４３は、入力信号と対応する音階音を推定する機能を有する推定手段である。そして、ピッチバッファ４２に記憶している入力信号のピッチと、音高テーブル４４に記憶している音階音のピッチとを比較し、入力信号のピッチと、ある音階音のピッチとの差が所定誤差範囲内である場合、入力信号と対応する音階音がその音階音であると推定するようにしている。
【００２４】
より具体的には、例えば、音高テーブル４４に、平均律の音階音として、音高ｎ＝０〜１２７についてピッチＳｃａｌｅ（ｎ）＝４４０×２（ｎ−６９）／１２Ｈｚ（ヘルツ）を記憶させておくと共に、各音高の許容誤差範囲Δｈ（ｎ）を適当な値に定めておき、入力信号のピッチＰＩ（ここでは周波数）について以下の数１を満たすｎが存在する場合に、その入力信号と対応する音階音の音高がｎであると推定するようにすることが考えられる。
【数１】
0004655811.tif 000002
【００２５】
この場合、Δｈ（ｎ）の値は、ｎによって異なっていてもよいが、以下の数２を満たすように定めるようにする。すなわち、各音階音に関する許容誤差範囲が重ならないように定めるようにする。また、ＰＩがどのｎについても数１を満たさない場合は、入力信号はどの音階音とも対応しないと推定し、推定値として無効な値を出力するようにする。
【数２】
0004655811.tif 000003
【００２６】
また、ある時刻ｔにおいて、Δｗ（ｎ）だけ過去の時点（すなわち時刻ｔ−Δｗ（ｎ））から現在まで連続して同じｎについてＰＩが上記数１を満たす場合のみ、入力信号と対応する音階音の音高がｎであると推定するようにしてもよい。入力信号がある音階音から別の音階音に移行する途中で、その間の音階音についてごく短時間だけ数１を満たしてしまうことも考えられるが、このような場合には入力信号が音階音と対応していると捉えない方が適切であるためである。
【００２７】
ここでは、この方式を採用しており、音階音推定部４３は、数１により推定した音階音のピッチを推定値バッファ４５に記憶させておき、数１により推定した音階音がΔｗ（ｎ）だけの間同じ音高であった場合に、推定値バッファ４５に記憶させているピッチを、入力信号と対応すると推定される音階音のピッチである推定音階音ピッチＰＥとしてピッチ加工部４６に出力するようにしている。数１により推定される音階音がない場合や、Δｗ（ｎ）だけの間同じ音高でない場合には、推定音階音ピッチＰＥとしてその旨のデータをピッチ加工部４６に出力するようにすればよい。なお、Δｗ（ｎ）の値も、ｎによって異なっていてよい。
【００２８】
図４に、以上の方式で入力信号と対応する音階音を推定した場合の推定結果の例を示す。
この図に示すように、入力信号のピッチが時間の経過に従って実線７１に示すように推移した場合、上述した方式で入力信号の音高を推定すると、時刻ｔ２からｔ３までの間は入力信号と対応する音階音の音高がｋ、時刻ｔ５からｔ６までの間は入力信号と対応する音階音の音高がｋ−１であると推定することになる。破線７２〜７５が各音階音の音高における許容誤差範囲を、太線７６，７７が入力信号ＰＩと対応する音階音及びそのピッチを示している。時刻ｔ１以前にも、ＰＩがＳｃａｌｅ（ｋ−１）の許容誤差範囲内に入っているが、その時間はΔｗ（ｋ−１）より短いため、ここではＰＩと対応する音階音はないと推定されている。
【００２９】
なお、リアルタイムでエフェクト処理を行う際には、将来の時点における入力信号のピッチＰＩはわからないが、予め用意された音響信号についてエフェクト処理を行う際には、将来の時点における入力信号のピッチＰＩも処理に利用できる。そして、この場合、上記のΔｗ（ｎ）に関し、Δｗ（ｎ）以上の時間連続して同じｎについてＰＩが上記数１を満たす場合に、その連続する全ての時間範囲で、入力信号と対応する音階音の音高がｎであると推定するようにすることも考えられる。このようにした場合、図５に示した例では、時刻ｔ１からｔ３までの間は入力信号と対応する音階音の音高がｋ、時刻ｔ４からｔ６までの間は入力信号と対応する音階音の音高がｋ−１であると推定することになる。
また、ある時点からΔｗ（ｎ）だけ未来の時間まで連続して同じｎについてＰＩが上記数１を満たす場合に、その時点において、入力信号と対応する音階音の音高がｎであると推定するようにすることも考えられる。
【００３０】
次に、ピッチ加工部４６は、入力信号に対するピッチシフト量を求め、これをピッチ検出部４１が取得した入力信号のピッチに加算して、ボイス信号のピッチを示すピッチ情報を生成し、ピッチ変換部４７におけるピッチ変換処理に供する機能を有する。このとき、ピッチシフト量は、ボイス信号のピッチが、入力信号のピッチよりも、音階音推定部４３により入力信号と対応すると推定された音階音のピッチに近づくように定めるとよい。また、音階音推定部４３により入力信号と対応する音階音が推定できた場合のみ、そのピッチシフト量を求め、ピッチ変換部４７によりボイス信号を生成させるようにするとよい。これらのピッチ加工処理については、後に詳述する。
【００３１】
ピッチ変換部４７は、ピッチ検出部４１が取得した入力信号のピッチ情報と、ピッチ加工部４６が生成したボイス信号のピッチ情報とを利用し、入力信号に対してピッチ変換処理を行ってボイス信号を生成する機能を有するピッチ変換手段である。このとき、なるべく音色を変えず、ピッチのみ変換するような処理を行うことが好ましい。この実施形態で採用しているピッチ変換処理については後に詳述する。また、ピッチ変換部４７は、生成したボイス信号をミックス部６０に供給する。
【００３２】
図２の説明に戻ると、遅延処理部５０は、バッファメモリ等によって構成され、ミックス部６０に入力する入力信号を、ボイス信号生成部４０でのボイス信号生成処理に必要な時間だけ遅延する遅延手段である。この遅延の長さは、例えば２０ミリ秒（ｍｓ）程度とすればよい。
【００３３】
ミックス部６０は、入力信号とボイス信号とを混合して出力する混合手段であり、ゲイン調整部６１，６４，パン調整部６２，６５，加算部６３，６６を備えている。そして、遅延処理部５０によって遅延された入力信号と、ボイス信号生成部４０によって生成されたボイス信号とに対してそれぞれゲイン調整部６１，６４でゲイン調整を行った上でパン調整部６２，６５によりＬ側信号とＲ側信号に振り分け、これらを加算部６３，６６で加算して、ＬとＲのステレオ信号として出力する。
なお、ゲイン調整やパン調整は必須ではなく、単に入力信号とボイス信号とを加算して出力するようにしてもよい。
【００３４】
信号処理部１９に、他のエフェクタやミキサの機能を設けてもよいことはもちろんであり、ダブリングエフェクタ３０の出力を、それらのエフェクタに入力してさらにエフェクトを付与したり、ミキサに入力してミキシング処理に供したりすることもできる。逆に、他のエフェクタやミキサによる処理後の信号をダブリングエフェクタ３０に入力するようにすることも考えられる。
また、信号処理部１９が複数のチャンネルで信号処理を行う場合に、エフェクタを各チャンネル毎に設けてそれぞれ独立に動作させられるようにしてよいことは、もちろんである。
【００３５】
次に、図５を用いて、ピッチ検出部４１におけるピッチ検出処理について説明する。
ピッチ検出部４１においては、ピッチの検出は、基本的には、入力信号波形１０１と、その入力信号波形１０１の＋側及び−側のエンベロープに所定値（又は所定の関数値）を乗算して得た＋側エンベロープ１０２及び−側エンベロープ１０３とが交差する（サンプル値の大小関係が入れ替わる）タイミングを検出することにより行っている。
【００３６】
より具体的には、検出フラグＩＲＱを用意し、入力信号波形１０１が＋側エンベロープ１０２と交差した時点Ｔ１，Ｔ３でこれを０から１に立ち上げ、入力信号波形１０１が−側エンベロープ１０３と交差した時点Ｔ２，Ｔ４で１から０に立ち下げるようにし、ＩＲＱフラグの立ち上がりから次の立ち上がりまでの時間を、サンプル数をカウントすることにより計測するようにしている。この計測した時間（サンプル数）を検出したピッチとする。
【００３７】
なお、Ｔ１の直後にも入力信号波形１０１が＋側エンベロープ１０２と交差するが、この時点ではＩＲＱは既に１であるので、立ち上がりは起こらない。そして、Ｔ２にＩＲＱフラグが立ち下がった後で入力信号波形１０１が＋側エンベロープ１０２と交差するＴ３で、次の立ち上がりが起こる。同様なことが、−側エンベロープ１０３についても言える。
このようにエンベロープを利用するのは、高調波成分を多く含み、１周期内で何度もゼロクロスを繰り返すような信号や、波形の形が崩れていくつものピークを持つような信号等についてのピッチ検出間違いを防ぐためで、ゼロクロスのみの検出に比べるとはるかに正確なピッチが得られる。
【００３８】
またここでは、処理対象のオーディオ信号のサンプリング周波数は４４．１キロヘルツ（ｋＨｚ）とし、この場合サンプリング周期は約０．０２ｍｓである。そして、サンプリング周期より細かい精度でピッチを求めようとする場合には、補間を行って、交差のタイミングをより細かく求めるようにすることも考えられる。
また、図５に示した例では、＋側及び−側のエンベロープ１０２，１０３は、時間の経過に応じて減衰するようなものとし、前者はＩＲＱフラグの立ち上がり、後者は立ち下がりをトリガに減衰をリセットするようなものとしている。
【００３９】
そして、ピッチ検出部４１は、以上のような動作により検出した入力信号のピッチを、順にピッチバッファ４２に記録していき、所定タイミング毎、ここでは６ｍｓ毎に、ピッチバッファ４２に記録したピッチのうち所定個数の平均値を、その時点の入力信号波形１０１のピッチを示すピッチ情報として出力するようにしている。また、上記の所定個数は例えば１６個とすればよく、ピッチバッファ４２に記録した数がこれに満たない場合には、既に記録されている分のみの平均値とすればよい。
【００４０】
また、上記の検出を行う場合に、ノイズを除去して精度を上げるため、また、ボイス信号の生成を行うべき部分と行うべきでない部分を区別するため、検出条件や検出結果について、以下のような評価を行うようにするとよい。
【００４１】
まず、ピッチ検出は、入力信号のレベルが所定値以上の場合にのみ行うようにするとよい。あまりにレベルが低い信号は、無音の信号に混入したノイズと考えられるためである。
また、入力信号波形１０１がゼロレベルと交差するゼロクロスの回数をカウントし、時間当たりのゼロクロス回数が所定値以上あった場合に、ピッチ検出を行わないようにするとよい。この閾値をここでは６ｍｓ当たり３０回以上としている。このようになる部分では、入力信号は、人の声のうち子音に該当するものであり、このような部分ではボイス信号の加算を行わない方が好ましい出力音が得られることが経験的にわかっているので、ピッチ検出をやめ、それに連動させてボイス信号の生成も停止させるためである。
【００４２】
また、以上の基準を満たす入力信号に対してピッチの検出を開始した場合でも、連続して検出したピッチのばらつきが、所定範囲内、例えば１２．５％以内であった場合に初めて連続検出モードに移行し、これが満たされるまでは検出したピッチの値をピッチバッファ４２に記録しないようにするとよい。誤差が大きい場合には、検出結果を信用できないためである。
【００４３】
さらに、ＩＲＱフラグの立ち上がりから立ち下がりまでの期間の長さをＰＣＮＴ１、立ち下がりから立ち上がりまでの期間の長さをＰＣＮＴ０としてそれぞれ計測し、以下の（ａ）〜（ｃ）の値を求めてバッファに記録し、最新の検出値を１つ前にピッチバッファ４２に記録した値と比較した場合の誤差が所定範囲内、例えば１２．５％以内であった場合にのみ、検出した値を新たにピッチバッファ４２に記録するようにしてもよい。（ａ）〜（ｃ）のうち任意の個数について同時に誤差が所定範囲内であった場合に記録を行うようにしてもよい。
（ａ）ＰＣＮＴ１＋ＰＣＮＴ０（ＩＲＱフラグの立ち上がりから次の立ち上がりまで）
（ｂ）ＰＣＮＴ０＋ＰＣＮＴ１（ＩＲＱフラグの立ち下がりから次の立ち下がりまで）
（ｃ）２周期分のＰＣＮＴ１＋ＰＣＮＴ０
（ａ）は図５に示したピッチの検出値そのものである。
【００４４】
また、上記（ａ）〜（ｃ）に代えてまたはこれに加えて、（ｄ）として２周期分のＰＣＮＴ１＋ＰＣＮＴ０を検出して（ａ）の２倍の値と比較し、周期ミスの確認を行うようにしてもよい。
さらに、上記の（ａ）〜（ｄ）で誤差が所定範囲内でなかった場合に、検出ミスとしてその回数をカウントし、これが所定回数以上となった場合に検出を中止して初めからやり直すようにしてもよい。
例えば、ミスが３回以下の場合には単にピッチバッファ４２への記録を行わずにピッチ検出を続行し、ミスが４回から７回の場合には検出した値をピッチバッファ４２に記録し、比較対象の値を更新してピッチ検出を続行し、ミスが８回以上の場合にはそれまでピッチバッファ４２に記録したデータを全て破棄して初めから検出をやり直す等である。
【００４５】
次に、図６及び図７を用いて、ピッチ変換部４７におけるピッチ変換処理について説明する。
ピッチ変換部４７においては、ピッチ変換処理として、入力信号１１１を窓関数を用いて切り出し、これを要素として並べ、その並べる周期によって変換後の波形のピッチを決定する処理を行うようにしている。なおここでは、図６及び図７に示すように、入力信号１１１の切り出しは、ＯＵＴ０とＯＵＴ１の２系統でタイミングをずらして行い、これらを加算したものをピッチ変換後のボイス信号として出力するようにしている。そして、このような処理によれば、入力信号１１１のフォルマント情報を保持したままピッチ変換を行うことができる。
この手法は、Ｌｅｎｔ法と呼ばれ、以下の論文に記載された方法を応用したものである。
Keith Lent (1989) “An efficient method for pitch shifting digitally sampled sounds.” Computer Music Journal Vol. 13 No.4. pp.65-71
【００４６】
図６に示すのが、ピッチダウン（周波数減少）の場合の処理例、図７に示すのが、ピッチアップ（周波数増加）の場合の処理例である。
また、これらの図において、ＰＩは、ピッチ検出部４１が検出結果として出力する入力信号１１１のピッチの値、ＰＶは、ピッチ加工部４６が出力するボイス信号のピッチの値である。また、ＳＢ及びＲＢは、それぞれ基準区間及び出力区間の長さを示すが、これらの符号は区間自体を表わす符号としても用いる。また、上記の各値は、信号の内容によって変化するものであるので、異なる時点の値には「′」や「″」をつけて区別している。
【００４７】
そして、ピッチ変換処理においてはまず、ボイス信号の出力とは関係なく、入力信号１１１をバッファに書き込むと共に、その入力信号１１１についてピッチＰＩの２倍の期間を持つ基準区間ＳＢを順に設定していくようにしている。そして、出力のための窓関数による切り出しを行う際には、この基準区間を単位に行うようにしている。
基準区間の長さは、ピッチＰＩが変われば当然変わるが、上述のようにピッチ検出部４１はピッチ情報の出力を６ｍｓ毎に行うようにしているので、次の出力が行われるまでは、ピッチＰＩの値は変化しないことになる。
なお、上記のバッファは、遅延処理部５０のバッファと共通化してもよい。
【００４８】
一方、出力信号の生成としては、まずＯＵＴ０系統の信号生成を開始するが、この場合、ピッチＰＶの２倍の期間を持つ出力区間ＲＢの設定を行う。そして、その出力区間ＲＢにおいては、その出力区間ＲＢの開始時点における最新の基準区間ＳＢ内の入力信号１１２を、その先頭から順にバッファから読み出して出力する。このとき、読み出した信号には窓関数１１３を乗算するが、ここでは、この窓関数として、長さが読み出しを行う基準区間ＳＢと等しいハニング窓を用いている。また、入力信号１１１のバッファへの書き込みと、出力のための読み出しは、並行して行われることになる。
【００４９】
また、ピッチダウンの場合、ＲＢ＞ＳＢであるので、該当する基準区間ＳＢの入力信号１１２を全て読み出した後も、出力区間ＲＢは続くことになるが、この部分については、「０」のデータを出力するようにしている。
そして、出力区間ＲＢが終了すると、その時点でのボイス信号のピッチＰＶ″に従って新たな出力区間ＲＢ″を設定し、その開始時点の最新の基準区間ＳＢ′の入力信号の読み出しを行い、以後この処理を繰り返す。
【００５０】
ＯＵＴ１系統の信号生成についても、開始時点をＰＶだけずらす点以外は、ＯＵＴ０系統の場合の処理と同じものとしている。ただし、読み出しを行う基準区間や、出力区間の長さについては、各出力区間の設定時の情報に従って定めるので、ＯＵＴ０系統の出力信号と全く同じ信号が生成されるとは限らない。
そして、上述のように、ＯＵＴ０系統とＯＵＴ１系統の出力を加算して、ボイス信号として出力する。このような処理により、入力信号１１１と同様なフォルマントを有するピッチＰｖのボイス信号を出力することができる。
【００５１】
一方、ピッチアップの場合には、図７に示す通りＲＢ＜ＳＢであるので、基準区間ＳＢの入力信号１１２を全て読み出す前に出力区間ＲＢが終了するが、この場合には、出力区間ＲＢの終了時に読み出しを中止するようにしている。図７に仮想線で示した波形は、その後の読み出されない部分である。そして、これに対応して、窓関数１１４として、幅がＲＢと等しいハニング窓を用いている。
【００５２】
しかし、出力区間ＲＢの終了時に、次の出力区間ＲＢ″の設定を行い、その開始時点の最新の基準区間ＳＢの入力信号の読み出しを開始する点は、図６の場合と同様である。ただし、図７の例のように、出力区間ＲＢ″の設定時に入力信号１１１において基準区間ＳＢが終了していない場合、同じ基準区間ＳＢの入力信号１１２を、出力区間ＲＢ″でも再度読み出すことになる。
ＯＵＴ１系統の信号生成について開始時点をＰｖだけずらす点も、図６の場合と同様である。
【００５３】
このような処理により、ピッチアップの場合にも、入力信号１１１と同様なフォルマントを有するピッチＰｖのボイス信号を出力することができる。
なお、もしボイス信号のピッチを入力信号を等しくするのであれば、どちらの処理も適用可能である。
【００５４】
また、上述したピッチ変換処理において、入力信号１１１のバッファへの書き込みと読み出しの速度（時間当たりの処理サンプル数）は等しくするとよいが、読み出し速度を異ならせることにより、入力音声の声質を、男性から女性又はその逆に変換させるジェンダー効果を得ることも考えられる。
さらに、ピッチがサンプル数の整数倍にならない場合等、サンプルとサンプルの間のタイミングにおける信号値が必要になった場合には、適宜補間処理を行うようにするとよい。
【００５５】
次に、図８乃至図１６を用いて、ＣＰＵ１１が実行する、以上説明してきたピッチ検出、音階音推定、ピッチ加工及びピッチ変換に関する処理について説明する。これらの処理は、ここではＣＰＵ１１が信号処理部１９から必要な情報を取得して行うものとする。そしてこの場合、ＣＰＵ１１は、ダブリングエフェクタ３０の機能を有効にする旨の設定がなされると、図８乃至図１０及び図１５，図１６のフローチャートに示す処理を、それぞれ独立に開始する。ただし、これらの処理は、信号処理部１９側で行うようにしてもよい。
【００５６】
まず、図８に、ピッチ検出処理のフローチャートを示す。
この処理においては、まず、ダブリング処理対象の入力信号を１サンプル分入力信号バッファ及び出力信号バッファへ記録する（Ｓ１１）。ここで、入力信号バッファは、ピッチ変換部４７におけるボイス信号の生成に用いるバッファであり、１００ｍｓ分程度のデータを記憶する容量を有するリングバッファとすればよい。また、出力信号バッファは、遅延処理部５０による遅延処理に用いるバッファであり、１秒分程度のデータを記憶する容量を有するリングバッファとすればよい。
【００５７】
その後、入力信号のゼロクロスをカウントする（Ｓ１２）と共に、サンプルカウンタをカウントアップする（Ｓ１３）。
そしてその後、ピッチ検出中であれば（Ｓ１４）、入力信号が周期の開始位置か否かの判定を行う（Ｓ１５）。ピッチ検出中か否かは、次の図９に示す処理で設定するピッチフラグの内容により判断することができる。また、ステップＳ１５の判定は、図５を用いて説明したように、入力信号とエンベロープとの交差の検出に応じてＩＲＱフラグを変化させ、その立ち上がりの有無を検出することにより行うことができる。
【００５８】
そして、その判定の結果周期の開始位置であれば（Ｓ１６）、サンプルカウンタの現在値をピッチデータとしてピッチバッファ４２に記録する（Ｓ１７）と共に、サンプルカウンタをリセットする（Ｓ１８）。その後、入力信号の次のサンプルタイミングまで待機し（Ｓ１９）、次のサンプルタイミングでステップＳ１１に戻って処理を繰り返す。
一方、ステップＳ１６で周期の開始位置でなければ、そのままステップＳ１９に進んで次のサンプルタイミングまで待機する。また、ステップＳ１４でピッチ検出中でなければ、サンプルカウンタをリセットする（Ｓ１８）と共に、次のサンプルタイミングまで待機する（Ｓ１９）。
【００５９】
なお、以上の図８に示した処理において、ステップＳ１７でピッチデータの記録を行う際、検出条件や検出結果について種々の検討を行うとよいことは、図５の説明で述べた通りであるが、説明を簡単にするため、ここではこのような検討に係る処理は示していない。また、ピッチの検出を行うか否かについては、次の図９に示す処理により、入力信号のゼロクロス数に基づいて判断するようにしている。
【００６０】
次に、図９に、ピッチ検出制御処理のフローチャートを示す。
この処理においては、まず、図８のステップＳ１２でカウントしているゼロクロスの数が所定値（ここでは上述のように３０回）以下である場合（Ｓ２１）、ピッチフラグを「１」に設定し、ピッチ検出実行を示す（Ｓ２２）。その後、ゼロクロス数をリセットし（Ｓ２５）、ステップＳ２１の処理から所定時間（ここでは上述のように６ｍｓ）経過するまで待機し（Ｓ２６）、その後ステップＳ２１に戻って処理を繰り返す。
また、ステップＳ２１でゼロクロス数が所定値以上である場合には、ピッチフラグを「０」に設定し、ピッチ検出停止を示す（Ｓ２３）と共に、ピッチバッファ４２に記録しているピッチデータをクリアして（Ｓ２４）、ステップＳ２５以降の処理に進む。
【００６１】
従って、図９のフローチャートの処理においては、ステップＳ２１の処理を所定時間毎に行い、その間のゼロクロス数が所定値以下の場合にピッチ検出実行を設定し、所定値より大きい場合にはピッチ検出停止を設定することになる。
以上の図８及び図９に示した処理により、ピッチ検出部４１におけるピッチの検出とその制御を行うことができる。ただし、最終的にピッチ検出部４１から検出結果として出力されるピッチの値は、次の図１０の処理により求めた値である。
【００６２】
次に、図１０に、音階音推定及びピッチ設定処理のフローチャートを示す。
この処理においては、まず、ピッチバッファ４２に記録されているピッチデータのうち所定個（例えば１６個）のデータの平均値を求めて入力信号のピッチＰＩの値とする（Ｓ３１）。ここでは、この値がピッチ検出部４１から検出結果として出力される入力信号のピッチの値となり、この値は、ピッチ変換部４７におけるピッチ変換処理でも使用される。
【００６３】
そして、このピッチＰＩの値に基づき、音高テーブル４４に記憶している中でピッチＰＩに最も近い音階音のピッチを取得する（Ｓ３２）。そして、ピッチＰＩとその音階音のピッチとの差が所定誤差Δｈ（ｎ）／２以内でなければ（Ｓ３３）、現在の入力信号に対応する音階音はないと判断し、推定値バッファをクリアする（Ｓ３４）と共に、音高の継続時間を計測するためのタイマを停止する（Ｓ３５）。その後、ボイス信号のピッチＰＶをクリアし（Ｓ３９）、後にピッチ変換処理の説明で述べるように、このことにより、ボイス信号の出力を停止する。そして、ステップＳ３１の処理から所定時間（ここでは上述のように６ｍｓ）経過するまで待機し（Ｓ４４）、その後ステップＳ３１に戻って処理を繰り返す。なお、ステップＳ３１で適当なＰＩが求められなかった場合には、ステップＳ３２でピッチを取得せず、ステップＳ３３の判断がＮＯになるようにするとよい。
【００６４】
一方、ステップＳ３３でＹＥＳであった場合、現在の入力信号に対応する音階音が一応あると判断できる。そして、ステップＳ３２で取得した音階音のピッチが、推定値バッファ４５に記憶している推定音階音ピッチＰＥと異なる場合には（Ｓ３６）、ステップＳ３２で取得したピッチを推定値バッファ４５に登録し（Ｓ３７）、上記のタイマをリセットして計時を開始して（Ｓ３８）、ステップＳ３９以下の処理に進む。
また、ステップＳ３６でＹＥＳであった場合、タイマの計測時間が所定時間Δｗ（ｎ）だけ経過していれば（Ｓ４０）、入力信号のピッチＰＩが所定時間の間続けて推定音階音ピッチＰＥから所定誤差範囲内にあったことがわかるので、その時点の入力信号と対応する音階音は、ステップＳ３２でピッチを取得した音階音であると推定する。
【００６５】
そして、推定値バッファ４５に登録されているピッチを、入力信号と対応すると推定される音階音のピッチである推定音階音ピッチＰＥとする（Ｓ４１）と共に、ボイス信号の生成を行うべく、入力信号のピッチＰＩと推定音階音ピッチＰＥとからピッチシフト量ΔＰを決定し（Ｓ４２）、これを入力信号のピッチＰＩに加算した値をボイス信号のピッチＰＶとする（Ｓ４３）。このＰＶは、ピッチ変換部４７におけるピッチ変換処理で使用される。
【００６６】
その後、ステップＳ３１の処理から所定時間経過するまで待機し（Ｓ４４）、ステップＳ３１に戻って処理を繰り返す。
また、ステップＳ４０でＮＯであれば、入力信号が音階音と対応しているのか、たまたま音階音に近いピッチとなっただけであるのかの区別ができないため、ステップＳ３９に進み、ボイス信号の出力を停止したままとして、以後の処理を続ける。
【００６７】
以上の図１０に示した処理により、入力信号のピッチを求め、そのピッチに基づいて入力信号と対応する音階音を推定すると共に、その推定した音階音のピッチを利用して、ピッチ変換部４７におけるピッチ変換処理に使用するボイス信号のピッチを生成及び設定することができる。そして、これらのピッチは、上記の所定時間毎に更新されることになる。
また、図１０に示した処理のうち、ステップＳ３１の処理はピッチ検出部４１の機能と対応する処理、ステップＳ３２乃至Ｓ４１は音階音推定部４３の機能と対応する処理、ステップＳ４２及びＳ４３はピッチ加工部４６の機能と対応する処理である。
【００６８】
次に、図１１に、図１０のステップＳ４２に示したピッチシフト量決定処理の第１の例のフローチャートを示す。
この処理においては、まず、｜ＰＥ−ＰＩ｜×２を求め、この値と正の定数Ｃとのうち、小さい方の値をΔＰ″とする（Ｓ５１）。そして、この値に０から１の範囲の乱数Ｒを乗じてローパスフィルタ（ＬＰＦ）を通した値をΔＰ′とする（Ｓ５２）。ここで、ＬＰＦは、カットオフ周波数が０．１Ｈｚ〜１０Ｈｚ、ゲインが最大で１のものを用いるとよい。
【００６９】
その後、ＰＥ＞ＰＩであればΔＰ＝ΔＰ′、そうでなければΔＰ＝−ΔＰ′としてΔＰを求め（Ｓ５３〜Ｓ５５）、元の処理に戻る。
ΔＰ′≧０であるので、これらの処理により求めたピッチシフト量ΔＰは、入力信号のピッチＰＩを推定音階音ピッチＰＥに近づけるようなシフト量となる。
【００７０】
図１２に、図１１に示した処理によりΔＰを求める場合の、ＰＩとＰＶの関係の例を示す。
この図には、入力信号のピッチが実線８１で示すように変化し、太線８２で示す期間において、入力信号が、その太線８２で示すピッチの音階音と対応すると推定された場合の例を示している。そして、この例においては、符号ａ及びｃで示す区間で、Ｃ＞｜ＰＥ−ＰＩ｜×２、符号ｂで示す区間でＣ＜｜ＰＥ−ＰＩ｜×２である。
【００７１】
このような場合、各時点のＰＶ＝ＰＩ＋ΔＰは、乱数Ｒの値及びＬＰＦの処理結果に応じて、実線８１と破線８３との間の、矢印を並べて示した範囲のどこかに位置することになる。従って、図１１の処理によってΔＰを定めることにより、ＰＶを、常に｜ＰＩ−ＰＥ｜≧｜ＰＶ−ＰＥ｜となるように定めることができる。すなわち、ピッチ加工部４６が生成するボイス信号のピッチを、対応する入力信号のピッチよりも音階音のピッチに近づけるようにすることができると言える。
【００７２】
また、図１３に、図１０のステップＳ４２に示したピッチシフト量決定処理の第２の例のフローチャートを示す。
この処理においては、正の定数Ｃと０から１の範囲の乱数Ｒについて、Ｃ×（Ｒ−０．５）をＬＰＦ又はバンドパスフィルタ（ＢＦＰ）でフィルタ処理して得た値をΔＰ′とし（Ｓ６１）、ΔＰ＝ＰＥ−ＰＩ＋ΔＰ′としてΔＰを求め（Ｓ６２）、元の処理に戻る。ＬＰＦやＢＰＦとしては、例えばカットオフ周波数や中心周波数が０．１〜１０Ｈｚ、ゲインが最大で１のものを用いるとよい。
【００７３】
図１４に、図１３に示した処理によりΔＰを求める場合の、ＰＩとＰＶの関係の例を示す。
この図に示す入力信号及び音階音は、図１２に示したものと同じである。しかし、この例においては、各時点のＰＶ＝ＰＩ＋ΔＰは、乱数Ｒの値及びフィルタ処理の結果に応じて、破線８４と破線８５との間の、定数Ｃの幅の矢印を並べて示した範囲のどこかに位置することになる。
【００７４】
そして、この図からわかるように、ＰＩがＰＥに近い場合には部分的にＰＶがＰＩよりもＰＥから遠くなってしまう場合もあるが、図１３の処理によってΔＰを定めても、全体としては、ピッチ加工部４６が生成するボイス信号のピッチを、対応する入力信号のピッチよりも音階音のピッチに近づけるようにすることができると言える。
【００７５】
次に、図１５に、基準区間設定処理のフローチャートを示す。
この処理においては、まず、基準位置に基準区間が設定されていないか又は基準位置が基準区間の最後尾に達したかのいずれかが満たされたか否か判断する（Ｓ７１）。
そして、満たされていない場合には、入力信号バッファに記録されている入力信号について基準位置を１サンプル分進めて（Ｓ７４）、次のサンプルタイミングまで待機し（Ｓ７５）、その後ステップＳ７１に戻って処理を繰り返す。
【００７６】
一方、ステップＳ７１でいずれかが満たされていた場合、その時点で図１０のステップＳ３１の処理により入力信号のピッチＰＩが設定されていれば（Ｓ７２）、入力信号バッファに記録されている入力信号について、現在の基準位置を開始位置とし、長さＳＢをピッチＰＩの２倍とする次の基準区間を設定して（Ｓ７３）、ステップＳ７４に進み、以下の処理を続ける。ステップＳ７２で設定されていなければ、そのままステップＳ７４に進み、以下の処理を続ける。
以上の図１５に示した処理により、ピッチ変換部４７における処理対象の入力信号に対し、図６及び図７を用いて説明したような基準区間を設定することができる。なお、「基準位置」は、単に基準区間の終了を検出するために利用するものであるので、処理の進行度合いを測れるようなパラメータであれば、どのようなものを用いてもよい。
【００７７】
次に、図１６に、ピッチ変換処理のフローチャートを示す。
この処理においては、まず、出力区間が設定されていないか又は、読出位置を現在の出力区間においてその出力区間が終了するだけ進めたかのいずれかが満たされたか否か判断する（Ｓ８１）。
そして、満たされていない場合には、読出位置が基準区間の最後尾を越えたか否か判断し（Ｓ８５）、越えていない場合には、入力信号バッファから読出位置の１サンプルのデータを読み出し、読出位置に応じた窓関数の値を乗じて、ボイス信号のデータとして出力する（Ｓ８６）。超えていた場合には、０を出力する（Ｓ８７）。そして、どちらの場合も、読出位置を１サンプル分進める（Ｓ８８）。なお、上記の窓関数については、図６及び図７を用いて説明した通りである。
【００７８】
そしてその後、ピッチを検出中（ピッチフラグが「１」）であれば（Ｓ８９）、次のサンプルタイミングまで待機し（Ｓ９０）、その後ステップＳ８１に戻って処理を繰り返す。一方、ピッチを検出中でなければ、設定されている出力区間をクリアして（Ｓ９１）、その後ボイス信号のピッチＰＶが設定されるまで待機し（Ｓ９２）、ピッチＰＶが設定されると、ステップＳ８１に戻って処理を繰り返す。すなわち、再度ピッチＰｖが設定されるまで、ボイス信号の出力を中止する。
【００７９】
また、ステップＳ８１でＹＥＳであれば、図１０のステップＳ４２の処理でボイス信号のピッチＰＶが設定されているか否か判断し（Ｓ８２）、設定されていれば、次の出力区間の長さＲＢをピッチＰＶの２倍に設定する（Ｓ８３）と共に、読み出し位置を、処理時点の最新の基準区間の開始位置へ移動して（Ｓ８４）、ステップＳ８５以下の処理に進む。一方、ステップＳ８２で設定されていなければ、そのままステップＳ９１以下の処理に進む。すなわち、この場合も、再度ピッチＰｖが設定されるまで、ボイス信号の出力を中止する。
【００８０】
以上の図１６に示した処理により、ピッチ変換部４７において、処理対象の入力信号に基づき、図６及び図７を用いて説明したようなＯＵＴ０系統の出力信号を生成することができる。そして、上述の通り、この出力信号と、ＯＵＴ１系統の出力信号とを加算することによりボイス信号を生成することができる。このＯＵＴ１系統の出力信号の生成処理は、開始時期をピッチＰＶだけずらす点以外は、以上の図１６に示した処理と同様なものであるが、ピッチＰＶの設定がなくなったりピッチの検出が中止されたりした後で出力を再開する際にも開始時期をずらせるようにするため、ステップＳ９２の後に、ピッチＰＶ分の待機処理を追加するとよい。
【００８１】
電子楽器１０においては、ＣＰＵ１１や信号処理部１９が以上のような処理を実行することにより、入力信号と対応する音階音を推定すると共に、入力信号と対応する音階音を推定できた場合には、入力信号のピッチをその音階音のピッチに近づけるようにピッチ変換処理を行ってボイス信号を生成し、入力信号とそのボイス信号とを混合して出力することができる。
従って、ボイス信号のピッチが音階音の音高から大きく外れてしまうことを防止し、その重畳により出力音が不自然な聴感になってしまうことを防止できる。
【００８２】
また、入力信号のピッチと、ある音階音のピッチとの差が所定誤差範囲内の場合に、その音階音が前記入力信号と対応する音階音であると推定するようにすると共に、入力信号と対応する音階音が推定できた場合のみ、ボイス信号の生成を行うようにしているので、音階音のピッチに近い部分のみ入力信号を強調し、出力音を自然な聴感にすることができる。
これらの特徴は、組み合わせることにより相乗的に好適な効果を得ることができるが、それぞれ単独でも効果を発揮する。
【００８３】
すなわち、例えば、図１０のステップＳ４２において、ボイス信号のピッチＰＶを推定音階音ピッチＰＥに近づけることを特に意識せず、正の定数Ｃと０から１の範囲の乱数Ｒについて、Ｃ×（Ｒ−０．５）をＬＰＦ又はバンドパスフィルタ（ＢＦＰ）でフィルタ処理して得た値をΔＰとするようにしてもよい。この場合も、ＬＰＦやＢＰＦは、図１３の処理で用いるものと同様でよい。
【００８４】
また、図１０のステップＳ３９でボイス信号のピッチＰＶをクリアせず、Ｃ×（Ｒ−０．５）をＬＰＦ又はバンドパスフィルタ（ＢＦＰ）でフィルタ処理して得た値をΔＰとしてステップＳ４２に進むようにしてもよい。すなわち、入力信号と対応する音階音が推定できない場合にも、入力信号のピッチを定数Ｃの幅でランダムに変化させた信号をボイス信号として重畳するようにしてもよい。
この場合において、ステップＳ４２でΔＰを求める区間とステップＳ３９でΔＰを求める区間の境でΔＰの不連続が目立つようであれば、不連続を緩和するため、ΔＰ又はＰＶについてクロスフェードを行う処理を追加してもよい。
なお、ボイス信号のピッチＰＶの定め方がこれらに限られないことは、もちろんである。
【００８５】
〔第２の実施形態：図１７乃至図２０〕
次に、この発明の音響信号処理装置の第２の実施形態である電子楽器について説明する。ただし、この電子楽器は、ボイス信号生成部の構成が若干異なる点以外は、第１の実施形態の電子楽器と同様なものであるので、この点以外の説明は省略する。また、第１の実施形態と対応する構成については、同じ符号を用いる。また、この実施形態は、リアルタイムで入力する入力信号ではなく、予めデータとして用意されている入力信号、すなわち処理中の時点より先の時点の内容も参照できる入力信号に対してエフェクト処理を行う場合に好適な実施形態である。
【００８６】
まず、図１７に、この実施形態の電子楽器におけるボイス信号生成部の構成を示す。
この図に示すとおり、この実施形態におけるボイス信号生成部４０′は、第１の実施形態の場合と同様な構成に加え、フレーズ検出部４８を有する。また、ピッチ加工部４６′におけるピッチ加工処理の内容も、第１の実施形態の場合と異なる。
そして、フレーズ検出部４８は、入力信号におけるフレーズの位置を検出する機能を有する検出手段である。このフレーズは、一連のほぼ途切れずに続く発音の区間を指し、例えば、人間の声であれば一息で発声された部分に該当する。そして、フレーズ検出部４８は、フレーズの検出結果をピッチ加工部４６に伝達する。ピッチ加工部４６は、フレーズ検出部４８からの情報をもとに、フレーズ単位で入力信号に対するピッチシフト量を求め、これをピッチ検出部４１が取得した入力信号のピッチに加算して、ボイス信号のピッチを示すピッチ情報を生成する。
【００８７】
次に、この実施形態の電子楽器においてＣＰＵ１１が実行する処理について説明する。
この電子楽器においても、ＣＰＵ１１（又は信号処理部１９）に実行させる処理は、第１の実施形態で図８乃至図１６を用いて説明したものと概ね同様である。しかし、処理は予めデータとして用意されている入力信号に対して行なうようにし、処理のタイミングは、入力信号のサンプリング周期に基づきタイミングをサンプル数に換算して、サンプル数を用いて管理するようにしている。従って、所定時間待機する処理においては、その時間と対応する数のサンプルの処理が終わるまで待機するようにすればよいし、各処理を同期させて行わなくても、あるタイミングで発生したイベントを、サンプルの位置と対応させて記憶しておけば、後からその情報を参照して処理を行うこともできる。
ここでは、この点以外で第１の実施形態の場合と異なる処理についてのみフローチャートを用いて説明する。
【００８８】
まず、この実施形態においては、図８に示したピッチ検出処理において、ステップＳ１１とＳ１２の間で、フレーズ切れ目検出処理を実行させる点が第１の実施形態の場合と異なる。
図１８に、このフレーズ切れ目検出処理のフローチャートを示す。
ＣＰＵ１１は、図８のステップＳ１１の処理の後、入力信号のサンプル値が所定値以下か否か判断する（Ｓ１０１）。そして、所定値以下であった場合、無音区間カウンタがカウント中でなければ（Ｓ１０２）、そのカウントを開始する（Ｓ１０６）とともに、処理中のサンプルのタイミングがフレーズ中である旨を記録し（Ｓ１０９）、図８のステップＳ１２に進む。無音区間カウンタは、入力信号の音量レベルが所定値以下の状態が継続している長さをカウントするためのカウンタである。
【００８９】
一方、ステップＳ１０２で無音区間カウンタがカウント中であれば、無音区間カウンタをカウントアップする（Ｓ１０３）。そして、そのカウント値が、所定の閾値以上であれば（Ｓ１０４）、処理中のサンプルのタイミングがフレーズの切れ目である旨を記録し（Ｓ１０５）、元の処理に戻る。ステップＳ１０４で閾値以上でなければ、該当タイミングがフレーズ中である旨を記録し（Ｓ１０９）、図８のステップＳ１２に進む。
また、ステップＳ１０１でＮＯであった場合には、無音区間カウンタがカウント中であればカウンタをリセットしてカウントを停止すると共に、カウント中でなければそのまま、該当タイミングがフレーズ中である旨を記録し（Ｓ１０７〜Ｓ１０９）、図８のステップＳ１２に進む。
【００９０】
この処理は、フレーズ検出部４８の機能と対応する処理であり、この処理により、入力信号のサンプル値が所定値以下の期間が所定時間以上継続した場合に、これを入力信号のフレーズの切れ目として検出することができる。
なお、ステップＳ１０５又はＳ１０９で記録したフレーズの切れ目とフレーズ中の部分の情報については、各サンプルのタイミングについて逐一ピッチ加工部４６′に伝達するようにしてもよいが、ある程度情報を蓄積した後で、各フレーズの開始タイミングと終了タイミングの情報として伝達するようにするとよい。
【００９１】
また、ステップＳ１０１において、入力信号のサンプル値ではなく、音量エンベロープを求め、これが示す音量が所定値以下か否か判断するようにしてもよい。この場合において、検出の正確を期すため、入力信号を何らかのフィルタに通してから音量エンベロープを求めるようにしてもよい。
また、ステップＳ１０４で使用する閾値は、通常の人が耳で聞いてフレーズの切れ目であると認識できる程度の時間を示す値とするとよい。
【００９２】
また、この実施形態においては、音階音推定及びピッチ設定処理も、第１の実施形態の場合と異なる。すなわち、ピッチシフト量ΔＰを、フレーズ毎に決めるようにしているため、音階音推定及び入力信号のピッチＰＩを設定する処理と、ピッチシフト量ΔＰ及びボイス信号のピッチＰＶを設定する処理とを、分離して行うようにしている。
【００９３】
図１９に、この実施形態における音階音推定及びピッチ設定処理のフローチャートを示す。この図においては、図１０に示した第１の実施形態における処理と共通する部分には、同じステップ番号を付している。
この処理が図１０に示した処理と異なる点は、まず、ステップＳ３１′において、入力信号のピッチＰＩを、処理タイミングでの値として、タイミングの情報と対応させて記憶しておくようにしている点である。このタイミングの情報としては、ピッチ検出処理が何サンプル分の入力信号について完了している状態のデータに基づいてＰＩを求めたかを記憶しておけばよい。
また、ステップＳ３８等におけるタイマによる計時は、実時間ではなく、タイミング管理の場合と同様に、入力信号のサンプル数に基づいて入力データの再生時間を測るようにしている。
【００９４】
そして、ステップＳ４０でＹＥＳの場合、推定値バッファ４５に登録されているピッチを処理タイミングでの推定音階音ピッチＰＥとして、後でピッチ加工処理において参照できるようにタイミングの情報と対応させて記憶し（ＳＸ）、次の処理タイミングまで待機し（ＳＹ）、ステップＳ３１′に戻って処理を繰り返す。
ここでのタイミングの情報は、ステップＳ３１′で用いたタイミングの情報と同じものであり、次の処理タイミングは、例えば、ステップＳ３１′の処理を行ってから再生時間にして６ｍｓ分の入力信号についてピッチ検出処理が完了したタイミングとすることができる。
【００９５】
また、ステップＳ４０でＮＯの場合及び、ステップＳ３５又はＳ３８の後では、処理タイミングでの推定音階音ピッチは「なし」である旨の情報をタイミングの情報と対応させて記憶し（ＳＺ）、ステップＳＹに進む。ここでのタイミングの情報も、ステップＳ３１′で用いたタイミングの情報と同じものである。
以上のような処理を行うことにより、図１０に示した処理の場合と同様に、適当な間隔で、各タイミングの入力信号と対応する音階音を推定することができる。そして、その音階音のピッチを、ピッチ加工処理で使用できるように記憶しておくことができる。
【００９６】
次に、図２０に、この実施形態におけるピッチ加工処理のフローチャートを示す。
この実施形態においては、１つのフレーズ分の範囲について各処理タイミングでの入力信号のピッチＰＩと推定音階音ピッチＰＥの情報が利用できるようになった段階で、図２０に示す処理により、その範囲の各処理タイミングにおけるボイス信号のピッチＰＶを求めるようにしている。
【００９７】
この処理においてはまず、処理対象のフレーズ内の、有効な推定音階音ピッチＰＥがある範囲で、（ＰＥ−ＰＩ）の平均値を求め、これをΔＰ′とする（Ｓ１１１）。そして、正の定数Ｃと０から１までの範囲の乱数Ｒについて、ピッチシフト量ΔＰ＝ΔＰ′＋Ｃ×（Ｒ−０．５）とする（Ｓ１１２）。このΔＰは、フレーズ内については共通としてもよいし、処理タイミング毎に乱数を取りなおして別々に求めてもよい。そして、このΔＰを用い、各処理タイミングのＰＩと対応するボイス信号のピッチＰＶを、ＰＶ＝ＰＩ＋ΔＰにより求め（Ｓ１１３）、処理を終了する。
すなわち、ＰＶ＝ＰＩ＋〔（ＰＥ−ＰＩ）の平均値〕＋Ｃ×（Ｒ−０．５）としている。
【００９８】
ここで、図２１を用いて、図２０に示した処理によりＰＶを求める場合の、ＰＩとＰＶの関係について説明する。
この図においては、入力信号のピッチを実線９１で示し、有効な推定音階音ピッチＰＥが存在する範囲では、これを太線９２，９３で示している。そして、図２０のステップＳ１１１で求める平均値は、フレーズ内の期間のうち、太線９２，９３で示される期間についてのみ、（ＰＥ−ＰＩ）の値を加算し、その期間のデータ数で除すことにより求めることができる。また、太線９２で示される期間と太線９３でされる期間について平均値を別々に求め、これらの平均値について、各期間の長さに応じた重み付けを行ってさらに平均を取ることによっても求めることができる。
【００９９】
そして、Ｃ＝０の場合には、ＰＶは、ＰＩに単にその平均値を加えた値となり、実線９１を平行移動させた一点鎖線９４で示す値を取ることになる。また、Ｃが０でない場合には、ＰＶは、この一点鎖線９４を中心とした、破線９５，９６に挟まれた幅Ｃの領域内の値を取ることになる。
そして、この図からわかるように、ＰＶを図２０に示した処理により求めるようにした場合でも、個々の処理タイミングについては必ずしも成り立つとは限らないが、全体としてはＰＩよりもＰＥに近くなるようなＰＶを求めることができる。すなわち、入力信号よりも音階音に近いピッチのボイス信号を生成できる。そして、このことにより、この実施形態の電子楽器によっても、ボイス信号のピッチが音階音の音高から大きく外れてしまうことを防止し、その重畳により出力音が不自然な聴感になってしまうことを防止できる。
【０１００】
なお、この実施形態においても、第１の実施形態の場合のように、ＰＥが有効な値である場合のみ、ボイス信号の生成を行うようにしてもよい。このようにすれば、音階音のピッチに近い部分のみ入力信号を強調し、出力音を自然な聴感にすることができる。
ただし、逆に、次のフレーズが始まるまではフレーズ内で求めたΔＰを継続して使用する等して、フレーズの切れ目においてもボイス信号の生成を行うようにすることも考えられる。
また、フレーズの検出を、ピッチ検出部４１におけるピッチ検出が適切に行えない状態が所定時間以上継続している場合に、入力信号がフレーズの切れ目であるとして行なうようにしてもよい。このようにする場合、ピッチ検出部４１から、入力信号のピッチの検出結果をフレーズ検出部４８に入力するようにすればよい。
【０１０１】
以上で実施形態の説明を終了するが、装置の構成や具体的な処理内容等が上述の各実施形態で説明したものに限られないことはもちろんである。
例えば、入力信号と対応する音階音を推定する際、ピッチの近い音階音の検索と、ピッチの差が所定誤差以内か否かの確認という２段階の処理を行わず、予め音階音毎に所定誤差を考慮してピッチ範囲を定めておき、そのいずれかに入力音のピッチが属する場合に、入力音と対応する音階音が、そのピッチ範囲を持つ音階音であると推定するようにしてもよい。また、音階音も、必ずしも平均律の音階に属する音でなくてもよい。
【０１０２】
また、上述した実施形態においては、ピッチ変換処理にＬｅｎｔ法を採用したが、これ以外の方法でピッチ変換を行うようにしてもよい。さらに、処理対象をアナログの音響信号とし、ピッチ検出処理、ピッチ加工処理、ピッチ変換処理、ミックス処理等を、アナログ回路によって行うようにしてもよい。
さらにこれらの変形や、第１及び第２の実施形態で説明した内容は、矛盾を生じない範囲で適宜組み合わせることもできる。
【０１０３】
また、この発明が、電子楽器以外の音響信号処理装置に適用できることはもちろんであり、例えば、カラオケ装置、ミキサ、音源装置、ＭＩＤＩシーケンサ、音響信号を処理するソフトウェアを実行可能なＰＣ等、波形を示す音響信号を取り扱う機能を有する装置であれば、任意の装置に適用することが可能である。さらに、この発明を、単体のエフェクタあるいは装置にエフェクタ機能を付与するためのプログラムとして実施することも可能である。
【０１０４】
また、この発明のプログラムは、コンピュータにハードウェアを制御させて上述したような音響信号処理装置として機能させるためのプログラムであり、予めＲＯＭやＨＤＤ等に記憶させておくほか、ＣＤ−ＲＯＭあるいはフレキシブルディスク等の不揮発性記録媒体（メモリ）に記録して提供し、そのメモリからこのプログラムをＲＡＭに読み出させてＣＰＵに実行させたり、プログラムを記録した記録媒体を備える外部機器あるいはプログラムをＨＤＤ等の記憶手段に記憶した外部機器からダウンロードして実行させたりしても、同様の効果を得ることができる。
【産業上の利用可能性】
【０１０５】
以上の説明から明らかなように、この発明の音響信号処理装置又はプログラムによれば、常に自然な聴感の出力信号を得られるエフェクトを実現することができる。
従って、この発明によれば、自然かつ斬新な音を生成可能な音響信号処理装置を提供することができる。
【図面の簡単な説明】
【０１０６】
【図１】この発明の音響信号処理装置の第１の実施形態である電子楽器の構成を示すブロック図である。
【図２】図１に示した信号処理部に備えるダブリングエフェクタの機能構成を示す図である。
【図３】図２に示したボイス信号生成部の機能構成を示す図である。
【図４】図３に示した音階音推定部で入力信号と対応する音階音を推定した場合の推定結果の例を示す図である。
【図５】図３に示したピッチ検出部におけるピッチ検出処理について説明するための図である。
【０１０７】
【図６】図３に示したピッチ変換部におけるピッチ変換処理について説明するための図である。
【図７】その別の図である。
【図８】図１に示した電子楽器のＣＰＵが実行するピッチ検出処理のフローチャートである。
【図９】同じくピッチ検出制御処理のフローチャートである。
【図１０】同じく音階音推定及びピッチ設定処理のフローチャートである。
【０１０８】
【図１１】図１０のステップＳ４２で実行するピッチシフト量決定処理の第１の例のフローチャートである。
【図１２】図１１に示した処理によりΔＰを求める場合の、ＰＩとＰＶの関係の例を示す図である。
【図１３】ピッチシフト量決定処理の第２の例のフローチャートである。
【図１４】図１３に示した処理によりΔＰを求める場合の、ＰＩとＰＶの関係の例を示す図である。
【図１５】図１に示した電子楽器のＣＰＵが実行する基準区間設定処理のフローチャートである。
【図１６】同じくピッチ変換処理のフローチャートである。
【図１７】この発明の音響信号処理装置の第２の実施形態である電子楽器におけるボイス信号生成部の機能構成を示す図である。
【図１８】第２の実施形態において電子楽器のＣＰＵが実行するフレーズ検出処理のフローチャートである。
【図１９】同じく音階音推定及びピッチ設定処理のフローチャートである。
【図２０】同じくピッチ加工処理のフローチャートである。
【図２１】図２０に示した処理によりＰＶを求める場合の、ＰＩとＰＶの関係について説明するための図である。
【符号の説明】
【０１０９】
１０…電子楽器、１１…ＣＰＵ，１２…ＲＯＭ、１３…ＲＡＭ、１４…検出回路、１５…表示回路、１６…オーディオ信号Ｉ／Ｆ、１７…通信Ｉ／Ｆ、１８…音源部、１９…信号処理部、２０…システムバス、２１…操作子、２２…表示器、２３…サウンドシステム、３０…ダブリングエフェクタ、４０，４０′…ボイス信号生成部、４１…ピッチ検出部、４２…ピッチバッファ、４３…音階音推定部、４４…音高テーブル、４５…推定値バッファ、４６，４６′…ピッチ加工部、４７…ピッチ変換部、４８…フレーズ検出部、５０…遅延処理部、６０…ミックス部、６１，６４…ゲイン調整部、６２，６５…パン調整部、６３，６６…加算部
【図１】
0004655811.tif 000004
【図２】
0004655811.tif 000005
【図３】
0004655811.tif 000006
【図４】
0004655811.tif 000007
【図５】
0004655811.tif 000008
【図６】
0004655811.tif 000009
【図７】
0004655811.tif 000010
【図８】
0004655811.tif 000011
【図９】
0004655811.tif 000012
【図１０】
0004655811.tif 000013
【図１１】
0004655811.tif 000014
【図１２】
0004655811.tif 000015
【図１３】
0004655811.tif 000016
【図１４】
0004655811.tif 000017
【図１５】
0004655811.tif 000018
【図１６】
0004655811.tif 000019
【図１７】
0004655811.tif 000020
【図１８】
0004655811.tif 000021
【図１９】
0004655811.tif 000022
【図２０】
0004655811.tif 000023
【図２１】
0004655811.tif 000024