(57)【特許請求の範囲】
【請求項１】
順次入力される入力波形データのピッチを検出し、該入力波形データの、検出されたピッチに対応する所定のデータ区間からなる音素を切り出し、切り出した音素を、所定の再生ピッチ情報に対応するピッチを有する出力波形データに変換して出力する波形変換装置において、
波形データを一時的に記憶するメモリと、
順次入力される入力波形データを前記メモリに順次書き込む書込手段と、
ピッチ情報を更新自在に格納する第１のバッファを有し、前記入力波形データについてピッチ検出処理を実行しピッチ検出が成立した場合に前記第１のバッファに格納されたピッチ情報を新たに検出されたピッチ情報に更新するピッチ検出手段と、
前記メモリに記憶された波形データから音素を切り出すための基準となる読出基準アドレスを更新自在に格納する第２のバッファを有し、前記第１のバッファから前回読出したピッチ情報に対応する時間が経過する毎に前記第１のバッファからピッチ情報を読み出して、前記第２のバッファに格納された読出基準アドレスを、前記第１のバッファから新たに読み出したピッチ情報に対応するアドレス増分だけ更新するアドレス更新手段と、
再生ピッチ情報を入力する再生ピッチ情報入力手段と、
前記第２のバッファから読出基準アドレスを読み出し、読み出した読出基準アドレスに基づいて前記メモリから所定のデータ区間の波形データを読出すことにより音素を切り出し、切り出した音素を、前記再生ピッチ情報入力手段より入力された再生ピッチ情報に対応する周期で合成して出力波形データを生成する出力波形生成手段とを備えたことを特徴とする波形変換装置。
【請求項２】
前記出力波形生成手段が、
前記再生ピッチ２ピッチ分の出力波形データが生成される毎に前記第２のバッファに格納された読出基準アドレスが転記される第３のバッファを有し、該第３のバッファに格納された読出基準アドレスに基づいて入力波形データ２ピッチ分の読出アドレスを順次生成して、前記メモリの、順次生成した読出アドレスに格納された波形データを順次読み出す第１の読出手段と、
前記第２のバッファに格納された読出基準アドレスが前記第３のバッファに転記されるタイミングとは再生ピッチ１ピッチ分だけずれたタイミングで、かつ再生ピッチ２ピッチ分の出力波形データが生成される毎に、前記第２のバッファに格納された読出基準アドレスが転記される第４のバッファを有し、該第４のバッファに格納された読出基準アドレスに基づいて入力波形データ２ピッチ分の読出アドレスを順次生成して、前記メモリの、順次生成した読出アドレスに格納された波形データを順次読み出す第２の読出手段と、
前記第１の読出手段で読み出された波形データと、前記第２の読出手段で読み出された波形データを、再生ピッチ２ピッチを一周期として周期的に変化する重みを用いて重み付け加算することにより出力波形データを生成する重み付け加算手段とを備えたことを特徴とする請求項１記載の波形変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力波形のピッチもしくはフォルマントを変更することにより出力波形を生成する、楽音信号の変換処理に用いられる波形変換装置に関するものである。
【０００２】
【従来の技術】
楽音信号の変換処理用として、入力された楽音信号のピッチを鍵盤で選択したピッチに変換する、一種のピッチ変換装置が用いられるが、その一例として、特開昭６２−６５０９８号公報に開示された技術がある。これは、入力されて記憶された楽音データを分析して所要のデータ区間から成る音素を切り出し、この切り出された音素を鍵盤操作により選択した周期で出力するようにしたものである。
【０００３】
この従来技術では、音素を切り出す際に、前回の切り出し位置との関係において相関係数が最大となる位置を選択して切り出すようにしている。しかし、このような相関係数を求める処理は煩雑であり、ＣＰＵやＤＳＰ（ディジタル・シグナル・プロセッサ）に対する負荷が重くなる。定められた時間内（例えばサンプリング周期内）で処理を終了する必要があるリアルタイム処理の場合、ＣＰＵやＤＳＰに対する負荷が軽い簡単な処理の方が好ましい。
【０００４】
一方、音楽をリアルタイムで切り出すための簡単な処理方法として、例えば、特開平３−２８８２００号公報に開示された技術がある。これは、入力楽音信号のピッチをゼロクロス位置ないしピーク位置の時間間隔に基づいて検出し、ピッチ検出の際の基準位置としたポイントを音素切り出しの際の基準位置（スタート位置）とするものである。
【０００５】
【発明が解決しようとする課題】
しかし、この特開平３−２８８２００号公報に開示された技術には次のような問題点がある。図１３はその問題点の説明図である。
いま、図１３（ａ）に示すように、高調波が含まれ、その高調波が時間的に変化するような入力波形データが入力されているものとする。この入力波形データはメモリに順次格納される。図１３（ｂ）は、この入力波形データの基本波成分を示したものである。まず、図１３（ａ）において、検出したゼロクロス点間で囲まれた波形（ゼロクロス点間で囲まれた波形が複数集合したものも含む）を、それより前のゼロクロス点間で囲まれた波形と比較し、それらに類似性あったときに、その検出したゼロクロス点間の波形を１周期としてピッチを検出する。ここで、図１３（ａ）のＳ１（アドレスを示している）以前の波形は、Ｓ１からＳ２までの波形と類似性があるものとする。
【０００６】
ところが、Ｓ３からＳ４までの波形部分はその直前のＳ２からＳ３までの波形部分とは、類似性がなく、そのため、そのピッチｃは異常なピッチと見做される。同様に、Ｓ４からＳ５までの波形部分も、その直前のＳ３からＳ４までの波形部分とは類似性がなく、そのピッチｄも異常なピッチと見做される。つまり、ピッチｃ，ｄについてはピッチ検出に失敗したものと見做され、結局、各直前の波形と類似性のあるａ，ｂ，ｅ，ｆがピッチ検出値として採用されることになる。
【０００７】
そして、直前にピッチ検出が成功した時の基準点から波形読み出しを開始する。すなわち、図１３（ｃ）のＳ１の時点で図１３（ａ）の波形のＳ１を基準点とするピッチａの波形データをメモリから読み出し、次いで、図１３（ｃ）のＳ２の時点で図１３（ａ）の波形のＳ２を基準とするピッチｂの波形データを読み出す。このＳ２を基準とするピッチｂの波形データの読み出しは、ピッチ検出が新たに成功するまで繰り返される。その後、図１３（ｃ）のＳ５の時点で図１３（ａ）の波形のＳ５を基準とするピッチｅの波形データを読み出し、さらに、図１３（ｃ）のＳ６の時点で図１３（ａ）の波形のＳ６を基準とするピッチｆの波形データを読み出す。
【０００８】
このようにして、入力波形データの読み出しが順次行われるが、図１３（ｃ）のＳ５の部分に着目してみれば明らかなように、ピッチｂとピッチｅとの基本波成分のつながりが悪く、不連続な状態となっている。このような基本波成分の不連続部分が存在すると、この部分における楽音が不自然なものとなり、音楽的効果としての価値が大きく減殺されることになる。
【０００９】
本発明は、上記事情に鑑み、従来と同様にリアルタイム処理のための簡単な処理方法を採用しながらも、基本波成分の不連続部分の発生を防止し、常に自然な出力波形を得ることができる波形変換装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成する本発明の波形変換装置は、順次入力される入力波形データのピッチを検出し、入力波形データの、検出されたピッチに対応する所定のデータ区間からなる音素を切り出し、切り出した音素を、所定の再生ピッチ情報に対応するピッチを有する出力波形データに変換して出力する波形変換装置において、
（１）波形データを一時的に記憶するメモリ
（２）順次入力される入力波形データを上記メモリに順次書き込む書込手段
（３）ピッチ情報を更新自在に格納する第１のバッファを有し、その入力波形データについてピッチ検出処理を実行しピッチ検出が成立した場合に第１のバッファに格納されたピッチ情報を新たに検出されたピッチ情報に更新するピッチ検出手段
（４）上記メモリに記憶された波形データから音素を切り出すための基準となる読出基準アドレスを更新自在に格納する第２のバッファを有し、第１のバッファから前回読み出したピッチ情報に対応する時間が経過する毎に第１のバッファからピッチ情報を読み出して、第２のバッファに格納された読出基準アドレスを、第１のバッファから新たに読み出したピッチ情報に対応するアドレス増分だけ更新するアドレス更新手段
（５）再生ピッチ情報を入力する再生ピッチ情報入力手段
（６）第２のバッファから読出基準アドレスを読み出し、読み出した読出基準アドレスに基づいて上記メモリから所定のデータ区間の波形データを読出すことにより音素を切り出し、切り出した音素を、再生ピッチ情報入力手段より入力された再生ピッチ情報に対応する周期で合成して出力波形データを生成する出力波形生成手段
を備えたことを特徴とする。
【００１１】
本発明の波形変換装置は、ピッチ検出が成立した際の検出ピッチ、すなわち正しく検出されたピッチを順次加算することにより読出基準アドレスを更新するものであり、こうすることによりピッチの検出を誤った場合であっても基本波の不連続部分のない出力波形が得られ、音楽的効果の質が大幅に向上する。
ここで、上記本発明の波形変換装置において、上記（６）の出力波形生成手段が、
（６＿１）再生ピッチ２ピッチ分の出力波形データが生成される毎に上記第２のバッファに格納された読出基準アドレスが転記される第３のバッファを有し、その第３のバッファに格納された読出基準アドレスに基づいて入力波形データ２ピッチ分の読出アドレスを順次生成して、上記メモリの、順次生成した読出アドレスに格納された波形データを順次読み出す第１の読出手段
（６＿２）上記第２のバッファに格納された読出基準アドレスが上記第３のバッファに転記されるタイミングとは再生ピッチ１ピッチ分だけずれたタイミングで、かつ再生ピッチ２ピッチ分の出力波形データが生成される毎に、上記第２のバッファに格納された読出基準アドレスが転記される第４のバッファを有し、その第４のバッファに格納された読出基準アドレスに基づいて入力波形データ２ピッチ分の読出アドレスを順次生成して、上記メモリの、順次生成した読出アドレスに格納された波形データを順次読み出す第２の読出手段
（６−３）上記第１の読出手段で読み出された波形データと上記第２の読出手段で読み出された波形データを、２ピッチを一周期として周期的に変化する重みを用いて重み付け加算することにより出力波形データを生成する重み付け加算手段を備えたものであることが好ましい。
【００１２】
これら（６＿１）〜（６＿３）を備えると、ピッチ更新時の出力波形の不連続が防止され、換言すればピッチを順次更新してもなめらかに連続した出力波形が得られ、音楽的効果の質が一層向上する。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
図１は、本発明の波形変換装置の一実施形態の構成を示すブロック図である。ローパスフィルタ１を通って入力された入力波形信号はＡ／Ｄ変換器２によりＡ／Ｄ変換されＤＳＰ３に送られる。ＤＳＰ３は、この入力波形データをリングバッファメモリ（ＲＡＭ）４に書き込むとともに、所定時間遅れてこの書き込まれたデータを切り出し、ピッチないしフォルマントが変更された出力波形データを生成する。ＤＳＰ３から出力された出力波形データは、Ｄ／Ａ変換器５によりＤ／Ａ変換されローパスフィルタ６を通って外部に出力される。操作子７はパラメータ等の種々の設定条件を設定するものであり、その設定信号はＣＰＵ８を介してＤＳＰ３に送られる。この操作子７では、本実施形態に直接関係する設定条件として、再生ピッチおよび再生フォルトマンが、入力ピッチおよび入力フォルトマンに対する各比率として設定される。詳細は後述する。
【００１４】
図２は、図１におけるＤＳＰ３の詳細な構成を示すブロック図である。この図２には操作子７が図示されており、操作子７の操作により得られた設定信号は、図１に示すように、ＣＰＵ８を介してＤＳＰ３に入力される。ただし、この図２、および後述する図３には、図示の煩雑さを避けるためＣＰＵは図示省略されている。  この図２に示すように、ＤＳＰ３は、書込手段３１、ピッチ検出手段３２、アドレス更新手段３３、出力波形生成手段３４により構成されている。
【００１５】
書込手段３１は、Ａ／Ｄ変換器２から順次出力されたディジタルの入力波形データを、リングバッファメモリ４に順次書き込む。
またピッチ検出手段３２は、その入力波形データのピッチを順次検出する。このピッチ検出手段３２は、入力波形データのピッチを更新自在に格納するバッファ３２ａを有し、入力波形データについてピッチ検出処理を実行し、ピッチ検出処理が成立した場合、すなわちここでは、直前に検出されたピッチと今回検出した新たなピッチとがほぼ等しいピッチであるという基準に照らし、今回検出した新たなピッチが正しいピッチである（直前に検出されたピッチと比べほぼ等しいピッチである）場合にピッチ検出が成立したものと判定され、バッファ３２ａに格納されたピッチを今回検出した新たなピッチに更新する。
【００１６】
また、アドレス更新手段３３は、後述する出力波形生成手段３４において音素を切り出すための基準アドレスである、リングバッファメモリ４からの波形データの読出基準アドレスを更新する。このアドレス更新手段３３は、リングバッファメモリ４に記憶された波形データから音素を切り出すための基準となる読出基準アドレスを更新自在に格納するバッファ３３ａを備えており、前回のバッファ３３ａの更新から、ピッチ検出手段３２のバッファ３２ａのピッチ情報に対応する時間が経過する毎に、このアドレス更新手段３３は、そのバッファ３３ａに格納された読出基準アドレスに、ピッチ検出手段３２のバッファ３２ａに格納されたピッチを読み出し、この新たに読み出したピッチに対応アドレス増分を加算して新たな読出基準アドレスを求め、その新たな読出基準アドレスを、それまでバッファ３３ａに格納されていた読出基準アドレスに代わりそのバッファ３３ａに格納する。すなわち、バッファ３３ａに格納された読出基準アドレスは、ピッチ検出手段３２で検出されバッファ３２ａに格納されたピッチに対応するアドレス増分ずつ順次累積されることになる。
【００１７】
さらに出力波形生成手段３４は、再生ピッチ１ピッチ分の出力波形データが生成される毎に、アドレス更新手段３３のバッファ３３ａから読出基準アドレスを読み出し、その読み出した読出基準アドレスに基づいて、順次更新される読出アドレスを求め、リングバッファメモリ４から、その求められた読出アドレスに格納された波形データを読み出すことにより音素を切り出し、その切り出した音素を、操作子７の操作により入力されたピッチ情報およびフォルマント情報に対応する再生ピッチおよび再生フォルマントを有する出力波形データに変換する。この出力波形データによりあらわされる出力波形は、入力波形と比べ、ピッチもしくはフォルマントの一方もしくは双方が変更（同一である場合を含む）された波形である。
【００１８】
図３は、図２に１つのブロックで示す出力波形生成手段３４の詳細な構成を示すブロック図である。
この図３に示す出力波形生成手段３４は、第１の読出手段３４１、第２の読出手段３４２、および重み付け加算手段３４３により構成されている。
第１の読出手段３４１は、再生ピッチ２ピッチ分の出力波形データが生成される毎にアドレス更新手段３３のバッファ３３ａに格納された読出基準アドレスが転記される、バッファ３４１ａを有し、そのバッファ３４１ａに格納された読出基準アドレスに基づいて読出アドレスを順次生成して、リングバッファメモリ４ａの、順次生成した読出アドレスに格納された波形データを順次読み出す。
【００１９】
また、第２の読出手段３４２は、第１の読出手段３４１と同様、再生ピッチ２ピッチ分の出力波形データが生成される毎にアドレス更新手段３３のバッファ３３ａに格納された読出基準アドレスが転記される、バッファ３４２ａを有している。ただし、その転記のタイミングは、アドレス更新手段３３のバッファ３３ａに格納された読出基準アドレスが第１の読出し手段３４１のバッファ３４１ａに転記されるタイミングとは再生ピッチ１ピッチ分だけずれたタイミングである。すなわち、アドレス更新手段３３のバッファ３３ａに格納された読出基準アドレスは、再生ピッチ１ピッチ分の出力波形データが生成される毎に交互に、第１の読出し手段３４１のバッファ３４１ａもしくは第２の読出し手段３４２のバッファ３４２ａに転記される。第２の読出手段３４２は、第１の読出手段３４１と同様、バッファ３４２ａに格納された読出基準アドレスに基づいて読出アドレスを順次生成して、リングバッファメモリ４の、順次生成した読出アドレスに格納された波形データを順次読み出す。
【００２０】
第１の読出手段３４１で読み出された波形データ、および第２の読出手段３４２で読み出された波形データは、重み付け加算手段３４３に入力され、重み付け加算手段３４３では、それらの波形データを、再生ピッチを２ピッチを一周期として周期的に変化する重みを用いて重み付け加算することにより、出力波形データを生成する。
【００２１】
ここで、リングバッファメモリ４について説明しておくと、このリングバッファメモリは、例えば、最初のアドレスを「００００」（１６進法）とし、最後のアドレスを［０ＦＦＦ」とした場合に、「００００」から［０ＦＦＦ」までの一連のアドレスが概念的にはリング状に連なっており、「００００」の次のアドレスが［０ＦＦＦ」となるようなメモリのことである。
【００２２】
次に、本実施形態の動作をフローチャート及び波形図に基づき説明していくが、その前に、本発明の要旨とするところを図４を参照しつつ概略的に説明しておく。
図４は、本発明の概要説明図であり、従来例の問題点の説明に際し参照した図１３に対応する図である。図４（ａ），（ｂ）は、それぞれ図１３（ａ），（ｂ）と同様であり、それぞれ、入力波形データ、およびその基本波成分を示した図である。ただし、ＳＳ４，ＳＳ５等の符号が一部付加されている。
【００２３】
図４（ｃ）は本発明の処理により得られた波形図である。従来は、前述したように、波形読み出しを開始する時点で、ピッチ検出が最後が成立した時の基準点から読み出しを開始していたが、本発明では、最後にピッチ検出が成立した時のピッチを前回の基準点（読出アドレス）に順次加算することにより、読み出しの基準点を求めるようにしている。
【００２４】
まず、図４（ｃ）のＳ１の時点で、図４（ａ）の波形のＳ１を基準点とするピッチａの波形データが読み出される。そして、図４（ｃ）のＳ２の時点でＳ１＋ａの演算が行われ、図４（ａ）においてＳ１＋ａ（＝Ｓ２）の位置を読み出しの基準点とするピッチｂの波形データが読み出される。同様に、図４（ｃ）のＳ３の時点でＳ２＋ｂの演算が行われ、図４（ａ）においてＳ２＋ｂ（＝Ｓ３）の位置を基準点とするピッチｂの波形データが読み出される。
【００２５】
次いで、図４（ａ）においてＳ３＋ｂによりＳＳ４の位置が求められ、Ｓ３＋ｂ（＝ＳＳ４）の位置を読み出しの基準点とするピッチｂの波形データが読み出される。同様に、図４（ａ）においてＳＳ４＋ｂによりＳＳ５の位置が求められ、ＳＳ４＋ｂ（＝ＳＳ５）の位置を読み出しの基準点とするピッチｅの波形データが読み出される。更に同様に、図４（ａ）においてＳＳ５＋ｅによりＳＳ６の位置が求められ、ＳＳ５＋ｅ（＝ＳＳ６）の位置を読み出しの基準点とするピッチｆの波形データが読み出される。
【００２６】
上記の方法によれば、検出ピッチに従って読み出しの基準点が更新されることになるため、基本波成分が不連続になるようなことはなく、波形のつながりが自然な出力波形を得ることが可能になる。
次に本実施形態の動作を説明する。
図５〜図７は、本実施形態における波形データおよび後述するプログラムで作成される関数の時間的な変化を示した波形図である。
【００２７】
本実施形態では、操作子７（図１参照）から２つの変数、すなわち、ピッチ変更係数ＰＩＴＣＨ_ ＶＲとフォルマント変更係数ＦＯＲＭＡＮＴ_ ＶＲが入力される。ピッチ変更係数ＰＩＴＣＨ_ ＶＲは、本実施形態では０．５〜２．０の範囲内で任意に設定することができ、例えばその値を１．０から２．０に変更することは、ピッチを１オクターブ下げることを意味している。また、フォルマント変更係数ＦＯＲＭＡＮＴ_ ＶＲも、同様に０．５〜２．０の範囲内で任意に設定することができ、例えばその値を１．０から２．０に変更するということは、フォルマントの形１オクターブ上げることを意味している。
【００２８】
図５は、ＰＩＴＣＨ_ ＶＲ＝１．０，ＦＯＲＭＡＮＴ_ ＶＲ＝１．０の場合、図６は、ＰＩＴＣＨ_ ＶＲ＞１．０，ＦＯＲＭＡＮＴ_ ＶＲ＝１．０の場合、図７は、ＰＩＴＣＨ_ ＶＲ＝１．０，ＦＯＲＭＡＮＴ_ ＶＲ＞１．０の場合の波形図である。
尚、図７において、入力波形のピッチＰとＷＩＤＴＨは、図５の場合と同様に等しいため、図７では入力波形は図示が省略されている。
【００２９】
以下、これらの図を参照しながら、本実施形態のフローチャートについて説明する。以下では、図５〜図７のいずれを参照してもよいときは、代表的に図５を参照するものとする。
図８は、本発明の動作を示すフローチャートである。このフローチャートに示す動作は、所定のサンプリング周期で繰り返し実行される。
【００３０】
尚、以下のフローチャートの説明において、簡単のため、バッファに名づけた名称と、そのバッファに格納される値に付した名称とを区別せずに、同一の名称を使用することがある。
まず、図２に示す書込手段３１は所定のサンプリング周期で入力されるサンプリングデータすなわち入力波形データを、リングバッファメモリ４に順次書き込んでいく（ステップ８＿１）。
【００３１】
これと同時に、ピッチ検出手段３２は、入力したサンプリングデータのピッチ検出処理を行う（ステップ８＿２）。この場合のピッチ検出処理は、既述した特開平３−２８８２００号公報で開示されたものと同様の技術により行う。すなわち、入力波形のゼロクロス位置ないしピーク位置を検出し、それらの時間間隔を、前に検出したゼロクロス位置ないしピーク位置の時間間隔と比較することによってピッチを検出し、ピッチを正しく検出したと判断したときに前回の基準となるゼロクロス位置のアドレス及びピッチを出力する。具体的には、図５（ａ）に示すような入力波形データが入力されているものとすると、ゼロクロス点Ｚ２を検出した時点で、Ｚ０からＺ１までのピッチＰ０とＺ１からＺ２までのピッチＰ１とが等しいと判断され、ゼロクロス点Ｚ１および検出ピッチＰ１が出力される。
【００３２】
ステップ８＿２でピッチ検出が行われたと判別された場合、ピッチ検出手段３２は、ＰＩＴＣＨと名づけたバッファ３２ａに、そのピッチ１周期長の値（ＰＩＴＣＨ）を前回検出した値に代えて更新し保持しておく（ステップ８＿３）。なお、ステップ８＿２でピッチ検出が行われなかった場合は直ちにステップ８＿４に進む。
【００３３】
アドレス更新手段３３は、ピッチ検出手段３２が現在保持しているピッチ１周期長の値（ＰＩＴＣＨ）に基づいて、前回の更新からピッチ１周期長の値（ＰＩＴＣＨ）に対応する時間が経過す毎に、リングバッファメモリ４における読出基準アドレス（ＳＡＤＲＳ）の更新処理を行う（ステップ８＿４）。この読出基準アドレスの更新については、図９及び図１０を参照して後述する。
【００３４】
ステップ８＿４で読出基準アドレスの更新が行われると、出力波形生成手段３４は図５（ｂ），（ｄ），（ｅ）にそれぞれ示したＰＨＡＳＥ，ＰＨ１，ＰＨ２の各関数についてインクリメントを行う（ステップ８＿５）。そして、ＰＨＡＳＥとＷＩＤＴＨ（再生ピッチ）との大小関係が比較され（ステップ８＿６）、ＰＨＡＳＥがＷＩＤＴＨよりも小さな値にとどまっている間は波形読み出し処理が行われ（ステップ８＿１６）、出力波形データが出力される（ステップ８＿１７）。また、ＰＨＡＳＥがＷＩＤＴＨ以上になった時点で、ＰＨＡＳＥは初期化されて０となる（ステップ８＿７）。
【００３５】
そして、出力波形生成手段３４は、ＣＰＵ８が操作子７の状態を検出した結果から得られたパラメータを入力する（ステップ８＿８）。ここでは、前述した、ピッチ変更係数ＰＩＴＣＨ＿ＶＲとフォルマント変更係数ＦＯＲＭＡＮＴ＿ＶＲを入力している。
出力波形生成手段３４は、操作子７から得られたパラメータに基づきＷＩＤＴＨとＬＥＮＧＴＨとを算出する（ステップ８＿９）。ＷＩＤＴＨは再生ピッチとして定められた期間であり、ＬＥＮＧＴＨは波形読み出しを実際に行う期間の半分の期間である。ＷＩＤＴＨは、ステップ８＿３で更新されているＰＩＴＣＨと、ピッチ変更係数ＰＩＴＣＨ＿ＶＲとの積により求めることができる。ＬＥＮＧＴＨは、ＰＩＴＣＨをフォルマント変更係数ＦＯＲＭＡＮＴ＿ＶＲで割ることにより求めることができる。
【００３６】
次いで出力波形生成手段３４は、ＬＥＮＧＴＨとＷＩＤＴＨとの大小関係を比較し（ステップ８＿１０）、ＬＥＮＧＴＨがＷＩＤＴＨよりも大きいときはＬＥＮＧＴＨの値をＷＩＤＴＨに設定する（ステップ８＿１１）。ステップ８＿１０でＬＥＮＧＴＨがＷＩＤＴＨ以下であるとき、そのままステップ８＿１２へ進む。このように、ステップ８＿１０，８＿１１により常にＬＥＮＧＴＨがＷＩＤＴＨを越えないようにしているのは、もしＬＥＮＧＴＨがＷＩＤＴＨを越えると後述のＷＩＮＤＯＷ１，ＷＩＮＤＯＷ２が０に下がり切らない状態が生じるからである。
【００３７】
出力波形生成手段３４は、さらに、Ｗ＿ＲＡＴＥの算出とＦＬＡＧの反転動作を行う（ステップ８＿１２）。Ｗ＿ＲＡＴＥは１／ＬＥＮＧＴＨにより求められる。そして、ＦＬＡＧの正負を判別し（ステンレス８＿１３）、正の場合、図３に示す第１の読出手段３４により、ＰＨ１及びＷＩＮＤＯＷ１が０にセットされ、ＳＡＤＲＳ１がステップ８＿４で更新されたＳＡＤＲＳにセットされる（ステップ８＿１４）。負の場合は、図３に示す第２の読出手段３４２により、ＰＨ２及びＷＩＮＤＯＷ２が０にセットされ、ＳＡＤＲＳ２がステップ８＿４で更新されたＳＡＤＲＳにセットされる（ステップ８＿１５）。このステップ８＿１４，８＿１５におけるＰＨ１及びＰＨ２のゼロ設定により、ＦＬＡＧの立ち上がり時点及び立ち下がり時点（図５（ｃ）参照）においてリセットされ、位相が互いに１８０度ずれた鋸歯状波が生成される（図５（ｄ），（ｅ）参照）。
【００３８】
上記ステップ８＿１４，８＿１５を含むステップ８＿７からステップ８＿１５の処理は、ＰＨＡＳＥ≧ＷＩＤＴＨを満足した時にだけ行われる処理であるため、ＦＬＡＧの立ち上がり時点及び立ち下がり時点でのみ実行される処理となる。このように、ステップ８＿１４，８＿１５でＰＨ１，ＷＩＮＤＯＷ１，ＰＨ２，ＷＩＮＤＯＷ２のリセット、およびＳＡＤＲＳ１，ＳＡＤＲＳ２のセットが行われた後、出力波形生成手段３４はリングバッファメモリ４から波形読み出し処理を行う（ステップ８＿１６）。そして、読み出された波形データに基づいて出力波形データが生成され、その出力波形データがＤ／Ａ変換器５に出力される（ステップ８＿１７）。
【００３９】
次に、ステップ８＿４の読出アドレス（ＳＡＤＲＳ）の更新につき説明する。
図９は、リングバッファメモリ４における書き込みアドレスと読み出ししアドレスとの関係を示す概念図である。
図９の縦軸は「００００」〜［０ＦＦＦ」までのアドレス位置を示しており、横軸は時間を示している。ＩＢＵＦ＿ＰＴＲは、書込手段３１により書き込みが行われているアドレスであり、このＩＢＵＦ＿ＰＴＲから遅延分ＤＥＬＡＹだけ遅れてＡＤＲＳが存在している。ＡＤＲＳはリングバッファメモリ４から読み出しを行うべきアドレスであり、ＤＥＬＡＹを設けていることにより、読出アドレスが書込アドレスを追い越してしまうことを防いでいる。このＤＥＬＡＹの値としては、通常、入力波形の最低周波数の１周期分が設定される。
【００４０】
そして、ＡＤＲＳの内側において、このＡＤＲＳに沿って読出基準アドレス（ＳＡＤＲＳ）が階段状に変化するようになっている。ＳＡＤＲＳが次第に上昇し、最終アドレス［０ＦＦＦ」の手前に来ると、ＡＤＲＳ＜ＳＡＤＲＳとなる区間が生じる。すると、ＳＡＤＲＳは下方の第１アドレス側に戻り、再びＡＤＲＳに沿って階段状に変化していく。
【００４１】
図１０は、読出基準アドレス（ＳＡＤＲＳ）の更新動作についてのフローチャートである。
まず、アドレス更新手段３３は、ＩＢＵＦ＿ＰＴＲからＤＥＬＡＹを減ずることによりＡＤＲＳを設定するが、さらに、ＡＤＲＳが第１アドレスから最終アドレスの範囲内に収まるように、（１０００（ｈｅｘ）−１）との論理積をとる（ステップ１０＿１）。ここで（ｈｅｘ）は１６進数であることをあらわしている。
【００４２】
次いで、ＡＤＲＳとＳＡＤＲＳとの大小関係を比較し（ステップ１０＿２）、ＳＡＤＲＳがＡＤＲＳを越えていなければ、そのままステップ１０＿４に進む。ＳＡＤＲＳがＡＤＲＳを越えていれば、これは図９を参照して説明したように、ＳＡＤＲＳが最終アドレスの手前に来て、ＡＤＲＳが下方の第１アドレス側に戻ったことを意味しているので、ＡＤＲＳを最終アドレスを越えたアドレスに補正するようにして、次のステップ１０＿４での大小関係の比較を正常に行うことができるようにする（ステップ１０＿３）。
【００４３】
この後、アドレス更新手段３３は、ＡＤＲＳと（ＳＡＤＲＳ＋ＰＩＴＣＨ）との大小関係を比較する（ステップ１０＿４）。ＰＩＴＣＨは、図８のステップ８＿３でピッチ検出手段３２より更新されたものである。ＡＤＲＳが（ＳＡＤＲＳ＋ＰＩＴＣＨ）よりも大きいか等しい場合には、（ＳＡＤＲＳ＋ＰＩＴＣＨ）と（１０００（ｈｅｘ）−１）との論理積をとった上で、この（ＳＡＤＲＳ＋ＰＩＴＣＨ）を新たなＳＡＤＲＳとして更新する（ステップ１０＿５）。また、ＡＤＲＳが（ＳＡＤＲＳ＋ＰＩＴＣＨ）よりも小さい場合には更新は行われず、そのまま現状のＳＡＤＲＳが用いられる。
【００４４】
次に、図８のステップ８＿１６の波形読み出し処理につき図１１のフローチャートを参照して説明する。
図３に示す第１の読出手段３４１は、まず、ＷＩＮＤＯＷ１にＷ＿ＲＡＴＥを加えたものを新たなＷＩＮＤＯＷ１として設定する（ステップ１１−１）。Ｗ＿ＲＡＴＥはステップ８＿１２において１／ＬＥＮＧＴＨにより求めたものである。ＷＩＮＤＯＷ１はＷ＿ＲＡＴＥでインクリメントされるものであって、図５では図示を省略しているが、ＰＨ１と同様の鋸歯状波であり、ＰＨ１とは傾きを異にするものである。そして、ＬＥＮＧＴＨの期間後にＷＩＮＤＯＷ１の値は１に、ＬＥＮＧＴＨの２倍の期間後にはＷＩＮＤＯＷ１の値は２となる。
【００４５】
次いで、第１の読出手段３４１では、ＷＩＮＤＯＷ１の現在の値が判別される（ステップ１１＿２）。ＷＩＮＤＯＷ１の値が１未満であればエンベロープＥＮＶ１をＷＩＮＤＯＷ１に設定し（ステップ１１＿３）、ＷＩＮＤＯＷ１が１以上２未満であればエンベロープＥＮＶ１を（２−ＷＩＮＤＯＷ１）に設定する（ステップ１１＿４）。このステップ１１＿３，１１＿４は、鋸歯状波であるＷＩＮＤＯＷ１を１で折り返して三角波に変換することによりＥＮＶ１を得ていることを意味している。ＷＩＮＤＯＷ１が２以上である部分が存在する場合には、その部分のＥＮＶ１は０に設定する（ステップ１１＿５）。
【００４６】
次いで、リングバッファメモリ４から入力波形データを読み出すためのアドレスＡＤＲＳ１を設定する（ステップ１１＿６）。このＡＤＲＳ１は、読出基準アドレスＳＡＤＲＳに（ＰＨ１＊ＦＯＲＭＡＮＴ＿ＶＲ）を加算することにより求められる。そして、このＡＤＲＳ１に基づいてリングバッファメモリ４から波形データＤＡＴＡ１が読みだされる（ステップ１１＿７）。なお、読出しアドレスＡＤＲＳ１は、実際には存在しないアドレスである小数点表現のアドレスであるが、公知の補間演算を施すことによって小数点アドレスに対応する波形データＤＡＴＡ１を読み出す処理を行っている。
【００４７】
上記と同様の動作がＷＩＮＤＯＷ２側、すなわち、第２の読出手段３４２についても行われる（ステップ１１＿８〜１１＿１４）。そして、図３に示す重み付け加算手段３４３では，ステップ１１＿７，１１＿１４で得られたＤＡＴＡ１，ＤＡＴＡ２から、それぞれＤＡＴＡ１＊ＥＮＶ１（図５（ｈ）参照），ＤＡＴＡ２＊ＥＮＶ２（図５（ｉ）参照）が求められ、ＤＡＴＡ１＊ＥＮＶ１＋ＤＡＴＡ２＊ＥＮＶ２が演算される。これが出力波形データとして出力波形生成手段３４から出力される（ステップ１１＿１５）。
【００４８】
ところで、図１０のステップ１０＿１において説明したように、読出アドレスＡＤＲＳを求める際には、書込アドレスＩＢＵＦ＿ＰＴＲから遅れ分ＤＥＬＡＹを差し引く演算を行っている。このＤＥＬＡＹの値は、リングバッファメモリ４の読出アドレス（ＳＡＤＲＳ１，ＳＡＤＲＳ２）が現在の書込アドレス（ＩＢＵＦ＿ＰＴＲ）を追い越さないようにするためのものであり、通常、入力波形の最低周波数の一周期分を設定していることは既述した通りである。しかし、入力波形の最低周波数が８０Ｈｚであるとすると、ＤＥＬＡＹについて１２．５ｍ秒に相当する値を設定することになり、１２．５ミリ秒の遅延が生じることになる。これは遅延として認識可能な値であり、好ましくない。
【００４９】
そこで、最低周波数の低い入力波形が入力される場合でも、上記のような大きな遅延を付加しなくてもよいようにするため、図８のステップ８＿９とステップ８＿１０との間に、図１２に示したステップ９ａ，９ｂを挿入することが好ましい。すなわち、ステップ８＿９の後、ＬＥＮＧＴＨと、最低周波数が１００ＨｚのときのピッチＰ（１００Ｈｚ）との大小関係を比較し（ステップ９ａ）、ＬＥＮＧＴＨがＰ（１００Ｈｚ）以下の場合はそのままステップ８＿１０へ進み、ＬＥＮＧＴＨがＰ（１００Ｈｚ）より大きな場合はＬＥＮＧＴＨをＰ（１００Ｈｚ）に設定する（ステップ９＿ｂ）。このようにＤＥＬＡＹの値を一定値以下に制限することにより、読出しの際の遅延が認識されてしまうことを防ぐことできる。
【００５０】
【発明の効果】
以上のように、本発明によれば、従来と同様にリアルタイム処理のための簡単な処理方法を採用しながらも、基本波成分の不連続部分の発生を防止し、常に自然な出力波形を得ることができる。
【図面の簡単な説明】
【図１】本発明の波形変換装置の一実施形態の構成を示すブロック図である。
【図２】ＤＳＰの詳細な構成を示すブロック図である。
【図３】出力波形生成手段の詳細な構成を示すブロック図である。
【図４】本発明の概要説明図である。
【図５】本発明の実施形態における波形データおよび関数の時間的な変化を示した波形図である。
【図６】本発明の実施形態における波形データおよび関数の時間的な変化を示した波形図である。
【図７】本発明の実施形態における波形データおよび関数の時間的な変化を示した波形図である。
【図８】本発明の実施形態の動作を示すすフローチャートである。
【図９】リングバッファメモリの書込アドレスと読出アドレスとの関係を示す概念図である。
【図１０】読出基準アドレス（ＳＡＤＲＳ）の更新動作についてのフローチャートである。
【図１１】波形読み出し処理のフローチャートである。
【図１２】本発明の他の実施形態の、図８のフローチャートに追加すべきフローチャートを示す図である。
【図１３】従来技術の問題点の説明図である。
【符号の説明】
１  ローパスフィルタ
２  Ａ／Ｄ変換器
３  ＤＳＰ
４  リングバッファメモリ
５  Ｄ／Ａ変換器
６  ローパスフィルタ
７  操作子
８  ＣＰＵ
３１  書込手段
３２  ピッチ検出手段
３３  アドレス変更手段
３４  出力波形生成手段
３４１  第１の読出手段
３４２  第２の読出手段
３４３  重み付け加算手段
【図１】
0003789997.tif 000002
【図２】
0003789997.tif 000003
【図３】
0003789997.tif 000004
【図４】
0003789997.tif 000005
【図５】
0003789997.tif 000006
【図６】
0003789997.tif 000007
【図７】
0003789997.tif 000008
【図８】
0003789997.tif 000009
【図９】
0003789997.tif 000010
【図１０】
0003789997.tif 000011
【図１１】
0003789997.tif 000012
【図１２】
0003789997.tif 000013
【図１３】
0003789997.tif 000014