(57)【特許請求の範囲】
【請求項１】
発音指示された楽音の基音周波数を初期カットオフ周波数に設定し、この初期カットオフ周波数を起点に経時変化するカットオフ特性を表すＤＣＦエンベロープを発生するＤＣＦエンベロープ発生手段と、
経時変化するＤＣＦエンベロープが前記初期カットオフ周波数に収束した時点で、この初期カットオフ周波数にて経時変化する共振深さを表すレゾナンスエンベロープを発生するレゾナンスエンベロープ発生手段と、
発音指示に応じて生成される波形に対し、前記ＤＣＦエンベロープに対応したカットオフ特性でフィルタリングを施して楽音を形成する一方、この形成された楽音に対し、前記レゾナンスエンベロープに対応した共振深さのフィルタリングを施して前記基音周波数を強調するフィルタ手段と
を具備することを特徴とする楽音発生装置。
【請求項２】
前記レゾナンスエンベロープ発生手段は、指定された音高に対応したキースケール係数を発生するキースケール発生手段を備え、発生すべき楽音の音高が指定された場合、その音高に対応して前記キースケール発生手段が発生するキースケール係数を用いて前記レゾナンスエンベロープをキースケーリングすることを特徴とする請求項１記載の楽音発生装置。
【請求項３】
請求項１記載の楽音発生装置において、前記レゾナンスエンベロープに対応した共振深さのフィルタリングにより生じる音量変化を相殺する逆特性に従って前記フィルタ手段が出力する楽音の音量を制御する音量制御手段を具備することを特徴とする請求項１記載の楽音発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル制御フィルタ（以下、ＤＣＦと記す）を用いて楽音を発生する楽音発生装置に関する。
【０００２】
【従来の技術】
従来より、与えられたフィルタ係数に対応して所望のフィルタ特性を具現するデジタル制御フィルタ（ＤＣＦ）を備えた楽音発生装置が知られている。この種の装置では、ＤＣＦのカットオフ周波数を経時変化させることによって、発生する楽音のエンベロープを制御したり、カットオフ周波数付近に共振点を与え、その共振点近傍の周波数帯域における信号レベルを強調するようにしたレゾナンス制御を行うように構成されている。
【０００３】
【発明が解決しようとする課題】
ところで、ＤＣＦを搭載する楽音発生装置では、ＤＣＦのカットオフ周波数を経時変化させるエンベロープ制御を施しながら、カットオフ周波数近傍の信号レベルを強調するレゾナンス制御を同時に施すと、強調される周波数帯域が経時変化することによって、発生する楽音の基音や倍音成分が非調和な関係になる。この為、自然楽器では得難い人工的な音色変化を備えた、所謂シンセサイズ音を発生する際には好都合となる反面、自然楽器のような音色変化を得ることが出来ない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、自然楽器のような音色変化を得ることができる楽音発生装置を提供することを目的としている。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、発音指示された楽音の基音周波数を初期カットオフ周波数に設定し、この初期カットオフ周波数を起点に経時変化するカットオフ特性を表すＤＣＦエンベロープを発生するＤＣＦエンベロープ発生手段と、経時変化するＤＣＦエンベロープが前記初期カットオフ周波数に収束した時点で、この初期カットオフ周波数にて経時変化する共振深さを表すレゾナンスエンベロープを発生するレゾナンスエンベロープ発生手段と、発音指示に応じて生成される波形に対し、前記ＤＣＦエンベロープに対応したカットオフ特性でフィルタリングを施して楽音を形成する一方、この形成された楽音に対し、前記レゾナンスエンベロープに対応した共振深さのフィルタリングを施して前記基音周波数を強調するフィルタ手段とを具備することを特徴とする。
【０００５】
上記請求項１に従属する請求項２に記載の発明によれば、前記レゾナンスエンベロープ発生手段は、指定された音高に対応したキースケール係数を発生するキースケール発生手段を備え、発生すべき楽音の音高が指定された場合、その音高に対応して前記キースケール発生手段が発生するキースケール係数を用いて前記レゾナンスエンベロープをキースケーリングすることを特徴としている。
【０００７】
さらに、上記請求項１に従属する請求項３に記載の発明によれば、前記レゾナンスエンベロープに対応した共振深さのフィルタリングにより生じる音量変化を相殺する逆特性に従って前記フィルタ手段が出力する楽音の音量を制御する音量制御手段を具備することを特徴とする。
【０００８】
本発明では、発音指示に応じて生成される波形に対し、発音指示された楽音の基音周波数を初期カットオフ周波数とし、これを起点に経時変化するカットオフ特性を表すＤＣＦエンベロープに対応したフィルタリングを施して楽音を形成する一方、この形成された楽音に対し、前記ＤＣＦエンベロープが初期カットオフ周波数に収束した時点から、この初期カットオフ周波数で経時変化する共振深さを表すレゾナンスエンベロープに対応したフィルタリングを施すことによって、その楽音の基音周波数を強調するようにしたので、基音成分と倍音成分とが調和した自然楽器のような音色変化を得ることが可能になる。
【０００９】
【発明の実施の形態】
本発明による楽音発生装置は、周知の電子楽器の他、パーソナルコンピュータを用いたＤＴＭ装置などに適用される。以下では、本発明による楽音発生装置を適用した電子楽器を実施例とし、これについて図面を参照して説明する。
【００１０】
（１）構成
図１は、本発明による実施例の構成を示すブロック図である。この図において、１は装置パネルに配設されるパネルスイッチ群であり、各スイッチ操作に応じたスイッチイベント信号を発生する。このパネルスイッチ群１には、電源をオンオフする電源スイッチの他、音色を指定する音色スイッチ等が設けられている。２は押離鍵操作（演奏操作）に応じたキーオン／キーオフ信号および鍵番号（キーナンバ）、ベロシティ等からなる演奏情報を発生する鍵盤である。３はＬＣＤパネル等から構成される表示部であり、後述するＣＰＵ４から供給される表示制御信号に応じて楽器各部の設定状態や動作モード等を表示する。
【００１１】
ＣＰＵ４は、パネルスイッチ群１で行われるスイッチ操作に応じて発生するスイッチイベントに基づき楽器各部の動作状態を設定したり、演奏情報に応じた楽音パラメータ（例えば、発音指示コマンドや消音指示コマンド等）を生成して音源７に送出する。５はプログラムエリアとデータエリアとを備えるＲＯＭである。ＲＯＭ５のプログラムエリアには、上記ＣＰＵ４にロードされる各種制御プログラムが記憶される。また、ＲＯＭ５のデータエリアには、ＤＣＦエンベロープデータおよびレゾナンスエンベロープデータが格納される。
【００１２】
ＤＣＦエンベロープデータは、ＤＣＦエンベロープの各波形フェーズ（アタック、ディケイ、サステインおよびリリース）毎の周波数レベルＦ  ＬＥＶＥＬおよび周波数レートＦ  ＲＡＴＥから構成される。
例えば、図２に図示するＤＣＦエンベロープの一例の場合、図３および図４に図示するように、アタックフェーズでは周波数レートＦ  ＲＡＴＥ（１）で周波数レベルＦ  ＬＥＶＥＬ（１）まで増加し、続くディケイフェーズでは周波数レートＦ  ＲＡＴＥ（２）で周波数レベルＦ  ＬＥＶＥＬ（２）まで減少した後、サステインフェーズおよびリリースフェーズでは周波数レートＦ  ＲＡＴＥ、周波数レベルＦ  ＬＥＶＥＬ共に「０」を維持する特性となる。
【００１３】
レゾナンスエンベロープデータは、レゾナンスエンベロープの各波形フェーズ（アタック、ディケイ、サステインおよびリリース）毎のレゾナンスレベルＲＥＳ  ＬＥＶＥＬおよびレゾンナンスレートＲＥＳ  ＲＡＴＥから構成される。
例えば、図５に図示するレゾナンスエンベロープの一例の場合、図６および図７に図示するように、アタックフェーズではレゾンナンスレートＲＥＳ  ＲＡＴＥ（１）でレゾナンスレベルＲＥＳ  ＬＥＶＥＬ（１）まで増加し、続くディケイフェーズ〜リリースフェーズではレゾンナンスレートＲＥＳ  ＲＡＴＥ（２）〜（４）を「０」として一定値「Ｂ」のレゾナンスレベルＲＥＳ  ＬＥＶＥＬ（２）〜（４）を維持する特性となる。
【００１４】
次に、再び図１を参照して実施例の構成について説明を進める。図１において、６はＣＰＵ４のワークエリアとして用いられ、各種レジスタ・フラグデータを一時記憶するＲＡＭである。７はＤＣＯ７ａ、波形メモリ７ｂ、ＤＣＦ７ｃおよびＤＣＡ７ｄから構成される音源である。ＤＣＯ（デジタル制御発振器）７ａは、発生すべき楽音の音高に対応した読み出し位相を発生する。波形メモリ７ｂは、ＤＣＯ７ａから供給される読み出し位相に従って指定音色の波形データＷＤを読み出す。
【００１５】
ＤＣＦ７ｃは、上述したＤＣＦエンベロープデータおよびレゾナンスエンベロープデータに従って、波形メモリ７ｂが発生する波形データＷＤについてエンベロープ制御およびレゾンナンス制御を施して楽音波形ＷＡＶＥを形成する。ＤＣＡ（デジタル制御増幅器）７ｄは、ＤＣＦ７ｃが形成した楽音波形ＷＡＶＥの出力レベル（振幅値）を制御する。８は音源７が発生する楽音波形ＷＡＶＥをアナログ波形信号に変換して不要ノイズを除去する等のフィルタリングを施した後、これを増幅してスピーカＳＰから発音させるサウンドシステムである。
【００１６】
（２）動作
次に、上記構成による実施例の動作について説明する。以下では、最初に図８を参照してＣＰＵメインルーチンの動作について説明した後、図９〜図２０を参照して音源７側で実行される各種ルーチンの動作について説明する。
【００１７】
▲１▼ＣＰＵメインルーチンの動作
まず、上記構成による実施例に電源が投入されると、ＣＰＵ４はＲＯＭ５のプログラム記憶エリアから所定の制御プログラムを読み出して自身にロードし、図８に示すメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ６に格納される各種レジスタやフラグ類をリセットしたり初期値をセットするイニシャライズを行う。また、このステップＳＡ１では、音源７に対して各種レジスタやフラグ類を初期化するよう指示する。イニシャライズ完了後、ＣＰＵ４はステップＳＡ２に処理を進め、パネルスイッチ群１が発生するスイッチイベントに対応したスイッチ処理を実行する。
【００１８】
スイッチ処理完了後、ステップＳＡ３に進むと、キーイベントを検出する鍵走査を行い、この鍵走査の結果に基づき鍵変化を判別する。ここで、キーイベントが発生していない時、つまり、鍵操作されていない場合には何も処理せずに上述のステップＳＡ２に処理を戻すが、押鍵操作に応じたキーオンイベントが発生すると、ステップＳＡ４に処理を進め、押鍵された鍵の鍵番号をレジスタＮＯＴＥ（以下、鍵番号ＮＯＴＥと記す）にストアする。
次いで、ステップＳＡ５では、押鍵操作に対応して発生するベロシティをレジスタＶＥＬ（以下、ベロシティＶＥＬと記す）にストアする。そして、ステップＳＡ６では押鍵された鍵の音高の楽音を発音させるべく、鍵番号ＮＯＴＥおよびベロシティＶＥＬを含む発音指示コマンドを音源７に送出した後、上記ステップＳＡ２に処理を戻す。
【００１９】
一方、離鍵操作に応じたキーオフイベントが発生した場合には、ステップＳＡ７に処理を進め、離鍵された鍵の鍵番号をレジスタＮＯＴＥにセットし、続くステップＳＡ８では、ベロシティＶＥＬをゼロリセットする。そして、ステップＳＡ９では離鍵された鍵の音高の楽音を消音させるべく、鍵番号ＮＯＴＥおよびベロシティＶＥＬを含む消音指示コマンドを音源７に送出してから上記ステップＳＡ２に処理を戻す。
【００２０】
▲２▼音源７側の動作
次に、図９〜図２０を参照し、音源７側にて実行される各種ルーチンの動作について説明する。以下では、最初に音源７の全体動作を示す音源メインルーチンの動作について言及した後、この音源メインルーチンからコールされる「ＥＮＶＳＴＡＲＴ処理」、「ＤＣＦ  ＥＮＶ  ＳＴＡＲＴ処理」、「ＩＮＴ１処理」、「ＤＣＦ  ＥＮＶ処理」、「ＲＥＳ  ＥＮＶ  ＳＴＡＲＴ処理」、「ＲＥＳ  ＥＮＶ処理」、「ＤＣＦ処理」、「ＤＣＡ処理」、「ＲＥＬＥＡＳＥ処理」、「ＤＣＦ  ＲＥＬＥＡＳＥ処理」および「ＲＥＳ  ＲＥＬＥＡＳＥ処理」の各動作について述べて行く。
【００２１】
（ａ）音源メインルーチンの動作
音源７では電源投入と同時に音源メインルーチンを実行し、図４に示すステップＳＢ１に処理を進め、ＣＰＵ４側からのコマンドを受信したか否かを判断する。そして、例えば発音指示コマンドを受信した場合には、ステップＳＢ１，ＳＢ２の判断結果が共に「ＹＥＳ」となり、ステップＳＢ３に処理を進め、ＥＮＶ  ＳＴＡＲＴ処理を実行する。
このＥＮＶ  ＳＴＡＲＴ処理では、発音指示コマンドに含まれる鍵番号ＮＯＴＥおよびベロシティＶＥＬに対応した楽音波形ＷＡＶＥを形成すべく、エンベロープ制御を開始させる一連の処理から構成されており、その詳細については追って述べる。
【００２２】
ＥＮＶ  ＳＴＡＲＴ処理完了後、音源７はステップＳＢ４に処理を進め、フラグＯＮＦを「１」にセットして発音状態を表す。フラグＯＮＦが「１」にセットされ、発音状態になると、次のステップＳＢ５の判断結果は「ＹＥＳ」となり、ステップＳＢ６〜ＳＢ７を経て楽音波形ＷＡＶＥを形成する。
すなわち、ステップＳＢ６では、前述したＤＣＯ７ａが発生する読み出し位相に応じて波形メモリ７ｂから指定音色の波形データＷＤを読み出すＤＣＯ処理を実行する。続いて、ステップＳＢ７では、後述するＤＣＦエンベロープ現在値およびレゾナンスエンベロープ現在値に基づいたフィルタリング（エンベロープ制御およびレゾンナンス制御）を波形データＷＤに施して楽音波形ＷＡＶＥを発生するＤＣＦ処理（後述する）を実行する。そして、ステップＳＢ８では、楽音波形ＷＡＶＥの出力レベルを制御するＤＣＡ処理（後述する）を実行する。
【００２３】
このようにして、楽音波形ＷＡＶＥが形成されると、音源７では上述したステップＳＢ１に処理を戻し、次のコマンド受信の有無を判断する。そして、ノートオフを指示する消音指示コマンドを受信すると、ステップＳＢ２を介してステップＳＢ９に処理を進め、ここでの判断結果が「ＹＥＳ」となり、後述するＲＥＬＥＡＳＥ処理を実行した後、上述したステップＳＢ５に処理を進める。
なお、発生楽音の音色を変更する等の、ノートオン／ノートオフ以外のコマンドを受信した場合には、ステップＳＢ２，ＳＢ９の判断結果がいずれも「ＮＯ」となり、この場合、ステップＳＢ１１に進み、受信したコマンドに対応したその他の処理を実行し、その後にステップＳＢ１に処理を戻す。
【００２４】
（ｂ）ＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作
次に、図１０を参照してＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作について説明する。上述したように、発音指示コマンドを受信してステップＳＢ３に進むと、図１０に示すＥＮＶ  ＳＴＡＲＴ処理ルーチンを実行してステップＳＣ１に処理を進める。ステップＳＣ１では、発音指示コマンドに含まれる鍵番号ＮＯＴＥに対応した読み出し位相を発生させる為のＤＣＯエンベロープをスタートさせる。次いで、ステップＳＣ２では、ＤＣＦエンベロープデータに基づきＤＣＦエンベロープをスタートさせるＤＣＦ  ＥＮＶ  ＳＴＡＲＴ処理を実行する。
【００２５】
（ｃ）ＤＣＦ  ＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作
すなわち、ステップＳＣ２を介して図１１に示すＤＣＦ  ＥＮＶ  ＳＴＡＲＴ処理が実行されると、音源７はステップＳＤ１に処理を進め、ＤＣＦエンベロープ現在値を保持するレジスタＦ  ＣＮＴに初期値ＩＦをセットする。なお、この初期値ＩＦとは、鍵番号ＮＯＴＥに対応した音高で発音される楽音の基音周波数をカットオフ周波数に設定する値である。
続いて、ステップＳＤ２では、ＤＣＦエンベロープにおける波形フェーズを表すフラグ値を保持するレジスタＦ  ＰＨＡＳＥに「１」（アタックフェーズを表す）をセットする。次に、ステップＳＤ３では、レジスタＦ  ＰＨＡＳＥのフラグ値に従って、アタックフェーズの周波数レベルＦ  ＬＥＶＥＬをＲＯＭ５から読み出してレジスタＦ  ＬＥＶＥＬにセットする。次いで、ステップＳＤ４では、レジスタＦ  ＰＨＡＳＥのフラグ値に従ってアタックフェーズの周波数レートＦ  ＲＡＴＥをＲＯＭ５から読み出してレジスタＦ  ＲＡＴＥにセットする。
【００２６】
こうして、ＤＣＦエンベロープ発生に必要な初期パラメータをセットし終えると、音源７は図１０に示すステップＳＣ３に処理を戻し、楽音波形ＷＡＶＥの出力レベル制御に必要なパラメータ（ＤＣＡエンベロープ）をＤＣＡ７ｄにセットする。この後、ステップＳＣ４に処理を進め、後述するＩＮＴ１処理を実行させるべくタイマ割込みの禁止を解除して本ルーチンを完了する。
【００２７】
（ｄ）ＩＮＴ１処理ルーチンの動作
上記ステップＳＣ４（図１０参照）にてタイマ割込みの禁止が解除されると、音源７では図１２に示すＩＮＴ１処理ルーチンが所定周期毎にタイマ割込み実行される。
ＩＮＴ１処理ルーチンでは、ステップＳＥ１にてＤＣＯエンベロープを、ステップＳＥ２にてＤＣＦエンベロープを、ステップＳＥ３にてＤＣＡエンベロープを、ステップＳＥ４にてリリースエンベロープをそれぞれ進行させる。以下、本発明の要旨に係わるＤＣＦ  ＥＮＶ処理ルーチンの動作およびＲＥＳ  ＥＮＶ処理ルーチンの動作について述べる。
【００２８】
（ｅ）ＤＣＦ  ＥＮＶ処理ルーチンの動作
上記ステップＳＥ２を介して図１３に示すＤＣＦ  ＥＮＶ処理ルーチンが実行されると、音源７はステップＳＦ１に処理を進め、レジスタＦ  ＲＡＴＥに格納される周波数レート（以下、周波数レートＦＲＡＴＥと記す）が「０」でないかどうかを判断する。ここで、周波数レートＦＲＡＴＥが「０」であると、ＤＣＦエンベロープは収束した状態であるから、エンベロープ生成する必要がなくなり、この場合、判断結果が「ＮＯ」となり、本ルーチンを完了させる。
【００２９】
一方、周波数レートＦＲＡＴＥが「０」でないならば、ＤＣＦエンベロープを生成する必要があるので、上記ステップＳＦ１の判断結果は「ＹＥＳ」となり、ステップＳＦ２に処理を進める。ステップＳＦ２では、レジスタＦ  ＣＮＴに格納されるＤＣＦエンベロープ現在値に、周波数レートＦ  ＲＡＴＥを加算した結果を再びレジスタＦ  ＣＮＴに格納するレート加算を行い、続くステップＳＦ３ではこのレート加算されたＤＣＦエンベロープ現在値が、レジスタＦ  ＬＥＶＥＬに格納される周波数レベル（以下、周波数レベルＦＬＥＶＥＬと記す）に一致するか否かを判断する。
【００３０】
ここで、レート加算されたＤＣＦエンベロープ現在値が周波数レベルＦ  ＬＥＶＥＬに達していない場合には、判断結果は「ＮＯ」となり、一旦、本ルーチンを完了させる。
これに対し、レート加算されたＤＣＦエンベロープ現在値が周波数レベルＦ  ＬＥＶＥＬに達した場合には、判断結果が「ＹＥＳ」となり、ステップＳＦ４に処理を進め、レジスタＦ  ＰＨＡＳＥのフラグ値を１インクリメントして歩進させる。次いで、ステップＳＦ５では、歩進されたフラグ値が「５」、つまり、リリースフェーズを超えたかどうかを判断する。リリースフェーズを超えた場合には、判断結果が「ＹＥＳ」となり、ステップＳＦ６に進み、周波数レートＦ  ＲＡＴＥをゼロリセットして本ルーチンを完了させる。
【００３１】
一方、リリースフェーズを超えていない場合には、上記ステップＳＦ５の判断結果は「ＮＯ」となり、ステップＳＦ７に処理を進める。ステップＳＦ７では、歩進されたフラグ値が「３」、つまり、サステインフェーズであるかどうかを判断する。  サステインフェーズでない場合には、判断結果が「ＮＯ」となり、ステップＳＦ９に処理を進め、歩進されたレジスタＦ  ＰＨＡＳＥのフラグ値に対応した波形フェーズの周波数レベルＦ  ＬＥＶＥＬをＲＯＭ５から読み出してレジスタＦ  ＬＥＶＥＬにセットする。次いで、ステップＳＦ１０では、歩進されたレジスタＦ  ＰＨＡＳＥのフラグ値に対応した波形フェーズの周波数レートＦＲＡＴＥをＲＯＭ５から読み出してレジスタＦＲＡＴＥにセットした後、本ルーチンを完了させる。
【００３２】
（ｆ）ＲＥＳ  ＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作
これに対し、歩進されたフラグ値が「３」となり、サステインフェーズになった場合には、上記ステップＳＦ７の判断結果は「ＹＥＳ」となり、ステップＳＦ８を介して図１４に示すＲＥＳ  ＥＮＶ  ＳＴＡＲＴ処理ルーチンを実行し、ステップＳＧ１に処理を進める。
ステップＳＧ１では、レゾナンスエンベロープにおける波形フェーズを表すフラグ値を保持するレジスタＲＥＳ  ＰＨＡＳＥに「１」（アタックフェーズを表す）をセットし、続くステップＳＧ２では、レゾナンスエンベロープ現在値を保持するレジスタＲＥＳ  ＣＮＴに初期値Ａをセットする。
【００３３】
次いで、ステップＳＧ３では、レジスタＲＥＳ  ＰＨＡＳＥのフラグ値に対応して、アタックフェーズにおけるレゾナンスレベルＲＥＳ  ＬＥＶＥＬをＲＯＭ５から読み出してレジスタＲＥＳ  ＬＥＶＥＬにセットする。次いで、ステップＳＧ４では、レジスタＲＥＳ  ＰＨＡＳＥのフラグ値に従って、アタックフェーズにおけるレゾナンスレートＲＥＳ  ＲＡＴＥをＲＯＭ５から読み出してレジスタＲＥＳ  ＲＡＴＥにセットする。そして、ステップＳＧ５では、レゾナンスエンベロープの発生開始を表すべく、レジスタＲＥＳ  Ｆに「１」をセットする。こうして、レゾナンスエンベロープデータをセットし終えると、音源７は上述したステップＳＦ９，ＳＦ１０（図１３参照）を実行してからＤＣＦ  ＥＮＶ処理ルーチンを完了させる。
【００３４】
（ｇ）ＲＥＳ  ＥＮＶ処理ルーチンの動作
ＩＮＴ１処理ルーチンのステップＳＥ４（図１２参照）を介して図１５に示すＲＥＳ  ＥＮＶ処理ルーチンが実行されると、音源７はステップＳＨ１に処理を進め、レジスタＲＥＳ  Ｆのフラグ値が「１」、つまり、ＤＣＦエンベロープがサステインフェーズに入ったのに同期してレゾナンスエンベロープがスタートしたかどうかを判断する。ここで、レジスタＲＥＳ  Ｆのフラグ値が「１」でない場合、レゾナンスエンベロープはスタートしていないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
【００３５】
一方、レジスタＲＥＳ  Ｆのフラグ値が「１」にセットされ、レゾナンスエンベロープがスタートしている場合には、上記ステップＳＨ１の判断結果は「ＹＥＳ」となり、ステップＳＨ２に処理を進める。ステップＳＨ２では、レジスタＲＥＳ  ＲＡＴＥに格納されるレゾナンスレート（以下、レゾナンスレートＲＥＳ
ＲＡＴＥと記す）が「０」でないかどうかを判断する。
ここで、レゾナンスレートＲＥＳ  ＲＡＴＥが「０」であると、レゾナンスエンベロープは収束した状態であるから、エンベロープ生成する必要がなくなり、この場合、判断結果が「ＮＯ」となり、本ルーチンを完了させる。
【００３６】
これに対し、レゾナンスレートＲＥＳ  ＲＡＴＥが「０」でないならば、上記ステップＳＨ２の判断結果は「ＹＥＳ」となり、次のステップＳＨ３に処理を進める。ステップＳＨ３では、レジスタＲＥＳ  ＣＮＴに格納されるレゾナンスエンベロープ現在値にレゾナンスレートＲＥＳ  ＲＡＴＥを加算した結果を再びレジスタＲＥＳＣＮＴに格納するレート加算を行い、続くステップＳＨ４ではこのレート加算されたレゾナンスエンベロープ現在値が、レジスタＲＥＳ  ＬＥＶＥＬに格納されるレゾナンスレベル（以下、レゾナンスレベルＲＥＳ  ＬＥＶＥＬと記す）に一致するか否かを判断する。
【００３７】
ここで、レート加算されたレゾナンスエンベロープ現在値がレゾナンスレベルＲＥＳ  ＬＥＶＥＬに達していない場合には、判断結果は「ＮＯ」となり、一旦、本ルーチンを完了させる。
一方、レート加算されたレゾナンスエンベロープ現在値がレゾナンスレベルＲＥＳ  ＬＥＶＥＬに達した場合には、判断結果が「ＹＥＳ」となり、ステップＳＨ５に処理を進め、レジスタＲＥＳ  ＰＨＡＳＥのフラグ値を１インクリメントして歩進させる。次いで、ステップＳＨ６では、歩進されたフラグ値が「５」、つまり、リリースフェーズを超えたかどうかを判断する。
【００３８】
リリースフェーズを超えた場合には、判断結果が「ＹＥＳ」となり、ステップＳＨ７に進み、レゾナンスレートＲＥＳ  ＲＡＴＥをゼロリセットして本ルーチンを完了させる。
一方、リリースフェーズを超えていない場合には、上記ステップＳＨ６の判断結果は「ＮＯ」となり、ステップＳＨ８に処理を進める。ステップＳＨ８では、歩進されたレジスタＲＥＳ  ＰＨＡＳＥのフラグ値に対応した波形フェーズのレゾナンスレベルＲＥＳ  ＬＥＶＥＬをＲＯＭ５から読み出してレジスタＲＥＳ  ＬＥＶＥＬにセットする。次いで、ステップＳＨ９では、歩進されたレジスタＲＥＳ  ＰＨＡＳＥのフラグ値に対応した波形フェーズのレゾナンスレートＲＥＳＲＡＴＥをＲＯＭ５から読み出してレジスタＲＥＳ  ＲＡＴＥにセットした後、本ルーチンを完了させる。
【００３９】
（ｈ）ＤＣＦ処理ルーチンの動作
前述した音源メインルーチンのステップＳＢ７（図９参照）を介して図１６に示すＤＣＦ処理ルーチンが実行されると、音源７はステップＳＪ１に処理を進め、レジスタＦ  ＣＮＴに格納されるＤＣＦエンベロープ現在値に対応したカットオフ特性を具現するフィルタ係数を算出し、続くステップＳＪ２では、レジスタＲＥＳ  ＣＮＴに格納されるレゾナンスエンベロープ現在値に対応した共振特性を具現するフィルタ係数を算出する。そして、ステップＳＪ３では、これら算出した各フィルタ係数に対応したフィルタリング（エンベロープ制御およびレゾナンス制御）を波形データＷＤに施し、これにて形成される楽音波形ＷＡＶＥを、ステップＳＪ４にて次段（ＤＣＡ７ｄ）へ出力する。
【００４０】
（ｉ）ＤＣＡ処理ルーチンの動作
前述した音源メインルーチンのステップＳＢ８（図９参照）を介して図１７に示すＤＣＡ処理ルーチンが実行されると、音源７はステップＳＫ１に処理を進め、レジスタＡ  ＰＨＡＳＥのフラグ値が「４」、すなわち、ＤＣＡエンベロープがリリース状態にあるか否かを判断する。
ここで、ＤＣＡエンベロープがリリース状態でなければ、判断結果は「ＮＯ」となり、後述するステップＳＫ５に処理を進めるが、リリース状態にあると、判断結果が「ＹＥＳ」となり、ステップＳＫ２に処理を進める。
なお、上記レジスタＡ  ＰＨＡＳＥのフラグ値とは、図示されていないＤＣＡＥＮＶ処理にてＤＣＡエンベロープの進行に応じて歩進されるようになっている。
【００４１】
ＤＣＡエンベロープがリリース状態であると、ステップＳＫ２に処理を進め、ＤＣＡエンベロープ現在値を保持するレジスタＡ  ＣＮＴの値が「０」以下、つまり、ＤＣＡエンベロープが収束するキーオフ状態であるか否かを判断する。キーオフ状態でなければ、判断結果は「ＮＯ」となり、後述するステップＳＫ５に処理を進めるが、キーオフ状態であると、判断結果が「ＹＥＳ」となり、次のステップＳＫ３に処理を進める。
なお、レジスタＡ  ＣＮＴに格納されるＤＣＡエンベロープ現在値とは、図示されていないＤＣＡ  ＥＮＶ処理にてＤＣＡエンベロープを形成する過程で算出される値である。
【００４２】
そして、ステップＳＫ３に進むと、フラグＯＮＦをゼロリセットしてキーオフ状態に設定し、続くステップＳＫ４では、フラグＲＥＳ  Ｆをゼロセットする。次いで、ステップＳＫ５では、レジスタＡ  ＣＮＴに格納されるＤＣＡエンベロープ現在値に応じて入力信号（楽音波形ＷＡＶＥ）の振幅レベルを制御し、その結果をステップＳＫ６にて出力する。
なお、ステップＳＫ５におけるレベル制御の一態様としては、レゾナンス制御による音量変化の特性を相殺する逆特性にて入力信号の音量制御を行う。
【００４３】
（ｊ）ＲＥＬＥＡＳＥ処理ルーチンの動作
次に、図１８〜図２０を参照してＲＥＬＥＡＳＥ処理ルーチンの動作について説明する。前述した音源メインルーチンにおいて、消音指示コマンドを受信してステップＳＢ１０（図９参照）に進むと、図１８に示すＲＥＬＥＡＳＥ処理ルーチンを実行してステップＳＬ１に処理を進める。ステップＳＬ１では、ＤＣＯ７ａをリリース状態で動作させるＤＣＯリリース処理を行う。続いて、ステップＳＬ２では、ＤＣＦエンベロープをリリースさせるＤＣＦ  ＲＥＬＥＡＳＥ処理を実行する。
【００４４】
（ｋ）ＤＣＦ  ＲＥＬＥＡＳＥ処理ルーチンの動作
すなわち、ステップＳＬ２を介して図１９に示すＤＣＦ  ＲＥＬＥＡＳＥ処理ルーチンが実行されると、音源７はステップＳＭ１に処理を進め、レジスタＦ  ＰＨＡＳＥにリリースフェーズを表す「４」をセットする。次いで、ステップＳＭ２では、レジスタＦ  ＰＨＡＳＥのフラグ値に従って、リリースフェーズの周波数レベルＦ  ＬＥＶＥＬをＲＯＭ５から読み出してレジスタＦ  ＬＥＶＥＬにセットする。続いて、ステップＳＭ３では、レジスタＦ  ＰＨＡＳＥのフラグ値に従ってリリースフェーズの周波数レートＦ  ＲＡＴＥをＲＯＭ５から読み出してレジスタＦ  ＲＡＴＥにセットする。
こうして、ＤＣＦエンベロープをリリースさせるのに必要なパラメータが定まると、音源７は図１８に示すステップＳＬ３に処理を進め、ＤＣＡエンベロープをリリースさせた後、ステップＳＬ４を介してＲＥＳ  ＲＥＬＥＡＳＥ処理ルーチンを実行する。
【００４５】
（ｌ）ＲＥＳ  ＲＥＬＥＡＳＥ処理ルーチンの動作
ステップＳＬ４を介して図２０に示すＲＥＳ  ＲＥＬＥＡＳＥ処理ルーチンが実行されると、音源７はステップＳＮ１に処理を進め、レジスタＲＥＳ  ＰＨＡＳＥにリリースフェーズを表す「４」をセットする。次いで、ステップＳＮ２では、レジスタＲＥＳ  ＰＨＡＳＥのフラグ値に従って、リリースフェーズのレゾナンスレベルＲＥＳ  ＬＥＶＥＬをＲＯＭ５から読み出してレジスタＲＥＳ  ＬＥＶＥＬにセットする。続いて、ステップＳＮ３では、レジスタＲＥＳ  ＰＨＡＳＥのフラグ値に従ってリリースフェーズのレゾナンスレートＲＥＳ  ＲＡＴＥをＲＯＭ５から読み出してレジスタＲＥＳ  ＲＡＴＥにセットする。
【００４６】
以上のように、本実施例によれば、キーオンと共に、初期カットオフ周波数を発音すべき楽音波形ＷＡＶＥの基音周波数に設定したＤＣＦエンベロープをスタートさせ、このＤＣＦエンベロープを経時変化させて楽音波形ＷＡＶＥを形成するエンベロープ制御を行い、その過程でＤＣＦエンベロープがサステインフェーズに達して再び初期カットオフ周波数に収束した時点で、レゾナンスエンベロープをスタートさせ、初期カットオフ周波数近傍の信号レベルを強調するレゾナンス制御を行うようにしたので、発音から消音までの間、楽音波形ＷＡＶＥの基音成分が強調され、これにより基音成分と倍音成分とが調和した自然楽器のような音色変化が得られるようになっている。
【００４７】
なお、上述した実施例では、鍵番号ＮＯＴＥによらず、一定のレゾナンスエンベロープを用いてレゾナンス制御を行うようにしたが、これに替えて、鍵番号ＮＯＴＥに応じてキースケール係数を発生するキースケールテーブルを用い、押鍵された鍵の鍵番号ＮＯＴＥに対応したキースケール係数をキースケールテーブルから読み出してレゾナンスエンベロープに乗算または加算することによって、レゾナンスエンベロープをキースケーリングするようにしても良い。このようにすることで、鍵番号ＮＯＴＥに応じて強調される倍音成分が変化する為、自然な音色変化を得ることが可能になる。
【００４８】
また、ベロシティに応じてレゾナンスエンベロープを修飾する形態としても良く、そのようにすると、倍音成分が強調される度合いを鍵タッチで制御することが出来、これにより鍵タッチで音色変化を調整し得るようになる結果、表現力豊かな演奏形態を実現することも可能になる。
【００４９】
【発明の効果】
請求項１記載の発明によれば、発音指示に応じて生成される波形に対し、発音指示された楽音の基音周波数を初期カットオフ周波数とし、これを起点に経時変化するカットオフ特性を表すＤＣＦエンベロープに対応したフィルタリングを施して楽音を形成する一方、この形成された楽音に対し、前記ＤＣＦエンベロープが初期カットオフ周波数に収束した時点から、この初期カットオフ周波数で経時変化する共振深さを表すレゾナンスエンベロープに対応したフィルタリングを施すことによって、その楽音の基音周波数を強調するようにしたので、基音成分と倍音成分とが調和した自然楽器のような音色変化を得ることができる。
請求項２記載の発明によれば、指定された音高に応じてレゾナンスエンベロープをキースケーリングするので、指定音高毎に強調される倍音成分が変化して自然な音色変化を得ることができる。
請求項３記載の発明によれば、レゾナンスエンベロープに対応した共振深さのフィルタリングにより生じる音量変化を相殺する逆特性にて楽音の音量を制御するので、自然な音量変化を実現できる。
【図面の簡単な説明】
【図１】本発明による一実施例の構成を示すブロック図である。
【図２】ＤＣＦエンベロープの一例を示す図である。
【図３】ＤＣＦエンベロープにおける各フェーズ毎の周波数レベルＦ  ＬＥＶＥＬ（１）〜（４）の値を示す図である。
【図４】ＤＣＦエンベロープにおける各フェーズ毎の周波数レートＦ  ＲＡＴＥ（１）〜（４）の値を示す図である。
【図５】レゾナンスエンベロープの一例を示す図である。
【図６】レゾナンスエンベロープにおける各フェーズ毎のレゾナンスレベルＲＥＳ  ＬＥＶＥＬ（１）〜（４）の値を示す図である。
【図７】レゾナンスエンベロープにおける各フェーズ毎のレゾナンスレートＲＥＳ  ＲＡＴＥ（１）〜（４）の値を示す図である。
【図８】ＣＰＵメインルーチンの動作を示すフローチャートである。
【図９】音源メインルーチンの動作を示すフローチャートである。
【図１０】ＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作を示すフローチャートである。
【図１１】ＤＣＦ  ＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作を示すフローチャートである。
【図１２】ＩＮＴ１処理ルーチンの動作を示すフローチャートである。
【図１３】ＤＣＦ  ＥＮＶ処理ルーチンの動作を示すフローチャートである。
【図１４】ＲＥＳ  ＥＮＶ  ＳＴＡＲＴ処理ルーチンの動作を示すフローチャートである。
【図１５】ＲＥＳ  ＥＮＶ処理ルーチンの動作を示すフローチャートである。
【図１６】ＤＣＦ処理ルーチンの動作を示すフローチャートである。
【図１７】ＤＣＡ処理ルーチンの動作を示すフローチャートである。
【図１８】ＲＥＬＥＡＳＥ処理ルーチンの動作を示すフローチャートである。
【図１９】ＤＣＦ  ＲＥＬＥＡＳＥ処理ルーチンの動作を示すフローチャートである。
【図２０】ＲＥＳ  ＲＥＬＡＳＥ処理ルーチンの動作を示すフローチャートである。
【符号の説明】
１  パネルスイッチ群
２  鍵盤
３  表示部
４  ＣＰＵ
５  ＲＯＭ
６  ＲＡＭ
７  音源
７ａ  ＤＣＯ
７ｂ  波形メモリ
７ｃ  ＤＣＦ
７ｄ  ＤＣＡ
８  サウンドシステム
ＳＰ  スピーカ
【図１】
0004088947.tif 000002
【図２】
0004088947.tif 000003
【図３】
0004088947.tif 000004
【図４】
0004088947.tif 000005
【図５】
0004088947.tif 000006
【図６】
0004088947.tif 000007
【図７】
0004088947.tif 000008
【図８】
0004088947.tif 000009
【図９】
0004088947.tif 000010
【図１０】
0004088947.tif 000011
【図１１】
0004088947.tif 000012
【図１２】
0004088947.tif 000013
【図１３】
0004088947.tif 000014
【図１４】
0004088947.tif 000015
【図１５】
0004088947.tif 000016
【図１６】
0004088947.tif 000017
【図１７】
0004088947.tif 000018
【図１８】
0004088947.tif 000019
【図１９】
0004088947.tif 000020
【図２０】
0004088947.tif 000021