(57)【要約】      （修正有）【課題】段の異なる鍵盤の出力を分けて、異なる音響効果を付与でき、且つ複数段の鍵盤個々にサスティン効果が付与／設定できるハモンドオルガンをエミュレートする電子楽器を提供する。【解決手段】音程の同じ１つのリソース１ａ〜１ｎの上下段の出力について、加算器２ａ〜２ｎで加算されて、その出力値の絶対値を絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎでとり、ローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎで、低い周波数側の楽音データを取り出して、取得された振幅値から、位相の一致及びずれを、ＣＰＵによってモニタリングしており、それによって、上記振幅取得手段の出力が最大値でない場合には、ＣＰＵの読み出し指示によって、アドレス発生器の一方の読み出しアドレスが変更され、上記１組のリソース１ａ〜１ｎの一方の周波数が変更される。【選択図】図２
2012211941.tif 000002
【特許請求の範囲】
【請求項１】
トーンホイールをエミュレートする電子楽器において、
演奏情報を入力する複数段の鍵盤と、
発音する音程数と上記鍵盤段数に応じて設けられた複数組の発音手段と、
上記発音手段の１組であって同一の音程を有するものの位相差を検出する、上記発音する音程数に応じた検出手段とを備え、
上記検出手段が上記発音手段の１組の位相差を検出した場合に、上記１組の位相を合わせるようにしたことを特徴とする電子楽器。
【請求項２】
上記検出手段は、
上記１組の発音手段の出力を加算する加算手段と、
上記加算手段の出力の振幅を取得して出力する振幅取得手段とを含み、
上記振幅取得手段の出力が所定値でない場合に、上記１組の発音手段の一方の周波数を変更し、
上記振幅取得手段の出力が所定値に達したときに、再度上記１組の発音手段の周波数を同一にすることを特徴とする請求項１に記載の電子楽器。
【請求項３】
上記１組の発音手段の、上記検出手段への出力は、上記電子楽器の楽音を生成するための出力とは別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記１組の発音手段の一方または両方が発音していても実施できるようにしたことを特徴とする請求項１に記載の電子楽器。
【請求項４】
上記１組の発音手段の、上記検出手段への出力は、上記電子楽器の楽音を生成するための出力とは別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記１組の発音手段の一方または両方が発音していても実施できるようにしたことを特徴とする請求項２に記載の電子楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハモンドオルガンをエミュレートする電子楽器に関する。
【背景技術】
【０００２】
下記特許文献１では、ハモンドオルガンをエミュレートする場合、図１２のブロック回路図に示すように、同じ音程のホィールに対し、１個のリソース（音源）を割り当て、出力を分けて発音させていた。
【特許文献１】特開２００９−４８１０４号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上下二段の鍵盤を備えたオルガンの場合、上記特許文献１の構成を用いると以下の不都合がある。
（１）上記特許文献１の構成のリソース構造では、上下鍵盤の出力を分けて、異なる効果（コーラス効果など）を付与することができない。
（２）サスティン効果を表現するために、離鍵時に“SCLevel[s]+=y”（離鍵時はｙは負の値）を、エンベロープジェネレータに与えて用い、初期値（ｙ加算前）から目的値（ｙ加算後）を、エンベロープジェネレータの時定数により補間することによって得る、としたいが、上記特許文献１の構成のリソース構造では、上下鍵盤個々にサスティン効果を付与／設定し難い。
【０００４】
本発明は、以上のような問題に鑑み創案されたもので、段の異なる鍵盤の出力を分けて、異なる音響効果を付与でき、且つ複数段の鍵盤個々にサスティン効果が付与／設定できる電子楽器を提供せんとするものである。
【課題を解決するための手段】
【０００５】
本発明の構成は、トーンホイールをエミュレートする電子楽器であって、
演奏情報を入力する複数段の鍵盤と、
発音する音程数と上記鍵盤段数に応じて設けられた複数組の発音手段と、
上記発音手段の１組であって同一の音程を有するものの位相差を検出する、上記発音する音程数に応じた検出手段とを備え、
上記検出手段が上記発音手段の１組の位相差を検出した場合に、上記１組の位相を合わせるようにしたことを基本的特徴としている。
【０００６】
上記構成による鍵盤を、例えば、上下２段の構成として用いた場合、その発音リソース（発音手段）は、後述する図３に示すような構成となる。上下段の鍵盤（Upper/Lower）で同じ音程の音を同時に出力する場合、位相を一致させながら、上下で異なる効果を付与できるようになる。また、上下の鍵盤の個々にサスティン効果が付与／設定できるようになる。
【０００７】
一方、チューニングイベントやグライド効果（オートベンド効果）によって周波数が変更された場合、効果が終了して、周波数が戻された後も、上下鍵盤の位相がずれたままになることになる。上記特許文献１の構成によっても、この課題を解決することはできるが、発音が休止している際でないと、位相差が修正されないという問題がある。
【０００８】
本発明の構成では、上記検出手段［後述する実施例では図２（ａ）に示すような加算器、絶対値回路ＡＢＳ［ｘ］、ローパスフィルタＬＰＦ［ｘ］及びＣＰＵによるモニタリングなどの構成からなる］により、周期的に上下鍵の位相差が確認されており、上記発音手段の１組の位相差が検出された場合に、（上記ＣＰＵからの制御命令により）上記１組の位相を合わせるようにしている［後述する時変数処理フローを示す図１１では、位相差がある（レベルが最大値でない）場合、一方の周波数を僅かにずらし、またレベルが最大であれば、周波数差を元に戻す］。そのため、位相が再度合わせられるようになり、効果を上下鍵盤で別々に設定できる上に、発音中であっても、位相差が生じ難いし、たとえ生じても補正されることになる。
【０００９】
上記検出手段は、
上記１組の発音手段の出力を加算する加算手段［図２（ａ）では加算器２ａ〜２ｎ］と、
上記加算手段の出力の振幅を取得して出力する振幅取得手段［図２（ａ）では音程の同じ１つの発音手段の出力につき上記加算手段で加算された出力値の絶対値をとる絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ及びローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎの組み合わせで、位相の分かる振幅値を取得する］とを含み、
［上記図２（ａ）の構成ではＣＰＵ１０２によるモニタリングにより］上記振幅取得手段の出力が所定値でない場合に、（上記ＣＰＵ１０２の読み出し指示によるアドレス発生器１０ａ又は１０ｂの一方の読み出しアドレスの変化量が変更されることで）上記１組の発音手段の一方の周波数を変更し、
上記振幅取得手段の出力が所定値に達したとき（実施例の構成では振幅値が最大になった時に位相が合っていることになる）に、再度上記１組の発音手段の周波数を同一にする（上記ＣＰＵ１０２の読み出し指示によるアドレス発生器１０ａ及び１０ｂの双方の読み出しアドレスの変化量が同じにされる）。
【００１０】
上記１組の発音手段の、上記検出手段への出力は、上記電子楽器の楽音を生成するための出力とは別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記１組の発音手段の一方または両方が発音していても実施できるようにすることが望ましい。
【発明の効果】
【００１１】
以上のような本発明のトーンホイールをエミュレートする電子楽器の構成によれば、複数段の鍵盤で同じ音程の音を同時に出力する場合、位相を一致させながら、上下で異なる効果を付与できるようになり、また、上下の鍵盤の個々にサスティン効果が付与／設定できるようになるという優れた効果を奏し得る。
【００１２】
さらに、チューニングイベントやグライド効果（オートベンド効果）によって周波数が変更され、効果が終了して、周波数が戻された後も、上下鍵盤の位相がずれたままになっても、上記検出手段により、周期的に上下鍵の位相差が確認され、上記発音手段の１組の位相差が検出されれば、上記１組の位相を合わせるように制御でき、そのため、位相が再度合わせられるようになり、効果を複数段の鍵盤で別々に設定できる上に、発音中であっても、位相差が生じ難いし、たとえ生じても補正されるようになる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を、添付図面を使用して、説明する。
【実施例】
【００１４】
図１は、本発明のハモンドオルガンをエミュレートする構成が用いられた電子鍵盤楽器の全体構成を示すブロック図である。
【００１５】
同図に示すように、本電子鍵盤楽器は、システムバス１００によって、それにつながった各回路が、ＣＰＵ１０２により制御され、電子鍵盤楽器として機能されることになる。
【００１６】
該システムバス１００には、ＣＰＵ１０２、プログラムＲＯＭ１０４、ＲＡＭ１０６、インターフェース１０８、音源１１６、ＤＳＰ１１８がつながっている。
【００１７】
上記ＣＰＵ１０２は、後述するプログラムＲＯＭ１０４より、そこに記憶されたプログラムやデータなどを読み出して、実行することで、上記システムバス１００でつながっている上記各回路を電子鍵盤楽器として全体を制御すると共に、他の各回路の状態を監視して、必要に応じて適当な制御指令を出力する。特に本構成では、後述する図２（ａ）で示される、音程の同じ１つの発音手段１ａ〜１ｎ（図１では音源１１６に相当する）の上下段の出力につき加算器２ａ〜２ｎで加算された出力値の絶対値をとる絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ及びローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎの組み合わせで構成される振幅取得手段から取得された振幅値から、位相の一致及びずれを、本ＣＰＵ１０２によってモニタリングしている。
【００１８】
プログラムＲＯＭ１０４は、上述のように、ＣＰＵ１０２において用いられるプログラムが記憶されると共に、必要な各種データが記憶されている。
【００１９】
ＲＡＭ１０６は、ＣＰＵ１０２による制御において発生する各種パラメータやデータ等が一時的に記憶される。特に後述するループカウンタや各種のレジスタがあり、後述するように、その状態が参照されたり、更新処理が行われる。
【００２０】
インターフェース（Ｉ／Ｆ）１０８は、ＭＩＤＩの入出力インタフェースの他、後述する本電子鍵盤楽器に設けられたパネル（ドローバーを模擬するパネル操作子がある）をスキャンする回路１１０、上段の鍵盤１１２をスキャンする回路１１２ａ及び下段の鍵盤１１４をスキャンする回路１１４ｂの入出力インターフェースであって、システムバス１００へのデータや命令の入出力をつかさどる。
【００２１】
本電子鍵盤楽器には、操作パネル（図示無し）、ハモンドオルガンのように上下２段の鍵盤［図２（ａ）では上段キー及び下段キー夫々のキースイッチ（ＫＳＷ）Ｃ１やＣ＃１が図示されている］などが設けられている。操作パネル（図示無し）は、発生すべき楽音の音色を選択する音色スイッチ（もちろんハモンドオルガンも含まれる）やコーラス効果などのエフェクト設定のためのスイッチ、或いはハモンドオルガン選択時のドローバースイッチ等が設けられていて、この操作パネルから設定された情報は、パネルをスキャンする回路１１０のスキャンによってその設定値が検出され、インターフェース１０８及びそれがつながっているシステムバス１００を介して、ＣＰＵ１０２に供給される。
【００２２】
音源１１６（Tone Generator）は、図２（ａ）に示すような、同時に複数の発音を行なうため時分割制御されるｎチャンネルを備えたリソース（RESOURCE）１ａ〜１ｎからなり、音源１１６に対して共通に備えられた波形メモリ１２（ａ、ｂ）から読み出される楽音データが出力される。この音源１１６については、図３において後述する。
【００２３】
ＤＳＰ１１８は、音源１１６から出力された楽音データの上下段別々に各音響効果を加える。このＤＳＰ１１６には、ディレイメモリ１２０が備えられており、当然ディレイ効果が付与される。
【００２４】
このＤＳＰ１１８から出力された楽音データは、デジタルアナログコンバータ１２２で、デジタルデータからアナログデータに変換され、さらにアンプ１２４により増幅されて、スピーカ１２６により、外部に楽音として出力される。
【００２５】
図２（ａ）には、本電子鍵盤楽器がドローバー式（例えばハモンド）オルガンとしてエミュレートする場合の回路構成を示すブロック図である。
【００２６】
ここで、Note C1、Note C#1、…、〜Note C5（途中半音などを省略）の各音程の楽音データを出力する音源１１６（図ではRESOUCE１ａ〜１ｎとして示される）は、夫々同音程の上下２段の鍵盤に対応する出力があるのが１つの特徴であり、例えば上段鍵盤１１２のＣ１のＣ１の鍵盤（ＫＳＷ）が押鍵された場合、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、上段側に出力され、それに、ドローバーの出力D0〜D8が掛け合わされて、上段側の出力（Upper OUTPUT）となる。また同様に下段鍵盤１１４のＣ１のＣ１の鍵盤（ＫＳＷ）が押鍵された場合にも、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、下段側に出力され、それに、ドローバーのレベルD0〜D8（後述する図７などの処理フローのDBLevel[0]〜DBLevel[8]に相当する）が掛け合わされて、下段側の出力（Lower OUTPUT）となる。これらの鍵盤は上段側及び下段側で夫々複数の鍵盤が押鍵されても、同様な処理がなされる。これらのＫＳＷ Ｃ１、ＫＳＷ Ｃ＃１…は、押鍵すると同時に９系列がＯＮになるスイッチであり、後述する図７などの処理フローでは“SCLevel[s] += y”を９回ループすることに相当する。尚、図２（ｂ）は、上記ＫＳＷ xxの構成を模式的に示した回路図である。実際には、このゲート（ＧＡＴＥ）９個に代わって、後述する図７のステップＳ４１４〜Ｓ４２０（押鍵時）又はステップＳ４３４〜Ｓ４４０（離鍵時）が９回動作することになる。
【００２７】
この音源１１６は、図３に示すような構成を夫々有している。１つの音源、例えばNote C1の音源について、上段側の鍵盤用と下段側の鍵盤用との同様な回路構成を、一緒に備えている。上段側で説明すると、ＣＰＵ１０２の指示により、アドレス発生器１０ａは、ＣＰＵ１０２に指示されたアドレスから波形メモリ１２ａに記憶された波形データが読み出され、波形デコーダ１４ａにより、デコードされ、楽音データが読み出される。一方後述する図８より浮動小数点形式のエンベロープデータが送られてくるため、それがエンベロープジェネレータ１６ａに与えられて、エンベロープを生成し、該エンベロープが、乗算器１８ａによって、上記楽音データに乗算される。また同じくＣＰＵ１０２によりプログラムＲＯＭ１０４からラウドネスデータが読み出され、ラウドネス補間器２０ａに与えられて、それによって補間係数が出力され、該補間係数が、乗算器２２ａによって、上記楽音データに乗算され、特性を補間するラウドネスコントロールが行われ、上段側のNote C1の音源の出力（Upper Output）とされる。
【００２８】
下段側の鍵盤用の音源についても、同様に処理されて、下段側のNote C1の音源用の出力（Lower Output）とされる。
【００２９】
これらの音源１１６は、Note C1用〜Note C5用まで、押鍵の有無に関わらず楽音データを出力し続け、それらに対し、例えば上段鍵盤のＣ１のＣ１の鍵盤（ＫＳＷ）が押鍵された場合、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、上段側に出力され、それに、ドローバーの出力D0〜D8が掛け合わされて、上段側の出力（Upper OUTPUT）となる。また同様に下段鍵盤のＣ１のＣ１の鍵盤（ＫＳＷ）が押鍵された場合にも、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、下段側に出力され、それに、ドローバーのレベルD0〜D8が掛け合わされて、下段側の出力（Lower OUTPUT）となる。
【００３０】
本発明の構成では、図２（ａ）に示すように、音程の同じ１つの音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の上下段の出力について、上述のように、加算器２ａ〜２ｎで加算されて、その出力値の絶対値を、振幅取得手段の１つを構成する絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ（入力の絶対値を出力する）でとり、もう１つの振幅取得手段の構成要素である、ローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎ（入力にローパスフィルタをかける）で、低い周波数側の楽音データを取り出して、取得された振幅値から、位相の一致及びずれを、上記ＣＰＵ１０２によってモニタリングしている。この図に示されるように、入力の絶対値を出力する絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎと入力にローパスフィルタをかけるローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎとの両方で上段及び下段双方の混合信号（上記加算器２ａ〜２ｎの加算で混合されている）の振幅エンベロープが得られるようになる。その振幅エンベロープの値をＣＰＵ１０２が監視（モニタリング）して、その値が最大値（ＭＡＸ）になった時点で、位相があったものとして、周波数差をゼロにする。
【００３１】
このＣＰＵ１０２によるモニタリングによって、上記振幅取得手段の出力（振幅値）が所定値（最大値ＭＡＸ）でない場合には、ＣＰＵ１０２の読み出し指示によって、アドレス発生器１０ａ又は１０ｂの一方の読み出しアドレスの変化量が変更され、それによって、上記１組の音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の一方の周波数が変更される。
【００３２】
そのような調整によって、上記振幅手段の出力が所定値（ＭＡＸ）に達したときに位相が合っているとして、再度上記１組の音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の周波数を同一にする（上記ＣＰＵ１０２の読み出し指示によるアドレス発生器１０ａ及び１０ｂの双方の読み出しアドレスの変化量が同じにされる）。
【００３３】
加算器２ａ〜２ｎ、及び上記加算値の絶対値をとる絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ及びローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎの組み合わせで、位相の分かる振幅値を取得する振幅取得手段とを含み、ＣＰＵ１０２によるモニタリングが行われることで構成される上記検出手段に向けての、上記１組の音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の出力は、上述した図２（ａ）に示すように、本電子鍵盤楽器の楽音を生成するための出力とは、別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記１組の発音手段の一方または両方が発音していても、実施できることになる。
【００３４】
以下本実施例構成の処理フローを、図４〜図１１により、詳述する。
【００３５】
図４は、本電子鍵盤楽器のメイン処理フローを示すフローチャートである。同図に示すように、スイッチオンにより、各回路の初期化処理がなされ（ステップＳ１００）、その後イベントの有無が検出される（ステップＳ１０２）。
【００３６】
イベントが検出された場合（ステップＳ１０２；Ｙ）、イベント処理がなされる（ステップＳ１０４）。このイベント処理後又は上記ステップＳ１０２でイベントが検出されなかった場合（ステップＳ１０２；Ｎ）、時変数処理がなされ（ステップＳ１０６）、その後ステップＳ１０２の検出処理に復帰する。このループは、電源ＯＦＦになるまで繰り返される。
【００３７】
図５は、図４のステップＳ１００の初期化処理のフローを示すフローチャートである。同図に示すように、まず回路（ＬＳＩ）の初期化処理がなされ（ステップＳ２００）、ドローバーのパラメータの初期化処理（ステップＳ２０２）、レベルのパラメータの初期化処理（ステップＳ２０４）、及びその他のレジスタやループカウンタ等の初期化処理（ステップＳ２０６）が行われる。
【００３８】
図６は、図４のステップＳ１０４のイベント処理のフローを示すフローチャートである。同図に示すように、まず上鍵盤のイベントの有無がチェックされ（ステップＳ３００）、上鍵盤のイベントが有れば（ステップＳ３００；Ｙ）、上鍵盤のイベント処理がなされる（ステップＳ３０２）。
【００３９】
ステップＳ３００の上鍵盤のイベントが無ければ（ステップＳ３００；Ｎ）、下鍵盤のイベントの有無がチェックされ（ステップＳ３０４）、下鍵盤のイベントが有れば（ステップＳ３０４；Ｙ）、下鍵盤のイベント処理がなされる（ステップＳ３０６）。
【００４０】
ステップＳ３０４の下鍵盤のイベントが無ければ（ステップＳ３０４；Ｎ）、ドローバーのイベントの有無がチェックされ（ステップＳ３０８）、ドローバーのイベントが有れば（ステップＳ３０８；Ｙ）、ドローバー処理（ステップＳ３１０）がなされ、反対にドローバーのイベントが無ければ（ステップＳ３０８；Ｎ）、その他の処理が行われる（ステップＳ３１２）。
【００４１】
図７は、図６のステップＳ３０２及びステップＳ３０６の上段鍵盤及び下段鍵盤のイベント処理のフローを示すフローチャートである（上下段とも同一の処理を行うので１つの図面で示す）。同図に示すように、まず押鍵又は離鍵の鍵番号（KeyNumber）が、変数ｋに代入される（ステップＳ４００）。そしてその鍵イベントが押鍵であるか否かがチェックされ（ステップＳ４０２）、押鍵であれば（ステップＳ４０２；Ｙ）、ステップＳ４０４〜ステップＳ４２２の処理ルーチンへ進む。反対に押鍵で無ければ（ステップＳ４０２；Ｎ）、ステップＳ４２４〜ステップＳ４４２の処理ルーチンへ進む。
【００４２】
押鍵である場合（ステップＳ４０２；Ｙ）、パーカス音が付加されているか否かがチェックされる（ステップＳ４０４）。ここで、パーカス音とは、押鍵時に鋭く立ち上がった後ゆっくり減衰する付加音のことである。エンベロープを別途作成して本システム外（本構成を利用しても良い。その場合パーカス音用に別途ドローバーを用意する）で発音する。
【００４３】
このパーカス音が付加されている場合（ステップＳ４０４；Ｙ）、さらに現在押鍵状態の鍵数（OnCount）が０であるか否かがチェックされる（ステップＳ４０６）。
【００４４】
現在押鍵状態の鍵数（OnCount）が０であれば（ステップＳ４０６；Ｙ）、全離鍵状態から最初の押鍵なのでパーカスエンベロープ（efpEnv）をスタート（efpEnv←PLevel）させる（ステップＳ４０８）。その後、或いはステップＳ４０４でパーカス音が付加されていない場合（ステップＳ４０４；Ｎ）、さらにはステップＳ４０６で現在押鍵状態の鍵数（OnCount）が０で無い場合（ステップＳ４０６；Ｎ）、現在押鍵状態の鍵数であるOnCountがインクリメントされる（ステップＳ４１０）。
【００４５】
以下の処理は、ドローバー数だけループする処理である。まず、ループ変数ｉが０にセットされる（ステップＳ４１２）。ｉはここでドローバー番号を示すことになる。
【００４６】
そして、Ｄ０〜Ｄ８（レジスタに読取済）のうち、ｉ番目の値が変数“y”に代入（y = DBLevel[i]）される（ステップＳ４１４）。その後、変化するリソース番号“s”が取得（s = GetSRC(i,k)）される（ステップＳ４１６）。
【００４７】
さらに、リソースｓのレベルの現在値（SCLevel[s]）に変数ｙが加えられる（ステップＳ４１８）。
【００４８】
その後、加えられた値がSCLevelにセットされてリソースに転送（ENV 転送）される（ステップＳ４２０）。
【００４９】
そしてインクリメントされたループ変数ｉが９未満か否かがチェックされる（ステップＳ４２２）。ここでは、ドローバー番号が最後か否かをチェックしている。
【００５０】
ループ変数ｉが９未満であれば（ステップＳ４２２；Ｙ）、ステップＳ４１４に復帰して、上記処理を繰り返す。すなわち、最後のドローバー番号でなければ、次のドローバーに移って、上記の処理をループする。
【００５１】
逆に、ループ変数ｉが９未満で無ければ（ステップＳ４２２；Ｎ）、すなわち、最後のドローバー番号であれば、鍵イベント処理を終了する。
【００５２】
一方、上記ステップＳ４０２で、鍵イベントが押鍵で無ければ（ステップＳ４０２；Ｎ）、ステップＳ４２４〜ステップＳ４４２の処理ルーチンへ進む。
【００５３】
鍵イベントが押鍵で無い場合（ステップＳ４０２；Ｎ）、パーカス音が付加されているか否かがチェックされ（ステップＳ４２４）、パーカス音が付加されている場合（ステップＳ４２４；Ｙ）、さらに現在押鍵状態の鍵数（OnCount）が１であるか否かがチェックされる（ステップＳ４２６）。
【００５４】
現在押鍵状態の鍵数（OnCount）が１であれば（ステップＳ４２６；Ｙ）、全離鍵状態になる最後の離鍵なのでパーカスエンベロープ（efpEnv）を終了させる（efpEnv←0）させる（ステップＳ４２８）。その後、或いはステップＳ４２４でパーカス音が付加されていない場合（ステップＳ４２４；Ｎ）、さらにはステップＳ４２６で現在押鍵状態の鍵数（OnCount）が１で無い場合（ステップＳ４２６；Ｎ）、現在押鍵状態の鍵数であるOnCountがデクリメントされる（ステップＳ４３０）。
【００５５】
以下の処理は、ドローバー数だけループする処理である。まず、ループ変数ｉが０にセットされる（ステップＳ４３２）。ｉはここでドローバー番号を示すことになる。
【００５６】
そして、Ｄ０〜Ｄ８（レジスタに読取済）のうち、ｉ番目の値が変数“y”に代入（y = DBLevel[i]）される（ステップＳ４３４）。その後、変化すべきリソース番号“s”が取得（s = GetSRC(i,k)）される（ステップＳ４３６）。
【００５７】
さらに、リソースｓのレベルの現在値（SCLevel[s]）から変数ｙが減らされる（ステップＳ４３８）。
【００５８】
その後、減ぜられた値がSCLevelにセットされてリソースに転送（ENV 転送）される（ステップＳ４４０）。
【００５９】
そしてインクリメントされたループ変数ｉが９未満か否かがチェックされる（ステップＳ４４２）。ここでは、ドローバー番号が最後か否かがチェックされている。
【００６０】
ループ変数ｉが９未満であれば（ステップＳ４４２；Ｙ）、ステップＳ４３４に復帰して、上記処理を繰り返す。すなわち、最後のドローバー番号でなければ、次のドローバーに移って、上記の処理をループする。
【００６１】
逆に、ループ変数ｉが９未満で無ければ（ステップＳ４４２；Ｎ）、すなわち、最後のドローバー番号であれば、鍵イベント処理を終了する。
【００６２】
図８は、上記図７のステップＳ４２０及びステップＳ４４０、さらには後述する図９のステップＳ６２４及び図１１のステップＳ８００で処理されるエンベロープ転送処理のフローを示すフローチャートである。同図に示すように、エンベロープデータｘが上記図３のエンベロープジェネレータ１６ａ、１６ｂに与えられると、関数fxl(x)により、固定小数点データｘから浮動小数点のエンベロープデータx0が得られ（ステップＳ５００）、該エンベロープデータx0が、図３のエンベロープジェネレータ１６ａ、１６ｂに与えられて、エンベロープを生成し、該エンベロープが、乗算器１８ａ、１８ｂによって、上下段の楽音データに夫々乗算され（ステップＳ５０２）、夫々のリソースに送られる。
【００６３】
図９は、図６のステップＳ３１０のドローバー処理の処理フローを示すフローチャートである。鍵同様ドローバーも上下段とも同一の処理を行うので１つの図面で示す。まず、最新のドローバー値D0〜D8がレジスタDBLevelに取得される（ステップＳ６００）。
【００６４】
そして、ループ変数ｉが０にセットされ、リソース番号がループ変数ｉとされる（ステップＳ６０２）。
【００６５】
リソースｉは発音中か否かがチェックされ（ステップＳ６０４）、発音中でなければ（ステップＳ６０４；Ｎ）、後述するステップＳ６２０にジャンプする。
【００６６】
一方、リソースｉが発音中であれば（ステップＳ６０４；Ｙ）、リソースレベルSCLevelの計算初期値が０にセットされる（ステップＳ６０６）。
【００６７】
その後ドローバー番号がループ変数ｊとされる（ステップＳ６０８）。
【００６８】
さらに関数GetKey(i,j)により、リソースｉ、ドローバーｊに対応する鍵ｋが得られる（ステップＳ６１０）。
【００６９】
またレジスタisKeyOn(k)がチェックされ、鍵ｋが押鍵状態か否かが判定される（ステップＳ６１２）。鍵ｋが押鍵状態でなければ（ステップＳ６１２；Ｎ）、後述するステップＳ６１８にジャンプする。
【００７０】
反対に鍵ｋが押鍵状態であれば（ステップＳ６１２；Ｙ）、レジスタDBLevelのｊ番目の値（＝Ｄｊ）が変数ｙに読み出される（ステップＳ６１４）。
【００７１】
さらに変数ｙがリソースｉのソースレベルに加算される（ステップＳ６１６）。
【００７２】
その後、インクリメントされたループ変数ｊが９未満か否かがチェックされる（ステップＳ６１８）。ここでは、ドローバー番号が最後か否かがチェックされている。
【００７３】
インクリメントされたループ変数ｊが９未満であれば（ステップＳ６１８；Ｙ）、ステップＳ６１０に復帰して、上記処理を繰り返す。すなわち、最後のドローバー番号でなければ、次のドローバーに移って、上記の処理をループする。
【００７４】
逆に、インクリメントされたループ変数ｊが９未満で無ければ（ステップＳ６１８；Ｎ）、すなわち、最後のドローバー番号であれば、ループ変数ｉがインクリメントされ（ステップＳ６２０）、次のリソース（番号）に移行する。
【００７５】
移行したリソースが最後のリソースか否かがチェックされ（ステップＳ６２２）、最後のリソースでなければ（ステップＳ６２２；Ｎ）、ステップＳ６０４に復帰して、そのリソースに対し、上記のドローバーに関する処理を繰り返すループ処理を行う。
【００７６】
逆に、移行したリソースが最後のリソースであれば（ステップＳ６２２；Ｙ）、変更した全てのリソースレベルSCLevelがリソースに転送される（ステップＳ６２４）。
【００７７】
図１０は、図６のステップＳ３１２のその他の処理の処理フローを示すフローチャートである。ここでは、まず、そのイベントがチューニングイベントであるか否かがチェックされる（ステップＳ７００）。そのイベントがチューニングイベントであれば（ステップＳ７００；Ｙ）、チューニング変更処理が行われる（ステップＳ７０２）。チューニングイベントでなければ（ステップＳ７００；Ｎ）、さらにその他のイベント処理がなされる（ステップＳ７０４）。
【００７８】
図１１は、図４のステップＳ１０６の時変数処理の処理フローのフローチャートである。まず、ドローバー変更に伴うもの以外（例えばサステインの終了など）の新規エンベロープ値がリソース（音源）に転送される（ステップＳ８００）。
【００７９】
そして、出力音量などの、非イベント処理が実行される（ステップＳ８０２）。
【００８０】
ループ変数ｉに０をセットし、ループ変数ｉが設定される（ステップＳ８０４）。
【００８１】
加算器２ｉ、絶対値回路３ｉ、ローパスフィルタ４ｉを経由してｉ番目のリソース（音源）の組の加算レベルが確認（モニタリング）が確認され、その値がＭＡＸか否かがチェックされる（ステップＳ８０６）。
【００８２】
モニタリングされたｉ番目のリソース（音源）の組の加算レベルがＭＡＸであれば（ステップＳ８０６；Ｙ）、位相が一致しているので、上段の周波数（fu[i]）と下段の周波数（fl[i]）が一致しているか否かが確認される（ステップＳ８１２）。周波数が一致していない場合（ステップＳ８１２；Ｎ）、位相一致作業は終了していないので、これを終了させるために上段の周波数と下段の周波数を一致させる（ステップＳ８１４）、即ちＣＰＵ１０２からアドレス発生器１０ａ又は１０ｂの一方に、読み出しアドレス変更量の変更指示がなされて実行される。その後ステップＳ８１６に進む。周波数が一致している場合、すでに位相一致作業が終了しているのでそのままステップＳ８１６に進む。
【００８３】
反対に、モニタリングされたｉ番目のリソース（音源）の組の加算レベルがＭＡＸでなければ（ステップＳ８０６；Ｎ）、位相が一致していないので、上段の周波数（fu[i]）と下段の周波数（fl[i]）が一致しているか否かが確認される（ステップＳ８０８）。
【００８４】
上段の周波数（fu[i]）と下段の周波数（fl[i]）が一致している場合（ステップＳ８０８；Ｙ）は、位相一致作業が開始されていないので、これを開始するために上段の周波数と下段の周波数をずらす処理がなされる（ステップＳ８１０）、即ちＣＰＵ１０２からアドレス発生器１０ａ又は１０ｂの一方に、読み出しアドレス変更量の変更指示がなされて実行される。その後ステップＳ８１６に進む。
【００８５】
また、上記ステップＳ８０８で、上段の周波数（fu[i]）と下段の周波数（fl[i]）が一致していない場合（ステップＳ８０８；Ｎ）は、位相一致作業中であるので、そのままステップＳ８１６に進む。
【００８６】
上記ステップＳ８１０、ステップＳ８１４の処理後、或いはステップＳ８０８で、上段の周波数（fu[i]）と下段の周波数（fl[i]）が一致していない場合（ステップＳ８０８；Ｎ）、またはステップＳ８１２で、上段の周波数（fu[i]）と下段の周波数（fl[i]）が一致している場合、ループ変数ｉがインクリメントされて（ステップＳ８１６）、次のリソースに移行する。
【００８７】
移行したリソースが最後のリソースか否かがチェックされ（ステップＳ８１８）、最後のリソースでなければ（ステップＳ８１８；Ｎ）、ステップＳ８０６に復帰して、そのリソースに対し、上記の位相を合わせる処理を繰り返すループ処理を行う。
【００８８】
逆に、移行したリソースが最後のリソースであれば（ステップＳ８１８；Ｙ）、そこで上記時変数処理は終了する。
【００８９】
以上詳述した本実施例の構成によれば、図２（ａ）に示すように、音程の同じ１つの音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の上下段の出力について、上述のように、加算器２ａ〜２ｎで加算されて、その出力値の絶対値を振幅取得手段の１つを構成する絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎでとり、もう１つの振幅取得手段の構成要素であるローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎで、低い周波数側の楽音データ（振幅値のエンベロープ）を取り出して、取得された振幅値から、位相の一致及びずれを、上記ＣＰＵ１０２によってモニタリングしている。
【００９０】
このＣＰＵ１０２によるモニタリングによって、上記振幅取得手段の出力（振幅値）が最大値ＭＡＸでない場合には、ＣＰＵ１０２の読み出し指示によって、アドレス発生器１０ａ又は１０ｂの一方の読み出しアドレスの変更量が変更され、それによって、上記１組の音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の一方の周波数が変更される。
【００９１】
位相を一致させる際に、上下段の組になるリソース（音源）の一方の周波数をずらすが、このときの周波数差が大きいと、操作者によってはずれを聞きとり、違和感を感じることがある。この観点からは、上記周波数差は可能な限り小さいことが望ましい。
【００９２】
しかし、周波数差があまり小さいと位相が一致するまでにかかる時間がかかり過ぎるので、この観点からは周波数差は可能な限り大きいことが望ましい。従って、上記ずれた側のリソース（音源）の周波数は、ずれていない側のリソース（音源）の周波数に対して周波数弁別閾近辺であるのが最も望ましい。
【００９３】
上記組になるリソース（音源）の一方の周波数をずらす代わりに、両方のリソース（音源）の周波数をそれぞれ逆方向にずらしても良い。この場合も一方の周波数は他方の周波数に対して上記周波数弁別閾近辺近辺にあることが最も望ましい。
【００９４】
一方のリソース（音源）の周波数を他方に対して上記周波数弁別閾近辺とすることにより、操作者に違和感を与えない状態を保ちつつ、位相を一致させるまでにかかる時間を最短とすることができる。
【００９５】
周波数弁別閾は各リソース（音源）が出力する波形によって異なるので、音色を切り替える毎に、上記ずらす周波数を、該切り替えられた音色に応じて変更してもよい。
【００９６】
そのような調整によって、上記振幅手段の出力（振幅値）が最大値ＭＡＸに達したときに、位相が合っているとして、再度上記１組の音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の周波数を同一にする（上記ＣＰＵ１０２の読み出し指示によるアドレス発生器１０ａ及び１０ｂの双方の読み出しアドレスの変更量が同じにされる）。
【００９７】
加算器２ａ〜２ｎ、及び上記加算値の絶対値をとる絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ及びローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎの組み合わせで、位相の分かる振幅値を取得する振幅取得手段とを含み、ＣＰＵ１０２によるモニタリングが行われることで構成される上記検出手段に向けての、上記１組の音源１１６［図２（ａ）では発音手段を構成するリソース１ａ〜１ｎに相当する］の出力は、上述した図２（ａ）に示すように、本電子鍵盤楽器の楽音を生成するための出力とは、別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記１組の発音手段の一方または両方が発音していても、実施できることになる。
【００９８】
従って、上下段の鍵盤で同じ音程の音を同時に出力する場合、位相を一致させながら、上下段で異なる音響効果を付与できるようになり、また、上下段の鍵盤の個々にサスティン効果が付与／設定できるようになる。
【００９９】
さらに、チューニングイベントやグライド効果（オートベンド効果）によって周波数が変更され、効果が終了して、周波数が戻された後も、上下鍵盤の位相がずれたままになっても、上記検出手段（加算器２ａ〜２ｎ、及び上記加算値の絶対値をとる絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ及びローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎの組み合わせで、位相の分かる振幅値を取得する振幅取得手段とを含み、ＣＰＵ１０２によるモニタリングが行われることで構成される）により、周期的に上下鍵の位相差が確認され、上記発音手段を構成するリソース１ａ〜１ｎの１組の位相差が検出されれば、上記１組の位相を合わせるように制御でき、そのため、位相が再度合わせられるようになり、音響効果を上下段の鍵盤で別々に設定できる上に、発音中であっても、位相差が生じ難いし、たとえ生じても補正されるようになる。
【０１００】
尚、本発明の電子楽器は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【０１０１】
例えば、加算器２ａ〜２ｎ、絶対値回路ＡＢＳ［ｘ］３ａ〜３ｎ、ローパスフィルタＬＰＦ［ｘ］４ａ〜４ｎを音程数だけ用意するのに代えて、夫々ただ一個を用意し、入力にＣＰＵ１０２が制御可能なセレクタを介して各リソース（音源）の組に接続するようにし、ＣＰＵ１０２が上記モニタリングを行う際の加算器入力をｉ番目のリソース（音源）の組に接続するようにしてもよい。
【０１０２】
また、モニタリングを行うリソース（音源）の組のいずれか一方が発音中かどうかを調べ、両方が発音中ならずらす周波数を上記周波数弁別閾近辺とし、一方または両方が発音していない場合は、該発音していない側のリソース（音源）をずらすこととし、周波数差も両方が発音中の場合より大きくすることで、位相が合うまでの平均時間をより短時間とすることができる。さらにその他の変更を加えても良い。
【産業上の利用可能性】
【０１０３】
本発明の電子楽器は、電子オルガン、電子ピアノ、デジタルシンセサイザやモデリングシンセサイザなどに適用できる。
【図面の簡単な説明】
【０１０４】
【図１】本発明のハモンドオルガンをエミュレートする構成が用いられた電子鍵盤楽器の全体構成を示すブロック図である。
【図２】本電子鍵盤楽器がドローバー式（例えばハモンド）オルガンとしてエミュレートする場合の回路構成を示すブロック図及びＫＳＷ xxの構成を模式的に示した回路図である。
【図３】リソース１ａ〜１ｎである音源１１６の回路ブロック図である。
【図４】本電子鍵盤楽器のメイン処理フローを示すフローチャートである。
【図５】図４のステップＳ１００の初期化処理のフローを示すフローチャートである。
【図６】図４のステップＳ１０４のイベント処理のフローを示すフローチャートである。
【図７】図６のステップＳ３０２及びステップＳ３０６の上段鍵盤及び下段鍵盤のイベント処理のフローを示すフローチャートである。
【図８】エンベロープ転送処理のフローを示すフローチャートである。
【図９】図６のステップＳ３１０のドローバー処理の処理フローを示すフローチャートである。
【図１０】図６のステップＳ３１２のその他の処理の処理フローを示すフローチャートである。
【図１１】図４のステップＳ１０６の時変数処理の処理フローのフローチャートである。
【図１２】特許文献１の従来構成を示すブロック図である。
【符号の説明】
【０１０５】
１ａ〜１ｎ      リソース（発音手段）
２ａ〜２ｎ      加算器
３ａ〜３ｎ      絶対値回路ＡＢＳ［ｘ］
４ａ〜４ｎ      ローパスフィルタＬＰＦ［ｘ］
１０ａ、１０ｂ    アドレス発生器
１２ａ、１２ｂ    波形メモリ
１４ａ、１４ｂ    波形デコーダ
１６ａ、１６ｂ    エンベロープジェネレータ
１８ａ、１８ｂ、２２ａ、２２ｂ    乗算器
２０ａ、２０ｂ    ラウドネス補間器
１００              システムバス
１０２              ＣＰＵ
１０４              プログラムＲＯＭ
１０６              ＲＡＭ
１１０              パネルスキャン回路
１１２、１１４      鍵盤
１１２ａ、１１４ｂ  鍵盤スキャン回路
１１６              音源（リソースと同じ）
１１８              ＤＳＰ
１２０              ディレイメモリ
１２２              デジタルアナログコンバータ
１２４              アンプ
１２６              スピーカ
【図１】
2012211941.tif 000003
【図２】
2012211941.tif 000004
【図３】
2012211941.tif 000005
【図４】
2012211941.tif 000006
【図５】
2012211941.tif 000007
【図６】
2012211941.tif 000008
【図７】
2012211941.tif 000009
【図８】
2012211941.tif 000010
【図９】
2012211941.tif 000011
【図１０】
2012211941.tif 000012
【図１１】
2012211941.tif 000013
【図１２】
2012211941.tif 000014