(57)【特許請求の範囲】
【請求項１】
ＬＦＯ波形を発生するＬＦＯ波形発生手段と、
前記ＬＦＯ波形の状態が停止状態、通常稼動状態及び稼動停止準備状態のいずれにあるかを示す状態情報を記憶する記憶手段と、
前記記憶手段に記憶された状態情報が通常稼動状態あるいは稼動停止準備状態であるかを所定周期で判別する状態判別手段と、
前記状態判別手段により前記状態情報が通常稼動状態にあると判別された場合は、前記ＬＦＯ波形発生手段により発生されるＬＦＯ波形により変調される楽音の発音の有無を検出する発音検出手段と、
前記発音検出手段により前記楽音の発音が無いと検出された場合に、前記記憶手段に記憶された状態情報を稼動停止準備状態とする制御手段と、
前記前記状態判別手段により前記状態情報が稼動停止準備状態にあると判別された場合は、前記記憶された状態情報を停止状態とするとともに、前記ＬＦＯ波形発生手段にＬＦＯ波形の発生停止を指示する停止指示手段と、
前記記憶手段に記憶された状態情報が停止状態を示している場合でかつ前記楽音の発音指示がなされたときは、前記ＬＦＯ波形発生手段にＬＦＯ波形の出力再開を指示する再開指示手段と
を具備することを特徴とする低周波発振装置。
【請求項２】
前記状態判別手段は、前記ＬＦＯ波形発生手段が一周期分のＬＦＯ波形を発生する毎に、前記記憶手段に記憶された状態情報が通常稼動状態あるいは稼動停止準備状態であるかを判別することを特徴とする請求項１記載の低周波発振装置。
【請求項３】
前記再開指示手段は、ランダム関数に基づき発生した乱数をＬＦＯ波形の初期位相に設定して前記ＬＦＯ波形発生手段に出力再開を指示することを特徴とする請求項１記載の低周波発振装置。
【請求項４】
前記ＬＦＯ波形発生手段が発生するＬＦＯ波形は、少なくとも、発音される楽音の音高、音色および音量のいずれかを変調することを特徴とする請求項１記載の低周波発振装置。
【請求項５】
ＬＦＯ波形の状態が停止状態、通常稼動状態及び稼動停止準備状態のいずれにあるかを示す状態情報を記憶する記憶手段を有する低周波発振装置として用いられるコンピュータに、
前記ＬＦＯ波形を発生するＬＦＯ波形発生処理と、
前記記憶手段に記憶された状態情報が通常稼動状態あるいは稼動停止準備状態であるかを所定周期で判別する状態判別処理と、
前記状態判別処理により前記状態情報が通常稼動状態にあると判別された場合は、前記ＬＦＯ波形発生処理により発生されるＬＦＯ波形により変調される楽音の発音の有無を検出する発音検出処理と、
前記発音検出処理により前記楽音の発音が無いと検出された場合に、前記記憶手段に記憶された状態情報を稼動停止準備状態とする制御処理と、
前記前記状態判別処理により前記状態情報が稼動停止準備状態にあると判別された場合は、前記記憶された状態情報を停止状態とするとともに、前記ＬＦＯ波形発生処理にＬＦＯ波形の発生停止を指示する停止指示処理と、
前記記憶手段に記憶された状態情報が停止状態を示している場合でかつ前記楽音の発音指示がなされたときは、前記ＬＦＯ波形発生処理にＬＦＯ波形の出力再開を指示する再開指示処理と
をコンピュータで実行させることを特徴とする低周波発振処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器の音源に用いて好適な低周波発振装置および低周波発振処理プログラムに関する。
【背景技術】
【０００２】
周知のように、電子楽器では、音高、音色、音量などの楽音要素を、低周波信号で周期的に変調して発生楽音を修飾する低周波発振装置を音源に備える場合が多い。この種の装置として、例えば特許文献１には、Ａ区間およびＢ区間に区分けされるＬＦＯ波形の各区間毎の波形形状を決めてから、パラメータＤｕｔｙにより波形一周期全体に占める波形Ａ区間の割合を定め、さらにＡ区間におけるＬＦＯ波高値のランダム変化幅およびＢ区間におけるＬＦＯ波高値のランダム変化幅を制限して得られるＬＦＯ波形を発生し、そうして生成されたＬＦＯ波形に応じて、発生楽音の音高、音色および音量を変調して効果付与することによって、ある程度ユーザが意図した効果を付与しつつ、予期し得ない極端な変化の効果も付与する低周波発振装置が開示されている。
【０００３】
【特許文献１】特開２００６−５８５９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、近年の電子楽器においては、同時発音数や同時発音する音色数の増加あるいは変調対象の多様化に伴い、周期的なモジュレーション効果を生成するのに用いられるＬＦＯ波形の同時稼働数も増えつつあり、音源のプロセッサ（ＣＰＵ又はＤＳＰ）に大きな負担をかけているのが現状である。このため、音源の負荷を軽減すべく、消音状態でＬＦＯ波形の出力を停止させる手法が必要になっている。
【０００５】
低周波発振装置を常時稼働させている場合には、図１０に図示するように、発音中を表す発音区間に対応した位相のＬＦＯ波形が変調波形となり、その位相に対応したデプス（振幅）のモジュレーション効果が得られる。これに対し、音源の負荷軽減を目的として、発音時にのみ低周波発振装置を稼働させる態様とすると、図１１に図示するように、押鍵される毎に低周波発振装置を起動する為、当該低周波発振装置から出力されるＬＦＯ波形の位相はその都度先頭にリセットされてしまい、これ故、単調なモジュレーション効果を付与する変調波形となってしまう。
【０００６】
具体的には、例えばＬＦＯ波形の周期を１０秒という比較的に長い時間に設定しておき、０．５秒間隔くらいの短い時間の発音を繰り返しながら、発音する楽音の音色を制御するフィルタ特性を、そのＬＦＯ波形によって変化させる場合、押鍵の都度、ＬＦＯ波形の位相が先頭にリセットされる為に音色変化が画一的で単調なものとなる。つまり、以上の内容を換言すると、長周期のＬＦＯ波形に由来する独特のモジュレーション効果を維持しつつ、音源の負荷軽減を図ることが出来ないという問題がある。
【０００７】
本発明は、このような事情に鑑みてなされたもので、長周期のＬＦＯ波形に由来する独特のモジュレーション効果を維持しつつ、音源の負荷軽減を図ることができる低周波発振装置および低周波発振処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、請求項1に記載の発明では、ＬＦＯ波形を発生するＬＦＯ波形発生手段と、前記ＬＦＯ波形の状態が停止状態、通常稼動状態及び稼動停止準備状態のいずれにあるかを示す状態情報を記憶する記憶手段と、前記記憶手段に記憶された状態情報が通常稼動状態あるいは稼動停止準備状態であるかを所定周期で判別する状態判別手段と、前記状態判別手段により前記状態情報が通常稼動状態にあると判別された場合は、前記ＬＦＯ波形発生手段により発生されるＬＦＯ波形により変調される楽音の発音の有無を検出する発音検出手段と、前記発音検出手段により前記楽音の発音が無いと検出された場合に、前記記憶手段に記憶された状態情報を稼動停止準備状態とする制御手段と、前記前記状態判別手段により前記状態情報が稼動停止準備状態にあると判別された場合は、前記記憶された状態情報を停止状態とするとともに、前記ＬＦＯ波形発生手段にＬＦＯ波形の発生停止を指示する停止指示手段と、前記記憶手段に記憶された状態情報が停止状態を示している場合でかつ前記楽音の発音指示がなされたときは、前記ＬＦＯ波形発生手段にＬＦＯ波形の出力再開を指示する再開指示手段とを具備することを特徴とする。
【０００９】
上記請求項１に従属する請求項２に記載の発明では、前記状態判別手段は、前記ＬＦＯ波形発生手段が一周期分のＬＦＯ波形を発生する毎に、前記記憶手段に記憶された状態情報が通常稼動状態あるいは稼動停止準備状態であるかを判別することを特徴とする。
【００１０】
上記請求項１に従属する請求項３に記載の発明では、前記再開指示手段は、ランダム関数に基づき発生した乱数をＬＦＯ波形の初期位相に設定して前記ＬＦＯ波形発生手段に出力再開を指示することを特徴とする。
【００１１】
上記請求項１に従属する請求項４に記載の発明では、前記ＬＦＯ波形発生手段が発生するＬＦＯ波形は、少なくとも、発音される楽音の音高、音色および音量のいずれかを変調することを特徴とする。
【００１２】
請求項５に記載の発明では、ＬＦＯ波形の状態が停止状態、通常稼動状態及び稼動停止準備状態のいずれにあるかを示す状態情報を記憶する記憶手段を有する低周波発振装置として用いられるコンピュータに、前記ＬＦＯ波形を発生するＬＦＯ波形発生処理と、前記記憶手段に記憶された状態情報が通常稼動状態あるいは稼動停止準備状態であるかを所定周期で判別する状態判別処理と、前記状態判別処理により前記状態情報が通常稼動状態にあると判別された場合は、前記ＬＦＯ波形発生処理により発生されるＬＦＯ波形により変調される楽音の発音の有無を検出する発音検出処理と、前記発音検出処理により前記楽音の発音が無いと検出された場合に、前記記憶手段に記憶された状態情報を稼動停止準備状態とする制御処理と、前記前記状態判別処理により前記状態情報が稼動停止準備状態にあると判別された場合は、前記記憶された状態情報を停止状態とするとともに、前記ＬＦＯ波形発生処理にＬＦＯ波形の発生停止を指示する停止指示処理と、前記記憶手段に記憶された状態情報が停止状態を示している場合でかつ前記楽音の発音指示がなされたときは、前記ＬＦＯ波形発生処理にＬＦＯ波形の出力再開を指示する再開指示処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１３】
本発明では、長周期のＬＦＯ波形に由来する独特のモジュレーション効果を維持しつつ、音源の負荷軽減を図ることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．構成
（１）全体構成
図１は、本発明の実施の一形態である電子楽器１０の全体構成を示すブロック図である。電子楽器１０は、鍵盤１、ＭＩＤＩインタフェース２、スイッチ部３、ＣＰＵ４、ＲＯＭ５、ＲＡＭ６、音源７、Ｄ／Ａ変換器８およびサウンドシステム９を備える。鍵盤１は、押離鍵操作（演奏操作）に応じたキーオン／キーオフ信号、鍵番号（あるいはノートナンバ）およびベロシティ等からなる演奏情報を発生する。ＭＩＤＩインタフェース２は、ＣＰＵ４の制御の下に、例えばＭＩＤＩキーボードなどの外部ＭＩＤＩ装置とＭＩＤＩデータを授受する。
【００１５】
スイッチ部３は、楽器パネルに配設される各種スイッチを備え、スイッチ操作に応じたスイッチイベントを発生する。ＣＰＵ４は、スイッチ部３から供給されるスイッチイベントに基づき楽器各部の動作状態を設定する他、鍵盤１から供給される演奏情報（又はＭＩＤＩインタフェース２を介して外部ＭＩＤＩ装置から供給されるＭＩＤＩデータ）に基づき音源７に楽音発生を指示する。また、ＣＰＵ４では、音源７が発生する楽音データの音高、音色および音量を変調するためのＬＦＯ波形を発生する。本発明の要旨に係わるＣＰＵ４の処理動作については追って述べる。
【００１６】
ＲＯＭ５は、上記ＣＰＵ４にロードされる各種制御プログラムや制御データ等を記憶する。ここで言う各種制御プログラムとは、後述するメインルーチン、エンベロープ処理、ＬＦＯ処理およびノートオン処理を含む。ＲＡＭ６は、ＣＰＵ４のワークエリアとして用いられ、各種レジスタ・フラグデータを一時記憶する。ここで、図２を参照してＲＡＭ５に設けられる主要レジスタの構成を説明する。
【００１７】
図２において、レジスタｐａｒｔには、後述の音源７が備える同時発音可能な３２音色分の音色パートのいずれかを指定するパート番号が一時記憶される。レジスタｖｏｉｃｅには、音源７が備える６４組の発音チャンネル（ボイス）のいずれかを指定するボイス番号が一時記憶される。レジスタＶＰＴ［ｖｏｉｃｅ］には、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルがアサインされた音色パートを指定するパート番号が一時記憶される。
【００１８】
レジスタＡＶＣ［ｐａｒｔ］には、レジスタｐａｒｔのパート番号で指定される音色パートにおいて現在発音中のボイス数が一時記憶される。レジスタＬＰＨ［ｐａｒｔ］には、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の現在位相値が一時記憶される。レジスタＬＲＲ［ｐａｒｔ］には、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の速度（変化率）が一時記憶される。
【００１９】
レジスタＬＳＴ［ｐａｒｔ］には、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の状態を表すステイタス値が一時記憶される。ステイタス値は「０」の場合に停止状態、「１」の場合に通常稼働状態、「２」の場合に稼働停止準備状態を表す。レジスタＥＳＴ［ｖｏｉｃｅ］には、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルにおけるエンベロープジェネレータＥＧ（後述する）の状態値が一時記憶される。状態値は「０」の場合に発音停止状態、「１」の場合に発音中を表す。レジスタＥＬＶ[ｖｏｉｃｅ]には、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルにおけるエンベロープジェネレータＥＧのエンベロープレベルが一時記憶される。
【００２０】
次に、再び図１を参照して実施形態の構成について説明を進める。図１において、音源７は、周知の波形メモリ読み出し方式にて構成され、ＣＰＵ４から供給されるパラメータで指定される音色、音高および音量の波形データを生成すると共に、生成された波形データについてＣＰＵ４から供給されるＬＦＯ波形に応じて変調効果を付与した楽音データＷを出力する。Ｄ／Ａ変換器８は、音源７から出力される楽音データＷをアナログ形式の楽音信号に変換して出力する。サウンドシステム９は、Ｄ／Ａ変換器８が出力する楽音信号から不要ノイズを除去する等のフィルタリングを施した後、これを増幅してスピーカから発音させる。
【００２１】
（２）音源７の構成
次に、図３〜図４を参照して音源７の構成について説明する。音源７は周知のＤＳＰから構成される。したがって、図３はそのＤＳＰにおいて実行されるマイクロプログラムの各機能をハードウェアイメージとして捉らえた機能ブロックを図示している。なお、図３では音源７の構成要素として低周波発振装置８０（以下、ＬＦＯ８０と記す）およびエンベロープジェネレータ７１〜７３（以下、ＥＧ７１〜７３と記す）を便宜的に図示しているが、実際にはＬＦＯ８０およびＥＧ７１〜７３はＣＰＵ４の処理により具現される機能である。
【００２２】
図３において、ＥＧ７１は、音高制御用のエンベロープ波形を発生する。加算器７４は、ＬＦＯ８０から出力されるＬＦＯ波形と、ＥＧ７１から出力される音高制御用のエンベロープ波形とを加算したピッチ変調信号を波形発生器７５に供給する。波形発生器７５は、周知の波形メモリ読み出し方式で構成され、ＣＰＵ４から供給されるパラメータに従い、指定音色の波形データを指定音高で読み出すと共に、その読み出した波形データの音高を、加算器７４から供給されるピッチ変調信号に応じて変調する。
【００２３】
ＥＧ７２は、音色制御用（カットオフ周波数制御用）のエンベロープ波形を発生する。加算器７６は、ＬＦＯ８０から出力されるＬＦＯ波形と、ＥＧ７２から出力される音色制御用のエンベロープ波形とを加算したカットオフ周波数変調信号をフィルタ７７に供給する。フィルタ７７は、周知のＤＣＦ（デジタル制御フィルタ）から構成され、加算器７６から供給されるカットオフ周波数変調信号に応じて、ＤＣＦのカットオフ周波数を変調してローパス特性を変化させ、これにより波形発生器７５が出力する波形データに音色変化を与える。
【００２４】
ＥＧ７３は、音量制御用のエンベロープ波形を発生する。加算器７８は、ＬＦＯ８０から出力されるＬＦＯ波形と、ＥＧ７３から出力される音量制御用のエンベロープ波形とを加算した音量変調信号を増幅器７９に供給する。増幅器７９は、加算器７８から供給される音量変調信号に応じて増幅率を可変制御してフィルタ７７が出力する波形データに音量変化を与える。
【００２５】
上記構成要素７１〜７９は、１つの発音チャンネル（ボイス）を形成する。すなわち、図４に図示するように、６４組の発音チャンネルを形成しており、これらが動的にアサインされて３２音色分のパート音源７０を構成する。図３において、ＬＦＯ波形を発生するＬＦＯ８０は、これら３２組のパート音源のそれぞれに対応して設けられる。ミキサ９０は、３２組のパート音源７がそれぞれ発生する波形データを加算して楽音データＷを出力する。
【００２６】
（３）ＬＦＯ８０の機能概説
次に、図５を参照してＬＦＯ８０の機能について概説する。なお、ＬＦＯ８０の機能は、ＣＰＵ４が実行するＬＦＯ処理およびノートオン処理により具現される。ＬＦＯ処理およびノートオン処理の詳細については追って述べる。ＬＦＯ８０は、図５に図示するＬＦＯ波形（三角波）を発生する。具体的には、各音色パートについて一定周期毎にレジスタＬＲＲ［ｐａｒｔ］のＬＦＯ波形速度（変化率）を、レジスタＬＰＨ［ｐａｒｔ］のＬＦＯ波形位相に加算して読み出し位相を更新し、更新した読み出し位相のＬＦＯ波形値を出力する。
【００２７】
ＬＦＯ８０では、ＬＦＯ波形の最初の一周期以降の各周期先頭にチェックポイントを設け、例えば図５に図示するように、チェックポイント１からチェックポイント２までの間（稼働停止準備状態）に、押鍵による発音指示が発生しなければ、チェックポイント２から停止状態となりＬＦＯ波形の出力を停止する。また、ＬＦＯ８０では、ＬＦＯ波形停止中に押鍵による発音指示が発生した場合、ランダムな位相でＬＦＯ波形の発生を再開する。
【００２８】
このように、ＬＦＯ８０では、全ての発音が消音した後、ＬＦＯ波形一周期分のチェックポイント区間中（稼働停止準備状態）に、押鍵による発音指示が発生しなければ、停止状態となってＬＦＯ波形の出力を停止し、ＬＦＯ波形停止中に押鍵による発音指示が発生すると、ランダムな位相でＬＦＯ波形の発生を再開するので、長周期のＬＦＯ波形に由来する独特のモジュレーション効果を維持しながらも音源の負荷軽減を図ることが可能になる。
【００２９】
Ｂ．動作
次に、図６〜図９を参照して実施形態の動作を説明する。以下では、全体動作としてＣＰＵ４が実行するメインルーチンの動作を、図６を参照して説明した後、このメインルーチンの実行中にＣＰＵ４が割り込み実行するエンベロープ処理およびＬＦＯ処理の各動作を図７〜図８を参照して説明する。また、図９を参照してメインルーチンからコールされるノートオン処理の動作を説明する。
【００３０】
（１）メインルーチンの動作
図６はＣＰＵ４が実行するメインルーチンの動作を示すフローチャートである。上述した構成による電子楽器１０がパワーオンされると、ＣＰＵ４は図６に示すメインルーチンのステップＳＡ１に処理を進め、ＲＡＭ６に格納される各種レジスタ／フラグ類をリセットしたり、初期値セットする他、音源７に対して各種レジスタ・フラグを初期化したりするよう指示するイニシャライズを実行する。
【００３１】
そして、イニシャライズが完了すると、ステップＳＡ２に処理を進め、スイッチ部３のスイッチ操作に対応したスイッチ処理を行う。このスイッチ処理では、例えば音色選択スイッチの操作により選択される音色の楽音を発生させるパラメータを音源７に設定する。具体的には、指定音色の波形データの読み出し開始アドレスを波形発生器７５に供給したり、指定音色に対応したカットオフ周波数に設定したりするフィルタ係数をフィルタ７７に供給する。
【００３２】
次いで、ステップＳＡ３では、鍵イベントの有無を判断する。鍵盤１の鍵操作が行われず、鍵イベントが発生しない場合には、上述のステップＳＡ２に処理を戻す。鍵盤１の押鍵によりキーオンイベントが生じた場合には、ステップＳＡ４を介してノートオン処理（後述する）を実行した後、上記ステップＳＡ２に処理を戻す。鍵盤１の離鍵によりキーオフイベントが生じた場合には、ステップＳＡ５に進み、離鍵された鍵の音高で発音している楽音を消音するよう音源７に指示するノートオフ処理を実行した後、上記ステップＳＡ２に処理を戻す。以後、電子楽器１０がパワーオフされる迄、上述したステップＳＡ２〜ＳＡ５を繰り返す。
【００３３】
（２）エンベロープ処理の動作
図７は、タイマ割り込みによってＣＰＵ４が所定周期毎に実行するエンベロープ処理の動作を示すフローチャートである。割り込みタイミングになると、ＣＰＵ４は図７に図示するステップＳＢ１のループ開始からステップＳＢ７のループ終了までの処理を、６４組の発音チャンネル分（レジスタｖｏｉｃｅのボイス番号０〜６３）繰り返す。すなわち、１つの発音チャンネル毎にステップＳＢ２〜ＳＢ６を実行する。
【００３４】
先ずステップＳＢ２では、レジスタＥＳＴ［ｖｏｉｃｅ］に格納され、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルにおけるＥＧ７３（図３参照）の状態値が「０」（発音停止状態）であるか否かを判断する。発音停止状態ならば、判断結果は「ＹＥＳ」になり、ステップＳＢ７のループ終了端に進む。一方、発音中ならば、上記ステップＳＢ２の判断結果は「ＮＯ」になり、ステップＳＢ３に進み、エンベロープ更新処理を実行する。エンベロープ更新処理では、ＥＧ７３のエンベロープ読み出し位相を歩進させて音量制御用のエンベロープ波形を更新する。
【００３５】
続いて、ステップＳＢ４では、レジスタＥＬＶ[ｖｏｉｃｅ]に格納され、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルにおけるＥＧ７３のエンベロープレベルが「０」であるか否か、つまりレジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルが消音状態に達したかどうかを判断する。消音状態に達していなければ、判断結果は「ＮＯ」になり、ステップＳＢ７のループ終了端に進むが、消音状態に達した場合には、上記ステップＳＢ４の判断結果が「ＹＥＳ」になり、ステップＳＢ５に進む。
【００３６】
ステップＳＢ５では、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルが消音状態に達したのに伴い、発音停止状態を表す値「０」をレジスタＥＳＴ［ｖｏｉｃｅ］にストアする。次いで、ステップＳＢ６では、レジスタＶＰＴ［ｖｏｉｃｅ］からレジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルがアサインされた音色パートを指定するパート番号を読み出してレジスタｐａｒｔにストアする。また、ステップＳＢ６では、レジスタｐａｒｔのパート番号で指定される音色パートで発音中のボイス数が消音により１つ減る為、レジスタＡＶＣ［ｐａｒｔ］のボイス数を１つ減算して当該レジスタＡＶＣ［ｐａｒｔ］を更新させた後、ステップＳＢ７のループ終了端に進む。
【００３７】
このように、エンベロープ処理では、所定周期毎に各発音チャンネル（ボイス）毎の音量制御用エンベロープ波形を更新させ、その中でエンベロープ波形レベルが「０」の消音状態に達した発音チャンネルが存在した場合には、レジスタＥＳＴ［ｖｏｉｃｅ］に発音停止状態を表す値「０」をストアすると共に、消音された発音チャンネルが割り当てられていた音色パートのボイス数を１つ減算してレジスタＡＶＣ［ｐａｒｔ］を更新する。
【００３８】
（３）ＬＦＯ処理の動作
図８は、タイマ割り込みによってＣＰＵ４が所定周期毎に実行するＬＦＯ処理の動作を示すフローチャートである。割り込みタイミングになると、ＣＰＵ４は図８に図示するステップＳＣ１のループ開始からステップＳＣ１４のループ終了までの処理を、３２音色の各パート（レジスタｐａｒｔのパート番号０〜３１）について繰り返す。すなわち、１つの音色パート毎にステップＳＣ２〜ＳＣ１３を実行する。
【００３９】
ステップＳＣ２では、レジスタＬＳＴ［ｐａｒｔ］に格納され、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の状態を表すステイタス値が「０」（停止状態）であるか否かを判断する。ＬＦＯ波形が出力されない停止状態であると、判断結果は「ＹＥＳ」になり、ステップＳＣ１４のループ終了端に進む。一方、ステイタス値が「１」の通常稼働状態もしくはステイタス値が「２」の稼働停止準備状態ならば、上記ステップＳＣ２の判断結果は「ＮＯ」となり、ステップＳＣ３に進む。
【００４０】
ステップＳＣ３では、レジスタＬＰＨ［ｐａｒｔ］に格納され、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の現在の位相値に、同音色パートのＬＦＯ波形の速度（変化率）を保持するレジスタＬＲＲ［ｐａｒｔ］の値を加算して新たな読み出し位相ｐｈを算出する。次いで、ステップＳＣ４では、レジスタＬＰＨ［ｐａｒｔ］に格納されるＬＦＯ波形の現在の位相値が「２５６」より大きいか否かを判断する。つまり、本実施の形態ではＬＦＯ波形の位相値の値域を「０」〜「２５５」としているので、ここではＬＦＯ波形を一周期分読み出し終えたかどうかを判断している。ＬＦＯ波形を一周期分読み出し終えていない場合には、判断結果が「ＮＯ」となり、後述のステップＳＣ１０に進む。
【００４１】
これに対し、ＬＦＯ波形を一周期分読み出し終えている場合には、上記ステップＳＣ４の判断結果が「ＹＥＳ」になり、ステップＳＣ５に進む。ステップＳＣ５では、ＬＦＯ波形を先頭から繰り返し読み出す、所謂ループ再生を行う為、レジスタＬＰＨ［ｐａｒｔ］に格納されるＬＦＯ波形の現在の位相値から「２５６」を減算して新たな読み出し位相ｐｈを算出する。
【００４２】
次いで、ステップＳＣ６では、レジスタＬＳＴ［ｐａｒｔ］に格納され、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の状態を表すステイタス値が「１」（通常稼働状態）であるか否かを判断する。つまり、図５に図示したように、ＬＦＯ波形を一周期分読み出し終えたチェックポイント１においてステイタス値が「１」の通常稼働状態であるか、あるいはＬＦＯ波形を一周期分読み出し終えたチェックポイント２においてステイタス値が「２」の稼働停止準備状態のいずれであるかを判断する。以下、チェックポイント１で通常稼働状態の場合と、チェックポイント２で稼働停止準備状態の場合とに分けて動作説明を進める。
【００４３】
＜チェックポイント１で通常稼働状態の場合＞
チェックポイント１で通常稼働状態であると、上記ステップＳＣ６の判断結果は「ＹＥＳ」になり、ステップＳＣ７に進む。ステップＳＣ７では、レジスタＡＶＣ［ｐａｒｔ］に格納され、レジスタｐａｒｔのパート番号で指定される音色パートにおいて現在発音中のボイス数が「０」、すなわち全ての発音チャンネルが消音状態であるかどうかを判断する。全ての発音チャンネルが消音状態でなければ、判断結果は「ＮＯ」になり、後述のステップＳＣ１０に進む。
【００４４】
一方、全ての発音チャンネルが消音状態であると、上記ステップＳＣ７の判断結果は「ＹＥＳ」になり、ステップＳＣ８に進み、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形が稼働停止準備状態であることを表すステイタス値「２」をレジスタＬＳＴ［ｐａｒｔ］にストアした後、後述のステップＳＣ１０に進む。
【００４５】
＜チェックポイント２で稼働停止準備状態の場合＞
チェックポイント２で稼働停止準備状態ならば、上記ステップＳＣ６の判断結果が「ＮＯ」になり、ステップＳＣ９に進み、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形が停止状態であることを表すステイタス値「０」をレジスタＬＳＴ［ｐａｒｔ］にストアした後、ステップＳＣ１０に進む。
【００４６】
このように、ＬＦＯ波形を一周期分読み出し終えたチェックポイント１にて通常稼働状態であって、かつ全ての発音チャンネルが消音していれば稼働停止準備状態に遷移し、一方、ＬＦＯ波形を一周期分読み出し終えたチェックポイント２にて稼働停止準備状態ならば、停止状態に遷移する。そして、こうした状態遷移を終えると、ステップＳＣ１０に進み、算出された読み出し位相ｐｈを、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の現在の位相値としてレジスタＬＰＨ［ｐａｒｔ］にストアする。
【００４７】
次いで、ステップＳＣ１１では、レジスタＬＰＨ［ｐａｒｔ］の現在位相値に応じて読み出されるＬＦＯ波形と、ＥＧ７１（図３参照）から出力される音高制御用のエンベロープ波形とを加算したピッチ変調信号を波形発生器７５（図３参照）に供給するピッチ処理を実行する。なお、このステップＳＣ１１のピッチ処理は、停止状態に遷移した場合には実行されない。
【００４８】
続いて、ステップＳＣ１２では、レジスタＬＰＨ［ｐａｒｔ］の現在位相値に応じて読み出されるＬＦＯ波形と、ＥＧ７２（図３参照）から出力される音色制御用のエンベロープ波形とを加算した音色変調信号をフィルタ７７（図３参照）に供給するフィルタ処理を実行する。なお、このステップＳＣ１２のフィルタ処理は、停止状態に遷移した場合には実行されない。
【００４９】
そして、ステップＳＣ１３では、レジスタＬＰＨ［ｐａｒｔ］の現在位相値に応じて読み出されるＬＦＯ波形と、ＥＧ７３（図３参照）から出力される音量制御用のエンベロープ波形とを加算した音量変調信号を増幅器７９（図３参照）に供給するアンプ処理を実行した後、ステップＳＣ１４のループ終了端に進む。なお、このステップＳＣ１３のアンプ処理は、停止状態に遷移した場合には実行されない。
【００５０】
（４）ノートオン処理の動作
図９はノートオン処理の動作を示すフローチャートである。前述したメインルーチンのステップＳＡ４（図６参照）を介して本処理が実行されると、ＣＰＵ４は図９に図示するステップＳＤ１に進み、鍵盤１の押鍵により生じたキーオンイベントを割り当てる発音チャンネル（ボイス）を決定するキーアサイナ処理を実行する。これにより、発音割り当てされた発音チャンネルを指定するボイス番号がレジスタｖｏｉｃｅにストアされる。
【００５１】
次いで、ステップＳＤ２では、レジスタＥＳＴ［ｖｏｉｃｅ］に格納され、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルにおけるＥＧ７３（図３参照）の状態値が「０」（発音停止状態）であるか否かを判断する。すなわち、上記ステップＳＤ１にて発音割り当てされた発音チャンネルが発音停止状態であるかどうかを判断する。発音停止状態ならば、判断結果は「ＹＥＳ」になり、後述のステップＳＤ４に進む。
【００５２】
一方、上記ステップＳＤ１にて発音割り当てされた発音チャンネルが未だ発音中であると、上記ステップＳＤ２の判断結果は「ＮＯ」になり、ステップＳＤ３に進み、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルを強制的に消音するよう音源７に指示するボイス停止処理を実行した後、ステップＳＤ４に進む。そして、ステップＳＤ４では、レジスタＥＳＴ［ｖｏｉｃｅ］に発音中を表す状態値「１」をストアする。これにより、上記ステップＳＤ１のキーアサイナ処理により新たに発音割り当てされた発音チャンネルが発音中の状態に設定される。
【００５３】
続いて、ステップＳＤ５では、レジスタｖｏｉｃｅのボイス番号で指定される発音チャンネルがアサインされた音色パートのパート番号をレジスタＶＰＴ［ｖｏｉｃｅ］から読み出してレジスタｐａｒｔにストアすると共に、このレジスタｐａｒｔのパート番号で指定される音色パートで発音中のボイス数が発音により１つ増加する為、レジスタＡＶＣ［ｐａｒｔ］のボイス数をインクリメントする（ＡＶＣ［ｐａｒｔ］＋１）。
【００５４】
次いで、ステップＳＤ６では、レジスタＬＳＴ［ｐａｒｔ］に格納され、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の状態を表すステイタス値が「０」（停止状態）であるか否かを判断する。停止状態であると、判断結果は「ＹＥＳ」になり、ステップＳＤ７に進み、ランダム関数に基づき発生した乱数をＬＦＯ波形の初期位相としてレジスタｐｈａｓｅにストアし、続くステップＳＤ８では、このレジスタｐｈａｓｅの値を、レジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形の現在の位相値としてレジスタＬＰＨ［ｐａｒｔ］にストアした後、ステップＳＤ９に処理を進める。このように、ＬＦＯ波形停止中に押鍵による発音指示が発生した場合には、ランダムな位相でＬＦＯ波形の発生を再開するようになっている。
【００５５】
さて一方、レジスタＬＳＴ［ｐａｒｔ］の値が「０」でない場合、すなわちレジスタｐａｒｔのパート番号で指定される音色パートにアサインされたＬＦＯ波形が通常稼働状態（ステイタス値「１」）あるいは稼働停止準備状態（ステイタス値「２」）であると、上記ステップＳＤ６の判断結果は「ＮＯ」になり、ステップＳＤ９に進み、レジスタＬＳＴ［ｐａｒｔ］にステイタス値「１」をストアする。すなわち、発音割り当てされる以前の音色パートのＬＦＯ波形が通常稼働状態ならば、同音色パートのＬＦＯ波形は発音割り当てされても通常稼働状態を維持し、一方、発音割り当てされる以前の音色パートのＬＦＯ波形が稼働停止準備状態ならば、同音色パートのＬＦＯ波形は発音割り当てに応じて通常稼働状態に遷移するようになっている。
【００５６】
この後、ステップＳＤ１０に進み、押鍵された鍵の音高の波形データを発生するよう波形発生器７５（図３参照）に指示すると共に、レジスタＬＰＨ［ｐａｒｔ］の現在位相値に応じて読み出されるＬＦＯ波形と、ＥＧ７１（図３参照）から出力される音高制御用のエンベロープ波形とを加算したピッチ変調信号を波形発生器７５に供給するピッチ初期設定を行う。
【００５７】
続いて、ステップＳＤ１１では、レジスタＬＰＨ［ｐａｒｔ］の現在位相値に応じて読み出されるＬＦＯ波形と、ＥＧ７２（図３参照）から出力される音色制御用のエンベロープ波形とを加算した音色変調信号をフィルタ７７（図３参照）に供給するフィルタ初期設定を行う。
【００５８】
次いで、ステップＳＤ１２では、レジスタＬＰＨ［ｐａｒｔ］の現在位相値に応じて読み出されるＬＦＯ波形と、ＥＧ７３（図３参照）から出力される音量制御用のエンベロープ波形とを加算した音量変調信号を増幅器７９（図３参照）に供給するアンプ初期設定を行った後、本処理を終える。
【００５９】
このように、ノートオン処理では、押鍵に応じて新たに発音割り当てされた発音チャンネルを発音中の状態に設定し、当該発音チャンネルがアサインされる音色パートのＬＦＯ波形が停止状態であると、ランダム関数に基づき発生した乱数をＬＦＯ波形の初期位相に設定して出力を再開するようになっている。
【００６０】
以上説明したように、本実施形態では、全ての発音が消音した後、ＬＦＯ波形一周期分のチェックポイント区間中（稼働停止準備状態）に、押鍵による発音指示が発生しなければ、停止状態となってＬＦＯ波形の出力を停止し、ＬＦＯ波形停止中に押鍵による発音指示が発生すると、ランダムな位相でＬＦＯ波形の発生を再開する。これにより、例えば図１１に図示したように、音源の負荷軽減を目的として発音時にのみ低周波発振装置を稼働させる従来例の弊害、すなわち発音開始の都度、ＬＦＯ波形の位相が先頭にリセットされて単調なモジュレーション効果を付与する変調波形となってしまう弊害を解消し、長周期のＬＦＯ波形に由来する独特のモジュレーション効果を維持しながらも音源の負荷軽減を図ることができる。
【００６１】
なお、本実施形態では、全ての発音が消音した後、ＬＦＯ波形一周期分のチェックポイント区間中（稼働停止準備状態）に、押鍵による発音指示が発生しなければ停止状態となってＬＦＯ波形の出力を停止するようにしたが、これに限らず、全ての発音が消音してから一定時時間経過する迄の間に、押鍵による発音指示が発生しなければ、ＬＦＯ波形の出力を停止する停止状態に遷移する態様としても構わない。また、本実施形態では、ＬＦＯの変調対象として、音程、フィルタのカットオフ周波数、音量を例として説明したが、その他の音色に関わるパラメータであっても上述した効果を奏する。加えて、本実施形態においては、ＬＦＯを音色パラメータ毎に用意したが、さらにビブラート用、フィルタ用、アンプ用と各パート毎に複数ずつ用意する態様であっても構わず、そうした態様にあっても上述した効果を奏する。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態である電子楽器１０の構成を示すブロック図である。
【図２】ＲＡＭ６に設けられる主要レジスタの構成を示すメモリマップである。
【図３】音源７の構成を示すブロック図である。
【図４】音源７が備える発音チャンネル（ボイス）と音色パートとの関係を説明するための図である。
【図５】ＬＦＯ８０の動作の概要を示す図である。
【図６】ＣＰＵ４が実行するメインルーチンの動作を示すフローチャートである。
【図７】ＣＰＵ４が実行するエンベロープ処理の動作を示すフローチャートである。
【図８】ＣＰＵ４が実行するＬＦＯ処理の動作を示すフローチャートである。
【図９】ＣＰＵ４が実行するノートオン処理の動作を示すフローチャートである。
【図１０】従来技術を説明するための図である。
【図１１】従来技術を説明するための図である。
【符号の説明】
【００６３】
１  鍵盤
２  ＭＩＤＩインタフェース
３  スイッチ部
４  ＣＰＵ
５  ＲＯＭ
６  ＲＡＭ
７  音源
８  Ｄ／Ａ変換器
９  サウンドシステム
【図１】
0005115800.tif 000002
【図２】
0005115800.tif 000003
【図３】
0005115800.tif 000004
【図４】
0005115800.tif 000005
【図５】
0005115800.tif 000006
【図６】
0005115800.tif 000007
【図７】
0005115800.tif 000008
【図８】
0005115800.tif 000009
【図９】
0005115800.tif 000010
【図１０】
0005115800.tif 000011
【図１１】
0005115800.tif 000012