(57)【特許請求の範囲】
【請求項１】
楽音発生からビブラート開始までの遅延区間、該遅延区間に続くビブラート深さ増加区間、ならびにビブラート深さが一定値に維持された持続区間からなるディレイビブラート効果を付加することができる電子楽器において、
ビブラート深さを計算する計算手段と、
前記計算手段で計算されたビブラート深さを記憶する記憶手段と、
前記計算手段で計算されたビブラート深さに対応するビブラート周波数を基本波形の基本周波数に加算する周波数加算手段とを具備し、
前記持続区間では予め設定されたビブラート深さを使用するようにして、後発の楽音に対応するビブラート深さ計算のため前記計算手段および記憶手段を解放するとともに、
先発のディレイビブラートの遅延区間および増加区間において後発のディレイビブラート要求が発生した場合は、前記記憶手段に記憶されたビブラート深さに基づいてディレイビブラートをかけ、
先発のディレイビブラートの持続区間において後発のディレイビブラート要求が発生した場合は、前記計算手段で計算したビブラート深さに基づいて該後発のディレイビブラート要求に対応したディレイビブラートをかけるように構成したことを特徴とする電子楽器。
【請求項２】
前記計算手段を音色毎に設けたことを特徴とする請求項１記載の電子楽器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器に関し、特に、音色効果としてディレイビブラートをかけることができる電子楽器に関する。
【０００２】
【従来の技術】
電子楽器の音色効果の１つとしてディレイビブラートが知られる。これは、弦楽器、管楽器等、持続音系の楽器の音をより忠実に再現するための効果であり、発音開始から少しずつビブラートの深さを深くしていき、時間をかけて予定深さのビブラートに到達させるものである。
【０００３】
図９は、音源の発音チャネル毎のディレイビブラートの波形図である。同図（ａ）は、発音開始から予定深さに到達するまでのビブラート波形を、発音チャネル毎に計算して発音させる例である。この例では、各発音チャネルｃｈ１〜ｃｈ３では、ビブラート開始Ｓから予定深さＤに達するまでの振幅増加領域、およびその後の持続領域において計算により求められたビブラートが継続して付加される。
【０００４】
図９（ｂ）は、無音時から最初に楽音を発生させた時は、計算に基づくディレイビブラートを実施し、この発音中に他の発音チャネルｃｈ２，ｃｈ３で発音があったときは、その時点で発音中のビブラートと同じ深さからビブラートを開始させる例である。
【０００５】
図９（ｃ）は、無音時から最初に楽音を発生させた時は、計算に基づくディレイビブラートを実施し、この発音中に次の発音があったときは、その時点（図中ｔ）で発音中のビブラートは停止し、新たに、最初の発音時と同様、振幅「０」からディレイ時間ＤＴを経過した後、少しずつ深さを深くしていく例である。
【０００６】
ディレイビブラートの付加方法に関し、ＲＡＭに記憶した発音チャネルデータに基づいて楽音波形のピッチを変更することにより、出力楽音波形データにディレイビブラート効果を付加する電子楽器の例が特開平７−１９９９３１号公報に記載されている。
【０００７】
【発明が解決しようとする課題】
従来のディレイビブラート付加方法では、次のような問題点がある。まず、発音チャネル毎の発音チャネルデータとしてディレイビブラートの波形パラメータを計算し、これに基づいてディレイビブラートを付加する方法（図９（ａ））では、計算のために使用されるメモリの領域が大きくなるほか、計算も大掛かりになって処理時間がかかるという問題点がある。
【０００８】
また、先に発音されている楽音に基づいてその次の発音におけるビブラートの時間や深さを計算する方法（図９（ｂ））、および楽音発生毎に、先のビブラートを一旦クリアにする方法（図９（ｃ））では楽音に不自然さがでるという問題点がある。
【０００９】
本発明は、上記問題点を解消し、ビブラート周波数の計算に使用されるメモリ領域を大きくすることなく、かつ、不自然さがでないようにしてディレイビブラートを付加することができる電子楽器を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記の課題を解決し、目的を達成するための本発明は、楽音発生からビブラート開始までの遅延区間、該遅延区間に続くビブラート深さ増加区間、ならびにビブラート深さが一定値に維持された持続区間からなるディレイビブラート効果を付加することができる電子楽器において、ビブラート深さを計算する計算手段と、前記計算手段で計算されたビブラート深さを記憶する記憶手段と、前記計算手段で計算されたビブラート深さに対応するビブラート周波数を基本波形の基本周波数に加算する周波数加算手段とを具備し、前記持続区間では予め設定されたビブラート深さを使用するようにして、後発の楽音に対応するビブラート深さ計算のため前記計算手段および記憶手段を解放するとともに、先発のディレイビブラートの遅延区間および増加区間において後発のディレイビブラート要求が発生した場合は、前記記憶手段に記憶されたビブラート深さに基づいてディレイビブラートをかけ、先発のディレイビブラートの持続区間において後発のディレイビブラート要求が発生した場合は、前記計算手段で計算したビブラート深さに基づいて該後発のディレイビブラート要求に対応したディレイビブラートをかけるように構成した点に第１の特徴があり、前記計算手段を音色毎に設けた点に第２の特徴がある。
【００１１】
第１および第２の特徴によれば、ディレイビブラート深さ計算用の計算手段は、ビブラートの深さが予定の最大深さに達した後に解放される。したがって、無音状態から最初に発生される楽音信号のビブラートだけでなく、後発の楽音信号に対応するビブラートも、遅延区間を含む完全なディレイビブラート波形として供給することができる。また、計算手段が解放されるまでに発生した後発の楽音信号に対しては、先の楽音信号に対応してすでに計算されたビブラート深さが使用されるので、この後発の楽音信号に対応してビブラートをかけるために計算用バッファを使用する必要はない。
【００１２】
【発明の実施の形態】
以下に、図面を参照して本発明を詳細に説明する。図２は本発明の一実施形態に係る音源装置を含む電子楽器の構成を示すブロック図である。同図において、鍵盤装置１は複数のキー１ａと、該複数のキー１ａの押鍵および離鍵状態を検出するため、各キー１ａに対応して設けられたセンサ１ｂとを有する。センサ１ｂはバス２に接続されていて、センサ１ｂで検出されたキーコードやタッチの情報はバス２を介してＣＰＵ３に入力される。ＣＰＵ３には、電源スイッチ、音色選択スイッチ、音量スイッチ等、種々のスイッチ類を有する操作パネル４、およびダンパ効果やソフト効果を与えるためのペダル５が接続されている。
【００１３】
さらに、ＣＰＵ３には、ＭＩＤＩインタフェース６を介して外部機器が接続される。ＲＯＭ７は、ＣＰＵ３で実行されるプログラムを格納するプログラムメモリ、および音色データを格納するための音色データメモリ（波形メモリ）としての領域を有する。自動演奏用のデータメモリもＲＯＭ７に設定される。ＲＡＭ８にはレジスタやフラグ等の変化データを記憶するための領域、つまりワークエリアが設けられる。後述のディレイビブラート計算部としてのバッファもこの領域の一部に設定される。
【００１４】
ＣＰＵ３は鍵盤装置１、操作パネル４、およびペダル５から入力された信号に従い、ＲＯＭ７やＲＡＭ８に記憶されたプログラムやデータを使用して処理を行い、その処理結果による指示を楽音発生部９に供給する。楽音発生部９はＣＰＵ３の指示に基づいて楽音信号を生成し、これをＤ／Ａ変換した後、サウンドシステム１０に供給する。サウンドシステム１０は前記楽音信号に基づいて楽音を発生する。楽音発生部９は時分割処理により、発音チャネル数に対応した楽音信号を処理することができる。
【００１５】
次に、本実施形態の動作概要を説明する。なお、以下の説明では、ＭＩＤＩインタフェース６を介して外部機器から楽音発生信号が入力された場合を想定する。図３はディレイビブラートの発生タイミングを示す図である。ディレイビブラートａについて、タイミングｔ１で最初の楽音発生信号が入力されると、カウンタによるディレイタイムＤＴの計数を開始する。そして、ディレイタイムＤＴの経過すると遅延区間が終了し、深さ増加区間に移り、タイミングｔ２から徐々にビブラートの深さを増大させていく。ビブラートの深さ（振幅）が予定値Ｂｄに達したとき、つまりタイミングｔ３以降は持続区間であり、楽音発生信号が停止されるまでこの予定値Ｂｄのビブラート深さが保持される。そこで、本実施形態では、ビブラートの深さが予定値Ｂｄに達したならば、その後はビブラート計算用のバッファを解放し、該バッファを、次に発生した楽音のディレイビブラートの計算に使用できるようにする。
【００１６】
すなわち、ディレイビブラートａの発生中に、次の楽音発生信号が入力されると、楽音発生信号の入力タイミングに従って次のように処理がなされる。ディレイビブラートａの深さが予定値Ｂｄに達するまでの期間において、例えば、タイミングｔ４やタイミングｔ５で第２番目の楽音発生信号が入力された場合は、第１のディレイビブラートａの計算によって得られた深さに従ってディレイビブラートｂまたはｃをかける。
【００１７】
また、ディレイビブラートａが予定深さに達した後のタイミングｔ６で次の楽音発生信号が入力された場合は、ディレイビブラートの計算用のバッファが空いているので、該ディレイビブラートｄの発生のためにこのバッファを使用することができる。つまりディレイビブラートｄは、振幅が「０」の状態からディレイタイムを経過した後徐々に深さを増大していくような所望の波形にすることができる。
【００１８】
このように、本実施形態では、すべての発音チャネルに対応してディレイビブラートの計算用のバッファを確保しておく必要がない。しかも、従来技術（図６（ｂ））と異なり、先のディレイビブラートの深さが予定値に達した後の持続区間で発生したディレイビブラートは、計算に基づく精度のよいディレイビブラートとすることができる。
【００１９】
次に、前記楽音発生部９の要部機能を説明する。図１において、ＲＯＭ７に設けられるディレイビブラート情報記憶部１１には、基本ビブラート波形ならびに、発生させようとするディレイビブラート情報つまりディレイビブラートの最大深さＢｄ、ディレイタイムＤＴ、および深さの単位増加量Δｄつまりレイトが記憶される。ディレイビブラート情報は例えば音色毎に設定されている。
【００２０】
ディレイビブラート計算部１２は、前記ディレイタイムＤＴを計数するカウンタと、該カウンタのカウントアップに応答し、前記ディレイビブラート情報記憶部１１に記憶されたデータに基づき、予定の割込みタイミング毎のディレイビブラート深さおよびビブラート周波数を計算する機能を有する。計算されたディレイビブラート深さは発音チャネル領域１３に出力されるとともに、計算結果は計算結果記憶部１４に記憶される。計算結果記憶部１４には各発音チャネル毎の、計算されたビブラート深さが記憶されている。
【００２１】
ディレイビブラート計算部１２のうちビブラート深さ計算に使用されるバッファ領域および計算結果記憶部１４は、計算中のディレイビブラートの深さが最大値に達した時点で、次のディレイビブラート深さの計算に使用するためクリアされる。ディレイビブラートの深さが最大値に達した後は、ＭＩＤＩ情報により楽音停止信号が入力されるまでは、ディレイビブラート計算部１２によるリアルタイムの計算結果によらず、一定値、つまり最大深さＢｄを有するディレイビブラート波形に対応した周波数が発音チャネル領域１３に出力される。この最大深さＢｄは、図示しない記憶部に別途記憶された固定データを使用できる。
【００２２】
ディレイビブラートパート判別部１５は、ＭＩＤＩ情報つまり演奏情報からディレイビブラートパートであるか否かを判断し、ディレイビブラートパートならば状態判別部１６に検出信号を出力する。状態判別部１６はディレイビブラートパート判別部１５から入力された検出信号に応答してディレイビブラート計算部１２をサーチし、その空き状態を判別する。
【００２３】
ディレイビブラート計算部１２が空いている場合は、状態判別部１６は該計算部１２に計算を実行させる。ディレイビブラート計算部１２が空いていない場合、つまり先のディレイビブラート発生のための計算を実行中であれば、状態判別部１６は計算結果記憶部１４から現在のディレイビブラート深さに基づく周波数を前記発音チャネル領域１３に読み出すための信号を供給する。なお、ディレイビブラートパートでない場合には、通常のビブラートをかけるための、予め設定された一定深さのビブラート波形に基づいて周波数を計算し、前記発音チャネル領域１３に出力する。
【００２４】
基本周波数計算部１７は、ＲＯＭ７に設けられる楽音波形記憶部１８に記憶されている楽音波形をキーコードに従って読み出し、前記演奏情報に基づいて基本周波数を決定する。基本周波数は前記発音チャネル領域１３に供給される。基本周波数には演奏情報に含まれるベンド情報等によって装飾を加えることができる。
【００２５】
ＭＩＤＩ情報は、予め定めた手順により、アサイナ１９によって各発音チャネルに割り当てられる。発音チャネル領域１３では、アサイナ１９によって割り当てられた各発音チャネル毎に、基本周波数にディレイビブラート周波数が加算されて楽音信号が生成される。楽音信号はサウンドシステム１０に出力される。
【００２６】
次に、上述の機能に基づく電子楽器の動作をフローチャートを参照して説明する。図４はメインルーチンのフローチャートである。電源が投入された後、ステップＳ１では、ＣＰＵ３、ＲＡＭ８、楽音発生部９を構成するＬＳＩ等を初期化する。ステップＳ２のスイッチイベント処理では、音色を指定するスイッチ等の状態を読み込んで処理をする。ステップＳ３の鍵盤イベント処理では、キー１ａに対応して設けられたセンサ１ｂで検出されたキーコードやベロシティ情報等を読み込んで処理をする。ステップＳ４のＭＩＤＩ処理では、ＭＩＤＩインタフェース６を通じて入力されるＭＩＤＩ情報を読み込んで処理をする。ステップＳ５のビブラート処理では上述の機能（図１）に基づくビブラート波形の生成処理を行う。ステップＳ６のその他の処理では、必要に応じて音響効果を与えるための種々の処理を行う。なお、必要に応じて自動演奏処理を行うこともできる。
【００２７】
次に、発音開始時処理を図５のフローチャートを参照して説明する。この発音開始時処理は、キーオンまたはＭＩＤＩ情報の入力時に実行される。ステップＳ１０では、基本周波数計算部１７において、発音する音のキーナンバ、オクターブ変更情報、トランスポーズ情報等に基づき、楽音波形記憶部１８の楽音波形に基づいて基本周波数の計算をする。前記キーナンバ、オクターブ変更情報、トランスポーズ情報等はベンドやビブラート等、発音中の音程変化の処理にも使用するため、バッファに保持される。ステップＳ１１では、前記基本周波数にベンド情報やチューニング変更情報等、音程に関する情報を加算する。これらの情報は発音中に変更可能なものであり、ここでは発音開始時点に加算されるべき予定の情報を加算する。
【００２８】
ステップＳ１２では、テーブル等により音色毎に予め設定されたデータを参照して、発音する音のパートに割当てられた音がディレイビブラートのパートか否かを判別する。判別結果はチェックフラグに記憶される。ディレイビブラートパートでないと判断された場合は、ステップＳ１３に移行して通常のビブラートをかけるためのデータを設定する。つまり、発音開始から終了まで予め設定された一定の深さでビブラートをかけるためのデータを設定する。
【００２９】
一方、ディレイビブラートパートである場合は、ステップＳ１４に進み、ディレイビブラート計算用のバッファが空いているか否かを判別する。これは、計算用バッファの空き状態を示すバッファチェックフラグＦに基づいて判別される。バッファチェックフラグＦはメインルーチン内で設定（後述）される。計算用バッファが空いていれば、ステップＳ１５に進んで計算用バッファ使用中を示すフラグＦをセットし、ステップＳ１６では計算用バッファを確保する。ステップＳ１７では、ディレイタイムＤＴを計数するカウンタをスタートする。
【００３０】
計算用バッファが空いていなければ、ステップＳ１４からステップＳ１８に進み、当該パートにおけるビブラート深さ現在値をビブラート深さとして設定する。すなわち、計算用バッファが空いていないとうことは、該パート内で、ビブラートが定常状態になっていない音があることを意味し、ここでは、この定常状態になっていない音のビブラート深さにならって、その次に発生すべき音のビブラート深さを決定する。
【００３１】
つづいて、図６を参照してメインルーチンにおけるビブラート処理についてさらに説明する。ステップＳ５０では、ディレイビブラートパートか否かを判別する。この判別は前記発音開始時処理において記憶された判別結果を示すチェックフラグを参照して行う。ステップＳ５１では、割り込み処理で減算された前記ディレイタイムＤＴのカウンタ値が「０」か否かにより、ディレイタイムＤＴが経過したか否かを判断する。
【００３２】
ディレイタイムＤＴが経過したならば、ステップＳ５２に進み、ビブラートの深さが予定の最大深さＢｄに達したか否かを判断する。最大深さＢｄに達していない場合は、ステップＳ５３に進み、ビブラート深さの現在値に単位増加量Δｄを加算した値が最大深さＢｄに達したか否かを判断する。この判断が肯定ならば、ビブラートは定常状態に達していないと判断し、ステップＳ５４に進んで前記現在値に単位増加量Δｄを加算した値でビブラート深さを更新する。
【００３３】
ステップＳ５３の判断が否定ならば、ビブラートは定常状態に達したと判断してステップＳ５５に進み、最大値Ｂｄをビブラート深さとして設定すると同時に計算用バッファを開放する。ステップＳ５６では、計算用バッファが開放されていることを表すため、フラグＦに「０」をセットする。ステップＳ５７では、上述のビブラート深さでビブラートをかけるための計算を行う。
【００３４】
つづいて、上記ビブラート計算をさらに詳細に説明する。図７はビブラート基本波形の１周期分を示す図であり、一例として鋸歯状波を示す。同図において、横軸は時間であり、縦軸は変位である。各時間毎の変位はデジタルデータとして記憶しているため階段状で表されている。
【００３５】
図８は、前記ビブラート基本波形および前記ビブラート深さに基づくビブラート計算のフローチャートである。ステップＳ５７１では、割込みタイマのカウンタ値に基づき、図７の基本ビブラート波形から変位を読み出す。ステップＳ５７２では、加算周波数つまりビブラートの周波数を計算する。ここでは、抽出された前記変位に前記ビブラート深さを乗算して、現在のビブラート深さを計算する。すなわち、前記タイミングｔ１〜ｔ２（図３）で乗算されるビブラート深さは「０」であり、タイミングｔ２〜ｔ３で乗算されるビブラート深さは、そのタイミングに応じて「０」〜「Ｂｄ」の間の値である。そして、前記現在のビブラート深さに基づいてビブラート波形の周波数を算出する。ビブラート深さに基づく周波数の算出手段は、例えばＶＣＯによって実現できる。ステップＳ５７３では、算出された加算周波数を、前記ステップＳ１０で算出された基本周波数に加算し、発音チャネル領域１３に書き込む。
【００３６】
以上のビブラート処理は発音チャネル毎に時分割処理されるが、ディレイビブラート計算用のバッファは、例えばＭＩＤＩチャネル毎つまりパート毎に共通で使用するように設定しておくものとする。
【００３７】
以上のように、本実施形態では、ディレイビブラート深さの計算は、ビブラートの深さが予定の最大値Ｂｄになるまで行い、その後は計算によらず、固定値として記憶されている最大値Ｂｄに基づいてビブラート波形の周波数を計算することができるのでビブラート深さ計算用のバッファは解放できる。解放されたバッファはその後に発生した楽音信号に対応するディレイビブラート深さの計算に使用できるので、ディレイビブラート深さ計算用バッファの領域を大きくとらないですむ。ディレイビブラート深さ計算用のバッファは、上述のように、ＭＩＤＩチャネル毎つまり音色毎またはパート毎に対応して設けるようにすればよい。
【００３８】
なお、本実施形態では、ＭＩＤＩ情報に従ってディレイビブラートをかける場合を想定したが、キーから入力される演奏情報に基づいてディレイビブラートをかける場合にも適用できるのはもちろんである。
【００３９】
【発明の効果】
以上の説明から明らかなように、請求項１および請求項２の発明では、先発のディレイビブラートが一定深さの持続区間に達した後に発生した後発のビブラート波形は完全なディレイビブラート波形となるので、違和感のない自然な効果としてのディレイビブラートになる。
【００４０】
また、前記持続区間に達するまでに発生した後発のディレイビブラート波形のための計算は簡略化できるので、結果的にはディレイビブラート波形計算用のバッファを小容量にすることができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る電子楽器の要部機能を示すブロック図である。
【図２】本発明の実施形態に係る電子楽器のハード構成を示すブロック図である。
【図３】ディレイビブラート波形の一例を示す図である。
【図４】本発明の実施形態に係る電子楽器の動作を示すメインフローチャートである。
【図５】ビブラート深さ計算のフローチャートである。
【図６】ビブラート処理のフローチャートである。
【図７】ビブラート波形の一例を示す図である。
【図８】ビブラート計算のフローチャートである。
【図９】従来技術に係るディレイビブラート波形の一例を示す図である。
【符号の説明】
１…鍵盤装置、  ６…ＭＩＤＩインタフェース、  ９…楽音発生部、  １１…ディレイビブラート情報記憶部、  １２…ディレイビブラート計算部、  １３…発音チャネル領域、  １４…計算結果記憶部
【図１】
0003583575.tif 000002
【図２】
0003583575.tif 000003
【図３】
0003583575.tif 000004
【図４】
0003583575.tif 000005
【図５】
0003583575.tif 000006
【図６】
0003583575.tif 000007
【図７】
0003583575.tif 000008
【図８】
0003583575.tif 000009
【図９】
0003583575.tif 000010