JP3583575B2 - 電子楽器 - Google Patents
電子楽器 Download PDFInfo
- Publication number
- JP3583575B2 JP3583575B2 JP09449197A JP9449197A JP3583575B2 JP 3583575 B2 JP3583575 B2 JP 3583575B2 JP 09449197 A JP09449197 A JP 09449197A JP 9449197 A JP9449197 A JP 9449197A JP 3583575 B2 JP3583575 B2 JP 3583575B2
- Authority
- JP
- Japan
- Prior art keywords
- vibrato
- delay
- depth
- calculation
- tone
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、電子楽器に関し、特に、音色効果としてディレイビブラートをかけることができる電子楽器に関する。
【0002】
【従来の技術】
電子楽器の音色効果の1つとしてディレイビブラートが知られる。これは、弦楽器、管楽器等、持続音系の楽器の音をより忠実に再現するための効果であり、発音開始から少しずつビブラートの深さを深くしていき、時間をかけて予定深さのビブラートに到達させるものである。
【0003】
図9は、音源の発音チャネル毎のディレイビブラートの波形図である。同図(a)は、発音開始から予定深さに到達するまでのビブラート波形を、発音チャネル毎に計算して発音させる例である。この例では、各発音チャネルch1〜ch3では、ビブラート開始Sから予定深さDに達するまでの振幅増加領域、およびその後の持続領域において計算により求められたビブラートが継続して付加される。
【0004】
図9(b)は、無音時から最初に楽音を発生させた時は、計算に基づくディレイビブラートを実施し、この発音中に他の発音チャネルch2,ch3で発音があったときは、その時点で発音中のビブラートと同じ深さからビブラートを開始させる例である。
【0005】
図9(c)は、無音時から最初に楽音を発生させた時は、計算に基づくディレイビブラートを実施し、この発音中に次の発音があったときは、その時点(図中t)で発音中のビブラートは停止し、新たに、最初の発音時と同様、振幅「0」からディレイ時間DTを経過した後、少しずつ深さを深くしていく例である。
【0006】
ディレイビブラートの付加方法に関し、RAMに記憶した発音チャネルデータに基づいて楽音波形のピッチを変更することにより、出力楽音波形データにディレイビブラート効果を付加する電子楽器の例が特開平7−199931号公報に記載されている。
【0007】
【発明が解決しようとする課題】
従来のディレイビブラート付加方法では、次のような問題点がある。まず、発音チャネル毎の発音チャネルデータとしてディレイビブラートの波形パラメータを計算し、これに基づいてディレイビブラートを付加する方法(図9(a))では、計算のために使用されるメモリの領域が大きくなるほか、計算も大掛かりになって処理時間がかかるという問題点がある。
【0008】
また、先に発音されている楽音に基づいてその次の発音におけるビブラートの時間や深さを計算する方法(図9(b))、および楽音発生毎に、先のビブラートを一旦クリアにする方法(図9(c))では楽音に不自然さがでるという問題点がある。
【0009】
本発明は、上記問題点を解消し、ビブラート周波数の計算に使用されるメモリ領域を大きくすることなく、かつ、不自然さがでないようにしてディレイビブラートを付加することができる電子楽器を提供することを目的とする。
【0010】
【課題を解決するための手段】
上記の課題を解決し、目的を達成するための本発明は、楽音発生からビブラート開始までの遅延区間、該遅延区間に続くビブラート深さ増加区間、ならびにビブラート深さが一定値に維持された持続区間からなるディレイビブラート効果を付加することができる電子楽器において、ビブラート深さを計算する計算手段と、前記計算手段で計算されたビブラート深さを記憶する記憶手段と、前記計算手段で計算されたビブラート深さに対応するビブラート周波数を基本波形の基本周波数に加算する周波数加算手段とを具備し、前記持続区間では予め設定されたビブラート深さを使用するようにして、後発の楽音に対応するビブラート深さ計算のため前記計算手段および記憶手段を解放するとともに、先発のディレイビブラートの遅延区間および増加区間において後発のディレイビブラート要求が発生した場合は、前記記憶手段に記憶されたビブラート深さに基づいてディレイビブラートをかけ、先発のディレイビブラートの持続区間において後発のディレイビブラート要求が発生した場合は、前記計算手段で計算したビブラート深さに基づいて該後発のディレイビブラート要求に対応したディレイビブラートをかけるように構成した点に第1の特徴があり、前記計算手段を音色毎に設けた点に第2の特徴がある。
【0011】
第1および第2の特徴によれば、ディレイビブラート深さ計算用の計算手段は、ビブラートの深さが予定の最大深さに達した後に解放される。したがって、無音状態から最初に発生される楽音信号のビブラートだけでなく、後発の楽音信号に対応するビブラートも、遅延区間を含む完全なディレイビブラート波形として供給することができる。また、計算手段が解放されるまでに発生した後発の楽音信号に対しては、先の楽音信号に対応してすでに計算されたビブラート深さが使用されるので、この後発の楽音信号に対応してビブラートをかけるために計算用バッファを使用する必要はない。
【0012】
【発明の実施の形態】
以下に、図面を参照して本発明を詳細に説明する。図2は本発明の一実施形態に係る音源装置を含む電子楽器の構成を示すブロック図である。同図において、鍵盤装置1は複数のキー1aと、該複数のキー1aの押鍵および離鍵状態を検出するため、各キー1aに対応して設けられたセンサ1bとを有する。センサ1bはバス2に接続されていて、センサ1bで検出されたキーコードやタッチの情報はバス2を介してCPU3に入力される。CPU3には、電源スイッチ、音色選択スイッチ、音量スイッチ等、種々のスイッチ類を有する操作パネル4、およびダンパ効果やソフト効果を与えるためのペダル5が接続されている。
【0013】
さらに、CPU3には、MIDIインタフェース6を介して外部機器が接続される。ROM7は、CPU3で実行されるプログラムを格納するプログラムメモリ、および音色データを格納するための音色データメモリ(波形メモリ)としての領域を有する。自動演奏用のデータメモリもROM7に設定される。RAM8にはレジスタやフラグ等の変化データを記憶するための領域、つまりワークエリアが設けられる。後述のディレイビブラート計算部としてのバッファもこの領域の一部に設定される。
【0014】
CPU3は鍵盤装置1、操作パネル4、およびペダル5から入力された信号に従い、ROM7やRAM8に記憶されたプログラムやデータを使用して処理を行い、その処理結果による指示を楽音発生部9に供給する。楽音発生部9はCPU3の指示に基づいて楽音信号を生成し、これをD/A変換した後、サウンドシステム10に供給する。サウンドシステム10は前記楽音信号に基づいて楽音を発生する。楽音発生部9は時分割処理により、発音チャネル数に対応した楽音信号を処理することができる。
【0015】
次に、本実施形態の動作概要を説明する。なお、以下の説明では、MIDIインタフェース6を介して外部機器から楽音発生信号が入力された場合を想定する。図3はディレイビブラートの発生タイミングを示す図である。ディレイビブラートaについて、タイミングt1で最初の楽音発生信号が入力されると、カウンタによるディレイタイムDTの計数を開始する。そして、ディレイタイムDTの経過すると遅延区間が終了し、深さ増加区間に移り、タイミングt2から徐々にビブラートの深さを増大させていく。ビブラートの深さ(振幅)が予定値Bdに達したとき、つまりタイミングt3以降は持続区間であり、楽音発生信号が停止されるまでこの予定値Bdのビブラート深さが保持される。そこで、本実施形態では、ビブラートの深さが予定値Bdに達したならば、その後はビブラート計算用のバッファを解放し、該バッファを、次に発生した楽音のディレイビブラートの計算に使用できるようにする。
【0016】
すなわち、ディレイビブラートaの発生中に、次の楽音発生信号が入力されると、楽音発生信号の入力タイミングに従って次のように処理がなされる。ディレイビブラートaの深さが予定値Bdに達するまでの期間において、例えば、タイミングt4やタイミングt5で第2番目の楽音発生信号が入力された場合は、第1のディレイビブラートaの計算によって得られた深さに従ってディレイビブラートbまたはcをかける。
【0017】
また、ディレイビブラートaが予定深さに達した後のタイミングt6で次の楽音発生信号が入力された場合は、ディレイビブラートの計算用のバッファが空いているので、該ディレイビブラートdの発生のためにこのバッファを使用することができる。つまりディレイビブラートdは、振幅が「0」の状態からディレイタイムを経過した後徐々に深さを増大していくような所望の波形にすることができる。
【0018】
このように、本実施形態では、すべての発音チャネルに対応してディレイビブラートの計算用のバッファを確保しておく必要がない。しかも、従来技術(図6(b))と異なり、先のディレイビブラートの深さが予定値に達した後の持続区間で発生したディレイビブラートは、計算に基づく精度のよいディレイビブラートとすることができる。
【0019】
次に、前記楽音発生部9の要部機能を説明する。図1において、ROM7に設けられるディレイビブラート情報記憶部11には、基本ビブラート波形ならびに、発生させようとするディレイビブラート情報つまりディレイビブラートの最大深さBd、ディレイタイムDT、および深さの単位増加量Δdつまりレイトが記憶される。ディレイビブラート情報は例えば音色毎に設定されている。
【0020】
ディレイビブラート計算部12は、前記ディレイタイムDTを計数するカウンタと、該カウンタのカウントアップに応答し、前記ディレイビブラート情報記憶部11に記憶されたデータに基づき、予定の割込みタイミング毎のディレイビブラート深さおよびビブラート周波数を計算する機能を有する。計算されたディレイビブラート深さは発音チャネル領域13に出力されるとともに、計算結果は計算結果記憶部14に記憶される。計算結果記憶部14には各発音チャネル毎の、計算されたビブラート深さが記憶されている。
【0021】
ディレイビブラート計算部12のうちビブラート深さ計算に使用されるバッファ領域および計算結果記憶部14は、計算中のディレイビブラートの深さが最大値に達した時点で、次のディレイビブラート深さの計算に使用するためクリアされる。ディレイビブラートの深さが最大値に達した後は、MIDI情報により楽音停止信号が入力されるまでは、ディレイビブラート計算部12によるリアルタイムの計算結果によらず、一定値、つまり最大深さBdを有するディレイビブラート波形に対応した周波数が発音チャネル領域13に出力される。この最大深さBdは、図示しない記憶部に別途記憶された固定データを使用できる。
【0022】
ディレイビブラートパート判別部15は、MIDI情報つまり演奏情報からディレイビブラートパートであるか否かを判断し、ディレイビブラートパートならば状態判別部16に検出信号を出力する。状態判別部16はディレイビブラートパート判別部15から入力された検出信号に応答してディレイビブラート計算部12をサーチし、その空き状態を判別する。
【0023】
ディレイビブラート計算部12が空いている場合は、状態判別部16は該計算部12に計算を実行させる。ディレイビブラート計算部12が空いていない場合、つまり先のディレイビブラート発生のための計算を実行中であれば、状態判別部16は計算結果記憶部14から現在のディレイビブラート深さに基づく周波数を前記発音チャネル領域13に読み出すための信号を供給する。なお、ディレイビブラートパートでない場合には、通常のビブラートをかけるための、予め設定された一定深さのビブラート波形に基づいて周波数を計算し、前記発音チャネル領域13に出力する。
【0024】
基本周波数計算部17は、ROM7に設けられる楽音波形記憶部18に記憶されている楽音波形をキーコードに従って読み出し、前記演奏情報に基づいて基本周波数を決定する。基本周波数は前記発音チャネル領域13に供給される。基本周波数には演奏情報に含まれるベンド情報等によって装飾を加えることができる。
【0025】
MIDI情報は、予め定めた手順により、アサイナ19によって各発音チャネルに割り当てられる。発音チャネル領域13では、アサイナ19によって割り当てられた各発音チャネル毎に、基本周波数にディレイビブラート周波数が加算されて楽音信号が生成される。楽音信号はサウンドシステム10に出力される。
【0026】
次に、上述の機能に基づく電子楽器の動作をフローチャートを参照して説明する。図4はメインルーチンのフローチャートである。電源が投入された後、ステップS1では、CPU3、RAM8、楽音発生部9を構成するLSI等を初期化する。ステップS2のスイッチイベント処理では、音色を指定するスイッチ等の状態を読み込んで処理をする。ステップS3の鍵盤イベント処理では、キー1aに対応して設けられたセンサ1bで検出されたキーコードやベロシティ情報等を読み込んで処理をする。ステップS4のMIDI処理では、MIDIインタフェース6を通じて入力されるMIDI情報を読み込んで処理をする。ステップS5のビブラート処理では上述の機能(図1)に基づくビブラート波形の生成処理を行う。ステップS6のその他の処理では、必要に応じて音響効果を与えるための種々の処理を行う。なお、必要に応じて自動演奏処理を行うこともできる。
【0027】
次に、発音開始時処理を図5のフローチャートを参照して説明する。この発音開始時処理は、キーオンまたはMIDI情報の入力時に実行される。ステップS10では、基本周波数計算部17において、発音する音のキーナンバ、オクターブ変更情報、トランスポーズ情報等に基づき、楽音波形記憶部18の楽音波形に基づいて基本周波数の計算をする。前記キーナンバ、オクターブ変更情報、トランスポーズ情報等はベンドやビブラート等、発音中の音程変化の処理にも使用するため、バッファに保持される。ステップS11では、前記基本周波数にベンド情報やチューニング変更情報等、音程に関する情報を加算する。これらの情報は発音中に変更可能なものであり、ここでは発音開始時点に加算されるべき予定の情報を加算する。
【0028】
ステップS12では、テーブル等により音色毎に予め設定されたデータを参照して、発音する音のパートに割当てられた音がディレイビブラートのパートか否かを判別する。判別結果はチェックフラグに記憶される。ディレイビブラートパートでないと判断された場合は、ステップS13に移行して通常のビブラートをかけるためのデータを設定する。つまり、発音開始から終了まで予め設定された一定の深さでビブラートをかけるためのデータを設定する。
【0029】
一方、ディレイビブラートパートである場合は、ステップS14に進み、ディレイビブラート計算用のバッファが空いているか否かを判別する。これは、計算用バッファの空き状態を示すバッファチェックフラグFに基づいて判別される。バッファチェックフラグFはメインルーチン内で設定(後述)される。計算用バッファが空いていれば、ステップS15に進んで計算用バッファ使用中を示すフラグFをセットし、ステップS16では計算用バッファを確保する。ステップS17では、ディレイタイムDTを計数するカウンタをスタートする。
【0030】
計算用バッファが空いていなければ、ステップS14からステップS18に進み、当該パートにおけるビブラート深さ現在値をビブラート深さとして設定する。すなわち、計算用バッファが空いていないとうことは、該パート内で、ビブラートが定常状態になっていない音があることを意味し、ここでは、この定常状態になっていない音のビブラート深さにならって、その次に発生すべき音のビブラート深さを決定する。
【0031】
つづいて、図6を参照してメインルーチンにおけるビブラート処理についてさらに説明する。ステップS50では、ディレイビブラートパートか否かを判別する。この判別は前記発音開始時処理において記憶された判別結果を示すチェックフラグを参照して行う。ステップS51では、割り込み処理で減算された前記ディレイタイムDTのカウンタ値が「0」か否かにより、ディレイタイムDTが経過したか否かを判断する。
【0032】
ディレイタイムDTが経過したならば、ステップS52に進み、ビブラートの深さが予定の最大深さBdに達したか否かを判断する。最大深さBdに達していない場合は、ステップS53に進み、ビブラート深さの現在値に単位増加量Δdを加算した値が最大深さBdに達したか否かを判断する。この判断が肯定ならば、ビブラートは定常状態に達していないと判断し、ステップS54に進んで前記現在値に単位増加量Δdを加算した値でビブラート深さを更新する。
【0033】
ステップS53の判断が否定ならば、ビブラートは定常状態に達したと判断してステップS55に進み、最大値Bdをビブラート深さとして設定すると同時に計算用バッファを開放する。ステップS56では、計算用バッファが開放されていることを表すため、フラグFに「0」をセットする。ステップS57では、上述のビブラート深さでビブラートをかけるための計算を行う。
【0034】
つづいて、上記ビブラート計算をさらに詳細に説明する。図7はビブラート基本波形の1周期分を示す図であり、一例として鋸歯状波を示す。同図において、横軸は時間であり、縦軸は変位である。各時間毎の変位はデジタルデータとして記憶しているため階段状で表されている。
【0035】
図8は、前記ビブラート基本波形および前記ビブラート深さに基づくビブラート計算のフローチャートである。ステップS571では、割込みタイマのカウンタ値に基づき、図7の基本ビブラート波形から変位を読み出す。ステップS572では、加算周波数つまりビブラートの周波数を計算する。ここでは、抽出された前記変位に前記ビブラート深さを乗算して、現在のビブラート深さを計算する。すなわち、前記タイミングt1〜t2(図3)で乗算されるビブラート深さは「0」であり、タイミングt2〜t3で乗算されるビブラート深さは、そのタイミングに応じて「0」〜「Bd」の間の値である。そして、前記現在のビブラート深さに基づいてビブラート波形の周波数を算出する。ビブラート深さに基づく周波数の算出手段は、例えばVCOによって実現できる。ステップS573では、算出された加算周波数を、前記ステップS10で算出された基本周波数に加算し、発音チャネル領域13に書き込む。
【0036】
以上のビブラート処理は発音チャネル毎に時分割処理されるが、ディレイビブラート計算用のバッファは、例えばMIDIチャネル毎つまりパート毎に共通で使用するように設定しておくものとする。
【0037】
以上のように、本実施形態では、ディレイビブラート深さの計算は、ビブラートの深さが予定の最大値Bdになるまで行い、その後は計算によらず、固定値として記憶されている最大値Bdに基づいてビブラート波形の周波数を計算することができるのでビブラート深さ計算用のバッファは解放できる。解放されたバッファはその後に発生した楽音信号に対応するディレイビブラート深さの計算に使用できるので、ディレイビブラート深さ計算用バッファの領域を大きくとらないですむ。ディレイビブラート深さ計算用のバッファは、上述のように、MIDIチャネル毎つまり音色毎またはパート毎に対応して設けるようにすればよい。
【0038】
なお、本実施形態では、MIDI情報に従ってディレイビブラートをかける場合を想定したが、キーから入力される演奏情報に基づいてディレイビブラートをかける場合にも適用できるのはもちろんである。
【0039】
【発明の効果】
以上の説明から明らかなように、請求項1および請求項2の発明では、先発のディレイビブラートが一定深さの持続区間に達した後に発生した後発のビブラート波形は完全なディレイビブラート波形となるので、違和感のない自然な効果としてのディレイビブラートになる。
【0040】
また、前記持続区間に達するまでに発生した後発のディレイビブラート波形のための計算は簡略化できるので、結果的にはディレイビブラート波形計算用のバッファを小容量にすることができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係る電子楽器の要部機能を示すブロック図である。
【図2】本発明の実施形態に係る電子楽器のハード構成を示すブロック図である。
【図3】ディレイビブラート波形の一例を示す図である。
【図4】本発明の実施形態に係る電子楽器の動作を示すメインフローチャートである。
【図5】ビブラート深さ計算のフローチャートである。
【図6】ビブラート処理のフローチャートである。
【図7】ビブラート波形の一例を示す図である。
【図8】ビブラート計算のフローチャートである。
【図9】従来技術に係るディレイビブラート波形の一例を示す図である。
【符号の説明】
1…鍵盤装置、 6…MIDIインタフェース、 9…楽音発生部、 11…ディレイビブラート情報記憶部、 12…ディレイビブラート計算部、 13…発音チャネル領域、 14…計算結果記憶部
【発明の属する技術分野】
本発明は、電子楽器に関し、特に、音色効果としてディレイビブラートをかけることができる電子楽器に関する。
【0002】
【従来の技術】
電子楽器の音色効果の1つとしてディレイビブラートが知られる。これは、弦楽器、管楽器等、持続音系の楽器の音をより忠実に再現するための効果であり、発音開始から少しずつビブラートの深さを深くしていき、時間をかけて予定深さのビブラートに到達させるものである。
【0003】
図9は、音源の発音チャネル毎のディレイビブラートの波形図である。同図(a)は、発音開始から予定深さに到達するまでのビブラート波形を、発音チャネル毎に計算して発音させる例である。この例では、各発音チャネルch1〜ch3では、ビブラート開始Sから予定深さDに達するまでの振幅増加領域、およびその後の持続領域において計算により求められたビブラートが継続して付加される。
【0004】
図9(b)は、無音時から最初に楽音を発生させた時は、計算に基づくディレイビブラートを実施し、この発音中に他の発音チャネルch2,ch3で発音があったときは、その時点で発音中のビブラートと同じ深さからビブラートを開始させる例である。
【0005】
図9(c)は、無音時から最初に楽音を発生させた時は、計算に基づくディレイビブラートを実施し、この発音中に次の発音があったときは、その時点(図中t)で発音中のビブラートは停止し、新たに、最初の発音時と同様、振幅「0」からディレイ時間DTを経過した後、少しずつ深さを深くしていく例である。
【0006】
ディレイビブラートの付加方法に関し、RAMに記憶した発音チャネルデータに基づいて楽音波形のピッチを変更することにより、出力楽音波形データにディレイビブラート効果を付加する電子楽器の例が特開平7−199931号公報に記載されている。
【0007】
【発明が解決しようとする課題】
従来のディレイビブラート付加方法では、次のような問題点がある。まず、発音チャネル毎の発音チャネルデータとしてディレイビブラートの波形パラメータを計算し、これに基づいてディレイビブラートを付加する方法(図9(a))では、計算のために使用されるメモリの領域が大きくなるほか、計算も大掛かりになって処理時間がかかるという問題点がある。
【0008】
また、先に発音されている楽音に基づいてその次の発音におけるビブラートの時間や深さを計算する方法(図9(b))、および楽音発生毎に、先のビブラートを一旦クリアにする方法(図9(c))では楽音に不自然さがでるという問題点がある。
【0009】
本発明は、上記問題点を解消し、ビブラート周波数の計算に使用されるメモリ領域を大きくすることなく、かつ、不自然さがでないようにしてディレイビブラートを付加することができる電子楽器を提供することを目的とする。
【0010】
【課題を解決するための手段】
上記の課題を解決し、目的を達成するための本発明は、楽音発生からビブラート開始までの遅延区間、該遅延区間に続くビブラート深さ増加区間、ならびにビブラート深さが一定値に維持された持続区間からなるディレイビブラート効果を付加することができる電子楽器において、ビブラート深さを計算する計算手段と、前記計算手段で計算されたビブラート深さを記憶する記憶手段と、前記計算手段で計算されたビブラート深さに対応するビブラート周波数を基本波形の基本周波数に加算する周波数加算手段とを具備し、前記持続区間では予め設定されたビブラート深さを使用するようにして、後発の楽音に対応するビブラート深さ計算のため前記計算手段および記憶手段を解放するとともに、先発のディレイビブラートの遅延区間および増加区間において後発のディレイビブラート要求が発生した場合は、前記記憶手段に記憶されたビブラート深さに基づいてディレイビブラートをかけ、先発のディレイビブラートの持続区間において後発のディレイビブラート要求が発生した場合は、前記計算手段で計算したビブラート深さに基づいて該後発のディレイビブラート要求に対応したディレイビブラートをかけるように構成した点に第1の特徴があり、前記計算手段を音色毎に設けた点に第2の特徴がある。
【0011】
第1および第2の特徴によれば、ディレイビブラート深さ計算用の計算手段は、ビブラートの深さが予定の最大深さに達した後に解放される。したがって、無音状態から最初に発生される楽音信号のビブラートだけでなく、後発の楽音信号に対応するビブラートも、遅延区間を含む完全なディレイビブラート波形として供給することができる。また、計算手段が解放されるまでに発生した後発の楽音信号に対しては、先の楽音信号に対応してすでに計算されたビブラート深さが使用されるので、この後発の楽音信号に対応してビブラートをかけるために計算用バッファを使用する必要はない。
【0012】
【発明の実施の形態】
以下に、図面を参照して本発明を詳細に説明する。図2は本発明の一実施形態に係る音源装置を含む電子楽器の構成を示すブロック図である。同図において、鍵盤装置1は複数のキー1aと、該複数のキー1aの押鍵および離鍵状態を検出するため、各キー1aに対応して設けられたセンサ1bとを有する。センサ1bはバス2に接続されていて、センサ1bで検出されたキーコードやタッチの情報はバス2を介してCPU3に入力される。CPU3には、電源スイッチ、音色選択スイッチ、音量スイッチ等、種々のスイッチ類を有する操作パネル4、およびダンパ効果やソフト効果を与えるためのペダル5が接続されている。
【0013】
さらに、CPU3には、MIDIインタフェース6を介して外部機器が接続される。ROM7は、CPU3で実行されるプログラムを格納するプログラムメモリ、および音色データを格納するための音色データメモリ(波形メモリ)としての領域を有する。自動演奏用のデータメモリもROM7に設定される。RAM8にはレジスタやフラグ等の変化データを記憶するための領域、つまりワークエリアが設けられる。後述のディレイビブラート計算部としてのバッファもこの領域の一部に設定される。
【0014】
CPU3は鍵盤装置1、操作パネル4、およびペダル5から入力された信号に従い、ROM7やRAM8に記憶されたプログラムやデータを使用して処理を行い、その処理結果による指示を楽音発生部9に供給する。楽音発生部9はCPU3の指示に基づいて楽音信号を生成し、これをD/A変換した後、サウンドシステム10に供給する。サウンドシステム10は前記楽音信号に基づいて楽音を発生する。楽音発生部9は時分割処理により、発音チャネル数に対応した楽音信号を処理することができる。
【0015】
次に、本実施形態の動作概要を説明する。なお、以下の説明では、MIDIインタフェース6を介して外部機器から楽音発生信号が入力された場合を想定する。図3はディレイビブラートの発生タイミングを示す図である。ディレイビブラートaについて、タイミングt1で最初の楽音発生信号が入力されると、カウンタによるディレイタイムDTの計数を開始する。そして、ディレイタイムDTの経過すると遅延区間が終了し、深さ増加区間に移り、タイミングt2から徐々にビブラートの深さを増大させていく。ビブラートの深さ(振幅)が予定値Bdに達したとき、つまりタイミングt3以降は持続区間であり、楽音発生信号が停止されるまでこの予定値Bdのビブラート深さが保持される。そこで、本実施形態では、ビブラートの深さが予定値Bdに達したならば、その後はビブラート計算用のバッファを解放し、該バッファを、次に発生した楽音のディレイビブラートの計算に使用できるようにする。
【0016】
すなわち、ディレイビブラートaの発生中に、次の楽音発生信号が入力されると、楽音発生信号の入力タイミングに従って次のように処理がなされる。ディレイビブラートaの深さが予定値Bdに達するまでの期間において、例えば、タイミングt4やタイミングt5で第2番目の楽音発生信号が入力された場合は、第1のディレイビブラートaの計算によって得られた深さに従ってディレイビブラートbまたはcをかける。
【0017】
また、ディレイビブラートaが予定深さに達した後のタイミングt6で次の楽音発生信号が入力された場合は、ディレイビブラートの計算用のバッファが空いているので、該ディレイビブラートdの発生のためにこのバッファを使用することができる。つまりディレイビブラートdは、振幅が「0」の状態からディレイタイムを経過した後徐々に深さを増大していくような所望の波形にすることができる。
【0018】
このように、本実施形態では、すべての発音チャネルに対応してディレイビブラートの計算用のバッファを確保しておく必要がない。しかも、従来技術(図6(b))と異なり、先のディレイビブラートの深さが予定値に達した後の持続区間で発生したディレイビブラートは、計算に基づく精度のよいディレイビブラートとすることができる。
【0019】
次に、前記楽音発生部9の要部機能を説明する。図1において、ROM7に設けられるディレイビブラート情報記憶部11には、基本ビブラート波形ならびに、発生させようとするディレイビブラート情報つまりディレイビブラートの最大深さBd、ディレイタイムDT、および深さの単位増加量Δdつまりレイトが記憶される。ディレイビブラート情報は例えば音色毎に設定されている。
【0020】
ディレイビブラート計算部12は、前記ディレイタイムDTを計数するカウンタと、該カウンタのカウントアップに応答し、前記ディレイビブラート情報記憶部11に記憶されたデータに基づき、予定の割込みタイミング毎のディレイビブラート深さおよびビブラート周波数を計算する機能を有する。計算されたディレイビブラート深さは発音チャネル領域13に出力されるとともに、計算結果は計算結果記憶部14に記憶される。計算結果記憶部14には各発音チャネル毎の、計算されたビブラート深さが記憶されている。
【0021】
ディレイビブラート計算部12のうちビブラート深さ計算に使用されるバッファ領域および計算結果記憶部14は、計算中のディレイビブラートの深さが最大値に達した時点で、次のディレイビブラート深さの計算に使用するためクリアされる。ディレイビブラートの深さが最大値に達した後は、MIDI情報により楽音停止信号が入力されるまでは、ディレイビブラート計算部12によるリアルタイムの計算結果によらず、一定値、つまり最大深さBdを有するディレイビブラート波形に対応した周波数が発音チャネル領域13に出力される。この最大深さBdは、図示しない記憶部に別途記憶された固定データを使用できる。
【0022】
ディレイビブラートパート判別部15は、MIDI情報つまり演奏情報からディレイビブラートパートであるか否かを判断し、ディレイビブラートパートならば状態判別部16に検出信号を出力する。状態判別部16はディレイビブラートパート判別部15から入力された検出信号に応答してディレイビブラート計算部12をサーチし、その空き状態を判別する。
【0023】
ディレイビブラート計算部12が空いている場合は、状態判別部16は該計算部12に計算を実行させる。ディレイビブラート計算部12が空いていない場合、つまり先のディレイビブラート発生のための計算を実行中であれば、状態判別部16は計算結果記憶部14から現在のディレイビブラート深さに基づく周波数を前記発音チャネル領域13に読み出すための信号を供給する。なお、ディレイビブラートパートでない場合には、通常のビブラートをかけるための、予め設定された一定深さのビブラート波形に基づいて周波数を計算し、前記発音チャネル領域13に出力する。
【0024】
基本周波数計算部17は、ROM7に設けられる楽音波形記憶部18に記憶されている楽音波形をキーコードに従って読み出し、前記演奏情報に基づいて基本周波数を決定する。基本周波数は前記発音チャネル領域13に供給される。基本周波数には演奏情報に含まれるベンド情報等によって装飾を加えることができる。
【0025】
MIDI情報は、予め定めた手順により、アサイナ19によって各発音チャネルに割り当てられる。発音チャネル領域13では、アサイナ19によって割り当てられた各発音チャネル毎に、基本周波数にディレイビブラート周波数が加算されて楽音信号が生成される。楽音信号はサウンドシステム10に出力される。
【0026】
次に、上述の機能に基づく電子楽器の動作をフローチャートを参照して説明する。図4はメインルーチンのフローチャートである。電源が投入された後、ステップS1では、CPU3、RAM8、楽音発生部9を構成するLSI等を初期化する。ステップS2のスイッチイベント処理では、音色を指定するスイッチ等の状態を読み込んで処理をする。ステップS3の鍵盤イベント処理では、キー1aに対応して設けられたセンサ1bで検出されたキーコードやベロシティ情報等を読み込んで処理をする。ステップS4のMIDI処理では、MIDIインタフェース6を通じて入力されるMIDI情報を読み込んで処理をする。ステップS5のビブラート処理では上述の機能(図1)に基づくビブラート波形の生成処理を行う。ステップS6のその他の処理では、必要に応じて音響効果を与えるための種々の処理を行う。なお、必要に応じて自動演奏処理を行うこともできる。
【0027】
次に、発音開始時処理を図5のフローチャートを参照して説明する。この発音開始時処理は、キーオンまたはMIDI情報の入力時に実行される。ステップS10では、基本周波数計算部17において、発音する音のキーナンバ、オクターブ変更情報、トランスポーズ情報等に基づき、楽音波形記憶部18の楽音波形に基づいて基本周波数の計算をする。前記キーナンバ、オクターブ変更情報、トランスポーズ情報等はベンドやビブラート等、発音中の音程変化の処理にも使用するため、バッファに保持される。ステップS11では、前記基本周波数にベンド情報やチューニング変更情報等、音程に関する情報を加算する。これらの情報は発音中に変更可能なものであり、ここでは発音開始時点に加算されるべき予定の情報を加算する。
【0028】
ステップS12では、テーブル等により音色毎に予め設定されたデータを参照して、発音する音のパートに割当てられた音がディレイビブラートのパートか否かを判別する。判別結果はチェックフラグに記憶される。ディレイビブラートパートでないと判断された場合は、ステップS13に移行して通常のビブラートをかけるためのデータを設定する。つまり、発音開始から終了まで予め設定された一定の深さでビブラートをかけるためのデータを設定する。
【0029】
一方、ディレイビブラートパートである場合は、ステップS14に進み、ディレイビブラート計算用のバッファが空いているか否かを判別する。これは、計算用バッファの空き状態を示すバッファチェックフラグFに基づいて判別される。バッファチェックフラグFはメインルーチン内で設定(後述)される。計算用バッファが空いていれば、ステップS15に進んで計算用バッファ使用中を示すフラグFをセットし、ステップS16では計算用バッファを確保する。ステップS17では、ディレイタイムDTを計数するカウンタをスタートする。
【0030】
計算用バッファが空いていなければ、ステップS14からステップS18に進み、当該パートにおけるビブラート深さ現在値をビブラート深さとして設定する。すなわち、計算用バッファが空いていないとうことは、該パート内で、ビブラートが定常状態になっていない音があることを意味し、ここでは、この定常状態になっていない音のビブラート深さにならって、その次に発生すべき音のビブラート深さを決定する。
【0031】
つづいて、図6を参照してメインルーチンにおけるビブラート処理についてさらに説明する。ステップS50では、ディレイビブラートパートか否かを判別する。この判別は前記発音開始時処理において記憶された判別結果を示すチェックフラグを参照して行う。ステップS51では、割り込み処理で減算された前記ディレイタイムDTのカウンタ値が「0」か否かにより、ディレイタイムDTが経過したか否かを判断する。
【0032】
ディレイタイムDTが経過したならば、ステップS52に進み、ビブラートの深さが予定の最大深さBdに達したか否かを判断する。最大深さBdに達していない場合は、ステップS53に進み、ビブラート深さの現在値に単位増加量Δdを加算した値が最大深さBdに達したか否かを判断する。この判断が肯定ならば、ビブラートは定常状態に達していないと判断し、ステップS54に進んで前記現在値に単位増加量Δdを加算した値でビブラート深さを更新する。
【0033】
ステップS53の判断が否定ならば、ビブラートは定常状態に達したと判断してステップS55に進み、最大値Bdをビブラート深さとして設定すると同時に計算用バッファを開放する。ステップS56では、計算用バッファが開放されていることを表すため、フラグFに「0」をセットする。ステップS57では、上述のビブラート深さでビブラートをかけるための計算を行う。
【0034】
つづいて、上記ビブラート計算をさらに詳細に説明する。図7はビブラート基本波形の1周期分を示す図であり、一例として鋸歯状波を示す。同図において、横軸は時間であり、縦軸は変位である。各時間毎の変位はデジタルデータとして記憶しているため階段状で表されている。
【0035】
図8は、前記ビブラート基本波形および前記ビブラート深さに基づくビブラート計算のフローチャートである。ステップS571では、割込みタイマのカウンタ値に基づき、図7の基本ビブラート波形から変位を読み出す。ステップS572では、加算周波数つまりビブラートの周波数を計算する。ここでは、抽出された前記変位に前記ビブラート深さを乗算して、現在のビブラート深さを計算する。すなわち、前記タイミングt1〜t2(図3)で乗算されるビブラート深さは「0」であり、タイミングt2〜t3で乗算されるビブラート深さは、そのタイミングに応じて「0」〜「Bd」の間の値である。そして、前記現在のビブラート深さに基づいてビブラート波形の周波数を算出する。ビブラート深さに基づく周波数の算出手段は、例えばVCOによって実現できる。ステップS573では、算出された加算周波数を、前記ステップS10で算出された基本周波数に加算し、発音チャネル領域13に書き込む。
【0036】
以上のビブラート処理は発音チャネル毎に時分割処理されるが、ディレイビブラート計算用のバッファは、例えばMIDIチャネル毎つまりパート毎に共通で使用するように設定しておくものとする。
【0037】
以上のように、本実施形態では、ディレイビブラート深さの計算は、ビブラートの深さが予定の最大値Bdになるまで行い、その後は計算によらず、固定値として記憶されている最大値Bdに基づいてビブラート波形の周波数を計算することができるのでビブラート深さ計算用のバッファは解放できる。解放されたバッファはその後に発生した楽音信号に対応するディレイビブラート深さの計算に使用できるので、ディレイビブラート深さ計算用バッファの領域を大きくとらないですむ。ディレイビブラート深さ計算用のバッファは、上述のように、MIDIチャネル毎つまり音色毎またはパート毎に対応して設けるようにすればよい。
【0038】
なお、本実施形態では、MIDI情報に従ってディレイビブラートをかける場合を想定したが、キーから入力される演奏情報に基づいてディレイビブラートをかける場合にも適用できるのはもちろんである。
【0039】
【発明の効果】
以上の説明から明らかなように、請求項1および請求項2の発明では、先発のディレイビブラートが一定深さの持続区間に達した後に発生した後発のビブラート波形は完全なディレイビブラート波形となるので、違和感のない自然な効果としてのディレイビブラートになる。
【0040】
また、前記持続区間に達するまでに発生した後発のディレイビブラート波形のための計算は簡略化できるので、結果的にはディレイビブラート波形計算用のバッファを小容量にすることができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係る電子楽器の要部機能を示すブロック図である。
【図2】本発明の実施形態に係る電子楽器のハード構成を示すブロック図である。
【図3】ディレイビブラート波形の一例を示す図である。
【図4】本発明の実施形態に係る電子楽器の動作を示すメインフローチャートである。
【図5】ビブラート深さ計算のフローチャートである。
【図6】ビブラート処理のフローチャートである。
【図7】ビブラート波形の一例を示す図である。
【図8】ビブラート計算のフローチャートである。
【図9】従来技術に係るディレイビブラート波形の一例を示す図である。
【符号の説明】
1…鍵盤装置、 6…MIDIインタフェース、 9…楽音発生部、 11…ディレイビブラート情報記憶部、 12…ディレイビブラート計算部、 13…発音チャネル領域、 14…計算結果記憶部
Claims (2)
- 楽音発生からビブラート開始までの遅延区間、該遅延区間に続くビブラート深さ増加区間、ならびにビブラート深さが一定値に維持された持続区間からなるディレイビブラート効果を付加することができる電子楽器において、
ビブラート深さを計算する計算手段と、
前記計算手段で計算されたビブラート深さを記憶する記憶手段と、
前記計算手段で計算されたビブラート深さに対応するビブラート周波数を基本波形の基本周波数に加算する周波数加算手段とを具備し、
前記持続区間では予め設定されたビブラート深さを使用するようにして、後発の楽音に対応するビブラート深さ計算のため前記計算手段および記憶手段を解放するとともに、
先発のディレイビブラートの遅延区間および増加区間において後発のディレイビブラート要求が発生した場合は、前記記憶手段に記憶されたビブラート深さに基づいてディレイビブラートをかけ、
先発のディレイビブラートの持続区間において後発のディレイビブラート要求が発生した場合は、前記計算手段で計算したビブラート深さに基づいて該後発のディレイビブラート要求に対応したディレイビブラートをかけるように構成したことを特徴とする電子楽器。 - 前記計算手段を音色毎に設けたことを特徴とする請求項1記載の電子楽器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09449197A JP3583575B2 (ja) | 1997-03-31 | 1997-03-31 | 電子楽器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09449197A JP3583575B2 (ja) | 1997-03-31 | 1997-03-31 | 電子楽器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10274982A JPH10274982A (ja) | 1998-10-13 |
JP3583575B2 true JP3583575B2 (ja) | 2004-11-04 |
Family
ID=14111777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP09449197A Expired - Fee Related JP3583575B2 (ja) | 1997-03-31 | 1997-03-31 | 電子楽器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3583575B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005004106A (ja) * | 2003-06-13 | 2005-01-06 | Sony Corp | 信号合成方法及び装置、歌声合成方法及び装置、プログラム及び記録媒体並びにロボット装置 |
-
1997
- 1997-03-31 JP JP09449197A patent/JP3583575B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10274982A (ja) | 1998-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH09127941A (ja) | 電子楽器 | |
JPH09114462A (ja) | 楽音発生方法 | |
JPH08202361A (ja) | 電子楽器 | |
JP3583575B2 (ja) | 電子楽器 | |
US6031173A (en) | Apparatus for generating musical tones using impulse response signals | |
JPH11161273A (ja) | 楽音生成装置及び楽音生成方法 | |
JP2698942B2 (ja) | 楽音発生装置 | |
JP2629418B2 (ja) | 楽音合成装置 | |
JP3419563B2 (ja) | 楽音信号のレベル制御装置 | |
JP3436806B2 (ja) | 楽音信号のエンベロープ制御装置 | |
JP2715795B2 (ja) | 発音割当手段を有する楽音合成装置 | |
JP2646812B2 (ja) | 電子楽器 | |
JP3660125B2 (ja) | 電子楽器の音像定位感制御装置 | |
JP3122661B2 (ja) | 電子楽器 | |
JP3649906B2 (ja) | 電子楽器のキーオンディレイ効果付加装置 | |
JP3097534B2 (ja) | 楽音生成方法 | |
JP2956924B2 (ja) | 電子楽器の自動伴奏装置 | |
JP2578327B2 (ja) | 自動演奏装置 | |
JP3652504B2 (ja) | 電子楽器の残響効果付加装置 | |
JP3716701B2 (ja) | 発音チャンネル割り当て方法及び装置 | |
JPH07199931A (ja) | 周波数データ生成装置 | |
JP3090383B2 (ja) | 楽音割当装置及び楽音発生装置 | |
JP2853588B2 (ja) | 電子楽器 | |
JP3705203B2 (ja) | 楽音発生方法 | |
JP3637190B2 (ja) | 楽音生成装置及び楽音生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040628 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040727 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040729 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |