(57)【要約】【課題】電子楽器において同一の音高変更効果の付加指示によって発音中の楽音毎に異なる変位量の音高変更をかけることを可能とし、電子楽器における表現力を向上させる。【解決手段】音高のダウン時に、ピッチベンダーホイール１０３、ピッチモジュレーションホイール１０４、ピッチエンベロープジェネレータによる音高変更の指示量（合算値）が−２００セントであれば、発音中の楽音の音高がＣ７では２００セント、Ｃ６では４００セント、Ｃ３では１０００セント、Ｃ０では１６００セント下げることができる。電子楽器特有の和音の構成音１つ１つに一律にかかるピッチベンド等だけではなく、トレモロアームのように同じピッチベンド操作を行っても高音弦に比べて低音弦は大きな幅でピッチが変化するという物理楽器特有のリアルな変化がシミュレーション可能となる。【選択図】図７
2018054856.tif 000002
【特許請求の範囲】
【請求項１】
発音中の楽音に対して音高変更効果の付加を指示する音高変更効果指示手段と、
前記音高変更効果指示手段により前記音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、前記発音中の楽音の夫々の音高を変更するように制御する音高制御手段と、
を有する電子楽器。
【請求項２】
前記音高変更効果指示手段は、ピッチベンダー、ピッチモジュレーションホイール、又はピッチエンベロープジェネレータの少なくとも１つ以上の音高変更効果付加処理を実行し、
前記音高変更効果指示手段は、所定の時間間隔で、前記少なくとも１つ以上の音高変更効果付加処理の各出力値の合算値により前記音高変更効果の付加を指示する、請求項１に記載の電子楽器。
【請求項３】
発音中の楽音に対して音高変更効果の付加を指示する処理部を備えた電子楽器における音高変更効果付加方法であって、前記処理部は、
前記発音中の楽音に対して音高変更効果の付加を指示し、
前記音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、前記発音中の楽音の夫々の音高を変更するように制御する、音高変更効果付加方法。
【請求項４】
電子楽器で発音中の楽音に対して音高変更効果の付加を指示するコンピュータに、
前記発音中の楽音に対して音高変更効果の付加を指示するステップと、
前記音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、前記発音中の楽音の夫々の音高を変更するように制御するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器において発音中の楽音に音高効果の付加を指示する技術に関する。
【背景技術】
【０００２】
ピッチベンダー、ピッチモジュレーションホイール、又はピッチエンベロープジェネレータと呼ばれる音高効果付加手段を備えた電子楽器が知られている。演奏者は、ピッチベンダーを操作することにより、操作した量だけ発音中の楽音の音高を変化させることができる。また、演奏者は、ピッチモジュレーションホイールを操作することにより、操作した量に対応してＬＦＯ（低周波発振器）の出力量を制御し、その低周波発振出力によって発音中の楽音の音高を周期的に変化させることができる。更に、ピッチエンベロープジェネレータによって、発音される楽音の音高をエンベロープに従ってオートベンドすることができる。
【０００３】
ここで、電子楽器において例えばエレクトリックギターの音色の楽音を出したいとき、一部のエレクトリックギターに搭載されている、いわゆるトレモロアーム（もしくはトレモロユニット）による演奏効果を出したい場合がある。トレモロアームはギターの弦をボディ側で固定するブリッジ部分に取り付けられており、演奏者がトレモロアームを操作しなければ、弦のテンションとトレモロアームを指示するスプリングのテンションが釣り合ったところで静止している。演奏者がトレモロアームを押し下げると、ブリッジが傾いて前のめりになり、弦長が僅かに短くなる。これにより、弦のテンションが下がり、各弦の音高も下がるように機能する。
【０００４】
このトレモロアームの演奏効果を出すために、本来の電気楽器であるエレクトリックギターに付いているものと同じ機能のトレモロアームを実装したエレクトリックギター型の電子弦楽器が知られている（例えば特許文献１、２）。
【０００５】
しかしながら、キーボード型の電子鍵盤楽器でも、サンプリングによりエレクトリックギターの音色を発音させることが可能となっており、そのような電子鍵盤楽器で演奏を行う場合には、トレモロアームは装着することはできないため、ピッチベンダーホイールやピッチモジュレーションホイールでトレモロやビブラートなどの音高変更効果を付加することになる。
【０００６】
ここで、例えば電気ギターのトレモロユニットで全弦の音程を下げる操作をした時は、各弦はほぼおなじ変位量で弦長が短くなるが、高音用の細い弦に比べて低音用の太い弦ほど音程変化が大きくなる。具体的には約１ミリメートル弦長を短くしてテンションを緩めると、高音側の第１弦の音高が１００セント下がるところ、低音側の第６弦の音高は４５０セント下がる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２１５１５８号公報
【特許文献１】特開２００４−２５１９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の電子楽器では、ピッチベンダーホイールや、ピッチモジュレーションホイール、又はピッチエンベロープジェネレータなどによって和音等の発音中の複数音の楽音の音高を変調する際に、各構成音に対して同じだけの音高の変位量を与えて、平行移動させるものしかなかった。
【０００９】
従来の電子楽器における上述のような動作は電子楽器特有の音高変化であり、物理楽器では必ずしもこのような動作はしないため、シミュレーションという意味ではもっと自然楽器の動作に近いものが求められることがある。
【００１０】
そこで、本発明は、同一の音高変更効果の付加指示によって発音中の楽音毎に異なる変位量の音高変更をかけることを可能とし、電子楽器における表現力を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
態様の一例では、発音中の楽音に対して音高変更効果の付加を指示する音高変更効果指示手段と、音高変更効果指示手段により音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、発音中の楽音の夫々の音高を変更するように制御する音高制御手段と、を有する。
【発明の効果】
【００１２】
本発明によれば、同一の音高変更効果の付加指示によって発音中の楽音毎に異なる変位量の音高変更をかけることを可能とし、電子楽器における表現力を向上させることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】電子鍵盤楽器の一実施形態の外観例を示す図である。
【図２】電子鍵盤楽器の制御システムの一実施形態のハードウェア構成例を示すブロック図である。
【図３】トレモロユニットの変位とピッチの変位の関係の説明図である。
【図４】ピッチベンダーの変位とピッチの変位の関係の説明図である。
【図５】ピッチモジュレーションホイールの変位とビブラートデプスの変位の関係の説明図である。
【図６】ピッチエンベロープジェネレーターの動作説明図である。
【図７】キースケーリングの説明図である。
【図８】制御システムの動作で使用される定数と変数の一覧を示す図である。
【図９】制御システムの全体処理の例を示すメインルーチンのフローチャートである。
【図１０】コントローラＡ／Ｄ処理の詳細例を示すフローチャートである。
【図１１】鍵盤処理の詳細例を示すフローチャートである。
【図１２】音源定常サービス処理の詳細例を示すフローチャートである。
【図１３】ＬＦＯサブルーチンの処理の詳細例を示すフローチャートである。
【図１４】ピッチエンベロープサブルーチンの処理の詳細例を示すフローチャートである。
【図１５】ピッチ変調サブルーチンの処理の詳細例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。本実施形態は、例えば電子鍵盤楽器に適用される。本実施形態は、ピッチベンダー、ピッチモジュレーションホイール、又はピッチエンベロープジェネレータなどにより発音中の楽音に対して音高変更効果の付加が指示された場合に、発音中の楽音毎に、その発音中の楽音の音高に対応するスケーリング量が取得され、その取得されたスケーリング量だけ音高変更の指示量が変換される。そして、その発音中の楽音に対応して変換された音高変更の指示量に基づいて、その記発音中の楽音の音高が制御されるものである。
【００１５】
図１は、本発明による電子鍵盤楽器１００の一実施形態の外観例を示す図である。電子鍵盤楽器１００は、演奏操作子としての複数の鍵からなる鍵盤１０１と、音色選択や音色以外の各種機能選択を行うスイッチ・パネル１０２と、ピッチベンダーホイール１０３と、ピッチモジュレーションホイール１０４、各種設定情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）１０５等を備える。また、電子鍵盤楽器１００は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
【００１６】
図２は、図１の電子鍵盤楽器１００の制御システム２００の一実施形態のハードウェア構成例を示す図である。図２において、電子鍵盤楽器１００は、ＣＰＵ（中央演算処理装置）２０１、ＲＯＭ（リードオンリーメモリ）２０２、ＲＡＭ（ランダムアクセスメモリ）２０３、タイマ２０４、波形ＲＯＭ２０６が接続される音源ＬＳＩ（大規模集積回路）２０５、図１の鍵盤１０１と図１のスイッチ・パネル１０２とが接続されるキースキャナ２０７、図１のピッチベンダーホイール１０３とピッチモジュレーションホイール１０４がそれぞれ接続される個別のＡ／Ｄ（アナログ／デジタル）コンバータ２０８、及び図１のＬＣＤ１０５が接続されるＬＣＤコントローラ２０９が、それぞれシステムバス２１２に接続される構成を備える。また、音源ＬＳＩ２０５から出力されるデジタル楽音波形データは、Ｄ／Ａ（デジタル／アナログ）コンバータ２１０によりアナログ楽音波形信号に変換され、アンプ２１１で増幅された後に、特には図示しないスピーカ又は出力端子から出力される。
【００１７】
ＣＰＵ２０１は、ＲＡＭ２０３をワークメモリとして使用しながらＲＯＭ２０２に記憶された制御プログラムを実行することにより、図１の電子鍵盤楽器１００の制御動作を実行する。また、ＲＯＭ２０２は、上記制御プログラム及び各種固定データを記憶する。
【００１８】
ＬＣＤコントローラ２０９は、ＬＣＤ１０５を制御するＩＣ（集積回路）である。キースキャナ２０７は、図１の鍵盤１０１やスイッチ・パネル１０２の状態を走査して、ＣＰＵ２０１に通知するＩＣである。２つのＡ／Ｄコンバータ２０８はそれぞれ、図１のピッチベンダーホイール１０３とピッチモジュレーションホイール１０４（音高変更効果指示手段として動作する）の操作位置を検出するＩＣである。タイマ２０４は、後述する音源定常サービス処理の実行時間間隔を制御するための計時を行う。
【００１９】
図１及び図２の構成例を有する本実施形態の動作について、以下に詳細に説明する。図３は、電気楽器のエレクトリックギターにおけるトレモロユニットの変位とピッチの変位の関係の説明図であり、エレクトリックギターのトレモロユニットを上下に操作した時に起こる弦長の変化と、ピッチの変化の関係の弦による違いを示した特性図である。エレクトリックギターは一般的に６本の弦を備えているが、弦が太い（第１弦側）ほど弦長の変化に対してピッチ変化が大きいことがわかる。
【００２０】
本実施形態において、楽音のピッチ制御は、図２において、波形ＲＯＭ２０６から楽音波形の読出しを行う音源ＬＳＩ２０５が、どれだけのアドレス増加率でデータを読み出すかを調整することで実現する。この際、音源ＬＳＩ２０５が、例えば４４．１ＫＨｚのサンプリング周波数で録音された楽音波形を同じ４４．１ＫＨｚのサンプリング周波数で読み出す場合、読出しの度に１波形アドレスずつ読出しアドレス増加させていけば、録音した時と同じ音高（ピッチ）で楽音が再生される。音源ＬＳＩ２０５が２波形アドレスずつ読出しアドレスを増加させていけば、録音した時よりも１オクターブ高い音高で楽音が再生される。逆に、音源ＬＳＩ２０５が０．５波形アドレスずつ読出しアドレスを増加させていけば、録音した時よりも１オクターブ低い音高で楽音が再生される。しかし、実際には、小数点アドレスにはデータは存在しないので、音源ＬＳＩ２０５は、前後のデータを読み出して補間計算を行うことで、仮想的なデータ読出しを行う。ただし、この増加幅にも限界があり、最小で１／１６アドレス、最大で１６アドレスの範囲内、即ち、上限４オクターブまでが再生可能な音高の範囲とされているので、その再生可能範囲以上又は以下となった場合は、指定アドレスが最大値若しくは最小値に置き換えて処理される。
【００２１】
本実施形態では、音高変更効果の指示手段として、ピッチベンダーホイール１０３、ピッチモジュレーションホイール１０４、又は特には図示しないピッチエンベロープジェネレータの３つが搭載されている電子鍵盤楽器１００の例で説明する。その他の音高変更効果指示手段が用いられてもよい。
【００２２】
まず、図１のピッチベンダーホイール１０３の機能について説明する。ピッチベンダーホイール１０３は、回転式抵抗を軸とするホイールであり、演奏者が操作した回転位置を図２のＡ／Ｄコンバータ２０８が電圧として読み込むことで、操作位置を知ることができる。無操作時はスプリングの力により中央に位置に戻り、演奏者が操作を行うと、その角度に応じて発音中の楽音の音高を上下させることができるものである。その操作角度に対する効き幅は、ピッチベンドレンジに依って設定することができる。本実施形態では、ピッチベンドレンジを上下方向別々に設定できるものとする。図４は、ピッチベンダーの変位とピッチの変位の関係の説明図であり、ピッチベンダーホイール１０３の角度変位に対するピッチの変位率を示した特性図である。ピッチベンダーホイール１０３の回転角度に対して、リニア（直線的）にピッチ変位が指示される。
【００２３】
次に、図１のピッチモジュレーションホイール１０４の機能について説明する。ピッチモジュレーションホイール１０４は、ピッチベンダーホイール１０３と同様に、回転式抵抗を軸とするホイールであり、演奏者が操作した回転位置を図２のＡ／Ｄコンバータ２０８が電圧として読み込むことで、操作位置を知ることができる。この操作位置に応じて、ピッチモジュレーションのための波形を定常的に繰り返し発生するＬＦＯ（低周波発振器）の出力を、どれだけの振幅振れ幅で音高の変化に反映するかという深さを制御するものである。無操作時はスプリングの力により手前に戻り、演奏者が操作を行うとその角度に応じた深さで発音中の楽音の音高にＬＦＯの出力波形によるビブラート効果を付加することができる。
【００２４】
ピッチモジュレーションホイール１０４に対する振る舞いは、ＬＦＯのレート（周波数：０．１Ｈｚ〜３０Ｈｚ）と、デプス（１〜１２００セント）のパラメータと、ピッチモジュレーションホイール１０４の変位とで決定される。デプスの変位は、ピッチモジュレーションホイール１０４を１００％の回転角で操作した時に、波形の振幅が最大値に達した時の音高変位である。ＬＦＯは、１周期分の波形をＲＯＭ２０３内の２５６ワードのデータテーブルから読み出すことで実現される。この際、読出しは小数アドレス表現で参照されるポインタを使って行われる。この小数アドレスによって、そのアドレスの前後にある２つの整数アドレス（メモリの実アドレス）のＬＦＯ波形データから直線補間によって、仮想的なＬＦＯ波形の波高値が計算される。例えば、アドレス１００．２５の波高Ｗは、１００番地のデータをＡ、１０１番地のデータをＢとすると、以下の（１）式で表現できる。
Ｗ＝Ａ×（１−０．２５）＋Ｂ×０．２５＝０．７５Ａ＋０．２５Ｂ  ・・（１）
【００２５】
図５は、ピッチモジュレーションホイール１０４の変位とビブラートデプスの変位の関係の説明図である。図５（ｂ）に示されるようにピッチモジュレーションホイール１０４の回転角度が増加すると、回転角度に対してリニア（直線的）に増加するビブラートデプス変位が、図５（ａ）に示される一定振幅のＬＦＯ波形出力に乗算されることにより、ピッチモジュレーション波形出力は、図５（ｃ）に示されるように変化する。
【００２６】
次に、ピッチエンベロープジェネレータの機能について説明する。図６は、ピッチエンベロープジェネレーターの動作説明図である。図６に示されるように、ピッチエンベロープジェネレータは、押鍵タイミングで指定された初期音高（イニシャルピッチ）から本来のピッチに向かって設定されたレートでピッチ変化を開始し、本来のピッチに到達した時点で変化を停止するというオートベンド機能である。具体的には、イニシャルピッチ（−１２００セント〜＋１２００セント）、レート（０．１セント〜１００セント）というパラメータで振る舞いが決定される。レートは、１ミリ秒間の変化量の絶対値をセント表記で表したものである。
【００２７】
本実施形態では、以上説明したピッチベンダーホイール１０３、モジュレーションホイール１０４、及びエンベロープジェネレータは同時に操作又は動作させることが可能である。本実施形態は、各演奏時点での上記３つの音高変更効果指示手段の各出力値が合算されて、最終的な音高変更の指示量が算出される。
【００２８】
本実施形態では、上記合算値としての音高変更の指示量に対して、キースケーリングが適用される。キースケーリングは、ＣＰＵ２０１が、音階音の音高毎にスケーリング量を取得するための取得手段である。具体的には、キースケーリングの基準となるベースキーナンバ（０〜１２７、Ｃ４＝６０）と、ベースキーナンバよりも１オクターブ上のキーを演奏した時のピッチ変化の倍率であるキースケーリングデプス（−４．０〜０、０〜＋４．０）を設定することで、音高変更の指示量に関する振る舞いを設定できる。いま、ＣＰＵ２０１は、音高変更が上方向と下方向とで、別々のキースケーリングを実施する。例えば、ＣＰＵ２０１は、音高を上げる際には通常のキーに依って変化しない均一な音高変更の指示を行い、音高を下げる際にはギターのトレモロアームの動きをシミュレートし、低音キーほど大きな変化をするように音高変更の指示を行う。
【００２９】
図７は、キースケーリングの説明図である。音高のアップ時は、例えば以下のパラメータが設定される。
ベースキーナンバ＝９６（Ｃ７）（任意のキーで良い）
キースケーリングデプス＝０
ピッチベンドレンジは２００セント
音高のダウン時は、例えば以下のパラメータが設定される。
ベースキーナンバ＝９６（Ｃ７）
キースケーリングデプス＝−１．０
上述の設定例により、音高のダウン時には、ピッチベンダーホイール１０３、ピッチモジュレーションホイール１０４、ピッチエンベロープジェネレータによる音高変更の指示量（合算値）が−２００セントであれば、音高Ｃ７では２００セント、Ｃ６で４００セント、Ｃ３では１０００セント、Ｃ０では１６００セント下げることができる。逆に、ベースキーより上のＣ８以上では、音高変更の指示量の変化は０セントのままである。
【００３０】
以上のキースケーリングの処理において、
ｐｓ：音高変更の指示量（合算値）（セント）
ｐｋ：演奏キーナンバ
ｂｋ：ベースキーナンバ
ｓｄ：キースケーリングデプス
とした時に、ｐｄ：スケーリングされた音高変更の指示量は、下記（２）式により、算出することができる。
ｐｄ＝ｐｓ×（１＋（（ｐｋ−ｂｋ）／１２）×ｓｄ）  ・・（２）
【００３１】
以上の音高変更の指示量のスケーリングの原理に基づく、本実施形態のソフトウェアによる制御動作について、以下に説明する。図８は、制御システムの動作で使用される定数と変数の一覧を示す図であり、図８（ａ）はＲＯＭ２０３に記憶されている２５６ワードからなるＬＦＯ波形の配列データＬＦＯ＿ＷＡＶＥＦＯＲＭを示す。図８（ｂ）はＲＡＭ２０２に一時記憶される代表的な変数を示す。これらの意味については、以下のフローチャートの説明において説明する。
【００３２】
図９は、制御システムの全体処理の例を示すメインルーチンのフローチャートである。この処理は、図２のＣＰＵ２０１が、ＲＯＭ２０３に記憶された制御プログラムを実行する処理として実現される。ここでの処理は、大きく分けて以下の５つから構成される。
初期化処理（ステップＳ９０１）：電源投入時のみ実行される。
ユーザインターフェース処理（ステップＳ９０２）：設定変更処理、表示処理である。
コントローラＡ／Ｄ処理（ステップＳ９０３）：ピッチベンダーホイール１０３、ピッチモジュレーションホイール１０４の操作処理である。
鍵盤処理（ステップＳ９０４）：ノートオン／オフを制御する処理である。
音源定常サービス処理（ステップＳ９０５）：発音中のボイスの音高制御処理である。
【００３３】
まず、ＣＰＵ２０１は、初期化処理を実行する（ステップＳ９０１）。ここでは、ＣＰＵ２０１は、図２のタイマ２０４の初期化、図２の音源ＬＳＩ２０５の初期化、図１及び図２のＬＣＤ１０５の初期化、図２のＡ／Ｄコンバータ２０８初期化、図２のキースキャナ２０７の初期化、その他、図８（ｂ）に示したＲＡＭ２０２上の変数の初期化を実行する。変数の初期化では、各変数が、図８（ｂ）の初期値で示される値に初期化が行われる。
【００３４】
ステップＳ９０１の初期化処理の後、ＣＰＵ２０１は、ステップＳ９０２からＳ９０５の一連の処理を繰り返し実行する。これらの一連の処理において、まずＣＰＵ２０１は、ユーザインターフェース処理を実行する（ステップＳ９０２）。ここでは、ＣＰＵ２０１は、演奏者が図１のスイッチ・パネル１０２を介して設定をした各値を、例えば下記のＲＡＭ２０２に記憶されている変数群に設定する処理が実行される。
ＢＥＮＤ＿ＲＡＮＧＥ＿ＤＯＷＮ
ＢＥＮＤ＿ＲＡＮＧＥ＿ＵＰ
ＬＦＯ＿ＲＡＴＥ
ＬＦＯ＿ＤＥＰＴＨ
ＬＦＯ＿ＰＯＩＮＴＥＲ
ＰＩＴＥＮＶ＿ＩＮＩＴ
ＰＩＴＥＮＶ＿ＲＡＴＥ
ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＤＯＷＮ
ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＵＰ
ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＤＯＷＮ
ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＵＰ
【００３５】
次に、ＣＰＵ２０１は、コントローラＡ／Ｄ処理を実行する（ステップＳ９０３）。この処理では、演奏者が図１のピッチベンダーホイール１０３とピッチモジュレーションホイール１０４を操作したときの操作位置情報が、Ａ／Ｄコンバータ２０８を介して取得され、内部の演算で用いられる小数フォーマットに変換されてＲＡＭ２０２に記憶される各変数に格納される。
【００３６】
図１０は、図９のステップＳ９０３のコントローラＡ／Ｄ処理の詳細例を示すフローチャートである。図１０の処理において、ＣＰＵ２０１はまず、図２のＡ／Ｄコンバータ２０８から出力されるピッチベンダーホイール１０３のＡ／Ｄ（アナログ／デジタル変換）値を読み込む（ステップＳ１００１）。次に、ＣＰＵ２０１は、ステップＳ１００１で読み込んだＡ／Ｄ値を、小数−１．０から１．０の範囲に変換し、一時的なレジスタａに格納する（ステップＳ１００２）。そして、ＣＰＵ２０１は、レジスタａの内容を、ＲＡＭ２０２に記憶されピッチベンダーホイール１０３の操作位置を示す変数ＣＵＲ＿ＢＥＮＤ＿ＷＨＥＥＬ（図８参照）に格納する（ステップＳ１００３）。
【００３７】
次にＣＰＵ２０１は、図２のＡ／Ｄコンバータ２０８から出力されるモジュレーションホイール１０４のＡ／Ｄ値を読み込む（ステップＳ１００４）。次に、ＣＰＵ２０１は、ステップＳ１００４で読み込んだＡ／Ｄ値を、小数−１．０から１．０の範囲に変換し、一時的なレジスタａに格納する（ステップＳ１００５）。そして、ＣＰＵ２０１は、レジスタａの内容を、ＲＡＭ２０２に記憶されモジュレーションホイール１０４の操作位置を示す変数ＣＵＲ＿ＭＯＤ＿ＷＨＥＥＬ（図８参照）に格納する（ステップＳ１００６）。
【００３８】
最後に、ＣＰＵ２０１は、ピッチベンダーホイール１０３及びモジュレーションホイール１０４以外のコントローラ（例えばサスティーンペダル）の操作量の読込み処理を実行する（ステップＳ１００７）。その後、ＣＰＵ２０１は、図１０のフローチャートで例示される図９のステップＳ９０３のコントローラＡ／Ｄ処理を終了する。
【００３９】
図１１は、図９のステップＳ９０４の鍵盤処理の詳細例を示すフローチャートである。図１１のフローチャートにおいて、ＣＰＵ２０１は、図２のキースキャナ２０７が演奏者による図１の鍵盤１０１の演奏を検知した時に、有効な処理を実行する。本実施形態に特に関係する、押鍵時にピッチエンベロープジェネレータをスタートさせる動作を中心に説明する。
【００４０】
まずＣＰＵ２０１は、キースキャナ２０７が鍵盤１０１の演奏を検知した結果をＲＡＭ２０２に書き込んだキースキャナデータを読み込む（ステップＳ１１０１）。このとき、ＲＡＭ２０２に記憶される変数ｓに検知動作の戻り値が格納される。ｓ＝０は動作無し、ｓ＝１はノートオン（ＯＮ、押鍵）を、ｓ＝２はノートオフ（ＯＦＦ、離鍵）をそれぞれ示す。また、ＲＡＭ２０２に記憶される変数ｋに押鍵又は離鍵が検出された鍵盤１０１のキーナンバが格納される。
【００４１】
次に、ＣＰＵ２０１は、上述の変数ｓの値を判定することにより、ステップＳ１１０１でのキースキャナデータの読込みの結果、キースキャナ２０７が押鍵発生を検知したのか離鍵発生を検知したのか又は何も検出しなかったのかを判定する（ステップＳ１１０２）。
【００４２】
キースキャナ２０７が何も検知しないときには（ｓ＝０）、ＣＰＵ２０１は、そのまま図１１のフローチャートで例示される図９のステップＳ９０４の鍵盤処理を終了する。
【００４３】
キースキャナ２０７が押鍵を検知したときには（ｓ＝１）、ＣＰＵ２０１は、上記変数ｋに格納されているキーナンバを引数として、キーアサイナサブルーチンを実行する（ステップＳ１１０３）。このキーアサイナサブルーチンの実行結果、発音を割り当てるべきボイス番号がＲＡＭ２０２に記憶されるレジスタｖに得られ、ボイスｖの状態が変数ｓに得られる。ｓ＝０なら、ボイスｖの発音は停止中であり、ｓ＝１なら、ボイスｖの発音は発音中である。
【００４４】
ＣＰＵ２０１は、変数ｓ＝１か否かを判定する（ステップＳ１１０４）。ステップＳ１１０４の判定がＹＥＳならば、ＣＰＵ２０１は、変数ｋの値が示すキーナンバの発音中のボイスｖに対して、ファーストダンプ処理を実行する（ステップＳ１１０５）。ファーストダンプ処理とは、発音中のボイスｖを急速にノートオフさせる処理である。ステップＳ１１０４の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１１０５の処理はスキップする。
【００４５】
続いて、ＣＰＵ２０１は、レジスタｖのボイス番号を引数として、ＲＡＭ２０２に記憶されるボイス情報を格納するボイス情報のキーナンバ要素ＶＯＩＣＥ［ｖ］.ＫＥＹ（図８（ｂ）参照）に、変数ｋに格納されているキーナンバの値を格納する（ステップＳ１１０６）。
【００４６】
次に、ＣＰＵ２０１は、レジスタｖのボイス番号を引数として、上記ボイス情報のピッチエンベロープ現在値ＶＯＩＣＥ［ｖ］.ＰＩＴＥＮＶ＿ＰＩＴＣＨ（図８（ｂ）参照）に、ＲＡＭ２０２に記憶されている変数ＰＩＴＥＮＶ＿ＩＮＩＴに格納されているピッチエンベロープ初期値を格納する（ステップＳ１１０７）。
【００４７】
その後、ＣＰＵ２０１は、レジスタｖのボイス番号を引数として、上記ボイス情報のボイス状態値ＶＯＣＥ［ｖ］.ＳＴＡＴに、押鍵中（発音スタート）を示す値１（図８（ｂ）参照）を格納する（ステップＳ１１０８）。
【００４８】
そして、ＣＰＵ２０１は、ボイススタートルーチンを実行する（ステップＳ１１０９）。ここでは、ＣＰＵ２０１は、レジスタｖのボイス番号を引数として、音源ＬＳＩ２０５に、ボイス番号ｖのボイスの発音を開始させるために必要な各種初期処理を実行する。その後、ＣＰＵ２０１は、図１１のフローチャートで例示される図１０のステップＳ９０４の鍵盤処理を終了する。
【００４９】
前述したステップＳ１１０２の判定において、キースキャナ２０７が離鍵を検知したときには（ｓ＝２）、ＣＰＵ２０１は、上記変数ｋに格納されているキーナンバを引数として、ボイス検索サブルーチンを実行する（ステップＳ１１１０）。ここでは、ＣＰＵ２０１は、音源ＬＳＩ２０５に問い合わせることにより、キーナンバｋで発音中のボイスがあるか否かを検索する。この結果、レジスタｖに検索されたボイスのボイス番号が戻り値として得られる。レジスタｖの値が−１のときは、該当なしである。
【００５０】
ＣＰＵ２０１は、上記レジスタｖの値が−１であるか否かを判定する（ステップＳ１１１１）。ＣＰＵ２０１は、上記レジスタｖの値が−１でないとき（ステップＳ１１１１の判定がＮＯの場合）には、レジスタｖのボイス番号を引数として、上記ボイス情報のボイス状態値ＶＯＣＥ［ｖ］.ＳＴＡＴに、リリース中を示す値２（図８（ｂ）参照）を格納する（ステップＳ１１１２）。上記レジスタｖの値が−１であるとき（ステップＳ１１１１の判定がＹＥＳの場合）には、上記ステップＳ１１１２の処理はスキップする。このボイスｖに対する実際の消音処理は、後述する図９のステップＳ９０５の音源定常サービス処理において行われる（後述する図１２のステップＳ１２１２参照）。
【００５１】
その後、ＣＰＵ２０１は、図１１のフローチャートで例示される図９のステップＳ９０４の鍵盤処理を終了する。
【００５２】
図１２は、図９のステップＳ９０５の音源定常サービス処理の詳細例を示すフローチャートである。この処理では、本実施形態に関係する時間管理方法、ＬＦＯの動作、各ボイスのピッチエンベロープの動作、各ボイスのピッチ変調（３種類の音高変更の指示の合算）の各制御動作が実行される。
【００５３】
まず、音源定常サービス処理での時間管理方法について説明する。本実施形態では、音源定常サービス処理を１回実行するための基本時間を１ミリ秒としており、この時間単位で音源ＬＳＩ２０５で発音中の楽音に対して音高変更の指示を行っている。モジュレーションホイール１０４に基づくＬＦＯやピッチエンベロープジェネレータの状態も１ミリ秒毎に変化するように、制御が行われる。ＣＰＵ２０１に拙速されたタイマ２０４は１ミリ秒毎にインクリメントする１６ビットフリーランニングタイマーである。本実施形態では、このタイマ２０４が、音源定常サービス処理を行うべき回数の基準として使用される。
【００５４】
具体的には、ＣＰＵ２０１は、図１２の音源定常サービス処理プログラムの実行を開始すると、まずタイマ２０４の現在値をレジスタｔに格納する（ステップＳ１２０１）。
【００５５】
次に、ＣＰＵ２０１は、ステップＳ１２０１でレジスタｔに得たタイマ２０４の現在値から、ＲＡＭ２０２に記憶されている前回に実行した時の時刻が格納されている変数ＬＡＳＴ＿ＴＩＭＥの値を減算し、その差分演算結果である今回増分をＲＡＭ２０２に記憶されるレジスタｃに格納する（ステップＳ１２０２）。
【００５６】
その後、ＣＰＵ２０１は、ステップＳ１２１１でレジスタｃの値を１ずつ減算しながら、ステップＳ１２０３でレジスタｃの値が０になったと判定するまで、上記今回増分だけ、ステップＳ１２０４からＳ１２１０までの一連の音源定常サービス処理を繰り返し実行する。なお、最初から今回増分が０であれば、ステップＳ１２０３の判定がＹＥＳとなる結果、今回の音源定常サービス処理の起動では音高変更の指示の処理は実行されない。もし、今回増分が３回であれば、音源定常サービス処理の中で音高変更の指示の処理が３回周回処理される。ステップＳ１２０２の差分計算は１６ビット符号なしで変数が扱われることにより、１６ビットのタイマ２０４の値がＦＦＦＦＨ（最後の「Ｈ」は１６進数であることを示す）の次に０に戻っても問題ない。タイマ２０４が計時を１周するのに６５５３６ミリ秒、つまり６５秒以上かかるが、図９のメインルーチンでステップＳ９０２からＳ９０５の繰返し処理が１周するのに数ミリ秒以下であることを想定しているので、その点でも問題はない。これにより、メインルーチンの周回速度がＣＰＵ負荷によって変化しても、トータル的には一定の速度でＬＦＯやピッチエンベロープジェネレータを動かすことができる。
【００５７】
ステップＳ１２０４からＳ１２１０の繰返し処理において、ＣＰＵ２０１はまず、ＬＦＯサブルーチンを実行する（ステップＳ１２０４）。ＬＦＯのかかり方は、全ての発音中のボイスに対して共通である。このサブルーチンでは、ＬＦＯのポインタが１処理単位進められ、現在の波高値が算出される。
【００５８】
図１３は、図１２のステップＳ１２０４のＬＦＯサブルーチンの処理の詳細例を示すフローチャートである。図１３のフローチャートにおいて、ＣＰＵ２０１はまず、音源定常サービス処理が実行される時間間隔である前述した１ミリ秒あたりに、ＲＯＭ２０３に記憶されている２５６ワードからなるＬＦＯ波形データＬＦＯ＿ＷＡＶＥＦＯＲＭ［ｉ］（図８（ａ）参照）のリードアドレスｉ（０≦ｉ≦２５５）を示すアドレスリードポインタの増分（以下「ポインタ増分」と記載）を算出し、ＲＡＭ２０２に記憶される変数ｄに格納する（ステップＳ１３０１）。いま、上述のようにＬＦＯ波形の１周期のワード数を２５６ワード、ＬＦＯの発振周波数をＬＦＯ＿ＲＡＴＥ（Ｈｚ）（図８（ｂ）参照）とすれば、１秒間に進むポインタ増分は、「２５６×ＬＦＯ＿ＲＡＴＥ」アドレスであるから、１ミリ秒あたり（１回の音源定常サービス処理あたり）のポインタ増分は、「２５６×ＬＦＯ＿ＲＡＴＥ／１０００」アドレスとなる。ここで、ＬＦＯの発振周波数は、演奏者によるスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理で変数ＬＦＯ＿ＲＡＴＥに設定される。
【００５９】
次に、ＣＰＵ２０１は、ＲＡＭ２０２に記憶されている変数ＬＦＯ＿ＰＯＩＮＴＥＲが示すＬＦＯ波形のアドレスリードポインタの現在値（図８（ｂ）参照）に、ステップＳ１３０１で算出したポインタ増分を加算し、その加算結果を新たに変数ＬＦＯ＿ＰＯＩＮＴＥＲに格納する（ステップＳ１３０２）。
【００６０】
ＣＰＵ２０１は、ステップＳ１３０２で更新された変数ＬＦＯ＿ＰＯＩＮＴＥＲの値が、ＬＦＯ波形の１波形のリードアドレスの最大値２５５を超えたか否かを判定する（ステップＳ１３０３）。ステップＳ１３０３の判定がＹＥＳならば、ＣＰＵ２０１は、変数ＬＦＯ＿ＰＯＩＮＴＥＲの値から２５５を減算することにより、ＬＦＯ波形の記憶アドレスの先頭アドレス側に折り返す（ステップＳ１３０４）。ステップＳ１３０３の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１３０４の処理はスキップする。
【００６１】
ＣＰＵ２０１は、演算「ｉ＝ｉｎｔ（ＬＦＯ＿ＰＯＩＮＴＥＲ）」（「ｉｎｔ（）」は整数部を算出する関数演算）により、変数ＬＦＯ＿ＰＯＩＮＴＥＲの現在ポインタ値の整数部分をレジスタｉに格納する（ステップＳ１３０５）。また、ＣＰＵ２０１は、演算「ｍ＝ｍｏｄ（ＬＦＯ＿ＰＯＩＮＴＥＲ）」（「ｍｏｄ（）」は小数部を算出する関数演算）により、変数ＬＦＯ＿ＰＯＩＮＴＥＲの現在ポインタ値の小数部分をレジスタｍに格納する（ステップＳ１３０６）。
【００６２】
その後、ＣＰＵ２０１は、レジスタｉが示すＲＯＭ２０３におけるＬＦＯ波形の記憶アドレスｉのＬＦＯ波形データＬＦＯ＿ＷＡＶＥＦＯＲＭ［ｉ］と、その隣の記憶アドレス（ｉ＋１）のＬＦＯ波形データＬＦＯ＿ＷＡＶＥＦＯＲＭ［ｉ＋１］とに基づいて、下記の直線補間演算により、現在のポインタ値ＬＦＯ＿ＰＯＩＮＴＥＲに対応するＬＦＯ波形出力値を算出し、ＲＡＭ２０２に記憶される変数ＬＦＯ＿ＯＵＴＰＵＴに格納する（ステップＳ１３０７）。
ＬＦＯ＿ＯＵＴＰＵＴ＝ＬＦＯ＿ＷＡＶＥＦＯＲＭ［ｉ］×（１．０−ｍ）＋
ＬＦＯ＿ＷＡＶＥＦＯＲＭ［（ｉ＋１）＆ＦＦＨ］×ｍ  ・・（３）
ここで、隣の記憶アドレス（ｉ＋１）が２５５を超えたときに先頭アドレス側に折り返せるようにするために、（ｉ＋１）とＦＦＨ（「Ｈ」は１６進数を示す）との論理積を取った値を、隣の記憶アドレスのアドレス値としている。ステップＳ１３０７の処理の後、ＣＰＵ２０１は、図１３のフローチャートで例示される図１２のステップＳ１２０４のＬＦＯサブルーチンを終了する。
【００６３】
図１２の処理に戻り、ステップＳ１２０４のＬＦＯサブルーチンの後、ＣＰＵ２０１は、ＲＡＭ２０２に記憶されるレジスタｖの値を、ステップＳ１２０５で０にリセットした後、ステップＳ１２０９で＋１ずつインクリメントしながら、ステップＳ１２１０でその値が２５６に等しくなったと判定するまで、ステップＳ１２０６からＳ１２０８の一連の処理を実行することにより、レジスタｖの値が示すボイスｖ毎に、ピッチエンベロープを算出する処理（ピッチエンベロープサブルーチン）と、ピッチベンダーホイール１０３、モジュレーションホイール１０４、及びピッチエンベロープジェネレータの各出力の合算値に基づいてスケーリングされた音高変更の指示量の値を算出する処理（ピッチ変調サブルーチン）を実行する。
【００６４】
この一連の処理において、ＣＰＵ２０１はまず、レジスタｖの値が示すＲＡＭ２０２に記憶されているボイスｖの状態ＶＯＩＣＥ［ｖ］．ＳＴＡＴが停止中を示す値０であるか否かを判定する（ステップＳ１２０６）。
【００６５】
ステップＳ１２０６の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１２０７のピッチエンベロープサブルーチンと、ステップＳ１２０８のピッチ変調サブルーチンを順次実行する。ステップＳ１２０６の判定がＹＥＳならば、そのボイスｖについては、制御を行う必要がないため、ＣＰＵ２０１は、ステップＳ１２０７及びＳ１２０８の処理はスキップする。
【００６６】
その後、ＣＰＵ２０１は、レジスタｖの値を＋１インクリメントする（ステップＳ１２０９）。そして、ＣＰＵ２０１は、レジスタｖの値が２５６に等しくなったか否かを判定する（ステップＳ１２１０）。ステップＳ１２１０の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１２０６の処理に戻って、新たなレジスタｖの値に対応する次のボイスｖに対する処理に移行する。ステップＳ１２１０の判定がＹＥＳになって全てのボイスｖについての処理が完了したら、ＣＰＵ２０１は、レジスタｃの値から１を減算し、ステップＳ１２０３の処理に戻る。
【００６７】
レジスタｃの値が０（ステップＳ１２０３の判定がＹＥＳ）になったら、ＣＰＵ２０１は、ＲＡＭ２０２に記憶されている状態ＶＯＩＣＥ［ｖ］．ＳＴＡＴの値がリリース中を示す値２のボイスｖを検索し、そのボイスｖのエンベロープレベルが０になったら、その状態ＶＯＩＣＥ［ｖ］．ＳＴＡＴを停止中を示す値０にする（ステップＳ１２１２）。
【００６８】
その後、ＣＰＵ２０１は、音量やフィルタ処理などのその他の音源定常サービス処理を実行する（ステップＳ１２１３）。
【００６９】
最後に、ＣＰＵ２０１は、ステップＳ１２０１でレジスタｔに得られているタイマ２０４の現在値を、前回の音源定常サービス処理の実行時刻を格納するＲＡＭ２０２に記憶される変数ＬＡＳＴ＿ＴＩＭＥに格納する（ステップＳ１２１４）。その後、ＣＰＵ２０１は、図１２のフローチャートで例示される図９のステップＳ９０５の音源定常サービス処理を終了する。
【００７０】
図１４は、図１２の音源定常サービス処理のステップＳ１２０７のピッチエンベロープサブルーチンの処理の詳細例を示すフローチャートである。このサブルーチンは、レジスタｖに格納されているボイス番号の値ｖを引数として実行する。ＣＰＵ２０１はまず、ＲＡＭ２０２に記憶されているボイスｖのピッチエンベロープ現在値ＶＯＩＣＥ［ｖ］．ＰＩＴＥＮＶ＿ＰＩＴＣＨの値を、レジスタｃに格納する（ステップＳ１４０１）。
【００７１】
ＣＰＵ２０１は、レジスタｃの値が０であるか否かを判定する（ステップＳ１４０２）。レジスタｃのピッチエンベロープ現在値が目標値の０セントと等しい場合（ステップＳ１４０２の判定がＹＥＳの場合）は、ピッチエンベロープはすでに目標値に到達していると判定して、そのまま図１４のフローチャートで示される図１２のステップＳ１２０７のピッチエンベロープサブルーチンを終了する。
【００７２】
ステップＳ１４０２の判定がＮＯの場合は、ＣＰＵ２０１は、レジスタｃの値が０より小さいか否かを判定する（ステップＳ１４０３）。
【００７３】
ピッチエンベロープの値がプラス側から目標値０に向かって下がってくる場合（ステップＳ１４０２の判定がＮＯの場合）（図６参照）には、ＣＰＵ２０１は、レジスタｃのピッチエンベロープ現在値からＲＡＭ２０２に記憶されているピッチエンベロープの速度値（１ミリ秒間に変化させたいピッチエンベロープ値）ＰＩＴＥＮＶ＿ＲＡＴＥの値を減算し、その減算結果値を新たにレジスタｃの値とする（ステップＳ１４０４）。ピッチエンベロープの速度値は、演奏者のスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理において変数ＰＩＴＥＮＶ＿ＲＡＴＥに格納される。
【００７４】
ＣＰＵ２０１は、レジスタｃの値が０を下回ったか否かを判定する（ステップＳ１４０５）。ステップＳ１４０５の判定がＹＥＳならば、ＣＰＵ２０１は、レジスタｃの値を０にセットする（ステップＳ１４０８）。ステップＳ１４０５の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１４０８の処理はスキップする。その後、ＣＰＵ２０１は、レジスタｃに得られたピッチエンベロープの新たな現在値を、ＲＡＭ２０２に記憶されるボイスｖのピッチエンベロープ現在値ＶＯＩＣＥ［ｖ］．ＰＩＴＥＮＶ＿ＰＩＴＣＨに格納する（ステップＳ１４０９）。そして、ＣＰＵ２０１は、図１４のフローチャートで示される図１２のステップＳ１２０７のピッチエンベロープサブルーチンの処理を終了する。
【００７５】
ピッチエンベロープの値がマイナス側から目標値０に上がってくる場合（ステップＳ１４０２の判定がＹＥＳの場合）（図６参照）には、ＣＰＵ２０１は、レジスタｃのピッチエンベロープ現在値にＲＡＭ２０２に記憶されているピッチエンベロープの速度値ＰＩＴＥＮＶ＿ＲＡＴＥの値を加算し、その加算結果値を新たにレジスタｃの値とする（ステップＳ１４０６）。
【００７６】
ＣＰＵ２０１は、レジスタｃの値が０を上回ったか否かを判定する（ステップＳ１４０７）。ステップＳ１４０７の判定がＹＥＳならば、ＣＰＵ２０１は、レジスタｃの値を０にセットする（ステップＳ１４０８）。ステップＳ１４０７の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１４０８の処理はスキップする。その後、ＣＰＵ２０１は、レジスタｃに得られたピッチエンベロープの新たな現在値を、ＲＡＭ２０２に記憶されるボイスｖのピッチエンベロープ現在値ＶＯＩＣＥ［ｖ］．ＰＩＴＥＮＶ＿ＰＩＴＣＨに格納する（ステップＳ１４０９）。そして、ＣＰＵ２０１は、図１４のフローチャートで示される図１２のステップＳ１２０７のピッチエンベロープサブルーチンの処理を終了する。
【００７７】
図１５は、図１２のステップＳ１２０８のピッチ変調サブルーチンの処理の詳細例を示すフローチャートである。このサブルーチンは、レジスタｖに格納されているボイス番号の値ｖを引数として実行する。ＣＰＵ２０１はまず、図９のステップＳ９０３のコントローラＡ／Ｄ処理内の図１０のステップＳ１００３でＲＡＭ２０２の変数ＣＵＲ＿ＢＥＮＤ＿ＷＨＥＥＬに得られているピッチベンダーホイール１０３のＡ／Ｄ値の値をレジスタｐｂに格納する（ステップＳ１５０１）。
【００７８】
ＣＰＵ２０１は、レジスタｐｂのピッチベンドＡ／Ｄ値が０であるか否かを判定する（ステップＳ１５０２）。
【００７９】
ステップＳ１５０２の判定がＹＥＳならば、ＣＰＵ２０１は、ピッチベンド出力値を格納するレジスタｍｐの値を０にセットする（ステップＳ１５０５）。
【００８０】
ステップＳ１５０２の判定がＮＯならば、ＣＰＵ２０１は、レジスタｐｂのピッチベンドＡ／Ｄ値が０よりも大きいか否かを判定する（ステップＳ１５０３）。
【００８１】
ステップＳ１５０３の判定がＮＯならば、ＣＰＵ２０１は、ＲＡＭ２０２の変数ＢＥＮＤ＿ＲＡＮＧＥ＿ＤＯＷＮに格納されている下降時ベンドレンジの値をレジスタｐｂのピッチベンドＡ／Ｄ値に乗算し、その乗算結果をピッチベンド出力値としてレジスタｍｐにセットする（ステップＳ１５０４）。下降時ベンドレンジの値は、演奏者のスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理において変数ＢＥＮＤ＿ＲＡＮＧＥ＿ＤＯＷＮに格納される。
【００８２】
ステップＳ１５０５又はＳ１５０４の処理の後、ＣＰＵ２０１は、図１２のステップＳ１２０４のＬＦＯサブルーチン内の図１３のステップＳ１３０７でＲＡＭ２０２内の変数ＬＦＯ＿ＯＵＴＰＵＴに格納されているＬＦＯ出力値に、ＲＡＭ２０２内の変数ＬＦＯ＿ＤＥＰＴＨに格納されているＬＦＯ深さ指定値を乗算し、更にその乗算結果に図９のステップＳ９０３のコントローラＡ／Ｄ処理内の図１０のステップＳ１００６でＲＡＭ２０２の変数ＣＵＲ＿ＭＯＤ＿ＷＨＥＥＬに得られているモジュレーションホイール１０４のＡ／Ｄ値を乗算し、その乗算結果をピッチモジュレーション波形出力値を格納するレジスタｍｌに格納する（ステップＳ１５０６）。ＬＦＯ深さ指定値は、演奏者のスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理において変数ＬＦＯ＿ＤＥＰＴＨに格納される。
【００８３】
続いて、ＣＰＵ２０１は、図１２のステップＳ１２０７のピッチエンベロープサブルーチン内の図１４のステップＳ１４０９でＲＡＭ２０２内の変数ＶＯＩＣＥ［ｖ］．ＰＩＴＥＮＶ＿ＰＩＴＣＨに得られているボイスｖのピッチエンベロープ現在値を、ボイスｖのピッチエンベロープ出力値として、レジスタｍｅに格納する（ステップＳ１５０７）。
【００８４】
その後、ＣＰＵ２０１は、ステップＳ１５０４又はＳ１５０５、Ｓ１５０６、及びＳ１５０７でレジスタｍｐ、ｍｌ、及びｍｅにそれぞれ得られたピッチベンド出力値ｍｐ、ピッチモジュレーション波形出力値ｍｌ、及びボイスｖのピッチエンベロープ出力値ｍｅを合算し、その合算値「ｍｐ＋ｍｌ＋ｍｅ」として音高変更の指示量を算出する。そして、ＣＰＵ２０１は、前述した（２）式に対応する下記の（４）式に基づいて、スケーリングされた音高変更の指示量を算出する（ステップＳ１５１２）。
ｍｍ＝（ｍｐ＋ｍｌ＋ｍｅ）×（１＋（（ＶＯＩＣＥ［ｖ］．ＫＥＹ−
ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＤＯＷＮ／１２）
×ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＤＯＷＮ）  ・・・（４）
ここで、（４）式と（２）式の関係において、ｍｍはｐｄに、（ｍｐ＋ｍｌ＋ｍｅ）はｐｓに、ＶＯＩＣＥ［ｖ］．ＫＥＹはｐｋに、ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＤＯＷＮはｂｋに、ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＤＯＷＮはｓｄに、それぞれ対応している。図８（ｂ）に示されるように、ＶＯＩＣＥ［ｖ］．ＫＥＹはボイスｖのキーナンバである。また、ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＤＯＷＮは下降時ピッチベンドスケーリングベースキー、ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＤＯＷＮは下降時ピッチベンドスケーリングデプスである。下降時ピッチベンドスケーリングベースキーと下降時ピッチベンドスケーリングデプス（図７参照）は、演奏者のスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理において変数ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＤＯＷＮとＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＤＯＷＮにそれぞれ格納される。
【００８５】
前述したステップＳ１５０３の判定がＹＥＳならば、ＣＰＵ２０１は、ＲＡＭ２０２の変数ＢＥＮＤ＿ＲＡＮＧＥ＿ＵＰに格納されている上昇時ベンドレンジの値をレジスタｐｂのピッチベンドＡ／Ｄ値に乗算し、その乗算結果をピッチベンド出力値としてレジスタｍｐにセットする（ステップＳ１５０９）。上昇時ベンドレンジの値は、演奏者のスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理において変数ＢＥＮＤ＿ＲＡＮＧＥ＿ＵＰに格納される。
【００８６】
ステップＳ１５０９の処理の後、ＣＰＵ２０１は、ステップＳ１５０６と同様の処理を実行することにより算出したピッチモジュレーション波形出力値を、レジスタｍｌに格納する（ステップＳ１５０１０）。
【００８７】
続いて、ＣＰＵ２０１は、ステップＳ１５０７と同様の処理を実行することにより算出したボイスｖのピッチエンベロープ出力値を、レジスタｍｅに格納する（ステップＳ１５１１）。
【００８８】
その後、ＣＰＵ２０１は、ステップＳ１５０９、Ｓ１５１０、及びＳ１５１１でレジスタｍｐ、ｍｌ、及びｍｅにそれぞれ得られたピッチベンド出力値ｍｐ、ピッチモジュレーション波形出力値ｍｌ、及びボイスｖのピッチエンベロープ出力値ｍｅを合算し、その合算値「ｍｐ＋ｍｌ＋ｍｅ」として音高変更の指示量を算出する。そして、ＣＰＵ２０１は、前述した（２）式に対応する下記の（５）式に基づいて、スケーリングされた音高変更の指示量を算出する（ステップＳ１５１２）。
ｍｍ＝（ｍｐ＋ｍｌ＋ｍｅ）×（１＋（（ＶＯＩＣＥ［ｖ］．ＫＥＹ−
ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＵＰ／１２）
×ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＵＰ）  ・・・（５）
ここで、（５）式と（２）式の関係において、ｍｍはｐｄに、（ｍｐ＋ｍｌ＋ｍｅ）はｐｓに、ＶＯＩＣＥ［ｖ］．ＫＥＹはｐｋに、ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＵＰはｂｋに、ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＵＰはｓｄに、それぞれ対応している。図８（ｂ）に示されるように、ＶＯＩＣＥ［ｖ］．ＫＥＹはボイスｖのキーナンバである。また、ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＵＰは上昇時ピッチベンドスケーリングベースキー、ＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＵＰは上昇時ピッチベンドスケーリングデプスである。上昇時ピッチベンドスケーリングベースキーと上昇時ピッチベンドスケーリングデプス（図７参照）は、演奏者のスイッチ・パネル１０２での指定に基づいて、図９のステップＳ９０２のユーザインターフェース処理において変数ＢＥＮＤ＿ＳＣＡＬＥ＿ＢＡＳＥ＿ＫＥＹ＿ＵＰとＢＥＮＤ＿ＳＣＡＬＥ＿ＤＥＰＴＨ＿ＵＰＬＦＯ＿ＤＥＰＴＨにそれぞれ格納される。
【００８９】
ステップＳ１５０８又はＳ１５１２の処理の後、ＣＰＵ２０１は、レジスタｖのボイス番号ｖと、レジスタｍｍのスケーリングされた音高変更の指示量（変調幅（セント））ｍｍを、それぞれ引数として、ピッチ変調音源サービス処理を実行する（ステップＳ１５１３）。この処理で、ＣＰＵ２０１は、ボイス番号ｖのボイスに対する音高変更の指示量ｍｍ分の音高変更指示を、図２の音源ＬＳＩ２０５に対して指示する。
【００９０】
以上説明した実施形態により、電子楽器特有の和音の構成音１つ１つに一律にかかるピッチベンドだけではなく、本物のギターのトレモロのように同じピッチベンド操作を行っても高音弦に比べて低音弦は大きな幅でピッチが変化するという物理楽器特有のリアルな変化をシミュレーションしたり、その他ユーザーの求める独特のピッチ非平衡移動効果を容易に実現することができ、表現力が大幅に向上する電子楽器を実現することが可能となる。また、ピッチベンダーホイールだけではなく、ピッチモジュレーションホイールやピッチエンベロープジェネレータによる同様の効果も付加することが可能となる。
【００９１】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
発音中の楽音に対して音高変更効果の付加を指示する音高変更効果指示手段と、
前記音高変更効果指示手段により前記音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、前記発音中の楽音の夫々の音高を変更するように制御する音高制御手段と、
を有する電子楽器。
（付記２）
前記音高変更効果指示手段は、ピッチベンダー、ピッチモジュレーションホイール、又はピッチエンベロープジェネレータの少なくとも１つ以上の音高変更効果付加処理を実行し、
前記音高変更効果指示手段は、所定の時間間隔で、前記少なくとも１つ以上の音高変更効果付加処理の各出力値の合算値により前記音高変更効果の付加を指示する、付記１に記載の電子楽器。
（付記３）
発音中の楽音に対して音高変更効果の付加を指示する処理部を備えた電子楽器における音高変更効果付加方法であって、前記処理部は、
前記発音中の楽音に対して音高変更効果の付加を指示し、
前記音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、前記発音中の楽音の夫々の音高を変更するように制御する、音高変更効果付加方法。
（付記４）
電子楽器で発音中の楽音に対して音高変更効果の付加を指示するコンピュータに、
前記発音中の楽音に対して音高変更効果の付加を指示するステップと、
前記音高変更効果の付加を指示された場合に、各音の音高に応じて決定される複数の音高変更の指示量に基づいて、前記発音中の楽音の夫々の音高を変更するように制御するステップと、
を実行させるためのプログラム。
【符号の説明】
【００９２】
１００  電子鍵盤楽器
１０１  鍵盤
１０２  各種スイッチ
１０３  ピッチベンダーホイール
１０４  ピッチモジュレーションホイール
１０５  ＬＣＤ
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  タイマ
２０５  音源ＬＳＩ
２０６  波形メモリ
２０７  キースキャナ
２０８  Ａ／Ｄコンバータ
２０９  ＬＣＤコントローラ
２１０  Ｄ／Ａコンバータ
２１１  アンプ
２１２  システムバス
【図１】
2018054856.tif 000003
【図２】
2018054856.tif 000004
【図３】
2018054856.tif 000005
【図４】
2018054856.tif 000006
【図５】
2018054856.tif 000007
【図６】
2018054856.tif 000008
【図７】
2018054856.tif 000009
【図８】
2018054856.tif 000010
【図９】
2018054856.tif 000011
【図１０】
2018054856.tif 000012
【図１１】
2018054856.tif 000013
【図１２】
2018054856.tif 000014
【図１３】
2018054856.tif 000015
【図１４】
2018054856.tif 000016
【図１５】
2018054856.tif 000017