(57)【特許請求の範囲】
【請求項１】
外部から供給される入力波形の傾きが増加から減少、若しくは減少から増加に変化する波形変化点を検出すると共に、その波形変化点の変化形態を判別する波形変化検出手段と、
発生すべき波形形状を指定する波形発生条件を、前記変化形態の種類別に設定する条件設定手段と、
波形変化点の変化形態に対応付けられた波形発生条件に従ってパルス波形を発生するパルス波発生手段と、
このパルス波発生手段が発生するパルス波形に対して前記波形発生条件に応じたフィルタリングを施して前記出力波形を形成するフィルタリング手段と
を具備することを特徴とする波形発生装置。
【請求項２】
前記パルス波発生手段は、波形発生の指示を受けてからの時間経過に応じて、前記波形発生条件内に設定されるパルス波高初期値からパルス波高目標値に内挿補間される値と入力波形レベルとを乗算して発生すべきパルス波形の波高値を連続的に可変制御する波高制御手段と、
波形発生の指示を受けてからの時間経過に応じて、前記波形発生条件内に設定されるパルス幅初期値からパルス幅目標値に内挿補間される値に応じて発生すべきパルス波形のパルス幅を連続的に可変制御するパルス幅制御手段と
を具備することを特徴とする請求項１記載の波形発生装置。
【請求項３】
前記フィルタリング手段は、波形発生の指示を受けてからの時間経過に応じて、前記波形発生条件内に設定される初期カットオフ周波数から目標カットオフ周波数に内挿補間されるカットオフ周波数値を、前記波形発生条件内に設定されるフィルタ種類により指定されるフィルタに与えて前記パルス波発生手段が発生するパルス波形にフィルタリングを施すことを特徴とする請求項１記載の波形発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器の音源や、効果音を付与するエフェクタ等に用いて好適な波形発生装置に関する。
【０００２】
【従来の技術】
近年、外部から供給される入力信号に応じて楽音パラメータを発生し、発生した楽音パラメータに基づき波形発生する外部制御方式の波形発生装置が案出されている。この種の装置としては、例えば、「ギターシンセサイザ」と呼ばれるものが開発されており、この装置では、通常の電気楽器と同様に、撥弦により生じる弦振動を、ピックアップコイル等でアナログ入力信号に変換した後、このアナログ入力信号のピッチ（音高周波数）および音量レベルを検出し、検出したピッチおよび音量に応じて所定の音色の楽音波形を発生するように構成されている。
【０００３】
【発明が解決しようとする課題】
さて、上述した従来の波形発生装置では、演奏操作に応じて発生するアナログ波形に基づき楽音波形を生成するので、例えば、自然楽器であるギターにピックアップコイル等を設けて、このコイル出力に基づき楽音波形を発生すれば、ギター演奏しながらもギターとは異なる音色の楽音を生成でき、従来には無い新規な楽器形態を実現することが可能となっている。
【０００４】
しかしながら、こうした外部制御方式による波形発生装置では、次のような問題が生じている。
(イ)演奏操作に応じて発生するアナログ入力信号のピッチ（音高周波数）を検出するには、その信号波形を複数周期にわたってサンプリングしなければならないため、発音遅れが起きるという弊害がある。
(ロ)また、アナログ入力信号の波形形状が急激に変化するような演奏操作、例えば、ギターの場合にはチョーキングなどの演奏操作が行われると、アナログ入力信号の正確なピッチを検出することができず、演奏者が意図しない音高で発音してしまう虞もある。このため、演奏操作に制約が生じ、音楽表現力に欠けてしまうという問題がある。
(ハ)アナログ入力信号から検出したピッチと音量とに応じて楽音合成されるから、例えばギターの場合、ピッキングの仕方（撥弦強さ、角度および位置）やピックの材質などを変えて撥弦態様を変化させても、音色変化を与えることができず、これ故、発生する楽音が単調で演奏効果を付与できないという問題もある。
【０００５】
結局、上述した外部制御方式による波形発生装置では、従来には無い新規な楽器形態を実現するものの、反面、発音遅れが生じる上、演奏操作に応じて音色を微妙に変化させる等の音楽表現力や演奏効果に欠けるという欠点がある。
そこで、本発明は、上述した事情に鑑みてなされたもので、従来には無い新規な楽器形態を実現しながらも、発音遅れが起こらず豊かな音楽表現力や演奏効果を得ることができる波形発生装置を提供することを目的としている。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、外部から供給される入力波形の傾きが増加から減少、若しくは減少から増加に変化する波形変化点を検出すると共に、その波形変化点の変化形態を判別する波形変化検出手段と、発生すべき波形形状を指定する波形発生条件を、前記変化形態の種類別に設定する条件設定手段と、波形変化点の変化形態に対応付けられた波形発生条件に従ってパルス波形を発生するパルス波発生手段と、このパルス波発生手段が発生するパルス波形に対して前記波形発生条件に応じたフィルタリングを施して前記出力波形を形成するフィルタリング手段とを具備することを特徴としている。
【００１０】
上記請求項１に従属する請求項２に記載の発明では、前記パルス波発生手段は、波形発生の指示を受けてからの時間経過に応じて、前記波形発生条件内に設定されるパルス波高初期値からパルス波高目標値に内挿補間される値と入力波形レベルとを乗算して発生すべきパルス波形の波高値を連続的に可変制御する波高制御手段と、波形発生の指示を受けてからの時間経過に応じて、前記波形発生条件内に設定されるパルス幅初期値からパルス幅目標値に内挿補間される値に応じて発生すべきパルス波形のパルス幅を連続的に可変制御するパルス幅制御手段とを具備することを特徴としている。
【００１１】
また、上記請求項１に従属する請求項３に記載の発明によれば、前記フィルタリング手段は、波形発生の指示を受けてからの時間経過に応じて、前記波形発生条件内に設定される初期カットオフ周波数から目標カットオフ周波数に内挿補間されるカットオフ周波数値を、前記波形発生条件内に設定されるフィルタ種類により指定されるフィルタに与えて前記パルス波発生手段が発生するパルス波形にフィルタリングを施すことを特徴とする。
【００１４】
本発明では、波形変化検出手段によって外部から供給される入力波形の傾きが増加から減少、若しくは減少から増加に変化する波形変化点が検出されると共に、その波形変化点の変化形態が判別され、条件設定手段が発生すべき波形形状を指定する波形発生条件を、前記変化形態の種類別に設定すると、パルス発生手段は波形変化点の変化形態に対応付けられた波形発生条件に従ってパルス波形を発生し、このパルス波形に対して前記波形発生条件に応じたフィルタリングを施して前記出力波形を形成する。つまり、入力波形の傾きが変化する波形変化点毎に、その変化形態に合致した波形発生条件に基づいた波形形状の出力波形を逐次発生するので、入力波形の微妙な変化が反映された出力波形になる訳である。
【００１５】
したがって、本発明による波形発生装置では、従来のように、ピッチ抽出する必要がない為、発音遅延を起こしたり、発音ピッチを誤検出するといった不具合を解消できる上、入力波形の微妙な変化を出力波形に付与し得るので、豊かな音楽表現力や演奏効果を実現できる。しかも、入力楽器を演奏することで生成される入力波形により出力波形を制御する形になるため、従来には無い新規な楽器形態をも実現可能にしている。
【００１６】
【発明の実施の形態】
本発明による波形発生装置は、電子楽器、楽音制御装置あるいはエフェクタ等に適用され得る。以下、図面を参照して本発明の実施の形態である楽音制御装置を実施例として説明する。
【００１７】
Ａ．第１実施例の構成
（１）全体構成
図１は、本発明の実施の形態による楽音制御装置の全体構成を示すブロック図である。この図において、１は設定操作に応じた各種パラメータを発生して音源部６（後述する）側に供給する制御部である。２はＣＰＵであり、制御部１の各部を制御する一方、後述するディジタル・シグナル・プロセッサ９（以下、ＤＳＰと記す）に対して発生すべき波形形状を指定する各種パラメータを送出する。３はＣＰＵ２のワークエリアとして使用されるＲＡＭであり、各種レジスタ／フラグデータが一時記憶される。４はＲＯＭであり、ＣＰＵ２にロードされる制御プログラムや制御データ等が記憶される。５はＬＣＤパネルや各種操作スイッチなどから構成される操作部であり、設定操作に応じた操作信号を発生すると共に、これに応じてＣＰＵ２側から供給される表示制御信号に基づき設定状態をＬＣＤパネルに表示する。
【００１８】
音源部６は、入力端Ｔ１に供給される入力信号と、上記制御部１から送出されてくるパラメータとに基づいて生成する楽音波形を出力端Ｔ２から出力する。入力端Ｔ１には、例えば、マイクロフォンなどで電気信号に変換された入力波形が供給される。７はローパスフィルタ（ＬＰＦ）であり、この入力波形のノイズ成分をカットすべくローパスフィルタリングを施して平滑化された波形信号を出力する。８はＬＰＦ７の出力をＡ／Ｄ変換して波形データを出力するＡ／Ｄ変換器である。
【００１９】
ＤＳＰ９は、ＣＰＵ２から供給される各種パラメータに基づいて自身に内蔵されるマイクロプログラムを実行し、上記Ａ／Ｄ変換器８から出力される波形データに各種処理を施して楽音波形（波形データ）を発生する。なお、このＤＳＰ９においてなされる各種処理の概要については後述する。１０はＤＳＰ９の演算結果などが一時記憶されるワークＲＡＭであり、そのレジスタ構成については追って説明する。１１はＤＳＰ９から出力される楽音波形（波形データ）をアナログ信号に変換するＤ／Ａ変換器である。１２はこのアナログ信号にノイズ除去等のフィルタリングを施した後、増幅して出力端Ｔ２に供給する出力回路である。
【００２０】
（２）ＤＳＰ９の機能構成
ＤＳＰ９では、自身に内蔵されるマイクロプログラムに基づき、「波形取り込み処理」、「ピーク検出処理」、「アタック検出処理」、「周期検出および周期波形記憶処理」および「波形発生処理」を実行する。これら処理の詳細については後述の動作説明にて言及するが、ここでは、ＤＳＰ９の機能構成としてこれら処理の概要について述べる。
【００２１】
▲１▼波形取り込み処理
ＤＳＰ９は、Ａ／Ｄ変換器８から出力される波形データを順次取り込み、ワークＲＡＭ１０に格納する。なお、ワークＲＡＭ１０には、後述するレジスタエリアの他に波形記憶エリアが設けられており、この記憶エリアは所謂、リングバッファとして動作して常に現サンプリング時点から複数サンプリング分遡った波形データが蓄積されるようになっている。そのリングバッファ長は、入力波形成分のうち、最も長い周期波形が複数周期にわたって記憶され得るものに設定されている。
【００２２】
▲２▼ピーク検出処理
ＤＳＰ９では、上記リングバッファに取り込んだ波形データを順番に読み出し、波形の傾きが変化した時、つまり、波高値が増加から減少あるいは減少から増加に転じた時に、その１サンプル前の波形データを波形ピーク（あるいはボトム）であると見做して検出信号を発生する。こうしたピーク検出では、波形ピーク（ボトム）と見做された波形データを記憶しておき、次サンプルの波形データと比較してその傾きの変化を見る。同一の波形レベルが連続した時には、前サンプルの傾きを次サンプルの傾きとして記憶する。すなわち、次サンプルの傾きが前サンプルのものと同じなら、ピークと見做さないことになる。
したがって、例えば、図２に図示する入力波形の場合、実線矢印で示される波形データＷＤ１，ＷＤ３，ＷＤ４，ＷＤ６，…が波形ピークと見做される。なお、図中の破線矢印で示される波形データＷＤ２，ＷＤ５，…は波形ボトムである。
【００２３】
▲３▼アタック検出処理
ここで言うアタック検出とは、アタック（発音タイミング）を検出する処理を指す。ＤＳＰ９では、上記ピーク検出処理にて新たなピークが検出される毎にアタックであるか否かを判定する。
その判定条件は、次の２条件のいずれかによる。まず、第１の条件としては、図３に示すように、入力波形が一定時間ゼロレベル（あるいはノイズレベル）を保つ無音状態を経てからレベル増加し始めた時点を、演奏操作が開始されたアタックと見做し、最初の波形ピークを検出するまでの期間を、楽音の立上がりを形成するアタック領域とする。
【００２４】
次に、第２の条件としては、上記ピーク検出処理により比較区間（図４参照）中で最も高い波高値の比較ピークと、現時点で検出された現波形ピークとを比較し、現波形ピークが上記比較ピークの所定倍数以上に達した時点で、演奏者が入力楽器、すなわち、入力波形を発音する楽器を弾き直したと判断し、その時点から発音タイミングに入り、アタック領域であると見做す。
したがって、例えば、図５に示すように、入力波形レベルが徐々に大きくなる場合などでは、アタックと見做さずに誤発音を防止する。
【００２５】
アタック検出処理では、まず、第１の条件に基づき、一定期間中無音が続いた後にレベル増加したかどうかを判断してアタック検出を行い、この条件に合致しない時には続いて第２の条件により入力波形が急激にレベル上昇したか否かを判断してアタック検出する。
なお、上述した第２の条件においては、比較区間の長さや、発音タイミングを決める比較ピークと現波形ピークとの比は入力楽器の特性に応じて最適なものに設定すれば、誤発音を防ぐことができる。
【００２６】
▲４▼周期検出および周期波形記憶処理
ＤＳＰ９では、上述したピーク検出処理により波形ピーク（ボトム）を検出する毎に、次の手順に従って本処理を行う。
(a)まず、過去複数の波形ピーク列の内、最大波高値の波形ピーク（以下、最大波形ピークと称す）をサーチする。
(b)この最大波形ピークから現波形ピークまでの中で、同符号であって、かつ、最大波形ピークに対して所定比率範囲の波高値となる波形ピークが存在するかどうか調べる。
(c)この条件に合致するものが見当らない場合には、最大波形ピークが発生する以前に遡って上記条件に基づきサーチする。
(d)そして、最大波形ピークと上記条件に合致する波形ピークとの間を、入力波形の１周期と見做して、これらを記憶しておく。
【００２７】
こうして得られた波形周期は、後述する波形発生処理においてリリース波形を発生する際に用いられる。すなわち、入力波形レベルが減少すると、波形ピーク（ボトム）を検出するのが困難になるため、本実施例では入力波形レベルが所定レベル以下になった時点で、その直前にサンプリングした波形データを、上述のようにして求めた波形周期で繰り返し再生することでリリース波形を発生する。なお、このリリース波形を発生する処理については追って詳述する。
【００２８】
▲５▼波形発生処理
ＤＳＰ９では、ＣＰＵ２から供給される各種パラメータに基づき、入力波形の波形ピーク／波形ボトムに対応するパルス波形を発生する一方、発生したパルス波形にフィルタリングを施して所望の楽音波形を形成する。
ＣＰＵ２から供給されるパラメータは、「パルス波高初期値」、「パルス波高目標値」、「パルス幅初期値」、「パルス幅目標値」、「フィルタタイプ（ＬＰＦ，ＨＰＦ）」、「初期カットオフ周波数」、「目標カットオフ周波数」、「リリーススレッシュ値」および「リリースレート」からなる。これらパラメータは、波形ピーク（ボトム）の種類別、つまり、正ピークポイント用、負ピークポイント用、正ボトムポイント用および負ボトムポイント用に分類される。
【００２９】
生成されるパルス波形の波高値は、パルス波高初期値からパルス波高目標値へ経時変化に応じて補間した値に入力波形の波形ピーク（あるいはボトム）レベルを乗算したものとなる。したがって、発音タイミング時点では、入力波形の波形ピーク（あるいはボトム）レベルにパルス波高初期値を乗算することになる。
例えば、図６に示す一例では、パルス波高初期値を「０．７５」とした時に波形ピークポイントで発生するパルス波形を図示している。なお、この例では、パルス幅を一定としている。
【００３０】
ここで、図７を参照してパルス波形の波高値を連続的に経時変化させる一例について説明する。なお、この図は正ピークポイントにおけるパルス波形の波高変化を示すものである。
まず、図中（Ａ）は、前述したアタック検出により発音タイミングとされた正ピークポイントにおいて波形ピークレベルにパルス波高初期値を乗算して得られるパルス波形である。そして、アタック領域では、パルス波高初期値からパルス波高目標値へ経時変化に応じて内挿補間することで図中（Ｂ），（Ｃ）の順にパルス波形の波高値が連続的に変化する。
【００３１】
生成されるパルス波形の幅は、波形発生当初はパルス幅初期値に従って定められた後、上記波高値と同様にパルス幅目標値へ補間する。例えば、図８は、正ピークポイントにおけるパルス幅の変化を示すものであり、図中（Ａ）は、発音タイミングとされた正ピークポイントにおいてパルス幅初期値により設定されるパルス波形である。そして、アタック領域では、パルス幅初期値からパルス幅目標値へ経時変化に応じて内挿補間することで図中（Ｂ），（Ｃ）の順にパルス幅が連続的に変化する。
【００３２】
以上のようにして、パルス波形の波高値およびパルス幅が定まると、これを所望の波形形状にすべくフィルタリングを施す。フィルタリングに際しては、上述したパラメータの内、フィルタタイプ（ＬＰＦ，ＨＰＦ）、初期カットオフ周波数および目標カットオフ周波数が用いられる。
ここで、図９を参照してフィルタリングの一例について説明する。図９は、正ピークポイントで生成されたパルス波形に対してカットオフ周波数を徐々に低減させるローパスフィルタリングを施したものである。これは、例えば、発音タイミング時点で初期カットオフ周波数によるローパスフィルタリングを施し（同図（Ａ））、続いて、アタック領域では、経時変化する補間係数を目標カットオフ周波数に乗算してローパスフィルタリングのカットオフ周波数を徐々に低減させる。これにより、図中（Ｂ），（Ｃ）の順にパルス波形を鈍らせて行く。
【００３３】
結局、波形発生処理では、入力波形の傾きが変化する波形ピーク（あるいはボトム）ポイントにおいて、与えられたパラメータに応じたパルス波形を発生すると共に、これに指定された条件のフィルタリングを施すことで、入力波形の変化に沿った新たな楽音波形を形成するようにしている。
図１０は、このような一連の処理により得られる楽音波形を図示したものである。この図に示す一例では、正負ピークポイントの波高値を入力波形レベルに一致させ、正負ボトムポイントの波高値を入力波形レベルの半値とするパルス波形を発生し、カットオフ周波数は初期値から徐々に低減させたケースである。
この図から明らかなように、波形発生処理により得られる楽音波形には、従来のピッチ抽出による発音遅れが無く、入力波形の微妙な変化が反映されていることが判る。
【００３４】
ところで、前述したように、入力波形レベルが減少すると、波形ピーク／ボトムを検出するのが困難になる。そこで、本実施例では、図１１に示すように、入力波形レベルがリリーススレッシュ値以下になった時点で、その直前にサンプリングした波形データを、周期検出にて求めた波形周期で繰り返し再生しながら、与えられたリリースレートで減衰させるリリース波形を生成する。
このリリーススレッシュ値およびリリースレートは、ＣＰＵ２から供給される可変パラメータである。なお、こうしたリリース中にアタックが発生した場合には、リリースを中止して新たな発音を開始させる。
【００３５】
（３）ワークＲＡＭ１０の構成
次に、上述したＤＳＰ９の各処理結果や入力波形をサンプリングした波形データ等が格納されるワークＲＡＭ１０の構成について図１２〜図１４を参照して説明する。
図１２において、ＷＤは波形記憶エリアである。この記憶エリアＷＤは、リングバッファとして機能し、そのアドレスＡＤ１＋０〜ＡＤ１＋Ｎには常に過去の複数サンプリング点の波形データが循環的に格納される。ＰＰはピークポイント記憶エリアであり、上記アドレスＡＤ１＋０〜ＡＤ１＋Ｎに格納される波形データの内、波形ピーク／ボトムポイントに相当する波形データのアドレス値がアドレスＡＤ２＋０〜ＡＤ２＋Ｍに記憶される。したがって、例えば、アドレスＡＤ２＋２の波形データが波形ピーク（あるいは波形ボトム）である場合、そのアドレスＡＤ２＋２がピークポイント記憶エリアＰＰに記憶される訳である。
【００３６】
ＰＳはピーク状態記憶エリアであり、上記アドレスＡＤ２＋０〜ＡＤ２＋Ｍに格納される波形ピーク／ボトムポイントの種類、すなわち、ピークポイントの正負およびボトムポイントの正負を表わすフラグＰＫＦがセットされる。ここで、ＰＫＦが「１」の時に正ピークポイント、「２」の時に正ボトムポイント、「３」の時に負ピークポイント、「４」の時に負ボトムポイントを表わす。アドレスＡＤ３＋０〜ＡＤ３＋Ｍに記憶されるフラグＰＫＦは、上記アドレスＡＤ２＋０〜ＡＤ２＋Ｍに格納される波形ピーク／ボトムポイントに対応してその種類を表わしている。
次に、アドレスＡＤ４に格納されるＡＰＰは最大波形レベルのピーク（ボトム）ポイントが記憶され、アドレスＡＤ４のＭＰＰは上記ＡＰＰの対となるピーク（ボトム）ポイントが記憶される。したがって、このアドレスＡＤ４，ＡＤ４＋１に格納されるＡＰＰとＭＰＰとは、前述した周期検出結果が記憶されることになり、このＡＰＰとＭＰＰとの時間幅が波形周期に相当する。
【００３７】
次に、図１３において、ＰＲＭ１は正ピークポイント用パラメータ記憶エリアであり、ＣＰＵ２から供給されるパルス波高初期値Ａ、パルス波高目標値Ｂ、パルス幅初期値Ｃ、パルス幅目標値Ｄ、フィルタタイプＥ、初期カットオフ周波数Ｆ、目標カットオフ周波数Ｇ、リリーススレッシュ値ＨおよびリリースレートＩが記憶される。また、ＰＲＭ２〜ＰＲＭ４は、それぞれ正ボトムポイント用、負ピークポイント用および負ボトムポイント用のパラメータＡ〜Ｉが記憶されるパラメータ記憶エリアである。ＵＳＰは使用パラメータ格納エリアであり、処理対象とされる波形ピーク（あるいは波形ボトム）の種類に応じたパラメータＰＲＭ１〜ＰＲＭ４のいずれかがストアされる。つまり、上述したフラグＰＫＦに対応する種類のパラメータＡ〜ＩがアドレスＡＤ５〜ＡＤ５＋８に格納ストアされる訳である。
【００３８】
次に、図１４は、ＤＳＰ９の各種演算処理に使用されるレジスタ群の構成を示す図である。この図において、ＰＴ１は波形データ読み出しポインタが記憶されるレジスタ、ＰＴ２はピーク（あるいはボトム）ポイント読み出しポインタが記憶されるレジスタ、ＰＴ３はピーク（あるいはボトム）種類読み出しポインタが記憶されるレジスタである。
ＣはＤＳＰ９における処理ループ巡回数、つまり、一連の処理プログラムが繰り返される回数がストアされるレジスタである。ＴＣは上記レジスタＣの値を線形変換する比例定数が格納されるレジスタである。ＰＷは現在サンプリングされた波形データが格納されるレジスタ、ＦＷは１サンプル前に取り込まれた波形データが格納されるレジスタである。
【００３９】
ＡＰＷは、最大波形レベルのピーク（ボトム）ポイントＡＰＰの波形データが記憶されるレジスタである。ＭＰＷは、上記ＡＰＰの対となるピーク（ボトム）ポイントＭＰＰの波形データが記憶されるレジスタである。ｆｃは前述した使用パラメータＦ，Ｇに応じて定められた出力カットオフ周波数を指定するフィルタ係数が格納されるレジスタである。Ｌは前述した使用パラメータＡ，Ｂに応じて定められた出力波高値が格納されるレジスタである。Ｐは使用パラメータＣ，Ｄに応じて定められた出力パルス幅が記憶されるレジスタである。
ＲＡＤは、リリース波形出力用アドレスポインタが記憶されるレジスタである。ＰＣはパルス幅カウント用レジスタである。ＭＯＮは無音期間カウント用レジスタである。ＦＥは各種フラグがセットされるフラグエリアである。
【００４０】
Ｂ．第１実施例の動作
次に、図１５〜図２４を参照して第１実施例の動作について説明する。ここでは、まず、制御部１側から音源部６側に設定パラメータを送出する動作としてＣＰＵ２のパラメータ送出タスクについて説明した後、これにより与えられたパラメータに基づいて前述した各種処理により波形合成するＤＳＰ９の動作について説明して行く。
【００４１】
（１）ＣＰＵ２の動作（パラメータ送出タスク）
前述した操作部５においてパラメータ設定操作がなされると、ＣＰＵ２は図１５に示すパラメータ送出タクスを実行してステップＳＡ１に処理を進める。なお、本タスクはＤＳＰ９の処理とは非同期に行われており、操作部５の設定操作によりＤＳＰ９において波形形成される楽音の特性を定めるパラメータを設定して送出するようになっている。例えば、パラメータＡ〜Ｉの内容によりＤＳＰ９側にて発生される楽音波形の特性（例えば、音色）が決る。
【００４２】
さて、ステップＳＡ１に処理が進むと、ＣＰＵ２は設定操作に応じて生成されたパラメータが正負いずれのものであるかを判断する。ここで、正ピーク／ボトムポイント用のパラメータであれば、ステップＳＡ２に進み、ピークあるいはボトムのいずれであるかを判断する。そして、ボトムポイントである時にはステップＳＡ３に進み、正ボトムポイント用パラメータＡ〜ＩをＲＡＭ３内の転送バッファにセットする。一方、ピークポイントであれば、ステップＳＡ４に処理を進め、正ピークポイント用パラメータＡ〜Ｉを転送バッファにセットする。
一方、上記ステップＳＡ１において負ピーク／ボトムポイント用のパラメータであると判断された時には、ＣＰＵ２はステップＳＡ５に処理を進め、ピークあるいはボトムのいずれであるかを判断する。ここで、ボトムポイントである時にはステップＳＡ６に進み、負ボトムポイント用パラメータＡ〜Ｉを転送バッファにセットし、一方、ピークポイントであれば、ステップＳＡ７にて負ピークポイント用パラメータＡ〜Ｉを転送バッファにセットする。
【００４３】
次いで、ステップＳＡ８では、転送指示スイッチが操作されたかどうかを判断する。ここで、当該スイッチが操作されなければ、判断結果が「ＮＯ」となり、上記ステップＳＡ１に処理を戻し、パラメータ設定が行われる。そして、４種のパラメータが設定された時点で転送指示スイッチが操作されると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＡ９に処理を進める。ステップＳＡ９では、ＲＡＭ３に設けられる転送開始フラグＴＦを「１」にセットする。
一方、ＤＳＰ９側では、後述するＣＰＵ交信処理ルーチンにより一定周期毎にこのフラグＴＦの状態をモニタしており、当該フラグＴＦが「１」となった時点でワークＲＡＭ１０に設けられる転送終了フラグＡＦを「０」にして受信可能状態をＣＰＵ２側に知らせる。
【００４４】
ＤＳＰ９側が受信状態になると、ＣＰＵ２はステップＳＡ１０に処理を進め、転送バッファに格納されるパラメータを順次送出する。次いで、ステップＳＡ１１に進むと、ＣＰＵ２はＤＳＰ９側が転送完了フラグＡＦを「１」としてパラメータ受信完了の旨を表わすまで待機する。そして、ＤＳＰ９側が当該フラグＡＦを「１」にセットすると、ＣＰＵ２はパラメータ転送が完了したとして次のステップＳＡ１２に処理を進め、転送開始フラグＴＦを「０」にセットして転送完了の旨を表わし、このパラメータ送出タスクを終了する。
【００４５】
（２）ＤＳＰ９の動作
次に、上述したＣＰＵ２のパラメータ送出タスクに基づき供給された４種のパラメータに従って楽音波形を発生するＤＳＰ９の動作として、最初にＤＳＰ９の概略動作としてメインルーチンについて説明した後、このメインルーチンにおいてコールされる各種処理ルーチンについて順次説明して行く。
▲１▼メインルーチン
まず、装置電源投入と共に、音源部６のＤＳＰ９は内部ＲＯＭに記憶されているマイクロプログラムをロードして図１６に示すメインルーチンを実行し、ステップＳＢ１に処理を進める。ステップＳＢ１では、前述したワークＲＡＭ１０の所定記憶エリアをゼロリセットしたり、あるいは初期値セットする等のイニシャライズを行い、次のステップＳＢ２に進む。ステップＳＢ２では、上述したＣＰＵ２のパラメータ送出タスクにより転送されるパラメータを、ワークＲＡＭ１０の記憶エリアＰＲＭ１〜ＰＲＭ４（図１３参照）に格納するため、ＣＰＵ交信処理を行う。
【００４６】
次いで、ステップＳＢ３では、波形取り込み処理を行う。この波形取り込み処理とは、前述したように、Ａ／Ｄ変換器８から出力される波形データを順次ワークＲＡＭ１０の記憶エリアＷＤに格納する。そして、次のステップＳＢ４では、上記記憶エリアＷＤに取り込んだ波形データを順番に読み出し、波形の傾きが変化した時、つまり、波高値が増加から減少、あるいは減少から増加に転じた時に、その１サンプル前の波形データを波形ピーク（あるいは波形ボトム）であるとしてピーク（ボトム）ポイントを生成する。次に、ステップＳＢ５に進むと、ＤＳＰ９は、上記ピーク検出処理にて新たなピークが検出される毎に、前述した第１の条件および第２の条件に基づき発音タイミングであるか否かを判定するためのアタック検出を行う。
【００４７】
そして、ステップＳＢ６では、リリース波形を発生する際に必要な入力波形の周期を検出した後、これを記憶する周期波形記憶処理を行い、続く、ステップＳＢ７では、入力波形の傾きが変化する波形ピーク／ボトムポイント毎に、与えられたパラメータに応じたパルス波形を発生すると共に、これに指定された条件のフィルタリングを施し、これにより入力波形の変化に沿った新たな楽音波形を発生する波形発生処理を行う。次いで、ステップＳＢ８では、ＤＳＰ９の処理ループ周期を一定にすべく所定ステップ数分のアイドリングを行った後、上述のステップＳＢ２に処理を戻し、以後、ＤＳＰ９は動作停止が指示される迄、ステップＳＢ２〜ＳＢ８を繰り返し実行する。
【００４８】
▲２▼ＣＰＵ交信処理ルーチン
上述したように、ＤＳＰ９の処理がステップＳＢ２に進むと、図１７に示すＣＰＵ交信処理ルーチンを実行してステップＳＣ１に処理を進める。ステップＳＣ１では、転送開始フラグＴＦが「１」、すなわち、ＣＰＵ２側が転送開始状態にあるか否かを判断する。ここで、転送開始状態になければ、判断結果が「ＮＯ」になり、ステップＳＣ２に進み、転送終了フラグＡＦを「１」にセットして転送終了状態に設定したまま本ルーチンを完了してメインルーチンへ復帰する。
【００４９】
一方、ＣＰＵ２側が転送開始状態にあると、上記ステップＳＣ１の判断結果が「ＹＥＳ」となり、ステップＳＣ３に処理を進める。ステップＳＣ３では、フラグＡＦを「０」に設定してＣＰＵ２側に受信可能状態であることを知らせる。これに応じてＣＰＵ２側よりパラメータが送出されると、ＤＳＰ９はステップＳＣ４において受信したパラメータをワークＲＡＭ１０の対応する記憶エリアＰＲＭ１〜ＰＲＭ４にストアする。この後、ＤＳＰ９はステップＳＣ５に処理を進め、パラメータ受信が完了したかどうか、つまり、ＣＰＵ２側において転送開始フラグＴＦを「０」にセットしたか否かを判断する。ここで、パラメータ受信完了とならない時には判断結果が「ＮＯ」となり、上記ステップＳＣ４に処理を戻す。これに対し、ＣＰＵ２側でフラグＴＦが「０」になった時には、パラメータ受信完了であるとして判断結果が「ＹＥＳ」となり、ステップＳＣ２に処理を進めて転送終了フラグＡＦを「１」に設定する。
【００５０】
▲３▼波形取り込み処理ルーチン
以上のようにして波形発生に必要なパラメータをＣＰＵ２側から受領すると、ＤＳＰ９は前述したステップＳＢ３を介して図１８に示す波形取り込み処理ルーチンを実行し、ステップＳＤ１に処理を進める。
まず、ステップＳＤ１では、Ａ／Ｄ変換器８からの波形データが入力されているか否かを判断する。ここで、演奏者が入力楽器を演奏せずにいると、入力波形が入力端Ｔ１（図１参照）に印加されないため、波形データがＤＳＰ９側に入力されず、このステップＳＤ１の判断結果が「ＮＯ」となり、前述したステップＳＢ２（図１６：メインルーチン）へ処理を戻す。
【００５１】
一方、Ａ／Ｄ変換器８から波形データが入力されれば、ステップＳＤ１の判断結果が「ＹＥＳ」となり、次のステップＳＤ２に処理を進める。ステップＳＤ２では、入力された波形データをレジスタＰＷ（図１４参照）にストアする。なお、このレジスタＰＷは、現在サンプリングされた波形データ（以後、現波形データと称す）が格納される。
次いで、ステップＳＤ３に進むと、レジスタＰＴ１に格納される波形データ読み出しポインタが、波形データ記憶エリアＷＤ（図１２参照）のアドレスＡＤ１＋Ｎに達しているかどうかを判断する。つまり、リングバッファとして波形データが循環的に記憶されるエリアＷＤにおいて、最古サンプリングされた波形データを書き込むアドレスであるかどうかを判断している。
【００５２】
ここで、最古のアドレスである場合には、判断結果が「ＹＥＳ」となり、次のステップＳＤ４に処理を進める。ステップＳＤ４では、レジスタＰＴ１の波形データ読み出しポインタを最新のアドレスに更新し、続く、ステップＳＤ５では、この更新に対応してレジスタＰＴ２に格納されるピーク（ボトム）ポイント読み出しポインタを同様に最新のアドレスＡＤ２（図１２参照）に変更する。次いで、ステップＳＤ６においても、上記レジスタＰＴ１の更新に伴ってピーク（ボトム）種類読み出しポインタが格納されるレジスタＰＴ３を同様に最新のアドレスＡＤ３（図１２参照）に更新し、次のステップＳＤ８に処理を進める。
【００５３】
一方、レジスタＰＴ１に格納される波形データ読み出しポインタが最古のアドレスを指し示していない場合には、上記ステップＳＤ３の判断結果が「ＮＯ」となり、ステップＳＤ７に進む。ステップＳＤ７に進むと、ＤＳＰ９はレジスタＰＴ１の値を１インクリメントしてその読み出しポインタを次のアドレスを指し示すように歩進させる。
そして、ステップＳＤ８では、レジスタＰＴ１に格納される波形データ読み出しポインタが指し示す記憶エリアＷＤのアドレスに、レジスタＰＷに格納されている現波形データを書き込み、本ルーチンを完了する。
【００５４】
▲４▼ピーク検出処理ルーチン
波形データを取り込むと、ＤＳＰ９は前述したステップＳＢ４を介して図１９に示すピーク検出処理ルーチンを実行し、ステップＳＥ１に処理を進める。ステップＳＥ１では、波形ピーク（あるいはボトム）を検出するため、レジスタＰＷに格納されている現波形データと、レジスタＦＷに格納されている１サンプル前の波形データとの差分を算出する。
ここで、差分が正の場合、つまり、波形が増加傾向にある時には、次のステップＳＥ２に進み、現在傾きフラグＰＦを「０（増加）」にセットする。一方、差分が負の時には波形が減少傾向にあるから、ステップＳＥ３に進み、フラグＰＦを「１（減少）」にセットする。なお、差分が「０」の時、すなわち、同一レベルの波形データが連続した時には、後述するステップＳＥ１７に処理を進める。
【００５５】
１サンプル前の波形データとの比較により現在の波形傾きが判定されると、ＤＳＰ９は、ステップＳＥ４に処理を進め、フラグＰＦとフラグＦＦとが一致するかどうかを判断する。このフラグＦＦとは、１処理ループ前に判定した波形傾きを示すものであり、現在傾きフラグＰＦと同様に「１」の時に減少を、「０」の時に増加を表わす。したがって、このステップＳＥ４では、波形の傾きが一定であるか否かを判断している。そして、波形の傾きが一定である場合には、判断結果が「ＹＥＳ」となり、後述のステップＳＥ１７に処理を進める。
一方、波形の傾きが一定でない時、つまり、波形が減少から増加へ、あるいは増加から減少へ転じた時には、判断結果が「ＮＯ」となり、ステップＳＥ５に進む。
【００５６】
ステップＳＥ５では、波形の正負を決めるべくレジスタＦＷに格納される１サンプル前の波形データが「負」であるか否かを判断する。ここで、１サンプル前の波形データが「正」であると、判断結果は「ＮＯ」となり、ステップＳＥ６に処理を進める。ステップＳＥ６では、フラグＰＦの値が「０（増加）」であるかどうかを判断し、「増加」であれば、波形は現在、正側で増加から減少へ転じているのだから、ステップＳＥ７に進み、波形ピーク／ボトムポイントの種類を表わすフラグＰＫＦを「１（正ピークポイント）」にセットする。これに対し、上記ステップＳＥ６の判断結果が「ＮＯ」時、つまり、波形が現在、正側で減少から増加へ転じている時には、ステップＳＥ８に進み、フラグＰＫＦに「２（正ボトムポイント）」にセットする。
【００５７】
一方、ステップＳＥ５において、レジスタＦＷに格納される１サンプル前の波形データが「負」である場合には、ここでの判断結果は「ＹＥＳ」となり、ステップＳＥ９に処理を進める。ステップＳＥ９では、フラグＰＦの値が「０（増加）」であるかどうかを判断し、「増加」であれば、波形は現在、負側で増加から減少へ転じているのだから、ステップＳＥ１０に進み、波形ピーク／ボトムポイントの種類を表わすフラグＰＫＦを「３（負ピークポイント）」にセットする。これに対し、上記ステップＳＥ９の判断結果が「ＮＯ」時、つまり、波形が現在、負側で減少から増加へ転じている時には、ステップＳＥ１１に進み、フラグＰＫＦに「４（負ボトムポイント）」にセットする。
【００５８】
こうして波形ピーク（あるいはボトム）が検出されると、ＤＳＰ９は、ステップＳＥ１２に進み、レジスタＰＴ２に格納されるピーク（ボトム）ポイント読み出しポインタをアドレスにしてワークＲＡＭ１０の記憶エリアＰＰにピーク（ボトム）ポイントをストアする。この場合、ピーク（ボトム）ポイントとは、レジスタＦＷに格納される１サンプル前の波形データが記憶される記憶エリアＷＤのアドレスに相当する。次いで、ステップＳＥ１３では、レジスタＰＴ３に格納されているピーク（ボトム）種類読み出しポインタをアドレスとしてワークＲＡＭ１０の記憶エリアＰＳにフラグＰＫＦをストアする。
【００５９】
そして、ステップＳＥ１４，ＳＥ１５では、それぞれレジスタＰＴ２、ＰＴ３の値を１インクリメントして歩進させ、続く、ステップＳＥ１６では、ピーク（あるいはボトム）検出を表わす検出フラグＰＤＦを「１（検出状態）」にセットする。
次いで、ステップＳＥ１７では、次の波形データに基づいてピーク（あるいはボトム）検出する為に、レジスタＰＷの内容をレジスタＦＷに書き換えて波形サンプルを更新し、次のステップＳＥ１８でも同様にフラグＰＦの内容をフラグＦＦに書き換えて本ルーチンを完了する。
【００６０】
▲５▼アタック検出処理ルーチン
次に、発音タイミングを検出するアタック検出処理ルーチンの動作について説明する。前述した通り、アタック検出には２通りの処理があり、その第１は、入力波形が一定時間ゼロレベル（あるいはノイズレベル）を保つ無音状態を経てからレベル増加し始めた時点を、演奏操作が開始された発音タイミングと見做し、最初の波形ピークを検出するまでの期間を楽音の立上がりを形成するアタック領域とするものであり、これをアタック（Ｉ）処理とする。
次に、第２は、前述したピーク検出処理により検出された最も高い波高値と、現時点で検出された現波形ピークとを比較し、現波形ピークが最も高い波高値の所定倍数以上に達した時点で、入力波形を発音する楽器を弾き直したと判断し、その時点から発音タイミングに入ったと見做すものであり、これをアタック（II）処理とする。以下、これら両処理の動作について説明する。
【００６１】
（ａ）アタック（II）処理ルーチン
波形ピーク／ボトムポイントおよびその種類が判定されると、ＤＳＰ９は前述したステップＳＢ５を介して図２０に示すアタック（Ｉ）処理ルーチンを実行し、ステップＳＦ１に処理を進める。
ステップＳＦ１では、レジスタＰＷに格納される現波形データのレベルが「０」、すなわち、無音状態にあるかどうかを判断する。ここで、無音状態であれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ２に進む。ステップＳＦ２では、無音期間を計測するカウンタとして用いられるレジスタＭＯＮの値を１インクリメントして歩進させ、本ルーチンを完了する。つまり、無音状態になる毎にレジスタＭＯＮをカウントアップして行き、無音期間を計測する訳である。
【００６２】
そして、前述したメインルーチンの処理ループが複数回繰り返される度に無音期間となり、その都度、レジスタＭＯＮがカウントアップされた状態にあったとする。そうした状態で、再び本ルーチンが実行されてステップＳＦ１において無音状態でないと判断された時には、ステップＳＦ３に処理を進める。ステップＳＦ３では、レジスタＭＯＮに格納される値、つまり、無音期間に相当するカウンタ値が所定値を超えているか否かを判断する。
ここで、レジスタＭＯＮの値が所定値を超えていない場合には、アタックではないと見做して判断結果が「ＮＯ」となり、ステップＳＦ４に処理を進めてレジスタＭＯＮをゼロリセットして本ルーチンを完了する。
これに対し、レジスタＭＯＮの値が所定値を超えた時には、アタックであると見做して判断結果が「ＹＥＳ」となり、ステップＳＦ５に処理を進めてレジスタＣの値をゼロリセットする。なお、このレジスタＣは、メインルーチンの処理ループが一巡する毎にインクリメントされるループ回数カウンタであり、この値が意味するところについては後述する。
【００６３】
（ｂ）アタック（II）処理
波形ピーク／ボトムポイントおよびその種類が判定されると、ＤＳＰ９は前述したステップＳＢ５を介して図２１に示すアタック（II）処理ルーチンを実行し、ステップＳＧ１に処理を進める。
ステップＳＧ１では、ピーク（ボトム）の検出状態を表わす検出フラグＰＤＦが「１」、つまり、ピーク（あるいはボトム）を検出しているかどうかを判断する。ここで、検出フラグＰＤＦが「０」であれば、アタック状態に入り得ないので、判断結果が「ＮＯ」となり、本ルーチンを完了する。
【００６４】
一方、ピーク（あるいはボトム）を検出しているならば、判断結果が「ＹＥＳ」となり、次のステップＳＧ２に処理を進める。ステップＳＧ２に進むと、ＤＳＰ９は、ワークＲＡＭ１０の記憶エリアＰＰ（図１２参照）のアドレスＡＤ２〜ＡＤ２＋（Ｍ−１）に格納されるピーク（ボトム）ポイントに対応する波形データの内、その絶対値が最大となる波形データＭＰＬを求める。次いで、ステップＳＧ３では、レジスタＰＷに格納されている現波形データが上記波形データＭＰＬのｋ倍以上に達しているか否かを判断する。なお、この係数ｋは入力楽器の種類や演奏形態に応じて可変設定される値である。
そして、現波形データが上記波形データＭＰＬのｋ倍以上に達している時には、入力楽器が弾かれた発音タイミングとなり、アタック領域であると見做して判断結果が「ＹＥＳ」となり、次のステップＳＧ４に処理を進めてレジスタＣに格納されるループ回数カウンタ値をゼロリセットする。これに対し、現波形データが上記波形データＭＰＬのｋ倍以上に達していない時には、アタックではないとして判断結果が「ＮＯ」となり、本ルーチンを完了する。
【００６５】
▲６▼周期検出および周期波形記憶処理ルーチン
アタック検出がなされると、ＤＳＰ９は前述したステップＳＢ６（図１６参照）を介して図２２に示す周期検出および周期波形記憶処理ルーチンを実行し、ステップＳＨ１に処理を進める。
まず、ステップＳＨ１では、波形ピーク（あるいはボトム）検出フラグＰＤＦが「１」、つまり、波形ピーク（あるいはボトム）が検出されているか否かを判断する。ここで、検出されていない場合には、周期検出し得ないので、判断結果を「ＮＯ」として本ルーチンを完了する。
【００６６】
一方、波形ピーク（あるいはボトム）が検出され、フラグＰＤＦが「１」の時には、判断結果が「ＹＥＳ」となり、次のステップＳＨ２に処理を進める。ステップＳＨ２では、ワークＲＡＭ１０の記憶エリアＰＰのアドレスＡＤ２〜ＡＤ２＋（Ｎ−１）に格納されているピーク（ボトム）ポイントの内、最大レベルのピークポイントＭＰＰを求める。次いで、ステップＳＨ３では、この最大レベルのピークポイントＭＰＰとは異なる別のピークポイントＡＰＰを記憶エリアＰＰから読み出す。そして、ステップＳＨ４では、上記ピークポイントＭＰＰに対応する波形データと、上記ピークポイントＡＰＰに対応する波形データとが同一符号であるか否かを判断する。
【００６７】
ここで、両者の符号が一致しない時には、判断結果が「ＮＯ」となり、ステップＳＨ５に進み、再びピークポイントＭＰＰとは異なる別のピークポイントＡＰＰを求める。そして、この時、ピークポイントが存在しないならば、次のステップＳＨ６の判断結果が「ＹＥＳ」となり、このルーチンを完了する。
一方、ピークポイントが存在するならば、判断結果が「ＮＯ」になり、再びステップＳＨ４に処理を進めてピークポイントＭＰＰに対応する波形データと、新たに求めたピークポイントＡＰＰに対応する波形データとが同一符号であるか否かを判断する。
【００６８】
そして、両ポイントの波形データの符号が一致すると、ＤＳＰ９はステップＳＨ７に処理を進め、ピークポイントＡＰＰに対応する波形データのレベルが、ピークポイントＭＰＰに対応する波形データのレベルの０．８倍〜１．０倍の範囲に収るかどうか、すなわち、ピークポイントＭＰＰと対になるピークポイントであるか否かを判断する。
ここで、ピークポイントＡＰＰの波形レベルが上記規格を満たさない時には、ピークポイントＭＰＰと対になるピークポイントではないと見做して判断結果が「ＮＯ」となり、上述したステップＳＨ５に処理を戻す。
一方、ピークポイントＡＰＰの波形レベルが規格を満たした時には、ピークポイントＭＰＰと対になるピークポイントと見做すので、判断結果が「ＹＥＳ」となり、次のステップＳＨ８に処理を進める。
【００６９】
次いで、ステップＳＨ８では、対となったピークポイントＭＰＰ，ＡＰＰの大小関係を判断し、ＡＰＰ＞ＭＰＰの時にはステップＳＨ９に処理を進め、ワークＲＡＭ１０のアドレスＡＤ４に最大波形レベルのピーク（ボトム）ポイントＭＰＰをストアすると共に、アドレスＡＤ４＋１に対となるピーク（ボトム）ポイントＡＰＰをストアする。
これに対し、ＡＰＰ＜ＭＰＰの時にはステップＳＨ１０に処理を進め、ワークＲＡＭ１０のアドレスＡＤ４に最大波形レベルのピーク（ボトム）ポイントＡＰＰをストアすると共に、アドレスＡＤ４＋１に対となるピーク（ボトム）ポイントＭＰＰをストアする。これにより、入力波形の周期、つまりピーク（ボトム）ポイントＭＰＰとピーク（ボトム）ポイントＡＰＰとの間隔が記憶されることになり、この波形周期は、後述する波形発生処理におけるリリース波形発生の際に用いられる。
【００７０】
▲７▼波形発生処理ルーチン
次に、ＤＳＰ９は前述したステップＳＢ７（図１６参照）を介して図２３に示す波形発生処理ルーチンを実行し、ステップＳＪ１に処理を進める。ステップＳＪ１では、ピーク（ボトム）検出フラグＰＤＦが「１」、つまり、波形ピーク（あるいはボトム）が検出されているか否かを判断する。ここで、検出されていない時には、判断結果が「ＮＯ」となり、後述するステップＳＪ１４に処理を進める。一方、波形ピーク（ボトム）を検出している時には、それに応じた波形を発生するため、判断結果が「ＹＥＳ」となり、次のステップＳＪ２に処理を進める。
【００７１】
ステップＳＪ２では、レジスタＣに格納されるループ回数カウンタ値をテーブル変換して変換値Ｃ’を発生する。このテーブル変換とは、アタック開始時にリセットされた後、ＤＳＰ９の処理ループ一巡毎に所定値まで逐次カウントアップされるループ回数カウンタ値を、「０」〜「１」の値域をとる変換値Ｃ’に線形変換するものである。つまり、ループ回数カウンタ値を正規化する訳である。
次いで、ステップＳＪ３に進むと、ＤＳＰ９は、検出した波形ピーク（あるいはボトム）に対応するフラグＰＫＦに基づき波形ピーク（あるいはボトム）の種類を判別する。
【００７２】
すなわち、フラグＰＫＦが「１」の時には、「正ピークポイント」だから、ステップＳＪ４に進み、ワークＲＡＭ１０の記憶エリアＰＲＭ１（図１３参照）に格納されているパラメータＡ〜Ｉを、記憶エリアＵＳＰのアドレスＡＤ５〜ＡＤ５＋８にそれぞれストアする。
フラグＰＫＦが「２」の時には、「正ボトムポイント」だから、ステップＳＪ５に進み、ワークＲＡＭ１０の記憶エリアＰＲＭ２（図１３参照）に格納されているパラメータＡ〜Ｉを、記憶エリアＵＳＰのアドレスＡＤ５〜ＡＤ５＋８にそれぞれストアする。
【００７３】
また、フラグＰＫＦが「３」の時には、「負ピークポイント」だから、ステップＳＪ６に進み、ワークＲＡＭ１０の記憶エリアＰＲＭ３（図１３参照）に格納されているパラメータＡ〜Ｉを、記憶エリアＵＳＰのアドレスＡＤ５〜ＡＤ５＋８にそれぞれストアする。
さらに、フラグＰＫＦが「４」の時には、「負ボトムポイント」だから、ステップＳＪ７に進み、ワークＲＡＭ１０の記憶エリアＰＲＭ４（図１３参照）に格納されているパラメータＡ〜Ｉを、記憶エリアＵＳＰのアドレスＡＤ５〜ＡＤ５＋８にそれぞれストアする。
なお、上記ステップＳＪ３〜ＳＪ７の処理は、フラグＰＫＦの値に応じてワークＲＡＭ１０の記憶エリアＰＲＭ１〜ＰＲＭ４を選択してパラメータを指定するようにしても良い。
【００７４】
こうして検出した波形ピーク（あるはボトム）の種類に対応したパラメータＡ〜Ｉが選択されると、ＤＳＰ９は、ステップＳＪ８に処理を進め、発生すべき矩形パルス波の波高値Ｌを次式（１）に基づき算出する。
波高値Ｌ＝ＰＷ×｛Ａ×（１−Ｃ’）＋Ｂ×Ｃ’｝  …（１）
ここで、ＰＷはレジスタＰＷに格納されている現波形データ、Ａはパルス波高初期値、Ｂはパルス波高目標値、Ｃ’は前述したループ回数カウンタ値を正規化してなる変換値であり、内挿補間係数として用いられる値である。したがって、波高値Ｌは、パルス波高初期値からパルス波高目標値までをアタック経過時間に応じて補間し、これに現波形データを乗算したものとなる。
【００７５】
次いで、ステップＳＪ９では、発生すべきパルス幅Ｐを次式（２）に基づき算出する。
パルス幅Ｐ＝Ｃ×（１−Ｃ’）＋Ｄ×Ｃ’…（２）
ここで、Ｃはパルス幅初期値、Ｄはパルス幅目標値、Ｃ’は内挿補間係数である。よって、パルス幅Ｐは、パルス幅初期値からパルス幅目標値までをアタック経過時間に応じて補間したものになる。
また、同様に、次のステップＳＪ１０では、次式（３）に基づき、初期カットオフ周波数Ｆから目標カットオフ周波数Ｇまでをアタック経過時間に応じて補間したカットオフ周波数ｆｃを発生する。
カットオフ周波数ｆｃ＝Ｆ×（１−Ｃ’）＋Ｇ×Ｃ’…（３）
【００７６】
次に、ステップＳＪ１１に進むと、ＤＳＰ９は、波形出力の可否を示すフラグＰＳＦを「１」として波形発生する旨を表わし、続く、ステップＳＪ１２では、フラグＰＤＦをゼロリセットする。次いで、ステップＳＪ１３では、レジスタＰＣに格納されるパルス幅カウント値をゼロリセットする。
こうして波形発生に係わる準備が整った場合、あるいは波形ピーク（あるいはボトム）が検出されず、上述したステップＳＪ１の判断結果が「ＮＯ」の場合に次のステップＳＪ１４に処理を進め、レジスタＰＷにセットされている現波形データのレベルがリリーススレッシュ値Ｈ以下であるか、つまり、リリース領域に入っているか否かを判断する。
【００７７】
ここで、リリース領域に入っていなければ、判断結果が「ＮＯ」となり、図２４に示すステップＳＪ１７に処理を進め、一方、リリース領域にある時には、判断結果が「ＹＥＳ」となり、ステップＳＪ１５に進む。ステップＳＪ１５では、傾きフラグＲＦを「１」にセットして現在の入力波形の傾きが減少であることを表わすと共に、フラグＰＳＦを「０」にセットして波形発生不可状態を表わす。そして、ステップＳＪ１６では、レジスタＲＡＤにリリース波形出力用アドレスポインタとしてワークＲＡＭ１０のアドレスＡＤ４の値、すなわち、ピーク（ボトム）ポイントＡＰＰをストアする。
【００７８】
次に、ステップＳＪ１７（図２４参照）に進むと、ＤＳＰ９は、フラグＰＳＦが「１」であるか否かを判断する。この判断では、現波形データがリリース領域にあるか否かで処理を分岐させるので、以下、各ケース別に説明して行く。
（ａ）現波形データがリリース領域に入っていない時
現波形データがリリース領域に入っていない場合には、上述したステップＳＪ１１においてフラグＰＳＦが「１」に設定されるから、このステップＳＪ１７の判断結果は「ＹＥＳ」となり、次のステップＳＪ１８に処理を進める。ステップＳＪ１８では、レジスタＰＣに格納されるパルス幅カウント値をインクリメントして歩進させ、続く、ステップＳＪ１９では、この歩進されたパルス幅カウント値が、前記（２）式に基づき算出されたパルス幅Ｐより大であるか否かを判断する。
【００７９】
ここで、パルス幅カウント値がパルス幅Ｐより大なる時には、判断結果が「ＹＥＳ」となり、次のステップＳＪ２０に処理を進め、波形出力を止めるべく、フラグＰＳＦを「０」にセットする。次いで、ステップＳＪ２１では、これに伴ってレジスタＰＣに格納されるパルス幅カウント値をゼロリセットし、続く、ステップＳＪ２２において波高値Ｌをゼロにセットする。これにより、波形発生が停止し、この後、ＤＳＰ９はステップＳＪ２４に処理を進め、ループ回数カウンタ値を１インクリメントして歩進させ、このルーチンを完了する。
【００８０】
一方、パルス幅カウント値がパルス幅Ｐより小さい場合には、上記ステップＳＪ１９の判断結果が「ＮＯ」となり、ステップＳＪ２３に進む。ステップＳＪ２３では、パラメータＥに基づき指定されたフィルタ（ハイパスフィルタあるいはローパスフィルタ）に対して、前述した（３）式により得られるカットオフ周波数ｆｃを与え、これに基づき波高値Ｌのパルス波形をフィルタリングして波形出力する。そして、この後、ステップＳＪ２４に処理を進め、ループ回数カウンタ値を１インクリメントして歩進させて本ルーチンを完了する。
【００８１】
（ｂ）現波形データがリリース領域に入っている時
現波形データがリリース領域に入っている時には、上述したステップＳＪ１５においてフラグＰＳＦが「０」に設定されるから、ステップＳＪ１７の判断結果が「ＮＯ」となり、ステップＳＪ２５に処理を進める。ステップＳＪ２５では、リリース開始フラグＲＦが「１」であるか否かを判断する。リリース開始時点では、上述したステップＳＪ１５において当該フラグＲＦが「１」に設定されているので、その判断結果は「ＹＥＳ」となり、次のステップＳＪ２６に処理を進める。ステップＳＪ２６に進むと、ＤＳＰ９は、レジスタＲＡＤに格納されるリリース波形出力用アドレスポインタに基づき対応する波形データを読み出す。なお、レジスタＲＡＤに格納されるアドレスポインタとは、ワークＲＡＭ１０のアドレスＡＤ４の値、すなわち、ピーク（ボトム）ポイントＡＰＰを指定するアドレスである。
【００８２】
次いで、ステップＳＪ２７では、レジスタＲＡＤの値に応じて読み出した波形データにリリーススレッシュ値Ｈを乗算してリリース波形レベルを生成する。そして、次のステップＳＪ２８に進むと、リリーススレッシュ値ＨからリリースレートＩを減算して次のリリーススレッシュ値Ｈを発生する。続いて、ステップＳＪ２９では、レジスタＲＡＤに格納されるアドレスポインタを１インクリメントして歩進させる。
そして、ステップＳＪ３０では、この歩進されたアドレスポインタが前述したピーク（ボトム）ポイントＭＰＰを指定するアドレスより大であるか、すなわち、前述した周期検出および周期波形記憶処理ルーチンにおいて検出した波形周期を超えたかどうかを判断する。ここで、波形周期を超えていない場合には、判断結果が「ＮＯ」となり、ステップＳＪ３２に進み、リリーススレッシュ値Ｈが０以下、つまり、リリース波形が減衰し切ったかどうかを判断する。
【００８３】
ここで、例えば、リリース開始間もない場合であったとする。そうすると、リリース波形は減衰し切れていないから、上記ステップＳＪ３２の判断結果は「ＮＯ」となり、上述したステップＳＪ２４を経てループ回数カウンタ値を１インクリメントして歩進させて本ルーチンを完了する。
そして、以後、処理ループが所定回数巡回し、これに応じてリリースレートＩで逐次減衰するリリース波形を発生している過程において、リリース期間が前述の波形周期を超えると、上述したステップＳＪ３０の判断結果が「ＹＥＳ」となり、ステップＳＪ３１に処理を進め、レジスタＲＡＤにアドレスＡＤ４をセットする。
【００８４】
次いで、ステップＳＪ３２においてリリーススレッシュ値Ｈが「０」になると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＪ３２に処理を進め、フラグＲＦを「０」にセットした後、ステップＳＪ２４を経てループ回数カウンタ値を歩進させ、このルーチンを完了する。
こうしてリリース波形出力が完了した後に本ルーチンが実行されると、前述したステップＳＪ１の判断結果が「ＮＯ」となり、ステップＳＪ１７を介してステップＳＪ２５に進むが、この場合、フラグＲＦは「０」になっているので、判断結果が「ＮＯ」となり、ステップＳＪ３３に進み、波高値Ｌを「０」として波形出力を止め、ステップＳＪ２４においてループ回数カウンタ値を歩進させて本ルーチンを完了する。
【００８５】
このように、波形発生処理ルーチンでは、波形ピーク（ボトム）の種類に応じて選定されるパラメータに基づいて発生すべき矩形パルス波の波高値Ｌおよびパルス幅Ｐと、それをフィルタリング出力するカットオフ周波数ｆｃとが定められる。その際、波高値Ｌ、パルス幅Ｐおよびカットオフ周波数ｆｃは、パラメータにより規定される初期値から目標値までがループ巡回数に対応して補間される。そして、入力波形のレベルがリリーススレッシュ値Ｈ以下になった時点で、その直前にサンプリングした波形データを、周期検出にて求めた波形周期で繰り返し再生しながら、与えられたリリースレートで減衰させるリリース波形を生成する。
【００８６】
Ｃ．第２実施例
次に、第２実施例について説明する。上述した第１実施例では、波形ピーク（ボトム）の種類に応じて選定されるパラメータに基づき、発生すべき矩形パルス波の波高値Ｌおよびパルス幅Ｐと、それをフィルタリング出力するカットオフ周波数ｆｃとを設定し、これら諸条件に従い波形発生する態様であるが、第２形態では、予め波形ピーク（ボトム）の種類別に各種形状の波形を記憶しておき、波形ピーク（ボトム）が検出される毎に対応する種類の波形を読み出し、これを繋げ合わせて波形発生する態様としている。
したがって、以下では、第１実施例と相違する点、すなわち、ＣＰＵ２からワークＲＡＭ１０へ転送されるパラメータの内容と、ＤＳＰ９においてなされる波形処理の内容とについて言及する。
【００８７】
（１）第２実施例の概要
第２実施例の場合、ＤＳＰ９の内部ＲＯＭに複数の波形情報を記憶しておき、入力波形のピーク（ボトム）を検出する毎に、検出した波形ピーク（ボトム）の種類に対応する波形情報を、ＣＰＵ２から供給される各種波形読み出しアドレス（パラメータ）を参照して内部ＲＯＭから読み出して波形発生する。
ＣＰＵ２から供給される各種波形読み出しアドレス（パラメータ）は、ＤＳＰ９を介してワークＲＡＭ１０の記憶エリアＰＲＭに書き込まれる。図２５は記憶エリアＰＲＭの構成を示す図である。
図において、ＰＰＳＷ，ＰＰＥＷは、正ピークポイントにおける開始波形および終了波形を読み出すための読み出しアドレスであり、ＰＢＳＷ，ＰＢＥＷは、正ボトムポイントにおける開始波形および終了波形を読み出すための読み出しアドレスである。また、ＮＰＳＷ，ＮＰＥＷは、負ピークポイントにおける開始波形および終了波形を読み出すための読み出しアドレスであり、ＮＢＳＷ，ＮＢＥＷは負ボトムポイントにおける開始波形および終了波形を読み出すための読み出しアドレスである。
【００８８】
つまり、ＤＳＰ９は、波形ピーク（ボトム）を検出する毎に、その種類（正負ピーク、正負ボトム）に対応する読み出しアドレスを選定し、選定した読み出しアドレスに従って内部ＲＯＭから対応する波形情報を読み出す訳である。
なお、こうした態様に替えて、上述したワークＲＡＭ１０の記憶エリアＰＲＭに、「正ピーク開始波形」、「正ピーク終了波形」、「正ボトム開始波形」、「正ボトム終了波形」、「負ピーク開始波形」、「負ピーク終了波形」、「負ボトム開始波形」および「負ボトム終了波形」の８種類の波形情報をＣＰＵ２からＤＭＡ転送して格納しておき、これらの内から検出した波形ピーク（ボトム）の種類に応じた波形情報を読み出す態様とすることも可能である。
【００８９】
第２実施例では、開始波形から終了波形までを、ＤＳＰ９の処理ループ巡回数に応じて補間する。図２６は、この波形補間の一例を示している。図中、（Ａ）は開始波形、（Ｃ）は終了波形である。アタック検出時点で開始波形（Ａ）を発生し、以後、処理ループ巡回毎に終了波形（Ｃ）になるよう波形補間することにより、波形（Ｂ）が生成される。
したがって、こうした波形補間に基づき入力波形に対して、例えば、図２７に示すように、正ピークポイントでは波形（Ａ）が、正ボトムポイントでは波形（Ｂ）がそれぞれ生成され、また、負ピークポイントでは波形（Ｃ）が、負ボトムポイントでは波形（Ｄ）がそれぞれ生成されたとすると、結局、図２８に図示する通り、入力波形に対応してこれら波形（Ａ）〜（Ｄ）を順次繋ぎ合わせた楽音波形が形成される。この場合、割り当てられた波形が時間的に重複した場合、新たな波形を優先するようにしている。
【００９０】
（２）第２実施例の動作
次に、図２９〜図３０を参照して第２実施例の動作について説明する。なお、本ルーチン以外のＤＳＰ９における各種処理ルーチンは、第１実施例と同一であるから、その説明は省略する。
前述した第１実施例と同様に、ＤＳＰ９はメインルーチンのステップＳＢ７（図１６参照）を介して図２９に示す波形発生処理ルーチンを実行し、ステップＳＫ１に処理を進める。ステップＳＫ１では、ピーク（ボトム）検出フラグＰＤＦが「１」、つまり、波形ピーク（あるいはボトム）が検出されているか否かを判断する。ここで、検出されていない時には、判断結果が「ＮＯ」となり、後述するステップＳＫ１０に処理を進める。
【００９１】
一方、波形ピーク（ボトム）を検出している時には、それに応じた波形情報を読み出すため、判断結果が「ＹＥＳ」となり、次のステップＳＫ２に処理を進める。ステップＳＫ２では、レジスタＣに格納されるループ回数カウンタ値をテーブル変換して変換値Ｃ’を発生する。このテーブル変換とは、アタック開始時にリセットされた後、ＤＳＰ９の処理ループ巡回毎に所定値まで逐次カウントアップされるループ回数カウンタ値を、「０」〜「１」の値域をとる変換値Ｃ’に線形変換するものである。
【００９２】
こうして補間係数となる変換値Ｃ’が求まると、ＤＳＰ９はステップＳＫ３に処理を進め、検出した波形ピーク（あるいはボトム）の種類を表わすフラグＰＫＦの値に基づき処理を分岐する。
すなわち、フラグＰＫＦが「１」の時には、正ピークポイントなので、ステップＳＫ４に進み、ワークＲＡＭ１０の記憶エリアＰＲＭ（図２５参照）に格納されている正ピーク開始波形読み出しアドレスＰＰＳＷと、正ピーク終了波形読み出しアドレスＰＰＥＷとをそれぞれレジスタＰＴ４、ＰＴ５にストアする。
フラグＰＫＦが「２」の時には、正ボトムポイントなので、ステップＳＫ５に進み、ワークＲＡＭ１０の記憶エリアＰＲＭに格納されている正ボトム開始波形読み出しアドレスＰＢＳＷと、正ボトム終了波形読み出しアドレスＰＢＥＷとをそれぞれレジスタＰＴ４、ＰＴ５にストアする。
【００９３】
また、フラグＰＫＦが「３」の時には、負ピークポイントなので、ステップＳＫ６に進み、ワークＲＡＭ１０の記憶エリアＰＲＭに格納されている負ピーク開始波形読み出しアドレスＮＰＳＷと、負ピーク終了波形読み出しアドレスＮＰＥＷとをそれぞれレジスタＰＴ４、ＰＴ５にストアする。
さらに、フラグＰＫＦが「４」の時には、負ボトムポイントなので、ステップＳＫ７に進み、ワークＲＡＭ１０の記憶エリアＰＲＭに格納されている負ボトム開始波形読み出しアドレスＮＢＳＷと、負ボトム終了波形読み出しアドレスＮＢＥＷとをそれぞれレジスタＰＴ４、ＰＴ５にストアする。
【００９４】
このようにして波形ピーク（あるはボトム）の種類に対応した波形情報が定められると、ＤＳＰ９は、ステップＳＫ８に処理を進め、フラグＰＳＦを「１」にセットして波形発生する旨を表わし、続く、ステップＳＫ９では、フラグＰＤＦをゼロリセットする。
そして、ステップＳＫ１０に進むと、ＤＳＰ９はレジスタＰＷにセットされている現波形データのレベルがリリーススレッシュ値Ｈ以下であるか、つまり、リリース領域であるか否を判断する。ここで、リリース領域に入っていなければ、判断結果が「ＮＯ」となり、図３０に示すステップＳＫ１１に処理を進める。ステップＳＫ１１では、フラグＰＳＦが「１」であるか否かを判断する。この判断では、現波形データがリリース領域にあるか否かで処理を分岐させるので、以下、各ケース別に説明して行く。
【００９５】
（ａ）現波形データがリリース領域にない場合
現波形データがリリース領域にない場合には、上述したステップＳＫ８においてフラグＰＳＦが「１」に設定されるから、このステップＳＫ１１における判断結果は「ＹＥＳ」となり、次のステップＳＫ１２に処理を進める。ステップＳＫ１２では、レジスタＰＴ４、ＰＴ５に格納されている開始波形／終了波形読み出しアドレスに基づき、ＤＳＰ９の内部ＲＯＭに記憶されている開始波形情報および終了波形情報を読み出す。次いで、ステップＳＫ１３では、この読み出した開始波形情報および終了波形情報を、前述した変換値Ｃ’により内挿補間してなる補間波形を発生する。
【００９６】
そして、次のステップＳＫ１４では、生成された補間波形に対してレジスタＰＷに格納される現波形データと係数ｋとを乗算して出力波形を形成する。なお、この係数ｋとは、入力波形レベルに対する出力波形レベル比となる任意の値であり、通常、０．８〜１．０の範囲の値をとる。
次いで、ステップＳＫ１５では、レジスタＰＴ４、ＰＴ５に格納される開始波形／終了波形読み出しアドレスをそれぞれ歩進させ、続く、ステップＳＫ１６では、歩進された開始波形読み出しアドレスおよび終了波形読み出しアドレスが終端アドレスＥＮＤに達したかどうかを判断する。
ここで、終端アドレスＥＮＤに達していなければ、判断結果が「ＮＯ」となり、ステップＳＫ１７に処理を進め、ループ回数カウンタ値を１インクリメントして歩進させて一旦、本ルーチンを完了する。
【００９７】
そして、ＤＳＰ９のループ処理の繰り返しに応じて逐次楽音波形（出力波形）が形成され、この時、開始波形読み出しアドレスおよび終了波形読み出しアドレスが終端アドレスＥＮＤに達すると、上述したステップＳＫ１６の判断結果が「ＹＥＳ」となり、ステップＳＫ１８に処理を進める。ステップＳＫ１８では、波形出力を止めるべく、フラグＰＳＦをゼロリセットすると共に、レジスタＰＣに格納されるパルス幅カウント値をゼロリセットし、ステップＳＫ１９にて出力波形のレベルをゼロクリアする。そして、この後、ステップＳＫ１７を介してループ回数カウンタ値を歩進させて本ルーチンを完了する。
【００９８】
（ｂ）現波形データがリリース領域に入っている時
現波形データがリリース領域に入っている時には、上述したステップＳＫ１０の判断結果が「ＹＥＳ」となり、ステップＳＫ２０（図２９参照）に進み、フラグＰＳＦを「０」として波形出力を停止させる旨を表わすと共に、リリース開始を表わすフラグＲＦを「１」にセットする。次に、ステップＳＫ２１では、レジスタＲＡＤにリリース波形出力用アドレスポインタとしてワークＲＡＭ１０のアドレスＡＤ４の値、すなわち、ピーク（ボトム）ポイントＡＰＰをストアした後、図３０に示すステップＳＫ１１に処理を進める。ステップＳＫ１１では、この場合、フラグＰＳＦが上記ステップＳＫ２０において「０」に設定されているので、ここでの判断結果は「ＮＯ」となり、ステップＳＫ２２に進む。
【００９９】
ステップＳＫ２２では、フラグＲＦが「１」、つまり、リリース開始状態であるか否かを判断する。リリース開始時点では、上述したステップＳＫ２０においてフラグＲＦが「１」に設定されるから、ここでの判断結果は「ＹＥＳ」となり、次のステップＳＫ２３に処理を進める。ステップＳＫ２３に進むと、ＤＳＰ９は、レジスタＲＡＤに格納されるリリース波形出力用アドレスポインタに基づき対応する波形データを読み出す。なお、レジスタＲＡＤに格納されるアドレスポインタとは、ワークＲＡＭ１０のアドレスＡＤ４の値、すなわち、ピーク（ボトム）ポイントＡＰＰを指定するアドレスである。
【０１００】
次いで、ステップＳＫ２４に進むと、レジスタＲＡＤの値に応じて読み出した波形データにリリーススレッシュ値Ｈを乗算してリリース波形レベルを生成する。そして、ステップＳＫ２５では、リリーススレッシュ値ＨからリリースレートＩを減算してリリーススレッシュ値Ｈを更新する。続いて、ステップＳＫ２６では、レジスタＲＡＤに格納されるアドレスポインタを１インクリメントして歩進させる。
次に、ステップＳＫ２７に進むと、ＤＳＰ９は、この歩進されたアドレスポインタが前述したピーク（ボトム）ポイントＭＰＰを指定するアドレスより大であるか、すなわち、周期検出および周期波形記憶処理ルーチン（第１実施例参照）において検出される波形周期を超えたかどうかを判断する。ここで、波形周期を超えていない場合には、判断結果が「ＮＯ」となり、ステップＳＫ２９に進み、リリーススレッシュ値Ｈが０以下、つまり、リリース波形が減衰し切ったかどうかを判断する。
【０１０１】
ここで、例えば、リリース開始間もない場合であったとする。そうすると、リリース波形は減衰し切れていないから、上記ステップＳＫ２９の判断結果は「ＮＯ」となり、上述したステップＳＫ１７を経てループ回数カウンタ値を１インクリメントして歩進させて本ルーチンを完了する。
そして、以後、ループ処理が所定回数巡回し、これに応じてリリースレートＩで逐次減衰するリリース波形を発生している過程において、リリース期間が前述の波形周期を超えると、上述したステップＳＫ２７の判断結果が「ＹＥＳ」となり、ステップＳＫ２８に処理を進め、レジスタＲＡＤにアドレスＡＤ４をセットする。
【０１０２】
次いで、ステップＳＫ２９においてリリーススレッシュ値Ｈが「０」になると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＫ３０に処理を進め、フラグＲＦを「０」にセットした後、ステップＳＫ１７を経てループ回数カウンタ値を歩進させ、このルーチンを完了する。
こうしてリリース波形発生が完了してから本ルーチンが実行されると、前述したステップＳＫ１の判断結果が「ＮＯ」となり、ステップＳＫ１１を介してステップＳＫ２２に進むが、この場合、フラグＲＦは「０」だから、ここでの判断結果は「ＮＯ」となり、ステップＳＫ１９に進み、出力レベルを「０」として波形出力を止め、次のステップＳＫ１７においてループ回数カウンタ値を歩進させた後、本ルーチンを完了する。
【０１０３】
このように、第２実施例による波形発生処理ルーチンでは、ＤＳＰ９の内部ＲＯＭに複数の波形情報を記憶しておき、入力波形のピーク（ボトム）を検出する毎に、検出した波形ピーク（ボトム）の種類に対応する開始波形および終了波形を、ＣＰＵ２から供給される読み出しアドレスに応じて内部ＲＯＭから読み出し、これら開始波形および終了波形をループ巡回回数に応じて内挿補間してなる出力波形を生成する。そして、生成された出力波形（楽音波形）は、入力波形のレベルがリリーススレッシュ値Ｈ以下になった時点で、その直前にサンプリングした波形データを、周期検出にて求めた波形周期で繰り返し再生しながら、与えられたリリースレートで減衰させるリリース波形に置き換えられるようになっている。
【０１０４】
以上のように、本発明による波形発生装置によれば、入力波形の傾きが変化する波形ピーク／ボトムポイント毎に、与えられたパラメータに応じた形状の波形を順次発生して新たな連続波形を形成するので、入力波形の微妙な変化が反映された楽音波形を生成し得る。
したがって、この波形発生装置では、従来のように、ピッチ抽出する必要がない為、発音遅延を起こしたり、発音音高を誤検出するといった不具合を解消できる上、入力波形の微妙な変化を楽音波形に付与し得るので、豊かな音楽表現力や演奏効果を実現できる。しかも、入力楽器を演奏することで生成される楽音波形を制御することになるため、従来には無い新規な楽器形態をも実現できる。
【０１０５】
なお、上述した第１および第２実施例は、いずれも本発明の波形発生装置を、楽音制御装置に適用した場合について説明したが、本発明の要旨はこれに限定されず、電子楽器などのエフェクタとしても有用である。つまり、楽器内部の音源から出力される楽音波形を、本発明における波形発生装置への入力と見做せば、この音源の出力の変化が反映された新たな波形を発生でき、あたかも効果付与する形態となる訳である。要するに、本発明の要旨は、与えられた入力波形の傾向を取り込んで新たな波形を発生する形態であれば、いかなる装置にも適用し得る。
【０１０６】
【発明の効果】
本発明によれば、波形変化検出手段によって外部から供給される入力波形の傾きが増加から減少、若しくは減少から増加に変化する波形変化点が検出されると共に、その波形変化点の変化形態が判別され、条件設定手段が発生すべき波形形状を指定する波形発生条件を、前記変化形態の種類別に設定すると、パルス発生手段は波形変化点の変化形態に対応付けられた波形発生条件に従ってパルス波形を発生し、このパルス波形に対して前記波形発生条件に応じたフィルタリングを施して前記出力波形を形成するので、従来のように、ピッチ抽出する必要がない為、発音遅延を起こしたり、発音ピッチを誤検出するといった不具合を解消できる。また、入力波形の微妙な変化を出力波形に付与し得るので、豊かな音楽表現力や演奏効果を実現できる。しかも、入力楽器を演奏することで生成される入力波形により出力波形を制御する形になるため、従来には無い新規な楽器形態を実現することができる。
【図面の簡単な説明】
【図１】本発明の第１実施例である楽音制御装置の構成を示すブロック図である。
【図２】同実施例におけるＤＳＰ９のピーク検出処理を説明するための図である。
【図３】ＤＳＰ９におけるアタック検出処理を説明するための図である。
【図４】ＤＳＰ９におけるアタック検出処理を説明するための図である。
【図５】ＤＳＰ９におけるアタック検出処理を説明するための図である。
【図６】ＤＳＰ９における波形発生処理を説明するための図である。
【図７】ＤＳＰ９における波形発生処理を説明するための図である。
【図８】ＤＳＰ９における波形発生処理を説明するための図である。
【図９】ＤＳＰ９における波形発生処理を説明するための図である。
【図１０】ＤＳＰ９における波形発生処理を説明するための図である。
【図１１】ＤＳＰ９における波形発生処理（リリース波形発生）を説明するための図である。
【図１２】第１実施例におけるワークＲＡＭ１０のメモリ構成を説明するためのメモリマップである。
【図１３】第１実施例におけるワークＲＡＭ１０のメモリ構成を説明するためのメモリマップである。
【図１４】第１実施例におけるワークＲＡＭ１０のメモリ構成を説明するためのメモリマップである。
【図１５】第１実施例におけるＣＰＵ２のパラメータ送出タスクを説明するためのフローチャートである。
【図１６】第１実施例におけるＤＳＰ９のメインルーチンの動作を示すフローチャートである。
【図１７】第１実施例におけるＤＳＰ９のＣＰＵ交信処理ルーチンの動作を示すフローチャートである。
【図１８】第１実施例におけるＤＳＰ９の波形取り込み処理ルーチンの動作を示すフローチャートである。
【図１９】第１実施例におけるＤＳＰ９のピーク検出処理ルーチンの動作を示すフローチャートである。
【図２０】第１実施例におけるＤＳＰ９のアタック（Ｉ）検出処理ルーチンの動作を示すフローチャートである。
【図２１】第１実施例におけるＤＳＰ９のアタック（II）検出処理ルーチンの動作を示すフローチャートである。
【図２２】第１実施例におけるＤＳＰ９の周期検出および周期波形記憶処理ルーチンの動作を示すフローチャートである。
【図２３】第１実施例におけるＤＳＰ９の波形発生処理ルーチンの動作を示すフローチャートである。
【図２４】第１実施例におけるＤＳＰ９の波形発生処理ルーチンの動作を示すフローチャートである。
【図２５】第２実施例におけるワークＲＡＭ１０のメモリ構成を説明するためのメモリマップである。
【図２６】第２実施例によるＤＳＰ９の波形発生処理を説明するための図である。
【図２７】第２実施例によるＤＳＰ９の波形発生処理を説明するための図である。
【図２８】第２実施例によるＤＳＰ９の波形発生処理を説明するための図である。
【図２９】第２実施例におけるＤＳＰ９の波形発生処理ルーチンの動作を示すフローチャートである。
【図３０】第２実施例におけるＤＳＰ９の波形発生処理ルーチンの動作を示すフローチャートである。
【符号の説明】
１  制御部
２  ＣＰＵ（条件設定手段）
３  ＲＡＭ（条件設定手段）
４  ＲＯＭ（条件設定手段）
５  操作部（条件設定手段）
６  音源部
７  ＬＰＦ
８  Ａ／Ｄ変換器（波形変化検出手段）
９  ＤＳＰ（波形変化検出手段、波形出力手段）
１０  ワークＲＡＭ
１１  Ｄ／Ａ変換器（波形出力手段）
１２  出力回路（波形出力手段）
【図１】
0003671407.tif 000002
【図２】
0003671407.tif 000003
【図３】
0003671407.tif 000004
【図４】
0003671407.tif 000005
【図５】
0003671407.tif 000006
【図６】
0003671407.tif 000007
【図７】
0003671407.tif 000008
【図８】
0003671407.tif 000009
【図９】
0003671407.tif 000010
【図１０】
0003671407.tif 000011
【図１１】
0003671407.tif 000012
【図１２】
0003671407.tif 000013
【図１３】
0003671407.tif 000014
【図１４】
0003671407.tif 000015
【図１５】
0003671407.tif 000016
【図１６】
0003671407.tif 000017
【図１７】
0003671407.tif 000018
【図１８】
0003671407.tif 000019
【図１９】
0003671407.tif 000020
【図２０】
0003671407.tif 000021
【図２１】
0003671407.tif 000022
【図２２】
0003671407.tif 000023
【図２３】
0003671407.tif 000024
【図２４】
0003671407.tif 000025
【図２５】
0003671407.tif 000026
【図２６】
0003671407.tif 000027
【図２７】
0003671407.tif 000028
【図２８】
0003671407.tif 000029
【図２９】
0003671407.tif 000030
【図３０】
0003671407.tif 000031