(57)【特許請求の範囲】
【請求項１】
発音開始を指示する押鍵が行われたノートオン時刻から発音停止を指示する離鍵が行われたノートオフ時刻までの押鍵期間を検出する検出手段と、
前記検出手段により検出された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より短ければ、発音中の打楽器音を自然減衰させて消音し、当該閾値時間より長ければ、発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御手段と
を具備することを特徴とする楽音発生装置。
【請求項２】
発音開始を指示する押鍵が行われたノートオン時刻を検出するノートオン時刻検出手段と、
発音停止を指示する離鍵が行われたノートオフ時刻を検出するノートオフ時刻検出手段と、
前記ノートオン時刻検出手段により検出されるノートオン時刻から前記ノートオフ時刻検出手段により検出されるノートオフ時刻までの押鍵期間を計時する計時手段と、
前記計時手段により計時された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より長いか否かを判別する押鍵期間判別手段と、
前記押鍵期間判別手段によって押鍵期間が閾値時間より短いと判別された場合には発音中の打楽器音を自然減衰させて消音し、一方、押鍵期間が閾値時間より長いと判別された場合には発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御手段と
を具備することを特徴とする楽音発生装置。
【請求項３】
前記押鍵期間判別手段は、予め各種音色の打楽器音の閾値時間を記憶しておき、その内から押鍵に応じて発音される打楽器音に対応付けられた閾値時間を選択する選択手段を具備することを特徴とする請求項２記載の楽音発生装置。
【請求項４】
前記消音制御手段は、離鍵速度に応じて、打楽器音をノートオフ時刻から強制減衰させるレートを可変設定することを特徴とする請求項２記載の楽音発生装置。
【請求項５】
発音開始を指示する押鍵が行われたノートオン時刻から発音停止を指示する離鍵が行われたノートオフ時刻までの押鍵期間を検出する検出処理と、
前記検出処理により検出された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より短ければ、発音中の打楽器音を自然減衰させて消音し、当該閾値時間より長ければ、発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御処理と
をコンピュータで実行させることを特徴とする楽音発生処理プログラム。
【請求項６】
発音開始を指示する押鍵が行われたノートオン時刻を検出するノートオン時刻検出処理と、
発音停止を指示する離鍵が行われたノートオフ時刻を検出するノートオフ時刻検出処理と、
前記ノートオン時刻検出処理により検出されるノートオン時刻から前記ノートオフ時刻検出処理により検出されるノートオフ時刻までの押鍵期間を計時する計時処理と、
前記計時処理により計時された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より長いか否かを判別する押鍵期間判別処理と、
前記押鍵期間判別処理によって押鍵期間が閾値時間より短いと判別された場合には発音中の打楽器音を自然減衰させて消音し、一方、押鍵期間が閾値時間より長いと判別された場合には発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御処理と
をコンピュータで実行させることを特徴とする楽音発生処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばドラムやシンバルなどの打楽器音を発生する電子楽器に用いて好適な楽音発生装置および楽音発生処理プログラムに関する。
【背景技術】
【０００２】
従来より、打楽器音を発音する電子楽器が知られている。この種の電子楽器では、例えば特許文献１に開示されているように、ドラムやシンバルなどの典型的な減衰音であれば、ノートオンに応じて発音を開始させ、ノートオフを無視して最後まで自然減衰させてから消音する楽音発生形態にしたり、あるいは特許文献２に開示されているように、ホイッスルや拍手の音など純粋な打楽器音ではなく、もともと持続系の音色の楽音を便宜的に減衰系の音色として扱う場合に、ノートオンに応じて発音を開始し、ノートオフで強制的に減衰させて消音させる楽音発生形態にする楽音発生装置を備えることが多い。
【０００３】
【特許文献１】特開平９−４４１５６号公報
【特許文献２】特開２００４−２４０２５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上述した従来の楽音発生装置では、次のような問題がある。
（ａ）シンバルやトライアングル等の実際の打楽器においては、発音後に発音体を素手で掴んで減衰中の音を意図的にミュートさせる「チョーク」と呼ばれる奏法をしばしば用いるが、上述した、ノートオフを無視して最後まで自然減衰させてから消音する楽音発生形態ではその奏法を実現することが出来ない。
【０００５】
（ｂ）打楽器音は減衰しきるまで発音させることで「その音」らしさを醸し出す。また、発音から消音に至る減衰時間は、音色やベロシティによっても異なる。したがって、上述した、ノートオフで強制的に減衰させて消音させる楽音発生形態では、鍵操作で打楽器音を発生させることが出来ない。
【０００６】
つまり、以上を換言すると、従来の楽音発生装置では、鍵操作に応じて、意図的に途中で消音させた打楽器音や、最後まで自然に減衰させた打楽器音を発生させることが出来ない、という問題がある。
【０００７】
本発明は、このような事情に鑑みてなされたもので、鍵操作に応じて、意図的に途中で消音させた打楽器音や、最後まで自然に減衰させた打楽器音を発生させることが出来る楽音発生装置および楽音発生処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、請求項１に記載の発明では、発音開始を指示する押鍵が行われたノートオン時刻から発音停止を指示する離鍵が行われたノートオフ時刻までの押鍵期間を検出する検出手段と、前記検出手段により検出された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より短ければ、発音中の打楽器音を自然減衰させて消音し、当該閾値時間より長ければ、発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御手段とを具備することを特徴とする。
【０００９】
請求項２に記載の発明では、発音開始を指示する押鍵が行われたノートオン時刻を検出するノートオン時刻検出手段と、発音停止を指示する離鍵が行われたノートオフ時刻を検出するノートオフ時刻検出手段と、前記ノートオン時刻検出手段により検出されるノートオン時刻から前記ノートオフ時刻検出手段により検出されるノートオフ時刻までの押鍵期間を計時する計時手段と、前記計時手段により計時された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より長いか否かを判別する押鍵期間判別手段と、前記押鍵期間判別手段によって押鍵期間が閾値時間より短いと判別された場合には発音中の打楽器音を自然減衰させて消音し、一方、押鍵期間が閾値時間より長いと判別された場合には発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御手段とを具備することを特徴とする。
【００１０】
上記請求項２に従属する請求項３に記載の発明では、前記押鍵期間判別手段は、予め各種音色の打楽器音の閾値時間を記憶しておき、その内から押鍵に応じて発音される打楽器音に対応付けられた閾値時間を選択する選択手段を具備することを特徴とする。
【００１１】
上記請求項２に従属する請求項４に記載の発明では、前記消音制御手段は、離鍵速度に応じて、打楽器音をノートオフ時刻から強制減衰させるレートを可変設定することを特徴とする。
【００１２】
請求項５に記載の発明では、発音開始を指示する押鍵が行われたノートオン時刻から発音停止を指示する離鍵が行われたノートオフ時刻までの押鍵期間を検出する検出処理と、前記検出処理により検出された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より短ければ、発音中の打楽器音を自然減衰させて消音し、当該閾値時間より長ければ、発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御処理とをコンピュータで実行させることを特徴とする。
【００１３】
請求項６に記載の発明では、発音開始を指示する押鍵が行われたノートオン時刻を検出するノートオン時刻検出処理と、発音停止を指示する離鍵が行われたノートオフ時刻を検出するノートオフ時刻検出処理と、前記ノートオン時刻検出処理により検出されるノートオン時刻から前記ノートオフ時刻検出処理により検出されるノートオフ時刻までの押鍵期間を計時する計時処理と、前記計時処理により計時された押鍵期間が、押鍵に応じて発音される打楽器音に対応付けられた閾値時間より長いか否かを判別する押鍵期間判別処理と、前記押鍵期間判別処理によって押鍵期間が閾値時間より短いと判別された場合には発音中の打楽器音を自然減衰させて消音し、一方、押鍵期間が閾値時間より長いと判別された場合には発音中の打楽器音をノートオフ時刻から強制減衰させて消音する消音制御処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１４】
本発明では、鍵操作に応じて、意図的に途中で消音させた打楽器音や、最後まで自然に減衰させた打楽器音を発生させることが出来る。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態について説明する。
Ａ．構成  
（１）全体構成  
図１は、本発明の実施の一形態による楽音発生装置を備えた電子楽器の全体構成を示すブロック図である。この図において、ＣＰＵ１０は、操作部１５に配設される各種スイッチ操作に応じて楽器各部の動作形態を指定する他、後述するメインルーチンおよびエンベロープ処理を実行することによって、意図的に途中で消音させた打楽器音や最後まで自然に減衰させた打楽器音を音源１８から発生させる。なお、ＣＰＵ１０が実行するエンベロープ処理にて具現される音量エンベロープ制御機能については追って詳述する。
【００１６】
ＲＯＭ１１は、上記ＣＰＵ１０が実行する各種プログラムおよび各種データテーブルを記憶する。ＲＯＭ１１に記憶される各種プログラムとは、後述するメインルーチンおよびエンベロープ処理を含む。また、ＲＯＭ１１に記憶されるデータテーブルとは、アタックレートＡＲ（後述する）を増加率に変換する変換テーブルＴ１や、ディケイレートＤＲ又はミュートレートＭＲ（後述する）を乗率に変換する変換テーブルＴ２を指す。これら変換テーブルＴ１，Ｔ２が意図するところについては追って述べる。
【００１７】
ＲＡＭ１２は、図２に示すように、各種レジスタ・フラグデータを一時記憶するワークエリアＷＥと、リズム音色パラメータエリアＲＴとを備える。リズム音色パラメータエリアＲＴには、「ドラム」、「シンバル」、「スネア」などの各種打楽器音の音色パラメータが記憶される。１つの音色パラメータは、波形アドレスＡＤ、スレッショルドゲートタイムＴＧＴ、アタックレートＡＲ、ディケイレートＤＲおよびミュートレートＭＲから形成される。これら音色パラメータが意図するところについて追って述べる。
【００１８】
鍵盤１３は、押離鍵操作（演奏操作）に応じたキーオン／キーオフイベント、キーナンバ（鍵番号）およびベロシティ（後述するノートオンベロシティＯＮＶ、ノートオフベロシティＯＦＶ）を含む演奏情報を発生してＣＰＵ１０に供給する。パッド１４は、各種リズム音色がアサインされる複数のパッド面を有し、各パッド面にはパッド操作（演奏者の手あるいはスティックでパッド面を叩く操作）を検出するセンサ（振動センサ又は圧力センサ）が設けられる。パッド１４では、所定レベル以上のパッド操作が為された場合に、キーオンイベントとパッド操作速度に対応したベロシティとを含むパッド演奏情報を発生してＣＰＵ１０に供給する。
【００１９】
操作部１５は、各種スイッチを備え、操作されるスイッチ種に応じたスイッチイベントを発生してＣＰＵ１０に供給する。図示していないが、操作部１５には、例えば電源をオンオフする電源スイッチや、上述したＲＡＭ１２のリズム音色パラメータエリアＲＴに格納される各種音色パラメータの内から所望のリズム音色のパラメータを選択するリズム音色選択スイッチ等が設けられている。表示部１６は、ＬＣＤパネル等から構成され、ＣＰＵ１０から供給される表示制御信号に応じて装置各部の設定状態や動作状態などを画面表示する。
【００２０】
波形メモリ１７は、「ドラム」、「シンバル」、「スネア」などの各種リズム音色（打楽器音）の波形データを記憶する。音源１８は、複音同時発音する複数の発音チャンネルを有し、１つの発音チャンネル当たり、波形発生器（ＯＳＣ）１８ａおよび増幅器（ＡＭＰ）１８ｂを具備する。波形発生器１８ａは、ＣＰＵ１０から供給される波形アドレスＡＤで指定されるリズム音色の波形データを波形メモリ１７から読み出す。なお、ＣＰＵ１０から波形発生器１８ａに与えられる波形アドレスＡＤは、ＲＡＭ１２のリズム音色パラメータエリアＲＴ（図２参照）からユーザのリズム音色選択スイッチ操作に応じて読み出されるものである。
【００２１】
増幅器１８ｂは、波形発生器１８ａから出力される波形データに、ＣＰＵ１０から供給される音量エンベロープ波形を乗算して楽音波形データを発生する。なお、音量エンベロープ波形を発生するＣＰＵ１０の音量エンベロープ制御機能については後述する。加算器１９は、音源１８の各発音チャンネルにおいてそれぞれ生成される楽音波形データを累算して出力する。サウンドシステム２０は、加算器１９から出力される楽音波形データをアナログ形式の楽音信号に変換した後、当該楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカから発音させる。
【００２２】
（２）ＣＰＵ１０の音量エンベロープ制御機能  
次に、図３〜図９を参照してＣＰＵ１０の音量エンベロープ制御機能について説明する。上述したように、ＣＰＵ１０では、音源１８の増幅器１８ｂに供給する音量エンベロープ波形を、タイマ割り込みにて所定周期（例えば１０ｍｓｅｃ）毎に実行するエンベロープ処理（後述する）にて発生する。
【００２３】
音量エンベロープ波形は、「アタック」、「自然減衰」、「強制減衰」の各区間に大別される。これら各区間の音量エンベロープ波形は、ユーザのリズム音色選択スイッチ操作に応じてＲＡＭ１２のリズム音色パラメータエリアＲＴ（図２参照）から読み出される音色パラメータ（スレッショルドゲートタイムＴＧＴ、アタックレートＡＲ、ディケイレートＤＲおよびミュートレートＭＲ）で決まる。
【００２４】
ＣＰＵ１０は、ＲＯＭ１１に記憶される変換テーブルＴ１を参照してアタックレートＡＲに対応する増加率を読み出し、これを現在のエンベロープレベルに乗算して加算値を算出した後、この加算値を当該エンベロープレベルに加算してアタック区間の音量エンベロープ波形を形成する。
【００２５】
図３は、ＲＯＭ１１に記憶される変換テーブルＴ１の一例を示す図である。この一例において、例えば音色パラメータとして定義されたアタックレートＡＲが「１２７」であると、増加率は「１．０」となり、この増加率が現在のエンベロープレベルに乗算され、これにより算出される加算値が当該エンベロープレベルに加算されてアタック区間の音量エンベロープ波形値となる。
【００２６】
ＣＰＵ１０は、ＲＯＭ１１に記憶される変換テーブルＴ２を参照してディケイレートＤＲ又はミュートレートＭＲを乗率に変換し、これを現在のエンベロープレベルに乗算して自然減衰区間又は強制減衰区間の音量エンベロープ波形を形成する。図４は、ＲＯＭ１１に記憶される変換テーブルＴ２の一例を示す図である。ディケイレートＤＲは、アタックレベルに達した音量エンベロープ波形を自然減衰させる乗率を指定する。例えば、ディケイレートＤＲに対応する乗率が「０．８」、タイマ割り込み周期が１０ｍｓｅｃであったとすると、図５に図示するように、音量エンベロープ波形は１０ｍｓｅｃ毎に０．８倍される減衰特性となる。
【００２７】
ミュートレートＭＲは、ユーザのリズム音色選択スイッチ操作に応じてＲＡＭ１２のリズム音色パラメータエリアＲＴから読み出されるスレッショルドゲートタイムＴＧＴを超えたノートオフ時点から音量エンベロープ波形を強制減衰させる乗率を指定する。すなわち、スレッショルドゲートタイムＴＧＴよりも前にノートオフされた場合であれば、図６に図示するように、アタックレベルに達した音量エンベロープ波形をディケイレートＤＲの乗率で自然減衰させるのに対し、スレッショルドゲートタイムＴＧＴより後にノートオフされた場合には、図７に図示するように、アタックレベルからディケイレートＤＲの乗率で自然減衰中の音量エンベロープ波形を、ノートオフ時点からミュートレートＭＲに従った乗率で強制減衰させる。
【００２８】
ＣＰＵ１０では、次式［１］に基づき音量エンベロープ波形のアタックレベルＡＬを算出する。なお、次式［１］において、ＯＮＶは鍵盤１３から出力される演奏情報に含まれ、押鍵速度を表すノートオンベロシティである。また、次式［１］はノートオンベロシティＯＮＶの値域を「１〜１２７」とした時のアタックレベルＡＬ（百分率表示）を算出する。
アタックレベルＡＬ（％）＝（ＯＮＶ×ＯＮＶ／１２７×１２７）×１００……［１］
図８は、こうした［１］式に基づき、各種ノートオンベロシティＯＮＶに対応して算出されるアタックレベルＡＬ１〜ＡＬ６、アタックレートＡＲおよびディケイレートＤＲに従って形成される音量エンベロープ波形の一例を図示している。
【００２９】
また、ＣＰＵ１０では、次式［２］に基づきミュートレートＭＲを更新する。なお、次式［２］において、ＯＦＶは鍵盤１３から出力される演奏情報に含まれ、離鍵速度を表すノートオフベロシティである。ノートオフベロシティＯＦＶの値域は「０〜１２７」である。
更新後ミュートレートＭＲ＝ＭＲ＋（１２７−ＯＦＶ）……［２］
したがって、例えばノートオフベロシティＯＦＶの値が「１２７」、つまり最も速く離鍵操作した場合には、更新後ミュートレートＭＲは、音色パラメータとして読み出されたミュートレートＭＲに一致する。図９は、こうしてノートオフベロシティＯＦＶで修飾されるミュートレートＭＲに従って形成される音量エンベロープ波形の一例を図示している。
【００３０】
Ｂ．動作  
次に、図１０〜図１３を参照して上記構成による実施形態の動作について説明する。以下では、最初に全体動作としてメインルーチンの動作を説明した後、このメインルーチンからコールされるノートオン処理およびノートオフ処理の各どうさを説明し、続いてタイマ割り込みによって所定周期毎に実行されるエンベロープ処理の動作について述べる。
【００３１】
（１）メインルーチンの動作  
図１０は、メインルーチンの動作を示すフローチャートである。パワーオン（電源投入）に応じてメインルーチンが実行されると、ＣＰＵ１０は図１０に図示するステップＳＡ１に進み、ＲＡＭ１２のワークエリアＷＥに格納される各種レジスタ・フラグデータを初期値設定したり、ゼロリセットしたりするイニシャライズを実行する。イニシャライズが完了すると、ステップＳＡ２に進み、スイッチ処理を実行する。スイッチ処理では、例えばユーザのリズム音色選択スイッチ操作に応じて、ＲＡＭ１２のリズム音色パラメータエリアＲＴ（図２参照）から選択されたリズム音色の音色パラメータ（スレッショルドゲートタイムＴＧＴ、アタックレートＡＲ、ディケイレートＤＲおよびミュートレートＭＲ）を読み出してワークエリアＷＥにストアする。
【００３２】
次いで、ステップＳＡ３では、鍵盤１３の鍵変化を判断する。鍵盤１３が鍵操作されず、キーオン／キーオフイベントが発生しない場合には、鍵変化無しと判断されて上記ステップＳＡ２に処理を戻す。これに対し、鍵盤１３の押鍵操作に応じてキーオンイベントが発生すると、ステップＳＡ４を介してノートオン処理（後述する）を実行した後、上述のステップＳＡ２に処理を戻す。一方、鍵盤１３の離鍵操作に応じてキーオフイベントが発生すると、ステップＳＡ５を介してノートオフ処理（後述する）を実行した後、上述のステップＳＡ２に処理を戻す。以後、パワーオフされる迄、上記ステップＳＡ２〜ＳＡ５を繰り返す。
【００３３】
（２）ノートオン処理の動作  
図１１は、ノートオン処理の動作を示すフローチャートである。上述したメインルーチンのステップＳＡ４（図１０参照）を介して本処理が実行されると、ＣＰＵ１０は、図１１に図示するステップＳＢ１に進む。ステップＳＢ１では、音源１８が備える複数の発音チャンネルの中から発音されていない空きチャンネルを探し出し、該当するチャンネルにノートオン（キーオン）をアサインする周知の発音割り当てを行い、発音割り当てされたチャンネルの番号をレジスタＣｈにストアする。なお、全ての発音チャンネルが発音中で空きチャンネルが無く、発音割り当てすることが出来ない場合には、レジスタＣｈに無効なチャンネル番号をストアする。
【００３４】
続いて、ステップＳＢ２では、押鍵操作に応じて鍵盤１３が発生した演奏情報中のキーナンバＫＮを、発音割り当てされたチャンネル番号Ｃｈで指定されるレジスタＫｅｙ［Ｃｈ］にストアする。なお、上記ステップＳＢ１において、発音割り当てすることが出来なかった場合、ステップＳＢ２では、無効なチャンネル番号Ｃｈで指定されるレジスタＫｅｙ［Ｃｈ］に「−１」をストアする。
【００３５】
次いで、ステップＳＢ３では、チャンネル番号Ｃｈで指定されるレジスタＫｅｙ［Ｃｈ］の値が「−１」、すなわち発音割り当てが行われたかどうかを判断する。発音割り当てが行われず、レジスタＫｅｙ［Ｃｈ］の値が「−１」であると、判断結果は「ＹＥＳ」になり、本処理を終える。
【００３６】
これに対し、発音割り当てが行われ、レジスタＫｅｙ［Ｃｈ］に押鍵された鍵のキーナンバＫＮがストアされていれば、上記ステップＳＢ３の判断結果は「ＮＯ」になり、ステップＳＢ４に進む。ステップＳＢ４では、発音割り当てされたチャンネル番号Ｃｈで指定されるレジスタＮｏｔｅＯｎＴｉｍｅ［Ｃｈ］に現在時刻（ノートオン時刻）をストアする。
【００３７】
次に、ステップＳＢ５では、音源１８の波形発生器（ＯＳＣ）１８ａに発音設定する。すなわち、ユーザのリズム音色選択スイッチ操作に応じてＲＡＭ１２のリズム音色パラメータエリアＲＴ（図２参照）から読み出された波形アドレスＡＤと、発音割り当てされたチャンネル番号ＣｈのレジスタＫｅｙ［Ｃｈ］にストアされるキーナンバＫＮとを波形発生器（ＯＳＣ）１８ａに供給した後に波形読み出し開始を指示する。これにより、波形発生器（ＯＳＣ）１８ａでは、波形アドレスＡＤで指定されるリズム音色の波形データを、キーナンバＫＮに対応した読み出し速度で波形メモリ１７から読み出して波形出力する。
【００３８】
続いて、ステップＳＢ６では、前述した［１］式に基づき、鍵盤１３から出力される演奏情報中のノートオンベロシティＯＮＶに対応するアタックレベルＡＬを算出し、算出したアタックレベルＡＬを、発音割り当てされたチャンネル番号Ｃｈで指定されるレジスタＥｎｖＡｔｔａｃｋＬｅｖｅｌ［Ｃｈ］にストアする。そして、ステップＳＢ７に進み、発音割り当てされたチャンネル番号Ｃｈで指定されるレジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］に「１」をセットして本処理を終える。
【００３９】
なお、レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］は、音量エンベロープ波形の状態を表すフラグ値を一時記憶する。具体的には、フラグ値が「０」の場合には、エンベロープ発生の停止中を表す。また、「１」の場合には音量エンベロープ波形がアタック中であることを、「２」の場合には自然減衰中であることを、「３」の場合には強制減衰中であることをそれぞれ表す。
【００４０】
（３）ノートオフ処理の動作  
図１２は、ノートオフ処理の動作を示すフローチャートである。上述したメインルーチンのステップＳＡ５（図１０参照）を介して本処理が実行されると、ＣＰＵ１０は、図１２に図示するステップＳＣ１に進む。ステップＳＣ１では、音源１８が備える複数の発音チャンネルの内、発音中のチャンネルの中から離鍵された鍵のキーナンバＫＮが割り当てられたチャンネルを検索し、該当するチャンネルの番号をレジスタＣｈにストアする。なお、該当するチャンネルが検索されない場合には、レジスタＣｈに無効なチャンネル番号を表す値「−１」をストアする。
【００４１】
続いて、ステップＳＣ２では、レジスタＣｈの値が「−１」であるか否か、つまり離鍵された鍵のキーナンバＫＮが割り当てられたチャンネルを検索したかどうかを判断する。該当するチャンネルが検索されず、レジスタＣｈの値が「−１」であると、判断結果は「ＹＥＳ」となり、本処理を完了させる。
【００４２】
これに対し、離鍵された鍵のキーナンバＫＮが割り当てられたチャンネルが検索された場合には、上記ステップＳＣ２の判断結果が「ＮＯ」になり、ステップＳＣ３に進む。ステップＳＣ３では、現在時刻と、チャンネル番号Ｃｈで指定されるレジスタＮｏｔｅＯｎＴｉｍｅ［Ｃｈ］に記憶されたノートオン時刻との差分がスレッショルドゲートタイムＴＧＴより大きいか否か、すなわちスレッショルドゲートタイムＴＧＴより後のノートオフであるかどうかを判断する。
【００４３】
スレッショルドゲートタイムＴＧＴより前のノートオフであったならば、上記ステップＳＣ３の判断結果は「ＮＯ」になり、本処理を終えるが、スレッショルドゲートタイムＴＧＴより後のノートオフであると、判断結果が「ＹＥＳ」となり、ステップＳＣ４に進む。そして、ステップＳＣ４では、スレッショルドゲートタイムＴＧＴより後のノートオフであることに対応して、音量エンベロープ波形の状態を表すフラグ値を一時記憶するレジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］にフラグ値「３」をセットして強制減衰区間に遷移したことを表して本処理を終える。
【００４４】
（４）エンベロープ処理の動作  
図１３は、タイマ割り込みによって所定周期毎に実行されるエンベロープ処理の動作を示すフローチャートである。割り込みタイミングになると、ＣＰＵ１０は図１３に図示するステップＳＤ１に進み、チャンネル番号を指定するポインタＣｈをゼロリセットする。以後、チャンネルループ開始ＣＬＳからチャンネルループ終了ＣＬＥまでの間、後述するステップＳＤ２〜ＳＤ１０の処理を全ての発音チャンネル（例えば８Ｃｈ）について実行する。すなわち、ポインタＣｈを歩進させる毎にステップＳＤ２〜ＳＤ１０の処理を繰り返し実行し、歩進させたポインタＣｈが「８」に達した時にチャンネルループ終了ＣＬＥを介して本処理を終える。
【００４５】
先ず、ステップＳＤ２では、ポインタＣｈで指定されるレジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］に格納されるフラグ値を判定する。以下、レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］に格納されるフラグ値が「０」、「１」、「２」および「３」の各場合に分けて動作説明を進める。
【００４６】
＜フラグ値が「０」の場合＞  
レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］のフラグ値が「０」の場合は、音量エンベロープ波形発生が停止しているので、何も行わずにチャンネルループ終了ＣＬＥに進む。
【００４７】
＜フラグ値が「１」の場合＞  
レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］のフラグ値が「１」の場合、すなわち音量エンベロープ波形がアタック中であると、ステップＳＤ３に進み、アタックレートＡＲに応じた加算値を発生してレジスタｒにストアする。つまり、図３に図示したように、ＲＯＭ１１に記憶される変換テーブルＴ１を参照してアタックレートＡＲに対応する増加率を読み出し、読み出した増加率を音量エンベロープ波形に乗算して加算値を算出する。
【００４８】
次いで、ステップＳＤ４では、上記ステップＳＤ３において算出した加算値をレジスタＥｎｖＬｅｖｅｌ［Ｃｈ］に加算する。なお、レジスタＥｎｖＬｅｖｅｌ［Ｃｈ］は、ポインタＣｈで指定されるチャンネルにおける現在の音量エンベロープ波形のレベルを一時記憶するものであり、以下、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］と称す。
【００４９】
次に、ステップＳＤ５では、アタックレートＡＲに応じた加算値が加算された現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］が、レジスタＥｎｖＡｔｔａｃｋＬｅｖｅｌ［Ｃｈ］に格納されるアタックレベルＡＬ以上であるか否か、つまり現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］がアタックレベルＡＬに達したかどうかを判断する。アタックレベルＡＬに達していなければ、判断結果は「ＮＯ」となり、チャンネルループ終了ＣＬＥに進む。
【００５０】
一方、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］がアタックレベルＡＬに達していると、上記ステップＳＤ５の判断結果は「ＹＥＳ」になり、ステップＳＤ６に進み、レジスタＥｎｖＡｔｔａｃｋＬｅｖｅｌ［Ｃｈ］に格納されるアタックレベルＡＬを、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］に設定すると共に、レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］にフラグ値「２」をセットしてチャンネルループ終了ＣＬＥに進む。なお、レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］にフラグ値「２」をセットすることで音量エンベロープ波形が自然減衰区間に入ったことを表す。
【００５１】
＜フラグ値が「２」の場合＞  
レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］に格納されるフラグ値が「２」の場合、すなわち音量エンベロープ波形が自然減衰中ならば、ステップＳＤ７に進み、ＲＯＭ１１に記憶される変換テーブルＴ２を参照してディケイレートＤＲに応じた乗率を読み出してレジスタｒにストアする。次いで、ステップＳＤ８では、上記ステップＳＤ７にて発生した乗率を現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］に乗算する。これによりディケイレートＤＲに従って自然減衰する現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］が算出される。
【００５２】
続いて、ステップＳＤ９では、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］が「０」、つまり消音状態に達したか否かを判断する。消音状態でなければ、判断結果は「ＮＯ」になり、チャンネルループ終了ＣＬＥに進む。これに対し、消音状態であると、判断結果が「ＹＥＳ」となり、ステップＳＤ１０に進み、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］およびレジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］を共にゼロリセットした後、チャンネルループ終了ＣＬＥに進む。
【００５３】
＜フラグ値が「３」の場合＞  
レジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］に格納されるフラグ値が「３」の場合、すなわちスレッショルドゲートタイムＴＧＴより後にノートオフされ、音量エンベロープ波形が強制減衰中ならば、ステップＳＤ１１に進む。ステップＳＤ１１では、前述した[２]式に基づき、ノートオフベロシティＯＦＶに応じてミュートレートＭＲを更新すると共に、更新されたミュートレートＭＲに応じた乗率をＲＯＭ１１に記憶される変換テーブルＴ２から読み出してレジスタｒにストアする。
【００５４】
そして、ステップＳＤ８に進み、上記ステップＳＤ１１にて発生した乗率を現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］に乗算する。これにより更新されたミュートレートＭＲに従って強制減衰した現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］が算出される。次いで、ステップＳＤ９では、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］が「０」、つまり消音状態に達したか否かを判断する。消音状態でなければ、判断結果は「ＮＯ」になり、チャンネルループ終了ＣＬＥに進む。
【００５５】
これに対し、消音状態であると、上記ステップＳＤ９の判断結果が「ＹＥＳ」となり、ステップＳＤ１０に進み、現在エンベロープレベルＥｎｖＬｅｖｅｌ［Ｃｈ］およびレジスタＥｎｖＳｔａｔｕｓ［Ｃｈ］を共にゼロリセットした後、チャンネルループ終了ＣＬＥに進む。チャンネルループ終了ＣＬＥでは、全てのチャンネルについてエンベロープ制御し終えたかどうかを判断し、その途中ならば、チャンネルループ開始ＣＬＳに戻り、ポインタＣｈを歩進させてから上述したステップＳＤ２以降を繰り返す。一方、全てのチャンネルについてエンベロープ制御し終えたならば、本処理を終える。
【００５６】
以上のように、本実施の形態では、発音開始を指示する押鍵が行われたノートオン時刻から発音停止を指示する離鍵が行われたノートオフ時刻までの押鍵期間（ゲートタイム）を計時し、計時した押鍵期間が発音中の打楽器音の音色に対応付けられたスレッショルドゲートタイムＴＧＴよりも短ければ、その発音中の打楽器音を自然減衰させて消音し、一方、スレッショルドゲートタイムＴＧＴよりも長ければ、その発音中の打楽器音をノートオフ時刻から強制減衰させて消音する。
【００５７】
したがって、スレッショルドゲートタイムＴＧＴ以内に押離鍵操作を行えば、最後まで自然に減衰する打楽器音が発生し、スレッショルドゲートタイムＴＧＴを超える離鍵操作を行うと、チョーク奏法で得られる意図的に途中で消音させた打楽器音が発生するので、鍵操作に応じて、意図的に途中で消音させた打楽器音や、最後まで自然に減衰させた打楽器音を発生させることが可能になる。
【００５８】
また、上述した実施形態では、スレッショルドゲートタイムＴＧＴを音色パラメータとして各種リズム音色別に記憶しておき、その内から押鍵に応じて発音されるリズム音色の打楽器音に対応付けられたスレッショルドゲートタイムＴＧＴを選択するので、各種リズム音色の打楽器音に適したスレッショルドゲートタイムＴＧＴを設定することが出来る。さらに、本実施形態では、離鍵速度（ノートオフベロシティＯＦＶ）に応じてミュートレートＭＲを可変設定するので、離鍵の仕方で各様なチョーク奏法を実現することも出来る。
【００５９】
なお、上述した実施形態では、打楽器音の音色（リズム音色）毎に、固定的なスレッショルドゲートタイムＴＧＴを設けておく態様としたが、これに限らず、ユーザ操作に応じてスレッショルドゲートタイムＴＧＴを可変設定する態様としても構わない。このようにすれば、ユーザ好みの鍵操作タイミングで意図的に途中で消音させた打楽器音や、最後まで自然に減衰させた打楽器音を発音させることが可能になる。
【図面の簡単な説明】
【００６０】
【図１】本発明による一実施形態の構成を示すブロック図である。
【図２】ＲＡＭ１２の構成を示すメモリマップである。
【図３】ＲＯＭ１１に記憶される変換テーブルＴ１の一例を示す図である。
【図４】ＲＯＭ１１に記憶される変換テーブルＴ２の一例を示す図である。
【図５】ＣＰＵ１０の音量エンベロープ制御機能を説明する為の図である。
【図６】ＣＰＵ１０の音量エンベロープ制御機能を説明する為の図である。
【図７】ＣＰＵ１０の音量エンベロープ制御機能を説明する為の図である。
【図８】ＣＰＵ１０の音量エンベロープ制御機能を説明する為の図である。
【図９】ＣＰＵ１０の音量エンベロープ制御機能を説明する為の図である。
【図１０】メインルーチンの動作を示すフローチャートである。
【図１１】ノートオン処理の動作を示すフローチャートである。
【図１２】ノートオフ処理の動作を示すフローチャートである。
【図１３】エンベロープ処理の動作を示すフローチャートである。
【符号の説明】
【００６１】
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  鍵盤
１４  パッド
１５  操作部
１６  表示部
１７  波形メモリ
１８  音源
１８ａ  波形発生器
１８ｂ  増幅器
１９  加算器
２０  サウンドシステム
【図１】
0005030016.tif 000002
【図２】
0005030016.tif 000003
【図３】
0005030016.tif 000004
【図４】
0005030016.tif 000005
【図５】
0005030016.tif 000006
【図６】
0005030016.tif 000007
【図７】
0005030016.tif 000008
【図８】
0005030016.tif 000009
【図９】
0005030016.tif 000010
【図１０】
0005030016.tif 000011
【図１１】
0005030016.tif 000012
【図１２】
0005030016.tif 000013
【図１３】
0005030016.tif 000014