(57)【特許請求の範囲】
【請求項１】
時系列に並んだ一連の波形を表す波形データが記憶された記憶手段と、
該波形の時間軸を圧縮または伸長する程度を指示する圧縮伸長情報を入力する圧縮伸長情報入力手段と、
該波形の再生音高を指示する音高情報を入力する音高情報入力手段と、
該波形のホルマントをシフトするホルマントシフト量を入力するホルマントシフト量入力手段と、
前記ホルマントシフト量が該音高情報に応じて変更されたホルマント制御情報を生成するホルマント制御情報生成手段と、
前記圧縮伸長情報と音高情報とホルマント制御情報とを入力し、前記波形データに基づき、前記圧縮伸長情報に対応した変化速度で変化する再生位置に対応した波形を、前記音高情報に対応して音高を変更し、かつ前記ホルマント制御情報に対応してホルマントを変更して、再生波形を生成する再生手段と、を備えた波形発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は例えば電子楽器等に用いられる波形発生装置、更に詳しくは、メモリに記憶された波形データを読み出して再生するなどの発生発生装置に関する。
かかる波形発生装置は例えばサンプラと呼ばれているような電子楽器に用いることができる。
【０００２】
【関連技術】
本出願人は先に出願した特願平９−３００４０３号において、記憶手段に波形を表す波形データの時系列を記憶しておき、その波形の時間軸を圧縮伸長するとともに音高を変換して再生する装置として「波形発生装置」を提案した。
【０００３】
この出願に記載した波形発生装置は、ホルマントシフト操作子が設けられ、ホルマントシフト量を予め設定することにより記録波形のホルマントをシフトして再生したり、変調信号ＬＦＯにより周期的な変調をホルマントに付与したりすることができる。
【０００４】
【発明が解決しようとする課題】
しかし、この波形発生装置は、波形の再生音高が変化してもホルマントは変化しないものである。このように再生音高が変化しても全くホルマントが変化しないと、楽音としてはやはり不自然である。
【０００５】
本発明はかかる問題点に鑑みてなされたものであり、再生音高の変化に対しても、発生される波形による楽音等が不自然とならないようにすることを目的とする。
【０００６】
【課題を解決するための手段および作用】上述の課題を解決するために、本発明に係る波形発生装置は、時系列に並んだ一連の波形を表す波形データが記憶された記憶手段と、該波形の時間軸を圧縮または伸長する程度を指示する圧縮伸長情報を入力する圧縮伸長情報入力手段と、該波形の再生音高を指示する音高情報を入力する音高情報入力手段と、該波形のホルマントをシフトするホルマントシフト量を入力するホルマントシフト量入力手段と、前記ホルマントシフト量が該音高情報に応じて変更されたホルマント制御情報を生成するホルマント制御情報生成手段と、前記圧縮伸長情報と音高情報とホルマント制御情報とを入力し、前記波形データに基づき、前記圧縮伸長情報に対応した変化速度で変化する再生位置に対応した波形を、前記音高情報に対応して音高を変更し、かつ前記ホルマント制御情報に対応してホルマントを変更して、再生波形を生成する再生手段とを備える。この波形発生装置では、再生波形は、ホルマント制御情報によりそのホルマントが変化するが、そのホルマント制御情報は再生音高に応じて変更されるようになっているので、再生音高の変化に対しても再生波形の楽音等が不自然な感じにならないようにそのホルマントを変化させることができる。
【０００７】
なお、上記の再生手段は、再生音高とは関係のない変化速度で変化する時間情報を発生する時間情報発生手段と、この時間情報および上記音高情報に対応し、かつ時間情報の変化速度とは関係しない所望の読出し速度で、記憶手段から波形データを読み出す読出し手段を含み構成することができる。この波形発生装置では、時間情報発生手段の時間情報の変化速度で波形の再生速度が決まり、この時間情報の変化速度は再生音高とは無関係である。よって再生手段により、この時間情報および音高情報に対応し、かつ時間情報の変化速度とは関係のない所望の読出し速度で、波形データを読み出して、その波形データを音高情報で指示される再生音高で再生すると、波形の再生速度と再生音高とを独立に調整できるようになる。
【０００８】
また、この波形発生装置は、上記時間情報の変化速度を変える第１の制御情報を入力する第１制御情報入力手段をさらに備え、上記時間情報発生手段は、入力される第１制御情報に応じて時間情報の変化速度を変える手段を備えるように構成できる。この第１の制御情報は、例えば値を予め設定するための時間圧伸操作子やリアルタイムで操作する変調レバー等の操作に対応して発生するものである。
さらに、上記の時間情報発生手段はカウンタで構成でき、第１の制御情報によってこのカウンタの歩進量を変えるようにする。これにより第１制御情報入力手段で入力する第１の制御情報により時間情報の変化速度を変え、それにより波形の再生速度を任意に変化させることができる。この場合においても、再生音高は再生速度により変化しない。
【０００９】
また上記の読出し手段は、少なくとも１周期の波形を含む波形区間を、音高情報に対応した周期で、かつ時間情報の変化速度とは関係しない所望の読出し速度で読み出すことで、波形区間の波形データを再生音高に変換するよう構成できる。さらに前記所望の読出し速度を、ホルマント制御情報生成手段で生成される、再生音高に対応して変化するホルマント制御情報に対応するように構成しているため、上記再生速度には依存しないようにしつつ、前記再生音高に対応してホルマントが変化する再生音高で再生することが可能となる。
【００１０】
また上記の再生手段は、２つの処理系を持ち、各処理系では再生音高の２倍長に対応した周期で記憶手段の波形データの少なくとも１周期の波形を発生し、２つの処理系の出力を最終的に足し合わせることで、波形区間の波形データを再生音高に変換するよう構成できる。
【００１１】
また上記のホルマント制御情報生成手段は、波形列中の波形のホルマントを変更する変更情報を入力するホルマント変更情報入力手段をさらに備え、読出し手段は、変更情報がホルマントを低域側にシフトするものであるときには波形区間の波形データの読出し速度を遅く制御し、変更情報がホルマントを高域側にシフトするものであるときには波形区間の波形データの読出し速度を速く制御して読み出すよう構成できる。このように構成することで、ホルマント変更情報入力手段により変更情報を入力することで、再生する波形のホルマントを高域側にシフトさせたり低域側にシフトさせたりすることができる。
【００１２】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１は本発明に係る一実施例としての電子楽器の波形発生装置が示される。図１において、７は再生する波形データに関する情報を記憶しておくＲＡＭからなる波形メモリである。６は波形メモリ７の波形データの再生処理等をディジタル処理により行うＤＳＰ（ディジタル信号プロセッサ）である。このＤＳＰ６には、ＤＳＰ６の演算処理等に使用するワーキングメモリと、ＤＳＰ６のプログラムを記憶するメモリとを含んでいる。
【００１３】
８は入力したアナログ波形信号をディジタル波形信号にＡ／Ｄ変換してＤＳＰ６に入力するＡ／Ｄ変換器、９はＤＳＰ６から再生出力されるディジタル波形信号をアナログ波形信号にＤ／Ａ変換して出力するＤ／Ａ変換器である。Ａ／Ｄ変換器８から入力されたディジタル波形信号はＤＳＰ６から波形メモリ７に波形データとして格納することができる。
【００１４】
１はＣＰＵ（中央処理装置）であって、ＤＳＰ６の制御、操作子群２やキーボード装置３の状態検出と処理など装置の全体的な制御を行う。４は多くの波形データ等を記憶しておく大容量のハードディスク装置であり、その波形データは必要に応じて波形メモリ７に転送される。５は記憶部であって、ＣＰＵ１の演算処理等に使用するワーキングメモリ、ＣＰＵ１のプログラムを記憶しておくメモリ、ＤＳＰのプログラムを記憶しておくメモリ等を含む。
【００１５】
操作子群２は、図１に示すように、モード選択スイッチ（ＭＳＳ）２１、バンク選択スイッチ（ＢＳＳ）２２、ホルマントシフト操作子（ＦＳＶ）２３、時間圧伸操作子（ＴＣＶ）２４等からなる。以下、これらの各操作子の機能について説明する。
【００１６】
モード選択スイッチ２１は、録音モード、編集モード、プレイ（再生）モードから一つを選択するためのスイッチである。ここで、録音モード (ＲＥＣモード) は外部から入力された楽音信号を録音（サンプリング) するモード、編集モード (ＥＤＩＴモード) は録音モードでサンプリングした波形を編集するモード、プレイモード（ＰＬＡＹモード) は波形メモリ７に記憶した波形データをキーボードの演奏操作に応じて再生するモードである。
バンク選択スイッチ２２は、波形メモリ７に記憶されている複数の波形データのうちから一つを選択するためのスイッチである。
ホルマントシフト操作子２３は、波形メモリ７に格納されている原波形データのホルマントからのシフト量を設定する操作子であり、後述するホルマントシフト量ＦＳＶ（ホルマント変更係数とも称する）を設定する。
時間圧伸操作子２４は、波形データを再生する際の時間軸上での再生位置（プレイ位置）の進行速度を決めるための時間の圧縮／伸張（以下、圧伸と称する）の量を設定する操作子である。
【００１７】
キーボード装置３は、ＭＩＤＩのキーボード３１やモジュレーションレバー（以下、変調レバーと記する）３２等の演奏操作子を備える。キーボード３１は操作したキーに対応するノート情報（ノート番号ＮＮ、ベロシティＶ、ノートオン／オフＮＴなど）を演奏のために発生する他に、波形メモリ７に格納されている波形データの再生にあたって、キーのオン／オフにより再生の音高と再生の開始／終了を指示するためにも用いられる。
【００１８】
変調レバー３２はモジュレーションホイールとも呼ばれるものもあり、通常は発音する楽音の変調を制御する操作子である。この実施例では、この変調レバー３２の操作量（変調レバー量ＭＬＶ）に応じて上述の時間圧伸操作子２３により設定した設定時間圧伸量ＳＴＣＶを修正して、再生する波形のピッチを変えることなく再生速度（プレイ速度）の制御を行っている。この変調レバー３２は＄００〜＄７Ｆの範囲の変調レバー量ＭＬＶを発生することができる。なお本明細書では以降、＄７Ｆ等の先頭に付けた「＄」は１６進表示を意味するものとする。この変調レバー３２は通常はレバーが揺動範囲の中央位置にあり、この中央位置では＄４０の変調レバー量ＭＬＶを出力するようになっている。
【００１９】
波形メモリ７は再生する波形信号に関するデータを記憶しておくメモリであり、大まかにはパラメータ記憶部と波形データ記憶部の２つに分けられ、パラメータ記憶部はさらに、パラメータ１記憶部（ステータス領域）、パラメータ２記憶部（切出し開始アドレス領域）に分けられる。このパラメータ記憶部は、
パラメータ１記憶部（ステータス領域）    ：＄２０アドレス／１バンク
パラメータ２記憶部（切出し開始アドレス領域）：＄８００アドレス／１バンクの単位で１バンクあたりのアドレス領域が設けられてデータが記憶されている。また、波形データ記憶部には、＄８０００アドレス／１バンクの単位で、バンク毎にそのバンク番号に対応する波形番号の波形データ全てが記憶されている。つまり、パラメータ１記憶部は＄２０番地毎に、パラメータ２記憶部は＄８００番地毎に、また波形データ記憶部は＄８０００番地毎に、各々セグメントで区切られており、各々のセグメントはアドレスの若い方から順番にバンク０領域、バンク１領域  、バンク２領域  ・・・のようにバンク番号が付けられる。例えばある波形番号の波形についてパラメータをそれぞれパラメータ１、２記憶部のバンク０領域に格納したら、その波形番号の波形データはそれらのパラメータに対応して波形データ記憶部の同じバンク番号のバンク０領域に格納する。
【００２０】
以下、これらパラメータ記憶部と波形データ記憶部のデータ構成を図２〜図４を参照して説明する。ここで、図２はパラメータ１記憶部（ステータス領域）のデータ構成、図３はパラメータ２記憶部（切出し開始アドレス領域）のデータ構成、図４は波形データ記憶部のデータ構成を示すものである。
【００２１】
パラメータ１記憶部（ステータス領域）は、図２に示すように、バンク番号毎（すなわち波形番号毎）に、波形名ｗｎ、サンプリング周波数ｓｒ、オリジナルピッチｏｐ、オリジナルキーからのオリジナルピッチシフト量ｏｐｓｖ、出力レベルｏｌを記憶する。これらのパラメータの内容は以下のとおりである。
【００２２】
・波形名ｗｎ：この波形名ｗｎは表示装置に表示してメモリ波形の識別を容易にするためなどに用いられる。
・サンプリング周波数ｓｒ：原波形（メモリに格納されている波形、以下同じ）のサンプリング周波数であって、原波形のサンプリング周波数とは異なるサンプリング周波数で再生処理を行うときにオリジナルピッチが変化しないように補正するなどのために使用される。
・オリジナルピッチｏｐ：原波形データの本来のピッチ。
・オリジナルピッチシフト量ｏｐｓｖ：オリジナルピッチｏｐをシフトさせる値（オリジナルピッチＯＰを変化させる倍率値）であって、オリジナルピッチｏｐと異ならせて再生するときなど、オリジナルピッチｏｐを変化させる場合などに使用される。
・出力レベルｏｌ：原波形の出力レベルを設定するためのものである。
【００２３】
次に、パラメータ２記憶部（切出し開始アドレス領域）は、図３に示すように、バンク番号毎に、その波形データの切出し開始アドレスを記憶する。切出し開始アドレスｃｓａは、１ピッチ分の波形（以下、切出し波形と称する）の先頭アドレスである。以下、本明細書ではこの切出し波形が時系列に並べられたものを波形列と称する。この切出し開始アドレスｃｓａが当該波形番号の波形列全体にわたり時間軸に沿って時系列に記憶されている。この切出し開始アドレスを記憶する領域の最後尾には当該波形列の最後の１ピッチの切出し波形の切出し開始アドレスｃｓａが波形読出し終了アドレスｗｅａとして格納される。また、このバンク番号の記憶領域の先頭アドレスにはその波形の波形読出し終了アドレスｗｅａがヘッダとして格納される。
【００２４】
なお、子音部分などでピッチが定まらない場合の切出し開始アドレスｃｓａは、適当なピッチで、
「切出し開始アドレスｃｓａ＝一つ前の切出し開始アドレスｃｓａ＋ピッチ」
として子音区間全体について求めたものを切出しアドレス記憶領域に格納する。ここでいうピッチとは１ピッチ分の切出し波形のアドレス幅である。なお、適当なピッチとは、例えば子音から母音に移行して最初に検出（確定）したピッチや次に定まったピッチなどである。
【００２５】
次に、波形データ記憶部のデータ構成は、図４に示されるように、バンク番号（波形番号）０の波形列の波形データは波形データ記憶部のバンク０領域に、バンク番号１の波形列の波形データは波形データ記憶部のバンク１領域にというように、各バンク領域にシーケンシャルなアドレス順序で波形列の波形データ（サンプリング値）ｗd が格納される。
【００２６】
ＣＰＵ１側のメモリ５には各種のレジスタ群が設定される。図５、図６にはこのレジスタ群に設定される各種のパラメータが示される。図６はこのうちのＭＩＤＩ情報レジスタ群である。以下、これらのパラメータについて説明する。
【００２７】
・バンク番号ＢＮ：バンク選択スイッチ２２で設定した波形データのバンク番号（波形番号）。このバンク番号ＢＮに従って、再生する波形列（波形番号）の選択が行われる。
【００２８】
・波形メモリ７のパラメータ１記憶部に記憶される各種パラメータ。すなわち、波形名ＷＮ、サンプリング周波数ＳＲ、オリジナルピッチＯＰ、オリジナルピッチシフト量ＯＰＳＶＰＰ、出力レベルＯＬである。なお、これらのうち、オリジナルピッチ以外は本発明の実施例に直接関係のないパラメータであるので、オリジナルピッチ以外の処理は本実施例から除外してある。
【００２９】
・ホルマントシフト量ＦＳＶ：ホルマントシフト操作子２３で設定されるホルマントのシフト量。波形メモリ７中の波形列は、このホルマントシフト量ＦＳＶが「１」である時は、原波形と同じホルマントで再生され、「１」より大きい値であると、ホルマントを原波形よりも高域側にシフトして再生され、「１」よりも小さい値であると、ホルマントを原波形よりも低域側にシフトして再生される。
【００３０】
・設定時間圧伸量ＳＴＣＶ：波形メモリ７に記憶された波形列を再生する時における時間圧縮／伸長の大きさ（すなわちプレイ速度）を決めるもので、時間圧伸操作子２４で数値設定したもの。後述する変調レバー３２による変調がかけられていなければ、この設定時間圧伸量ＳＴＣＶが「１」であると、原波形の時間変化と同じ速さで時間変化し、「１」より大きい値であると、原波形よりも速い時間変化をしてプレイ時間が短くなり、「１」よりも小さい値であると、原波形よりも遅い時間変化をしてプレイ時間が長くなる。
【００３１】
・時間圧伸変調量（係数）ＴＣＭＶ：変調レバー３２によって設定した時間圧縮／伸張の値であって、前述の設定時間圧伸量ＳＴＣＶを補正するための係数。「０≦時間圧変調量ＴＣＭＶ≦２」の範囲で設定される。
・ピッチ比ＰＲ：キーボード３１により指定された音高（キー番号）に対応したピッチとメモリ波形のオリジナルピッチＯＰとの比であって、ボイスモジュール毎に記憶される。
・ベロシティレベルＶＬ：キーボード３１により指定されたベロシティＶであって、ボイスモジュール毎に記憶される。
【００３２】
図６のＭＩＤＩ情報レジスタ群はキーボード装置３から入力されたノート情報等を記憶するレジスタ群であって、以下のパラメータが記憶される。
ノート番号ＮＮ：キーボード３１で操作されたキー番号。
ベロシティＶ：キーボード３１で操作されたキーのベロシティ。
ノートオン／オフＮＴ：キーボード３１で操作されたキーのオン／オフ。
変調レバー量ＭＬＶ：変調レバー３２で操作した量。
【００３３】
ＤＳＰ６側の内部メモリには図７、図８に示す各種のレジスタ群が設定される。以下、これらのレジスタ群に設定されるパラメータについて説明する。
【００３４】
まず、キー情報レジスタ群には以下のパラメータが設定される。後述するＣＰＵ１のプレイ処理において、キーボード３１の操作が検出され、割当て処理によってキー情報がＤＳＰ６に転送されて、このキー情報レジスタに一時的に記憶される。これらのパラメータは割込みルーチンにより一定周期で設定される。
・ピッチ比ｐｒ。
・ホルマントシフト量ｆｓｖ：再生される波形の実際のホルマントシフト量。
・ベロシティレベルｖｌ。
・時間圧伸量ｔｃｖ：再生される波形の実際の時間圧伸量。
・切出しアドレスポインタｃａｐ：パラメータ２記憶部の切出し開始アドレス領域の切出し開始アドレスｃｓａを指すポインタ（パラメータ２記憶部の読出しアドレス）。
・バンク番号ｂｎ：波形メモリのバンク番号。
【００３５】
次に、ＤＳＰ６のメインルーチンに用いる各種パラメータとして以下のものがある。
・波形読出し終了アドレスｗｅａ：パラメータ２記憶部のバンクに格納された波形読出し終了アドレス（波形列の最後尾の切出し波形の切出し開始アドレス）。
・プレイ位置ｐｐ：波形メモリの波形列から逐次に切出し波形を切り取るための現在の切取り位置を示すためのポインタ。
・次切出し開始アドレスｎｃｓａ：次の切出し波形の切出し開始アドレス。
・第１／第２切出し開始アドレスｆｃｓａ／ｓｃｓｓ：後述する処理系１／２における現在の切出し開始アドレス。
・切出し波形ピッチｃｗｐ：処理系１／２における現在処理中の切出し波形のピッチ値（アドレス幅で表示）。
・プレイピッチ（幅）ｐｐｗ：波形メモリに格納された波形列を再生するためのピッチ。
・再生ピッチカウンタｐｐｃ：再生ピッチｐｐｗの１周期内における現在の位置を示すもの。
・ゲート値ｇ：出力波形をミュートするためのもの。
・第１／第２アドレスカウンタａｃ１／ａｃ２：処理系１／２において波形メモリの読出しアドレスを算出するためのカウンタ。
・第１／第２エンベロープ窓ｅｗ１／ｅｗ２：波形メモリの波形列に付加して再生波形を取り出すための窓。
・第１／第２窓カウンタｗｃ１／ｍｗ２：エンベロープ窓を生成するためのもの。
・識別フラグｆ：パーシャル１／２を識別するためのフラグ。
・窓長ｗｌ：エンベロープ窓の窓長。
・第１／第２波形読出しアドレスｗｒａ１／ｗｒａ２：処理系１／２における波形データの読出しアドレス。
・波形出力ｗｏ：処理系１／２で抽出した波形出力の合成値。
・出力エンベロープレベルｏｅｌ：波形出力ｗｏに乗じるエンベロープレベルの現在値。
・プレイ波形出力ｐｗｏ：実際に再生出力される再生波形の出力レベル。
【００３６】
以下、この実施例装置の動作をフローチャートを参照して説明する。
図９には、ＣＰＵ１が行う処理として、メインルーチンのフローチャートが示される。メインルーチンがスタートすると、モード選択スイッチ２１が録音モード、編集モード、プレイモードの何れに操作されたか監視されており（ステップＡ）、操作がされると、その操作が録音モード、編集モード、プレイモードの何れであるかが判定される（ステップＢ）。録音モードであれば、録音（ＲＥＣ）モード処理が行われ（ステップＣ）、編集モードであれば編集（ＥＤＩＴ）モード処理が行われ（ステップＤ）、プレイモードであればプレイモード処理が行われる（ステップＥ）。
【００３７】
図１０には録音モードにおける録音モード処理ルーチンのフローチャートが示される。録音モード処理は外部から入力された楽音信号を録音（サンプリング）する処理であり、モード選択スイッチ２１により録音モードに設定した後、サンプリングスタートの操作子を操作することによって（ステップＣ３）、サンプリングスタートして録音（サンプリング処理）が行われる（ステップＣ４）。サンプリングされる楽音信号のデータは波形メモリ７に記憶される。この録音モード処理ルーチンから抜け出てメインルーチンにリターンするにはＥＸＩＴ操作子を操作する（ステップＣ２）。
【００３８】
図１１には編集モードにおける編集モード処理ルーチンのフローチャートが示される。編集モード処理は、録音モードでサンプリングした波形を変更したり、再生可能な波形データに変更する編集処理や、それらの波形データをハードディスク装置３に転送したり、ハードディスク装置３から波形メモリ７に転送したりする処理を行う（ステップＤ３）。この編集モード処理ルーチンから抜け出るにはＥＸＩＴ操作子を操作する（ステップＤ２）。
【００３９】
図１２にはプレイモードにおけるプレイモード処理ルーチンのフローチャートが示される。このプレイモード処理ルーチンの初期設定（ステップＥ１）においては、操作子群２の状態を走査するレジスタ等をリセットし、操作子群を操作可能な状態にすると共に、各操作子の初期状態をセットしておく。初期状態とは、プレイモード処理で、各操作子に変化があった時だけ操作子の操作に対応した処理を行うため、その最初の基準となる状態を設定している。
【００４０】
プレイモード処理ルーチンは、モード選択スイッチ２１によりプレイモードに設定した後、プレイスタートの操作子を操作することによってスタートする。プレイ処理（ステップＥ３）は、波形メモリ７の波形データを、キーボード３１からの演奏情報に対応して再生する処理である。このプレイモード処理ルーチンから抜け出るにはＥＸＩＴ操作子を操作する（ステップＥ２）。
【００４１】
図１３、図１４にはこのプレイモードにおけるプレイ処理（ステップＥ３）の詳細な処理手順が示される。このプレイ処理はＣＰＵ１で実行される。このプレイ処理では、操作子群２による設定とキーボード３１による演奏操作を検出してそれぞれに対応するパラメータを記憶するレジスタの内容を更新する。これらのレジスタに設定された内容のうち必要なものはＤＳＰ側の対応するレジスタに転送される。なお、このプレイ処理はＤＳＰ側のメインルーチンよりも長い周期で実行される。つまり、このプレイ処理が１回実行されて次に実行されるまでにＤＳＰ側のメインルーチンが必ず１回実行されることになる。
【００４２】
プレイ処理が開始されると、バンク選択スイッチ２２の操作に変化があるか否かを見て（ステップＦ１）、変化がある場合には、バンク選択スイッチ２２で設定されたバンク番号ＢＮを更新する。そして、更新されたバンク番号ＢＮに対応して、波形メモリ７のパラメータ１記憶部から、波形名ｗｎ、サンプリング周波数ｓｒ、オリジナルピッチｏｐ、オリジナルピッチシフト量ｏｐｓｖ、出力レベルｏｌを読み込み、それぞれ対応するパラメータである波形名ＷＮ、サンプリング周波数ＳＲ、オリジナルピッチＯＰ、オリジナルピッチシフト量ＯＰＳＶ、出力レベルＯＬを更新する（ステップＦ３）。
【００４３】
次に、ホルマントシフト操作子２３に変化があるか否かを見て（ステップＦ４）、変化がある場合には、それに対応してホルマントシフト量ＦＳＶを更新する（ステップＦ５）。同様に、時間圧伸操作子２４に変化があるか否かを見て（ステップＦ６）、変化がある場合には、それに対応して設定時間圧伸量ＳＴＣＶを更新する（ステップＦ７）。
【００４４】
次に、キーボード３１からのノート情報の入力があったか否かを判定し（ステップＦ８）、ノート情報の入力があった場合にはそのノート情報に基づいて、ボイスモジュールへの割当て処理を行う（ステップＦ９）。
このボイスモジュールへの割当て処理の詳細な手順が図１５に示すボイスモジュールへの割当て処理ルーチンに示される。このボイスモジュールへの割当て処理は、キーボード３１から入力したノート情報（ノート番号ＮＮ、ベロシティＶ、ノートオン／オフＮＴ）をボイスモジュールに割り当てる処理であり、ノート情報の入力があった場合に、最後に入力されたノートオン情報を優先的にボイスモジュールに割り当て、あるいは既に割り当てられているノートをオフにするためのノートオフ情報をボイスモジュールに割り当てる（ステップＧ１）。このステップＧ１の割当て処理の詳細は本発明と直接関係がないので、詳細な処理内容は省略する。
【００４５】
ボイスモジュールの割当て処理ルーチンでは、ノート情報のボイスモジュールへの割当て後（ステップＧ１）、ノートオン／オフＮＴがノートオン情報かノートオフ情報かを判別する（ステップＧ２）。ノートオン情報であれば、ノート情報中のノート番号ＮＮをノートピッチＮＰと後述するキーフォロー係数ＫＦに変換し（ステップＧ３）、このノートピッチＮＰに基づいて、次のステップＧ４において、
「ピッチ比ＰＲ＝ノートピッチＮＰ／オリジナルピッチＯＰ」
すなわち、ノートピッチＮＰとオリジナルピッチＯＰとの比を求めてピッチ比ＰＲとして設定し、
「ベロシティレベルＶＬ＝ベロシティＶ」
すなわち、ノート情報中のベロシティＶをベロシティレベルＶＬとして設定する。
なお、オリジナルピッチシフト量ＯＰＳＶも反映させる場合には、このステップＧ４を、
「ピッチ比ＰＲ＝ノートピッチＮＰ／（オリジナルピッチＯＰ×オリジナルピッチシフト量ＯＰＳＶ）
「ベロシティレベルＶＬ＝ベロシティＶ」
のようにする。
【００４６】
また、前述したように、ステップＧ３においては、ノート番号ＮＮをキーフォロー係数ＫＦにも変換する。この変換は、図１６に示すようなノート番号ＮＮとキーフォロー係数ＫＦとの関係をテーブルとして記憶しておき、そのテーブルに従って変換する。なお、このテーブルは複数用意しておき、適宜選択して使用するようにしても良い。あるいは、関数に従って演算によりキーフォロー係数ＫＦを求めるようにしてもよい。
【００４７】
さらに、ＣＰＵ側においてバンク選択スイッチ２２で設定したバンク番号ＢＮをＤＳＰ側に送ってバンク番号ｂｎとして設定するとともに、ＤＳＰ６側の切出アドレスポインタｃａｐを０に設定する（ステップＧ５）。
【００４８】
一方、ノートオン／オフＮＴがノートオフ情報であった場合には（ステップＧ２）、
ベロシティレベルＶＬ＝０
すなわち、ベロシティレベルＶＬを０に設定する（ステップＧ６）。
【００４９】
このボイスモジュールへの割当て処理ルーチン（図１５）が終了したら、次いで、元のプレイ処理ルーチンに戻って、変調レバー３２が操作されたか否かを判定し（ステップＦ１０）、操作された場合には時間圧伸変調量ＴＣＭＶを次の計算式、
時間圧伸変調量ＴＣＭＶ＝変調レバー量ＭＬＶ／＄４０
に従って更新する（ステップＦ１１）。
【００５０】
この時間圧伸変調量ＴＣＭＶは、時間圧伸操作子２４で設定された設定時間圧伸量ＳＴＣＶを修正してＤＳＰ６での波形再生のための時間圧伸量ｔｃｖを求めるためのものであり、設定時間圧伸量ＳＴＣＶに乗算する修正係数である。上記の「変調レバー量ＭＬＶ／＄４０」の演算は、変調レバー３２の変調レバー量ＭＬＶ（＄００〜＄７Ｆの範囲）を０〜２の範囲の値に正規化するもので、変調レバー３２は中央位置では＄４０を出力しているので、この中央位置にある場合には時間圧伸変調量ＴＣＭＶは１となり、時間圧伸操作子２４で設定された設定時間圧伸量ＳＴＣＶがそのまま時間圧伸量ｔｃｖとなり、変調レバー３２の出力が＄００側に変化するにつれて時間圧伸変調量ＴＣＭＶが小さくなって時間圧伸量ｔｃｖが小さくなり（後述するようにプレイ速度（波形再生速度）が遅くなる）、出力が＄００では時間圧伸量ｔｃｖがゼロとなる（後述するようにプレイ速度が停止する）。また変調レバー３２による設定時間圧伸量ＳＴＣＶが＄７Ｆ側に変化するにつれて時間圧伸量ｔｃｖが設定時間圧伸量ＳＴＣＶの２倍に近付く（後述するようにプレイ速度が速くなる）。
【００５１】
ＣＰＵ１においては、一定周期で次の割込み処理が行われ、その処理結果はＤＳＰ６に送られて、ピッチ比ｐｒ、ホルマントシフト量ｆｓｖ、ベロシティレベルｖｌ、時間圧伸量ｔｃｖがそれぞれのレジスタに設定される。以下、この割込み処理ルーチンを図１７を参照して説明する。
【００５２】
割込み処理が起動されると、ＤＳＰ６のレジスタにピッチ比ｐｒ、ホルマントシフト量ｆｓｖ、ベロシティレベルｖｌ、時間圧伸量ｔｃｖを設定する。すなわち、まず、
「ピッチ比ｐｒ＝ピッチ比ＰＲ」
でピッチ比ＰＲをそのままピッチ比ｐｒに設定する。
【００５３】
次に、ホルマントシフト量ｆｓｖを、
「ホルマントシフト量ｆｓｖ＝ホルマントシフト量ＦＳＶ×キーフォロー係数ＫＦ」
で求める。この計算式によりホルマントシフト量ｆｓｖを求めると、ホルマントシフト操作子２３で設定されたホルマントシフト量ＦＳＶがキーフォロー係数ＫＦによって変化することになり、ホルマントシフト量が再生音高に対応して変化することになる。
【００５４】
次に、
「ベロシティレベルｖｌ＝ベロシティレベルＶＬ」
でベロシティレベルＶＬをそのままベロシティレベルｖｌに設定する。
最後に、再生する波形の実際のプレイ速度を決めるための変数である時間圧伸量ｔｃｖを次の計算式で求める。
「時間圧伸量ｔｃｖ＝設定時間圧伸量ＳＴＣＶ×時間圧伸変調量ＴＣＭＶ」
すなわち、時間圧伸量ｔｃｖは、時間圧伸操作子２４で設定された設定時間圧伸量ＳＴＣＶと変調レバー３２で入力された修正係数である時間圧伸変調量ＴＣＭＶとを乗算して決定される。
【００５５】
次に、キー情報の転送を受けたＤＳＰ６の処理を図１８を参照して説明する。図１８はＤＳＰ６のメインルーチンを示すフローチャートであり、サンプリング周期で繰り返し実行されるものである。ＣＰＵ１から新たなキー情報の転送に基づき、ＣＰＵの「ボイスモジュールへの割当て処理」において切出しアドレスポインタｃａｐが０に設定されたか否かを監視しており（ステップＪ１）、切出しアドレスポインタｃａｐ＝０に設定された時にはボイスの発音開始処理を行う（ステップＪ２）。
【００５６】
図１９にはこのボイスの発音開始処理が示される。以下にこれらの処理について順次に説明する。なお、以下の説明では、＠ｎ（バンク番号ｂｎ×＄・・・）の記号はパラメータｎ記憶部（ｎ＝１、２）の「バンク番号ｂｎ×＄・・・」のアドレスからデータを読み出すことを意味する。
・波形読出し終了アドレスｗｅａ＝＠２（バンク番号ｂｎ×＄８００）
パラメータ２記憶部（切出し開始アドレス領域）の（バンク番号ｂｎ×＄８００）番地（＝波形読出し終了アドレスｗｅａが格納されている番地）からデータを読み出して波形読出し終了アドレスｗｅａとしてレジスタに設定する。
・プレイ位置ｐｐ＝＠２（バンク番号ｂｎ×＄８００＋切出しアドレスポインタｃａｐ＋１）
パラメータ２記憶部の（バンク番号ｂｎ×＄８００切出しアドレスポインタｃａｐ＋１）番地からデータ（波形列の先頭の切出し波形の切出し開始アドレスｃｓａ１）を読み出してプレイ位置ｐｐとしてレジスタに設定する。
・次切出し開始アドレスｎｃｓａ＝＠２（バンク番号ｂｎ×＄８００＋切出しアドレスポインタｃａｐ＋２）
パラメータ２記憶部の（バンク番号ｂｎ×＄８００＋切出しアドレスポインタｃａｐ＋２）番地からデータ（波形列の２番目の切出し波形の切出し開始アドレスｃｓａ２）を読み出して次切出し開始アドレスｎｃｓａとしてレジスタに設定する。
・切出し波形ピッチｃｗｐ＝次切出し開始アドレスｎｃｓａ−プレイ位置ｐｐ上記次切出し開始アドレスｎｃｓａから上記設定したプレイ位置ｐｐ（＝この発音開始処理時には先頭の切出し開始アドレス）を引いて切出し波形ピッチｃｗｐ（アドレス幅で表示）としてレジスタに設定する。この切出し波形ピッチｃｗｐは処理対象の切出し波形（発音開始処理時には先頭の切出し波形）のピッチに相当する。
・再生ピッチｐｐｗ＝切出し波形ピッチｃｗｐ×ピッチ比ｐｒ
上記切出し波形ピッチｃｗｐとピッチ比ｐｒを乗算して再生ピッチｐｐｗとしてレジスタに設定する。
・現切出し開始アドレスｃｃｓａ＝プレイ位置ｐｐ
上記プレイ位置ｐｐを現切出し開始アドレスｃｃｓａとしてレジスタに設定する。
・第１切出し開始アドレスｆｃｓａ＝現切出し開始アドレスｐｃｓａ
上記現切出し開始アドレスｃｃｓａを第１処理系における第１切出し開始アドレスｆｃｓａとしてレジスタに設定する。
・第２切出し開始アドレスｓｃｓａ＝現切出し開始アドレスｃｃｓａ
上記現切出し開始アドレスｃｃｓａを第２処理系における第２切出し開始アドレスｓｃｓａとしてレジスタに設定する。
・第１アドレスカウンタａｃ１＝０
第１アドレスカウンタａｃ１として０をレジスタに設定する。
・第２アドレスカウンタａｃ２＝再生ピッチｐｐｗ／２
第２アドレスカウンタａｃ２として上記再生ピッチｐｐｗ／２（再生ピッチｐｐｗの半周期の値）をレジスタに設定する。
・第１窓カウンタｗｃ１＝０
第１窓カウンタｗｃ１として０をレジスタに設定する。
・第２窓カウンタｗｃ２＝１
第２窓カウンタｗｃ２として１をレジスタに設定する。
・ゲート値ｇ＝１
ゲート値ｇとして１をレジスタに設定する。
・切出しアドレスポインタｃａｐ＝１
切出しアドレスポインタｃａｐとして１をレジスタに設定する。
【００５７】
以上のボイスの発音開始処理（ステップＪ２）が終了したら、読出し処理を行う（ステップＪ３）。この読出し処理については後に詳述する。この後、上記読出し処理（ステップＪ３）で読み出したプレイ波形出力ｐｗｏを出力する（ステップＪ４）。
【００５８】
上述のステップＪ３の「読出し処理」は、波形列（音声）から逐次に切出し波形を切り出し、その切出し波形のホルマントの特徴をほぼ保ったまま、所望の再生音高に対応したピッチ（＝再生ピッチ）でその切出し波形を再生することによって、元の波形列のホルマント特性を保ったままピッチを変換するものである。この読出し処理では、再生される波形のピッチ（＝再生ピッチ）は鍵盤で押下したキーの音高に応じて変更されるが、波形再生に要するプレイ時間は再生ピッチの大きさ（すなわちどのキーが押下されたか）に影響されない。
【００５９】
この読出し処理動作を概略的に説明すると、波形メモリ７に記憶されている波形列からプレイ位置ｐｐで指定される位置近傍の１ないし２ピッチ程度の切出し波形を時間経過に従って順次に切り出して、その切り出した切出し波形を、元の波形とは異なるピッチおよびホルマントで再生するものである。その際、この切出し波形の再生を二つの処理系（パーシャル）で並行して行い、それぞれの処理系では再生しようとする再生ピッチの２倍長の周期でかつ互いが半周期（＝再生しようとする再生ピッチの周期）ずれるようにして切出し波形を再生し、これらを合成して、再生しようとする再生ピッチの周期にするようにしている。
【００６０】
図２０、図２１はこのピッチ変換処理を説明する図である。ホルマントシフト量ｆｓｖは１であれば変更なし、１以外であればホルマントを若干変更する。ここでは、ホルマントシフト量ｆｓｖが１、すなわちホルマント変更なしで、かつ再生ピッチｐｐｗを波形メモリ７の元の波形データより高くする場合を図２０で説明し、ホルマントシフト量ｆｓｖが１よりも大きい、すなわちホルマント変更ありで、かつ再生ピッチｐｐｗを波形メモリ７の元の波形列と同じにする場合を図２１で説明する。
【００６１】
まず、図２０を参照して、キーボード３１のキー押下で音高を指定することにより、元の波形列より高域側にピッチをシフトし、かつホルマント特性の変更は行わない（ホルマントシフト量ｆｓｖ＝１）場合について説明する。
【００６２】
図２０の（ａ）はバンク０領域の波形列を示しており、切出し開始アドレスｃｓａ１から始まる５周期分の切出し波形を示している。この波形列の各切出し波形は切出し波形ピッチｃｗｐ１、ｃｗｐ２、ｃｗｐ３・・・を有する。
【００６３】
また、キーボード３１のキーで音高指定されたノートナンバーに応じて定まるピッチ比ｐｒ（＝ノートピッチｎｐ／オリジナルピッチｏｐ）に基づいて再生ピッチｐｐｗが、
「再生ピッチｐｐｗ＝切出し波形ピッチｃｗｐ×ピッチ比ｐｒ」
で設定される。この再生ピッチｐｐｗの周期を再生ピッチカウンタｐｐｃでカウントして作る。さらに、この再生ピッチｐｐｗに同期して、前記２つの処理系での波形再生のための波形データの読出しアドレスを求めるための第１アドレスカウンタａｃ１、第２アドレスカウンタａｃ２を作成する。なお、これらの第１アドレスカウンタａｃ１、第２アドレスカウンタａｃ２はサンプリング周期毎に一つずつインクリメントされる
【００６４】
そして、第１の処理系は、後述の「波形読出し処理サブルーチン」のステップＮ６で行う第１波形読出しアドレスｗｒａ１の演算、
「第１波形読出しアドレスｗｒａ１＝第１切出し開始アドレスｆｃｓａ＋第１アドレスカウンタａｃ１×ホルマントシフト量ｆｓｖ」
のうちの後半の「第１アドレスカウンタａｃ１×ホルマントシフト量ｆｓｖ」の部分で決まる読出し速度で切出し波形を読み出す。
【００６５】
また、第２の処理系は、後述の「波形読出し処理サブルーチン」のステップＮ１５で行う波形読出しアドレスの演算
「第２波形読出しアドレスｗｒａ２＝第２切出し開始アドレスｓｃｓａ＋第２アドレスカウンタａｃ２×ホルマントシフト量ｆｓｖ」
のうちの後半の「第２アドレスカウンタａｃ２×ホルマントシフト量ｆｓｖ」の読出し速度で切出し波形を読み出す。
【００６６】
このように、切出し波形の読出し速度はホルマントシフト量ｆｓｖが１より大か小かで基準となる読出し速度（＝第１／第２アドレスカウンタａｃ１／ａｃ２の歩進速度）よりも速くまたは遅くなる。この波形読出し速度が基準値の場合には切出し波形を第１／第２アドレスカウンタａｃ１／ａｃ２の歩進速度に従ってそのアドレス順に読み出すもので、読み出した波形においても切出し波形の元のホルマントがそのまま保存される。一方、この波形読出し速度が基準値よりも大きくなると、切出し波形の読出し速度が基準値よりも速く読み出すことになり、読み出した波形においては切出し波形の元のホルマントが高域側にシフトされる。また、この波形読出し速度が基準値よりも小さくなると、切出し波形の読出し速度が基準値よりも遅く読み出すことになり、読み出した波形においては切出し波形の元のホルマントが低域側にシフトされる。
なお、図２０の例の場合はホルマントシフト量ｆｓｖ＝１であるから、第１アドレスカウンタａｃ１、第２アドレスカウンタａｃ２の変化と等しく、結果的にホルマント特性は変更されない。
【００６７】
さらに、第１アドレスカウンタａｃ１、第２アドレスカウンタａｃ２にそれぞれ同期して、ホルマント処理のために波形データを切り取る窓としてのエンベロープ窓ｅｗ１、ｅｗ２を第１、第２の処理系についてそれぞれ作成する。第１の処理系は図２０ (ｆ) に示すエンベロープ窓ｅｗ１の波形を持ち、第２の処理系は図２０ (ｇ) に示すエンベロープ窓ｅｗ２の波形を持つ。エンベロープ窓ｅｗ１、ｅｗ２は０〜１の範囲の波高値であり、窓長ｗｌを半周期とし、前半の周期では０から逐次に増加して１になり、後半の周期では１から逐次に減少して０になる三角形をしている。エンベロープ窓ｅｗ１、ｅｗ２の半周期である窓長ｗｌは、後述の「読出し処理のサブルーチン」のステップＬ９において、
「窓長ｗｌ＝切出し波形ピッチｃｗｐ／ホルマントシフト量ｆｓｖ」
で求める。但し、窓長ｗｌは後述するように再生ピッチｐｐｗを超えないように最大でも再生ピッチｐｐｗの値に制限される。図２０はかかる制限がされた場合の例である。
【００６８】
第１の処理系では、後述の「読出し処理サブルーチン」のステップＬ１４において設定されている第１切出し開始アドレスｆｃｓａから１ないし２ピッチ分程度を取り出した切出し波形にエンベロープ窓ｅｗ１を乗算し、図２０ (ｈ) に示す波形を得る。同様に、第２の処理系では、後述の「読出し処理サブルーチン」のステップＬ１５において設定されている第２切出し開始アドレスｓｃｓａから１ないし２ピッチ分程度を取り出した切出し波形にエンベロープ窓ｅｗ２を乗算し、図２０（ｉ) に示す波形を得る。
【００６９】
このような処理の仕方によれば、これらの波形は元の切出し波形のホルマント特性をそのまま保持したものとなる。この図２０ (ｈ) 、 (ｉ) の波形は再生ピッチｐｐｗの周期長の２倍の長さであるが、両者の波形を足し合わせると再生ピッチｐｐｗの周期長となる。従って、キーボード３１からのキー指定ピッチによって元のサンプリングデータを高域側にピッチシフトしつつ、そのホルマント特性はそのまま維持できる。
【００７０】
また、波形再生のプレイ速度は、後述するように、波形列中から切出し波形単位で切出し波形を逐次に取り出していく速度を変えることによって調整している。これはプレイ位置ｐｐで示されるアドレス近傍の切出し波形を取り出すもので、このプレイ位置ｐｐの歩進速度を変えることでプレイ速度を増減させることができる。
【００７１】
図２１はホルマントシフト量ｆｓｖを１より大きくして再生波形のホルマントを元波形のホルマントより高域側にシフトする場合を示すものである。ここでは理解しやすくするためにキー指定ピッチが切出し波形ピッチｃｗｐとほぼ等しいものとして示している。
【００７２】
切出し波形の読出し速度は、第１の処理系が「第１アドレスカウンタａｃ１×ホルマントシフト量ｆｓｖ」、第２の処理系が「第２アドレスカウンタａｃ２×ホルマントシフト量ｆｓｖ」であるから、第１アドレスカウンタａｃ１、第２アドレスカウンタａｃ２の変化より速く、結果的にホルマント特性は高域側にシフトされ、変更が付与されることになる。
【００７３】
そして、読出し速度を速くすることによって切出し波形は短くなる。従って、エンベロープ窓ｅｗ１、ｅｗ３の窓長ｗｌも、
「窓長ｗｌ＝切出し波形ピッチｃｗｐ／ホルマントシフト量ｆｓｖ」
として、切出し波形が短くなったことに合わせて短くしている。
【００７４】
この図２０、図２１の例では説明を簡単にするためにホルマントシフト量ｆｓｖを一定値として説明したが、本実施例では、図１７の割込み処理ルーチンにおいてホルマントシフト量ｆｓｖはキーフォロー係数ＫＦが乗算されているため、再生する音高に対応してホルマントシフト量ｆｓｖが変化する。よってこの実施例では、再生する音高に対応して再生波形信号のホルマントが変化するように制御されている。
【００７５】
上記で概要を述べた読出し処理の動作を図２２〜図２５のフローチャートに基づいて説明する。
まず、全体的な動作を図２２、図２３のフローチャートに従って説明する。このフローチャートは図２０、図２１の動作に対応したものである。上述の各レジスタは、電源の投入の際に、各種レジスタのパラメータ値の初期化が行われる。即ち、
「ピッチ比ｐｒ＝ホルマントシフト量ｆｓｖ＝時間圧伸量ｔｃｖ＝１．０」
「出力レベルｏｌ＝切出しアドレスポインタｃａｐ＝バンク番号ｂｎ＝０」
「出力エンベロープレベルｏｅｌ＝０」
「波形読出し終了アドレスｗｅａ＝プレイ位置ｐｐ＝次切出し開始アドレスｎｃｓａ＝第１／第２切出し開始アドレスｆｃｓａ／ｓｃｓａ＝０」
「切出し波形ピッチｃｗｐ＝再生ピッチｐｐｗ＝０」
「再生ピッチカウンタｐｐｃ＝ゲート値ｇ＝第１アドレスカウンタａｃ１＝０」
「第２アドレスカウンタａｃ２＝再生ピッチｐｐｗ／２」
「第１窓カウンタｗｃ１＝０．０」
「第２窓カウンタｗｃ２＝１．０」
「識別フラグｆ＝１」
【００７６】
なお、以下の説明では、電源投入後少し時間が経過し、前記フローチャートの処理によって、各レジスタや各カウンタには、既に適当な値が記憶されているとして説明する。また、このフローチャートは、ＤＳＰ６においてサンプリング周期毎に実行される。
【００７７】
発音開始時においては、プレイ位置ｐｐは、前述のボイスの発音開始処理によって、波形メモリ７のパラメータ２記憶部における処理対象のバンク番号ｂｎで示される波形列の先頭の切出し波形の切出し開始アドレスｃｓａ１が設定されている。プレイ位置ｐｐはこれを基準点にして波形再生の時間進行を管理する。１サンプル周期毎に、プレイ位置ｐｐの値を時間圧伸量ｔｃｖだけインクリメントする（ステップＬ１）。すなわち、
プレイ位置ｐｐ＝プレイ位置ｐｐ＋時間圧伸量ｔｃｖ
とする。このような更新をする結果、時間圧伸量ｔｃｖが大きければ、プレイ位置ｐｐは速く進んで波形列全体を再生するに要する時間が短くなり、反対に時間圧伸量ｔｃｖが小さければプレイ位置ｐｐは遅く進むので波形列全体を再生するに要する時間は長くなる。
【００７８】
次いで、プレイ位置ｐｐと波形読出し終了アドレスｗｅａとを比較し（ステップＬ２）、プレイ位置ｐｐが波形読出し終了アドレスｗｅａ以上になっていれば、当該バンク番号の波形列についての処理が終了したことになるので、プレイ位置ｐｐを波形読出し終了アドレスｗｅａの値に固定し（ステップＬ３）、それ以上に波形処理が進行しないようにする。
【００７９】
次に、プレイ位置ｐｐと次切出し開始アドレスｎｃｓａを比較する（ステップＬ４）。この次切出し開始アドレスｎｃｓａは前述した図１９の発音開始処理からも分かるように、次に続く切出し波形の切出し開始アドレス（先頭アドレス）である。よってプレイ位置ｐｐが次切出し開始アドレスｎｃｓａより大きければ、それまで処理していた切出し波形が終了したので、この切出し波形から次の切出し波形に処理を移行するために切出し波形の更新を行う。
【００８０】
この切出し波形の更新は次のようにして行う（ステップＬ５）。
・現切出し開始アドレスｃｃｓａ＝＠２（バンク番号ｂｎ×＄８００＋１＋切出しアドレスポインタｃａｐ）
・次切出し開始アドレスｎｃｓａ＝＠２（バンク番号ｂｎ×＄８００＋２＋切出しアドレスポインタｃａｐ）
・切出し波形ピッチｃｗｐ＝次切出し開始アドレスｎｃｓａ−現切出し開始アドレスｃｃｓａ
・切出しアドレスポインタｃａｐを一つインクリメント
【００８１】
すなわち、波形メモリ７のパラメータ２記憶部の切出し開始アドレス領域における「切出しアドレスポインタｃａｐ＋１」で指されるアドレスから現切出し開始アドレスｃｃｓａを読み出し、「切出アドレスポインタｃａｐ＋２」で指されるアドレスから次切出し開始アドレスｎｃｓａを読み出し、この現切出し開始アドレスｃｃｓａから次切出し開始アドレスｎｃｓａを引いたもの（アドレスの差分）を切出し波形ピッチｃｗｐとする。その後、切出しアドレスポインタｃａｐを一つインクリメントする。
【００８２】
ステップＬ４において、プレイ位置ｐｐが次の切出し波形の切出し開始アドレスｎｃｓａより小であれば、まだ現在の切出し波形の途中であるから、切出し波形の更新は行わないので、上記のステップＬ５の処理は飛び越す。
【００８３】
以上のステップＬ１〜Ｌ５の処理により、大きな時間圧伸量ｔｃｖが設定された場合にはプレイ位置ｐp が速く進んで、結果として第１／第２切出し開始アドレスｆｃｓａ／ｓｃｓａの更新（後述のステップＬ１４、Ｌ１５）が早く行われ、よってプレイ時間が短くなる。反対に時間圧伸量ｔｃｖが小さい場合にはプレイ位置ｐｐが遅く進んで第１／第２切出し開始アドレスｆｃｓａ／ｓｃｓａの更新が遅く行われ、よってプレイ時間が長くなる。
【００８４】
なお、この時間圧伸量ｔｃｖをかなり小さな値に設定した場合には同じ切出し波形が複数回繰り返して再生されつつ、遅い速度で波形再生が進行するようになる。これは、プレイ位置ｐｐの進行がゆっくりしているためステップＬ４の判断でプレイ位置ｐｐがなかなか比較している値よりも大きくならず、よって切出し波形の更新がなかなか行われないで同じ切出し波形からの読出し処理が繰り返し行われるためである。反対に、時間圧伸量ｔｃｖをかなり大きな値にすると、切出し波形の更新において、次に続く切出し波形を飛び越してしまいその切出し波形の再生が行われないような場合も生じる。
【００８５】
ここで、変調レバー３２の操作があった場合には、時間圧伸量ｔｃｖは、前述のプレイ処理のステップＦ１１において変調レバー３２の操作量ＭＬＶに応じて時間圧伸変調量ＴＣＭＶが変更されて設定されるので、プレイ時間は変調レバー３２の操作量ＭＬＶにより次のように変化する。
【００８６】
▲１▼変調レバー３２の操作量ＭＬＶが＄００〜＄４０の場合
変調レバー３２の操作量ＭＬＶが＄００に近付くほど、プレイ位置ｐｐの移動の速さが遅くなる。操作量ＭＬＶが＄００では、プレイ位置ｐｐの移動はほぼ停止状態となり、同じ切出し波形が繰り返して再生され続けるようになる。また操作量ＭＬＶが中央位置の＄４０では、時間圧伸操作子２４で設定した設定時間圧伸量ＳＴＣＶの速さでプレイ位置ｐｐが移動して再生される。
▲２▼変調レバー３２の操作量が＄４１〜＄７Ｆの場合
操作量ＭＬＶが＄７Ｆに近付くほど、プレイ位置の移動速度が速くなる。操作量ＭＬＶが＄７Ｆでは、時間圧伸操作子２４で設定した設定時間圧伸量ＳＴＣＶの２倍の速さでプレイ位置ｐｐが移動して再生される。
【００８７】
上記のようにプレイ位置ｐｐを時間基準として用いて切出し波形の更新を行いつつ波形列を再生すると、波形再生に要する時間長（プレイ時間）は、再生する波形の音高によらず、ユーザが時間圧伸操作子２４と変調レバー３２の操作で設定する時間圧伸量ｔｃｖで決めることができるようになる。
【００８８】
ステップＬ６では、再生ピッチカウンタｐｐｃ、第１アドレスカウンタａｃ１、第２アドレスカウンタａｃ２をそれぞれ１つ歩進させる。次に、再生ピッチカウンタｐｐｃと再生ピッチｐｐｗとを比較する（ステップＬ７）。この再生ピッチｐｐｗが再生されるピッチに対応する。再生ピッチカウンタｐｐｃが再生ピッチｐｐｗに達していなければ、後述するステップＬ１６の「波形読出し処理」へ進む。なお、再生ピッチｐｐｗは後述のステップＬ９で算出される。
【００８９】
再生ピッチカウンタｐｐｃが再生ピッチｐｐｗの値に達している時にはステップＬ８〜Ｌ１５を行う。このステップＬ８〜Ｌ１５の処理は、次に続く再生ピッチの周期での処理を行うために各種パラメータの値を更新するものである。まず、再生ピッチカウンタｐｐｃを０とする（ステップＬ８）。次いで、新たな再生ピッチｐｐｗを、キーボード３１の押鍵で音高指定されたキーに基づくピッチ比ｐｒ（＝ノートピッチｎｐ／オリジナルピッチｏｐ）と切出し波形ピッチｃｗｐとを乗じることで求める（ステップＬ９）。次いで、切出し波形ピッチｃｗｐをホルマントシフト量ｆｓｖで除算してエンベロープ窓の窓長ｗｌを求める（ステップＬ９）。次いで、オフセットｏｓを０に設定する。
【００９０】
次に、窓長ｗｌを再生ピッチｐｐｗ以内に制限する（ステップＬ１０、Ｌ１１）。すなわち、窓長ｗｌと再生ピッチｐｐｗとを比較し（ステップＬ１０）、窓長ｗｌが再生ピッチｐｐｗよりも大きい場合には、窓長ｗｌを再生ピッチｐｐｗとする（ステップＬ１１）。また、切出し波形ピッチｃｗｐから（再生ピッチｐｐｗ×ホルマントシフト量ｆｓｖ）を引いてオフセットｏｓを求める。後述するように、このオフセットｏｓはエンベロープ窓の中央付近で切出し波形を切り出せるようにするためのパラメータである。一方、窓長ｗｌが再生ピッチｐｐｗ以下である場合には、このステップＬ１１の処理は行わない。以上により、窓長ｗｌが再生ピッチｐｐｗより大きくならないように制限をかける。
【００９１】
次いで、窓長ｗｌの逆数を求め、これを歩進率ｗｒとする (ステップＬ１２）。この歩進率ｗｒは、第１窓カウンタｗｃ１、第２窓カウンタｗｃ２を歩進させるために使用する。また、識別フラグｆの極性を反転させる。このステップＬ１１の処理は、ステップＬ７おいて再生ピッチカウンタｐｐｃが再生ピッチｐｐｗ以上になったときに行われるので、識別フラグＦの反転も、再生ピッチカウンタｐｐｃが再生ピッチｐｐｗ以上になったときに行われることになり、例えば図２０、図２１の（ｃ）に示されるように、再生ピッチカウンタｐｐｃの周期で１と−１に反転する波形が得られる。
【００９２】
次に、識別フラグｆの値を０と比較し、識別フラグｆが１であるか、−１であるかを判断する（ステップＬ１３）。識別フラグｆの値が１であることは識別フラグｆが−１から１に立ち上がったときを意味しており、この場合には、第１の処理系の第１アドレスカウンタａｃ１と第１窓カウンタｗｃ１をそれぞれ「０」とし、第１切出し開始アドレスｆｃｓａを現切出し開始アドレスｃｃｓａにオフセットｏｓを足したものとする（ステップＬ１４）。
【００９３】
また、識別フラグｆの値が−１であることは識別フラグｆが１から−１に立ち下がったことを意味しており、この場合には、第２の処理系の第２アドレスカウンタａｃ２と第２窓カウンタｗｃ２をそれぞれ「０」とし、第２切出し開始アドレスｓｃｓａを現切出し開始アドレスｃｃｓａにオフセットｏｓを足したものとする（ステップＬ１５）。
【００９４】
この場合、このステップＬ１４とＬ１５は、ステップＬ１７で再生ピッチカウンタｐｐｃが再生ピッチｐｐｗを超えたと判定される毎に交互に実行されるものであるから、第１アドレスカウンタａｃ１と第２アドレスカウンタａｃ２は、図２０の（ｄ）、（ｅ）のように再生ピッチｐｐｗの２倍長の周期で、かつ、お互いに再生ピッチｐｐｗだけ位相の異なる変化をするものとなる。また、第１切出開始アドレスｆｃｓａは第１アドレスカウンタａｃ１の立下り部分で、第２切出し開始アドレスｓｃｓａは第２アドレスカウンタａｃ２の立下り部分で、互いが再生ピッチｐｐｗだけ時間差を持ったタイミングで更新されることになる。
【００９５】
このステップＬ１４またはＬ１５の処理に続いて、あるいはステップＬ７において再生ピッチカウンタｐｐｃが再生ピッチｐｐｗに達していないと判断されたときには、波形読出し処理を行う（ステップＬ１６）
【００９６】
図２４、図２５はこの波形読出し処理を示すフローチャートである。以下にこの波形読出し処理について詳細に説明する。
【００９７】
波形読出し処理
図２４、図２５は波形読出し処理のフローチャートであり、同図中のステップＮ１〜Ｎ９は第１の処理系のための処理、ステップＮ１０〜Ｎ１８は第２の処理系のための処理であり、この二つの処理は時系列に行われるが、処理の内容は実質的に同様な内容となっている。
【００９８】
図２４に示すように、波形読出し処理では、まず第１窓カウンタｗｃ１の値を歩進率ｗｒだけ歩進させる（ステップＮ１）。そして、歩進させた第１窓カウンタｗｃ１が１より小さいか、１以上であって２より小さいか、あるいは２以上であるかを判定する（ステップＮ２）。１より小さい場合には、第１窓カウンタｗｃ１の値を第１エンベロープ窓ｅｗ１とし（ステップＮ３）、１以上であって２より小さい場合には、２から第１窓カウンタｗｃ１を減算した値を第１エンベロープ窓ｅｗ１として（ステップＮ４) 、２以上のとき、第１エンベロープ窓ｅｗ１の値を０とする（ステップＮ５）。
【００９９】
このステップＮ１〜Ｎ５は、例えば図２０（ｆ) に示されるように、歩進率ｗｒずつ値が増加する鋸歯状波を作成し、これの値を波高値「１」で折り返すことによって、第１エンベロープ窓ｅｗ１を作成している。但し、窓カウンタｗｃ１が２を越えた場合には、ステップＮ５によって第１エンベロープ窓ｅｗ１の波高値を「０」としている。即ち、ホルマントシフト量ｆｓｖと切出し波形ピッチｃｗｐとに基づいて定めた窓長ｗｌの逆数である歩進率ｗｒずつ１まで増加し、その後、０まで減少する三角波を第１のエンベロープ窓ｅｗ１の波形として作成している。
【０１００】
また、ステップＮ３〜Ｎ５に続いて、第１アドレスカウンタａｃ１（読出しアドレスの歩進値）にホルマントシフト量ｆｓｖを乗算した値を、第１の波形の第１切出し開始アドレスｆｃｓａと加算して、第１の処理系における波形データ（サンプリング値）の読出しアドレス（以下、第１波形読出しアドレスと称する）ｗｒａ１とする（ステップＮ６）。
【０１０１】
また、この第１波形読出しアドレスｗｒａ１を波形読出し終了アドレスｗｅａと比較し（ステップＮ７）、波形読出し終了アドレスｗｅａよりも大きければ、ゲート値ｇ＝０とする（ステップＮ８）。このゲート値ｇ＝０の設定により、後述するように、出力レベルはある傾斜をもって減衰し消音する。波形読出し終了アドレスｗｅａ以下であれば、この第１波形読出しアドレスｗｒａ１を用いて波形メモリ７の波形データ記憶部から波形データｗｄを読み出す（ステップＮ９）。このように第１波形読出しアドレスｗｒａ１はその歩進幅がホルマントシフト量ｆｓｖによって変更されるので、結果的には切出し波形の読出し速度が、ホルマントシフト量ｆｓｖによって変更されている。
これに続くステップＮ１０〜Ｎ１８では上述と同じ処理を、第２の処理系についても行う。
【０１０２】
次いで、読み出した波形データの出力ｏに乗じる出力エンベロープレベルｏｅｌの算出と、波形出力ｗｏの算出を行う（ステップｌ１９）。すなわち、出力エンベロープレベルｏｅｌを、
「出力エンベロープレベルｏｅｌ＝出力エンベロープレベルｏｅｌ＋（ゲート値ｇ×ベロシティレベルｖｌ−出力エンベロープレベルｏｅｌ）×Ｋ」
で求める。この出力エンベロープレベルｏｅ１は、波形列の再生開始時に漸次に立ち上がり、波形再生途中では１となり、波形再生が波形読出し終了アドレスｗｅａに達すると漸次に立ち下がるエンベロープ波形となる。なお、Ｋは立上り／立下りの傾斜を決定するための係数である。
また、波形出力ｗｏは、
「波形出力ｗｏ＝波形データｗｄ１×第１エンベロープ窓ｅｗ１＋波形データｗｄ２×第２エンベロープ窓ｅｗ２」
で求める。これは、第１の処理系で第１エンベロープ窓ｅｗ１を用いて切り取った波形出力と、第２の処理系で第２エンベロープ窓ｅｗ２を用いて求めた波形出力とを足し合わせて再生波形とするものである。
【０１０３】
最後に、最終のプレイ波形出力ｐｗｏを、
プレイ波形出力ｐｗｏ＝波形出力ｗｏ×出力エンベロープレベルｏｅｌ
により求める。従って、再生された波形列の出力レベルは、波形列の再生開始時に係数Ｋに従う傾きで立ち上がり、波形再生が波形読出し終了アドレスｗｅａに達すると係数Ｋに従う傾きで立ち下がり消音されるものになる。
【０１０４】
【発明の効果】
以上に説明したように、本発明によれば、記憶手段に記憶された波形データで表される波形を時間軸圧縮伸長および音高変化して再生するものにおいて、再生音高に対応してホマルントを変化させることができ、自然な再生波形を生成することができる。
【図面の簡単な説明】
【図１】本発明にかかる一実施例としての波形発生装置の全体的なブロック構成を示す図である。
【図２】実施例装置における波形メモリのパラメータ１（ステータス領域）記憶部のデータ構成例を示す図である。
【図３】実施例装置における波形メモリのパラメータ２（切出し開始アドレス領域）記憶部のデータ構成例を示す図である。
【図４】実施例装置における波形メモリの波形データ記憶部のデータ構成例を示す図である。
【図５】実施例装置におけるＣＰＵ側のレジスタに設定される各種のパラメータを示す図である。
【図６】実施例装置におけるＣＰＵ側のＭＩＤＩ情報レジスタに設定される各種のパラメータを示す図である。
【図７】実施例装置におけるＤＳＰ側のキー情報レジスタに設定される各種のパラメータを示す図である。
【図８】実施例装置におけるＤＳＰ側のレジスタに設定される各種のパラメータを示す図である。
【図９】実施例装置におけるメインルーチンを示すフローチャートである。
【図１０】実施例装置における録音モード処理ルーチンを示すフローチャートである。
【図１１】実施例装置における編集モード処理ルーチンを示すフローチャートである。
【図１２】実施例装置におけるプレイモード処理ルーチンを示すフローチャートである。
【図１３】実施例装置におけるプレイ処理ルーチン（１／２）の詳細を示すフローチャートである。
【図１４】実施例装置におけるプレイ処理ルーチン（２／２）の詳細を示すフローチャートである。
【図１５】実施例装置のプレイ処理ルーチンにおけるボイスモジュールへの割当て処理の詳細を示すフローチャートである。
【図１６】実施例装置のノート番号ＮＮとキーフォロー係数ＫＦとの変換を行う関係を示す図である。
【図１７】実施例装置におけるＣＰＵ割込み処理ルーチンを示すフローチャートである。
【図１８】実施例装置におけるＤＳＰでのメインルーチンを示すフローチャートである。
【図１９】実施例装置におけるＤＳＰでのメインルーチン中の「ボイスの発音開始処理」を示すフローチャートである。
【図２０】「読出し処理」の動作概要（ホルマント特性変更なし、高域にピッチシフト）を説明するためのタイムチャートである。
【図２１】「読出し処理」の動作概要（ホルマント特性を低域にシフト）を説明するためのタイムチャートである。
【図２２】実施例装置におけるＤＳＰでのメインルーチン中の読出し処理ルーチン（１／２）を示すフローチャートである。
【図２３】実施例装置におけるＤＳＰでのメインルーチン中の読出し処理ルーチン（２／２）を示すフローチャートである。
【図２４】実施例装置のＤＳＰメインルーチンにおける読出し処理ルーチン中の波形読出し処理ルーチン（１／２）を示すフローチャートである。
【図２５】実施例装置のＤＳＰメインルーチンにおける読出し処理ルーチン中の波形読出し処理ルーチン（２／２）を示すフローチャートである。
【符号の説明】
１  ＣＰＵ
２  操作子群
２１  モード選択スイッチ
２２  バンク選択スイッチ
２３  ホルマントシフト操作子
２４  時間圧伸操作子
３  キーボード装置
３１  キーボード
３２  変調レバー
４  ハードディスク装置
５  記憶部
６  ＤＳＰ（ディジタル信号プロセッサ）
【図１】
0004015267.tif 000002
【図２】
0004015267.tif 000003
【図３】
0004015267.tif 000004
【図４】
0004015267.tif 000005
【図５】
0004015267.tif 000006
【図６】
0004015267.tif 000007
【図７】
0004015267.tif 000008
【図８】
0004015267.tif 000009
【図９】
0004015267.tif 000010
【図１０】
0004015267.tif 000011
【図１１】
0004015267.tif 000012
【図１２】
0004015267.tif 000013
【図１３】
0004015267.tif 000014
【図１４】
0004015267.tif 000015
【図１５】
0004015267.tif 000016
【図１６】
0004015267.tif 000017
【図１７】
0004015267.tif 000018
【図１８】
0004015267.tif 000019
【図１９】
0004015267.tif 000020
【図２０】
0004015267.tif 000021
【図２１】
0004015267.tif 000022
【図２２】
0004015267.tif 000023
【図２３】
0004015267.tif 000024
【図２４】
0004015267.tif 000025
【図２５】
0004015267.tif 000026