(57)【特許請求の範囲】
【請求項１】
夫々発音すべき楽音の音高を指定するための鍵番号が順次割り当てられた複数の鍵を有する鍵盤と、
この鍵盤のいずれかの鍵が押鍵された場合に、押鍵された鍵が属する鍵域に対応して予め設定されたオクターブ分、押鍵された鍵の鍵番号を変更するオクターブ変更手段と、
このオクターブ変更手段により変更された鍵番号に対応する音高の楽音の発生を指示する楽音発生指示手段と、
隣接する複数の鍵を所定の方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別する第１の判別手段と、
この第１の判別手段により鍵域が異なると判別された場合は、前記最後の押鍵により指定される鍵番号を前記それ以外の押鍵に対して行なわれる鍵番号の変更と同一の変更を行なうように前記オクターブ変更手段を制御する変更制御手段と、
前記第１の判別手段により前記最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なると判別された場合に、前記最後の押鍵が行われた鍵を前記それ以外の押鍵が行われた鍵域が含むように前記鍵域のスプリット位置を変更する第１の鍵域変更手段と、
前記第１の鍵域変更手段により前記鍵域のスプリット位置が変更された後に押鍵されている鍵のいずれかが離鍵された場合、当該離鍵された鍵が前記鍵域のスプリット位置にあるか否か判別する第２の判別手段と、
この第２の判別手段により、前記離鍵された鍵が前記鍵域のスプリット位置にあると判別された場合は、残りの押鍵された鍵のうち、最も前記スプリット位置に近い鍵の位置をスプリット位置とするように前記鍵域を変更する第２の鍵域変更手段と、
を有する演奏制御装置。
【請求項２】
前記第１の判別手段は、隣接する複数の鍵を音高の高い方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別し、
前記第２の鍵域変更手段は、前記残りの押鍵された鍵のうち、最も音高の高い鍵の位置をスプリット位置とするように前記鍵域を変更する、
ことを特徴とする請求項１記載の演奏制御装置。
【請求項３】
前記第１の判別手段は、隣接する複数の鍵を音高の低い方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別し、
前記第２の鍵域変更手段は、前記残りの押鍵された鍵のうち、最も音高の低い鍵の位置をスプリット位置とするように前記鍵域を変更する、
ことを特徴とする請求項１記載の演奏制御装置。
【請求項４】
夫々発音すべき楽音の音高を指定するための鍵番号が順次割り当てられた複数の鍵を有する鍵盤を有する演奏制御装置に適用されるコンピュータに、
この鍵盤のいずれかの鍵が押鍵された場合に、押鍵された鍵が属する鍵域に対応して予め設定されたオクターブ分、押鍵された鍵の鍵番号を変更するオクターブ変更ステップと、
この変更された鍵番号に対応する音高の楽音の発生を指示する楽音発生指示ステップと、
隣接する複数の鍵を所定の方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別する第１の判別ステップと、
鍵域が異なると判別された場合は、前記最後の押鍵により指定される鍵番号を前記それ以外の押鍵に対して行なわれる鍵番号の変更と同一の変更を行なうように前記オクターブ変更ステップを制御する変更制御ステップと、
前記最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なると判別された場合に、前記最後の押鍵が行われた鍵を前記それ以外の押鍵が行われた鍵域が含むように前記鍵域のスプリット位置を変更する第１の鍵域変更ステップと、
前記鍵域のスプリット位置が変更された後に押鍵されている鍵のいずれかが離鍵された場合、当該離鍵された鍵が前記鍵域のスプリット位置にあるか否か判別する第２の判別ステップと、
前記離鍵された鍵が前記鍵域のスプリット位置にあると判別された場合は、残りの押鍵された鍵のうち、最も前記スプリット位置に近い鍵の位置をスプリット位置とするように前記鍵域を変更する第２の鍵域変更ステップと、
を実行させる演奏制御処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏制御装置及び演奏制御処理のプログラムに関する。
【背景技術】
【０００２】
従来より、ひとつの鍵盤の低鍵域と高鍵域とを別々の演奏者に演奏させる、いわゆる連奏機能、あるいはデュエット機能を有する楽器が提案されている。
この連奏機能を有する楽器においては、夫々の演奏者が同じ音域で演奏できるように、鍵域毎に別々にオクターブ変換している。
例えば、特許文献１においては、鍵盤を鍵番号ＳＰをスプリット位置として低鍵域と高鍵域とに分割し、低鍵域においては、押鍵により指定される楽音の音高を通常より２オクターブアップし、高鍵域においては、２オクターブダウンする構成が開示されている。
【０００３】
また、特許文献２においては、押鍵により発生するキー情報に対応する鍵が属する鍵域を判別し、この判別結果に基づいてこの鍵域で発生するキー情報を所望オクターブ量変更させることにより、少なくとも２つの鍵域で発生する楽音の音高が重複する部分が生じるようにした構成が開示されている。
さらに特許文献３には、鍵盤を２つの鍵域に分割した際、第１の鍵域の中央に位置する鍵の本来のオクターブ値と、第１の鍵域に設定された音色の基準音域のオクターブ値とに基づいてオクターブシフト量を算出することにより、音色毎の基準音域が各鍵域の略中央に配置される構成が開示されている。
【特許文献１】特許第３５８６７５４号公報
【特許文献２】特公昭６２−３５１１８公報
【特許文献３】特開２０００−１９４３６９公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このように、ひとつの鍵盤を複数の鍵域に分けて別々の演奏者が演奏する場合、演奏に用いられる鍵域が狭いため、演奏される楽曲によっては、別の演奏者が用いるべき鍵域まで押鍵してしまう恐れがある。特に隣接している複数の鍵を連続して押鍵するようなアドリブ演奏を、鍵域と鍵域の境界であるスプリット位置付近で行なった場合に生じる場合が多い。
【０００５】
このように鍵域をまたいで別の鍵域の鍵まで押鍵した場合には、突然演奏者の意に反した音高の楽音が発生することになり、演奏者の演奏意欲をそぐ事態になりかねないうえに、演奏を聴取している者から見れば演奏ミスあるいは楽器の故障といった誤った認識を持たれてしまう。
本発明は、このような事情に鑑みてなされたものであり、鍵域をまたいで演奏した場合でも、演奏者の意に反した音高の楽音が発生しないようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、夫々発音すべき楽音の音高を指定するための鍵番号が順次割り当てられた複数の鍵を有する鍵盤と、この鍵盤のいずれかの鍵が押鍵された場合に、押鍵された鍵が属する鍵域に対応して予め設定されたオクターブ分、押鍵された鍵の鍵番号を変更するオクターブ変更手段と、このオクターブ変更手段により変更された鍵番号に対応する音高の楽音の発生を指示する楽音発生指示手段と、隣接する複数の鍵を所定の方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別する第１の判別手段と、この第１の判別手段により鍵域が異なると判別された場合は、前記最後の押鍵により指定される鍵番号を前記それ以外の押鍵に対して行なわれる鍵番号の変更と同一の変更を行なうように前記オクターブ変更手段を制御する変更制御手段と、前記第１の判別手段により前記最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なると判別された場合に、前記最後の押鍵が行われた鍵を前記それ以外の押鍵が行われた鍵域が含むように前記鍵域のスプリット位置を変更する第１の鍵域変更手段と、前記第１の鍵域変更手段により前記鍵域のスプリット位置が変更された後に押鍵されている鍵のいずれかが離鍵された場合、当該離鍵された鍵が前記鍵域のスプリット位置にあるか否か判別する第２の判別手段と、この第２の判別手段により、前記離鍵された鍵が前記鍵域のスプリット位置にあると判別された場合は、残りの押鍵された鍵のうち、最も前記スプリット位置に近い鍵の位置をスプリット位置とするように前記鍵域を変更する第２の鍵域変更手段と、を有することを特徴とする。
【０００７】
また、請求項１に従属する請求項２に記載の発明では、前記第１の判別手段は、隣接する複数の鍵を音高の高い方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別し、前記第２の鍵域変更手段は、前記残りの押鍵された鍵のうち、最も音高の高い鍵の位置をスプリット位置とするように前記鍵域を変更する、ことを特徴とする。
【０００８】
また、請求項１に従属する請求項３に記載の発明では、前記第１の判別手段は、隣接する複数の鍵を音高の低い方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別し、前記第２の鍵域変更手段は、前記残りの押鍵された鍵のうち、最も音高の低い鍵の位置をスプリット位置とするように前記鍵域を変更する、ことを特徴とする
【０００９】
さらに、請求項４に記載の発明では、夫々発音すべき楽音の音高を指定するための鍵番号が順次割り当てられた複数の鍵を有する鍵盤を有する演奏制御装置に適用されるコンピュータに、この鍵盤のいずれかの鍵が押鍵された場合に、押鍵された鍵が属する鍵域に対応して予め設定されたオクターブ分、押鍵された鍵の鍵番号を変更するオクターブ変更ステップと、この変更された鍵番号に対応する音高の楽音の発生を指示する楽音発生指示ステップと、隣接する複数の鍵を所定の方向に連続して押鍵した際に、最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なるか否か判別する第１の判別ステップと、鍵域が異なると判別された場合は、前記最後の押鍵により指定される鍵番号を前記それ以外の押鍵に対して行なわれる鍵番号の変更と同一の変更を行なうように前記オクターブ変更ステップを制御する変更制御ステップと、前記最後の押鍵が行われた鍵域とそれ以外の押鍵が行なわれた鍵域とが異なると判別された場合に、前記最後の押鍵が行われた鍵を前記それ以外の押鍵が行われた鍵域が含むように前記鍵域のスプリット位置を変更する第１の鍵域変更ステップと、前記鍵域のスプリット位置が変更された後に押鍵されている鍵のいずれかが離鍵された場合、当該離鍵された鍵が前記鍵域のスプリット位置にあるか否か判別する第２の判別ステップと、前記離鍵された鍵が前記鍵域のスプリット位置にあると判別された場合は、残りの押鍵された鍵のうち、最も前記スプリット位置に近い鍵の位置をスプリット位置とするように前記鍵域を変更する第２の鍵域変更ステップと、を実行させることを特徴とする。
【発明の効果】
【００１０】
上記発明によれば、隣接した複数の鍵を連続して所定の方向に押鍵した場合、一部の押鍵のみが他の押鍵と異なる鍵域となってしまった場合、この一部の押鍵も他の押鍵と同じ鍵域で行なったものとすることができる。このため、突然演奏者の意に反した音高の楽音が発生することが防止できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について説明する。
図１は、本発明を適用した電子鍵盤楽器の外観図である。
楽器本体には、ノーマルモードとデュエットモードとのいずれかを指定するデュエットスイッチ１と鍵盤２とを有する。鍵盤２は８８個の鍵を有しており、ノーマルモードにおいては、各鍵に対して、左側（低鍵域側）から順次鍵番号（ＭＩＤＩ  ＮＯＴＥ番号）２１（音高  Ａ０）〜１０８（音高  Ｃ８）が割り当てられる。
【００１２】
一方デュエットモードのときは、スプリット位置３に対応する鍵を境界として鍵域が分割され、低鍵域側に含まれる各鍵の鍵番号は、低い方から順次４５（音高  Ａ２）〜８３（音高  Ｄ５）というように２オクターブアップした値に変更される。そして高鍵域側に含まれる各鍵は、低い方から順次鍵番号３６（音高  Ｃ２）〜８４（音高  Ｃ６）というように２オクターブダウンした値に変更される。
図２は、図１の電子鍵盤楽器の構成を示すブロック図である。
ＣＰＵ１０は、この楽器本体の処理全体を実行するものであり、プログラムＲＯＭ１１にストアされたプログラムに基づいてその処理動作を実行する。ワークＲＡＭ１２は、この処理により生成されるデータを一時的にストアするエリアを有するものである。そして音源１３は、鍵盤２対しての押鍵・離鍵動作に対応してＣＰＵ１０にて生成されたノートオン・ノートオフイベントを受信して楽音を生成する回路である。
【００１３】
これらＣＰＵ１０、プログラムＲＯＭ１１、ワークＲＡＭ１２、音源１３、鍵盤２、モード切替を行うデュエットスイッチ１を含むスイッチ群は、バスライン１４を介して接続される。
以上の構成を有することにより、この電子鍵盤楽器は、デュエットスイッチ１の操作によりデュエットモード又はノーマルモードとなり、夫々のモードにおいて各鍵に割り当てられる鍵番号が図１に示されるように変更になる。
そしてデュエットモードにおいて、分割された鍵域の一方で隣接しあう鍵を他方の鍵域に向かって連続して押鍵がなされた後、それに続く押鍵がたまたま他方の鍵域に及んでしまった場合、この他方の鍵域での押鍵を一方の鍵域で押鍵したように鍵番号を変更するように動作する。
【００１４】
以下、ＣＰＵ１０の動作をフローチャートを用いて説明する。なお、フローチャートに用いられるレジスタやフラグは、ＣＰＵ１０内のレジスタを用いてもよいし、ワークＲＡＭ１２の一部エリアをレジスタエリアとして設定してもよい。
図３は、ＣＰＵ１０の処理全体を示したフローチャートである。
まず、電源（図示せず）がオンされるとイニシャライズ処理（ステップＡ１）が実行され、続いてＳＷ処理（ステップＡ２）、鍵盤処理（ステップＡ３）、そしてその他の処理（ステップＡ４）の順で処理が実行される。このステップＡ２〜Ａ４の処理は、電源がオフされるまで繰り返し実行される。
【００１５】
図４は、図３のイニシャライズ処理（ステップＡ１）の詳細なフローチャートである。
まず、鍵盤２のスプリット位置に対応する鍵番号を記憶するレジスタＳＰＮＯＴＥに初期値「６０」をストアする（ステップＢ１）。次いで、押鍵された鍵の鍵番号をストアする各種レジスタＣＮＯＴＥ、ＦＮＯＴＥ１及びＦＮＯＴＥ２の値をクリアする（ステップＢ２）。
【００１６】
図５は、図３のＳＷ処理（ステップＡ２）の詳細なフローチャートである。
まずデュエットスイッチ１がオン操作されたか否か判別する（ステップＣ１）。ここでもしオン操作されたと判別されたならば、レジスタＤＦにストアされたデュエットフラグを反転させ（ステップＣ２）、その他のスイッチの処理（ステップＣ３）に移る。もしステップＣ１でオン操作されていない、と判別されたなら、ステップＣ２の処理をスキップしてステップＣ３に進む。このステップＣ３の処理が実行された後、このＳＷ処理を終了させる。
【００１７】
図６は、図３の鍵盤処理（ステップＡ３）の詳細なフローチャートである。
まず、鍵盤２を走査し（ステップＤ１）、鍵の状態が変化したか否か判別する（ステップＤ２）。ここで変化なしと判断された場合は、この鍵盤処理を終了する。
一方、オフ状態からオン状態に変化、つまり押鍵された鍵があったと判別された場合は、ステップＤ３に進み、レジスタＤＦのデュエットフラグが「１」、デュエットモードであるか否か判別する。ここでデュエットモードでなくノーマルモードである、と判別された場合は、音高設定処理（１）（ステップＤ４）、続いて発音処理（１）（ステップＤ５）の処理を実行して鍵盤処理を終了させる。また、デュエットモードであると判別された場合は、音高設定処理（２）（ステップＤ６）、音高変換処理（ステップＤ７）、そして発音処理（２）（ステップＤ８）の順で処理を実行し、鍵盤処理を終了する。
【００１８】
ステップＤ２において、オン状態からオフ状態に変化、つまり離鍵された鍵があったと判別された場合は、ステップＤ９に進み、レジスタＤＦのデュエットフラグが「１」、デュエットモードであるか否か判別する。ここでデュエットモードでなくノーマルモードである、と判別された場合は、消音処理（１）（ステップＤ１０）を実行し、デュエットモードであると判別された場合は、消音処理（２）（ステップＤ１１）を実行して、鍵盤処理を終了させる。
【００１９】
図７は、図６の音高設定処理（１）（ステップＤ４）の詳細なフローチャートを示す。この処理においては、押鍵された鍵に対応する鍵番号をレジスタＮにストアして処理を終了する（ステップＥ１）。
【００２０】
図８は、図６の発音処理（１）（ステップＤ５）の詳細なフローチャートである。まず、レジスタＮにストアされた鍵番号に基づいてノートオンイベントを作成し（ステップＦ１）、この作成されたノートオンイベントを音源１３に送付してこの処理を終了する。音源１３は、このノートオンイベントに基づいた楽音を生成する。
【００２１】
このようにノーマルモードにおいて押鍵が為された場合は、押鍵された鍵の鍵番号に対応する音高の楽音が発生することになる。
図９は、図６の音高設定処理（２）（ステップＤ６）の詳細なフローチャートである。押鍵された鍵の鍵番号は、レジスタＮＯＴＥにストアされる（ステップＧ１）。そしてレジスタＦＮＯＴＥ１にストアされた値をレジスタＦＮＯＴＥ２にストアし（ステップＧ２）、レジスタＣＮＯＴＥにストアされた値をレジスタＦＮＯＴＥ１にストアする（ステップＧ３）。そしてレジスタＮＯＴＥにストアされた値をレジスタＣＮＯＴＥにストアして（ステップＧ４）この処理を終了する。
【００２２】
音高設定処理（２）において以上のような処理を行なうことにより、押鍵がある毎に、押鍵された鍵番号がＣＮＯＴＥ→ＦＮＯＴＥ１→ＦＮＯＴＥ２へとシフトしてストアされる。これにより、押鍵があると、その押鍵による鍵番号はレジスタＣＮＯＴＥにストアされ、その前の押鍵の鍵番号はレジスタＦＮＯＴＥ１にストアされ、さらにその前の押鍵による鍵番号はレジスタＦＮＯＴＥ２にストアされることになる。
【００２３】
図１０は、図６の音高変換処理（ステップＤ７）の詳細なフローチャートである。
まず、レジスタＣＮＯＴＥとＦＮＯＴＥ１とにストアされた鍵番号同士の差、及びレジスタＦＮＯＴＥ１とＦＮＯＴＥ２とにストアされた鍵番号同士の差が「１」であるか否か判別する（ステップＨ１）。ここで差が夫々「１」と判別された場合は隣接した鍵を３鍵連続して押鍵したことを意味する。
もし、ここで隣接した鍵を３鍵連続して押鍵したものでない、と判別された場合は、ステップＨ２に進み、レジスタＣＮＯＴＥにストアされた鍵番号、つまりこの時点で押鍵された鍵番号がスプリット位置を超えているか否か判別される。
【００２４】
ここで超えていると判別された場合は、高鍵域側を押鍵したものと判断されてステップＨ３に進み、レジスタＮＯＴＥにストアされた鍵番号を２オクターブダウンさせる。次にシフトしたオクターブ数をストアするレジスタに「−２」をストア（ステップＨ４）してこの処理を終了させる。
また、ステップＨ２において超えていないと判別された場合は、低鍵域側を押鍵したものと判断されてステップＨ５に進み、レジスタＮＯＴＥにストアされた鍵番号を２オクターブアップさせる。次にシフトしたオクターブ数をストアするレジスタに「＋２」をストア（ステップＨ６）してこの処理を終了させる。
【００２５】
このように、押鍵された鍵がスプリット位置で分割された鍵域のうち、高鍵域に含まれる場合は２オクターブダウンさせ、低鍵域に含まれる場合は、２オクターブアップさせるような鍵番号の変更を行なう。
一方、ステップＨ１において、隣接した鍵を３鍵連続して押鍵したと判別された場合は、ステップＨ７に進み、ストアされている鍵番号がＣＮＯＴＥ＜ＦＮＯＴＥ１＜ＦＮＯＴＥ２の関係にあるか否か判別する。
ここでＹｅｓと判別された場合は、連続して低い鍵域側向かって押鍵していることを意味し、次にレジスタＣＮＯＴＥがスプリット位置に対応する鍵番号をストアしたレジスタＳＰＮＯＴＥより小さいか否かを判別する（ステップＨ８）。
【００２６】
ここにおいてＹｅｓと判断された場合は、最後に押鍵した鍵がスプリット位置を越えて他の鍵域に含まれる鍵であったことを意味する。そうである場合はさらに。レジスタＦＮＯＴＥ１にストアされた鍵番号がレジスタＳＰＮＯＴＥにストアされたスプリット位置に対応する鍵番号以上であるか否か判別する（ステップＨ９）。
ここでＹｅｓと判別された場合は、最後に押鍵した鍵のみ、他の鍵域を押鍵してしまったことを意味する。
このように、過去３回の押鍵操作が、隣接する鍵を低い鍵域の方向に押鍵し、しかも最初の２回の押鍵が高鍵域に含まれる鍵であるのに対して、最後の押鍵のみがスプリット位置を越えて低鍵域の鍵であった場合に、上述のステップＨ１、Ｈ７〜Ｈ９までの判別処理が全てＹｅｓと判別される。
【００２７】
このような場合は、ステップＨ１０に進み、レジスタＳＰＮＯＴＥにレジスタＣＮＯＴＥの鍵番号をストアし、続いてステップＨ３、Ｈ4の処理に進む。つまり、レジスタＮＯＴＥにストアされている最後に押鍵した鍵番号は、低鍵域に含まれる鍵を押鍵したにも係らず、高鍵域に含まれる鍵を押鍵したものとされる。
一方、ステップＨ８においてＮｏと判別された場合は、これはレジスタＣＮＯＴＥ、ＦＮＯＴＥ１及びＦＮＯＴＥ２にストアされている鍵番号全てが高鍵域側に含まれるものであるから、ステップＨ３、Ｈ４に進み、２オクターブダウンさせる処理を行なう。また、ステップＨ９でＮｏと判断された場合、これはＦＮＯＴＥ１にストアされた鍵番号、つまり前回の押鍵も低鍵域側での押鍵であったことを意味する。この場合は、最後の押鍵は低鍵域側で行なわれたものとして扱い、ステップＨ５、Ｈ６に進む。
【００２８】
そしてステップＨ７の処理において、ＣＮＯＴＥ＜ＦＮＯＴＥ１＜ＦＮＯＴＥ２の関係にないと判別された場合は、ＣＮＯＴＥ＞ＦＮＯＴＥ１＞ＦＮＯＴＥ２の関係であることを意味する。この場合は、ステップＨ１１に進み、レジスタＣＮＯＴＥにストアされている最後の押鍵による鍵番号がレジスタＳＰＮＯＴＥにストアされているスプリット位置に対応する鍵番号以上か否か判別する。ここでスプリット位置に対応する鍵番号未満であると判断されたなら、過去３回の押鍵全てが低鍵域側で行なわれたものであるから、ステップＨ５、Ｈ６に進む。
しかしスプリット位置に対応する鍵番号以上である、つまり高鍵域に含まれる鍵を押鍵したものと判別された場合は、次にレジスタＦＮＯＴＥ１にストアされている前回の押鍵の鍵番号がスプリット位置に対応する鍵番号未満であるか否か判別する（ステップＨ１２）。ここでスプリット位置に対応する鍵番号未満であると判別された場合は、前回、前々回の押鍵が低鍵域側で行なわれたのに係らず、最後の押鍵のみが高鍵域側で行なわれたことを意味する。この場合は、ステップＨ１３に進み、レジスタＳＰＮＯＴＥにＣＮＯＴＥにストアされている鍵番号をストアし、ステップＨ５、Ｈ６の処理を行なう。
【００２９】
このように、過去３回の押鍵操作が、隣接する鍵を高い鍵域の方向に押鍵し、しかも最初の２回の押鍵が低鍵域に含まれる鍵であるのに対して、最後の押鍵のみがスプリット位置を越えて高鍵域の鍵であった場合に、高鍵域に含まれる鍵を押鍵したにも係らず、低鍵域に含まれる鍵を押鍵したものとされる。
また、ステップＨ１２でＮｏ、つまりレジスタＦＮＯＴＥ１にストアされた前回の押鍵も高鍵域側で押鍵されたと判断された場合は、これは高鍵域側で押鍵されたものとして取り扱うために、ステップＨ３、Ｈ４に進む。
このように本実施形態においては、隣接した鍵を３個、連続して高い方向あるいは低い方向に押鍵して、たまたま最後の押鍵のみが前回、前々回の押鍵と異なる鍵域となってしまった場合、この前回、前々回と同じ鍵域で行なったものとすることができる。
【００３０】
さらに本実施形態においては、このような鍵域をまたいだ押鍵があり、その押鍵が実際押鍵された鍵域と異なるものと取り扱われたとき、ステップＨ１０あるいはステップＨ１３において、スプリット位置をその押鍵が含まれる位置までに変更している。これは最後の押鍵に隣接した押鍵がなされた場合に、その押鍵もその前の押鍵と同じ鍵域で行なわれたとして扱うためである。
このような構成により、隣接した鍵を一定方向に連続して押鍵した際は、その連続した押鍵が続く限り、同一の鍵域で押鍵しものと取り扱われ、演奏途中で演奏者の意に反した音高の楽音が発音されるのを防止できる。
【００３１】
図１１は、図６の発音処理（２）（ステップＤ８）の詳細なフローチャートである。
レジスタｎの値を「０」とする（ステップＩ１）。続いて、このレジスタｎの値を引数として予め用意されているレジスタＮＯＴＥ（ｎ）が空いているか否か判別する（ステップＩ２）。ここでもし空いていないと判別されたなら、レジスタｎの値をインクリメントする（ステップＩ３）。このレジスタｎの値が最大値、つまり予め用意されたレジスタＮＯＴＥ（ｎ）の数を越えているか判別し（ステップＩ４）、超えているならこの処理を終了する。そして、超えていないなら、再びステップＩ２の処理に戻る。
ステップＩ２において、レジスタＮＯＴＥ（ｎ）が空いていると判断されたなら、このレジスタＮＯＴＥ（ｎ）にレジスタＣＮＯＴＥの鍵番号をストアし（ステップＩ５）、ＮＯＴＥ（ｎ）に対応して用意されたレジスタにＯＣＴ（ｎ）にレジスタＯＣＴにストアされているオクターブシフト数をストアする（ステップＩ６）。続いてレジスタＮＯＴＥにストアされている鍵番号に基づいたノートオンイベントを作成し（ステップＩ７）、このノートオンイベントを音源１３にストアして（ステップＩ８）、この処理を終了する。
このように、この発音処理（２）においては、前述の音高変換処理にてオクターブシフトされた鍵番号に基づく発音を指示する。
【００３２】
図１２は、図６の消音処理（１）（ステップＤ１２）の詳細なフローチャートである。
まず、離鍵された鍵の鍵番号をレジスタＮＯＴＥにストアする（ステップＪ１）。そしてこのレジスタＮＯＴＥにストアされた鍵番号に基づいたノートオフイベントを作成して（ステップＪ２）、音源１３にこの作成したノートオフイベントを送付して（ステップＪ３）、この処理を終了する。
このように、本実施形態によれば、ノーマルモードにおいて、離鍵が検知されれば、離鍵した鍵の鍵番号そのままに対応するノートオフイベントが生成されて発生している楽音が消音される。
【００３３】
図１３及び図１４は、図６の消音処理（２）（ステップＤ１１）の詳細なフローチャートである。
まず、レジスタＮＯＴＥに離鍵された鍵の鍵番号がストアされる（ステップＫ１）。続いてレジスタｎの値を「０」とし（ステップＫ２）、このレジスタｎを引数とするレジスタＮＯＴＥ（ｎ）にストアされた鍵番号とレジスタＮＯＴＥにストアされた離鍵された鍵の鍵番号とが同一であるか否か判別される（ステップＫ３）。
【００３４】
ここで同一でないと判別されたなら、レジスタｎの値をインクリメントする（ステップＫ４）。そしてこのｎの値が最大値、つまり予め用意されたレジスタＮＯＴＥ（ｎ）の数を超えているか否か判別し（ステップＫ５）、越えていたら、この処理は終了する。もし超えていないなら、再びステップステップＫ３の処理に移行する。
このステップＫ３において、同一と判断されたなら、ステップＫ６に進み、レジスタＮＯＴＥの鍵番号をＯＣＴ（ｎ）にストアされていたオクターブシフト数分シフトする。つまり発音された楽音の音高に対応する鍵番号は、前述の音高変換処理にてオクターブシフトされており、押鍵に用いた鍵を離鍵して得られる鍵番号そのままの値とは異なっている。そのためここにおいては、オクターブシフトした際のオクターブシフト数を用いて離鍵された鍵番号もオクターブシフトさせることにより、発音された楽音の音高に対応する鍵番号と一致させているのである。
【００３５】
このステップＫ６の処理の後、変換されたレジスタＮＯＴＥの鍵番号に基づいたノートオフイベントを作成して（ステップＫ７）、音源１３に送付する（ステップＫ８）。これにより、発音された楽音の消音がなされる。
そして、レジスタＳＰＮＯＴＥにストアされている鍵番号が初期値の「６０」であるかどうか判別し（ステップＫ９）、「６０」であるなら、ＮＯＴＥ（ｎ）及びＯＣＴ（ｎ）をクリアし（ステップＫ１０）、この処理を終了する。
以上が離鍵に基づく消音の処理である。本実施形態においては、実際の押鍵の鍵域と異なる鍵域を押鍵したものと取り扱った場合はスプリット位置を変更している。以下に説明する処理は、この変更されたスプリット位置を離鍵に伴って元に戻す処理である。
【００３６】
まず、ステップＫ９において、スプリット位置が「６０」でないなら、スプリット位置が変更されたことを意味する。この場合は、ステップＫ１１に進み、ＳＰＮＯＴＥにストアされた鍵番号とＮＯＴＥ（ｎ）にストアされている鍵番号が一致しているか否か判別する。ここで一致していないと判別された場合は、スプリット位置の変更は、ＮＯＴＥ（ｎ）にストアされている鍵番号によるものでないことを意味する。この場合は、ステップＫ１０の処理に進む。
【００３７】
一方、一致していると判断された場合は、レジスタＳＰＮＯＴＥにストアされている鍵番号が、「６０」を超えているか否か判別する（ステップＫ１２）。ここでもし超えていると判別されたなら、ＮＯＴＥ（ｎ）を除くレジスタ群ＮＯＴＥ（）にストアされている鍵番号の中で最大値がストアされているレジスタをサーチし、その引数をレジスタｍにストアする（ステップＫ１３）。そしてこのレジスタｍにストアされている値を引数とするレジスタＮＯＴＥ（ｍ）にストアされている鍵番号が「６０」を超えているか否か判別する（ステップＫ１４）。この判別によりもし「６０」を超えているなら、レジスタＳＰＮＯＴＥにレジスタＮＯＴＥ（ｍ）の鍵番号をストアさせ（ステップＫ１５）、「６０」を超えていないなら、レジスタＳＰＮＯＴＥに「６０」の値をストアする（ステップＫ１６）。
【００３８】
また、ステップＫ１２において、「６０」を超えていないと判別されたなら、ＮＯＴＥ（ｎ）を除くレジスタ群ＮＯＴＥ（）にストアされている鍵番号の中で最小値がストアされているレジスタをサーチし、その引数をレジスタｍにストアする（ステップＫ１１７）。そしてこのレジスタｍにストアされている値を引数とするレジスタＮＯＴＥ（ｍ）にストアされている鍵番号が「６０」以下であるか否か判別する（ステップＫ１８）。この判別によりもし「６０」以下なら、レジスタＳＰＮＯＴＥにレジスタＮＯＴＥ（ｍ）の鍵番号をストアさせ（ステップＫ１９）、「６０」を超えているなら、レジスタＳＰＮＯＴＥに「６０」の値をストアする（ステップＫ２０）。
このように、本実施形態においては、押鍵によってスプリット位置が移動した場合、その押鍵された鍵が離鍵する際に。スプリット位置を元に戻すように構成されている。
【００３９】
以上のように、本実施形態においては、隣接した鍵を３個、連続して高い方向あるいは低い方向に押鍵して、たまたま最後の押鍵のみが前回、前々回の押鍵と異なる鍵域となってしまった場合、この前回、前々回と同じ鍵域で行なったものとすることができる。
さらに本実施形態においては、このような鍵域をまたいだ押鍵があり、その押鍵が実際押鍵された鍵域と異なるものと取り扱われたときに、スプリット位置をその押鍵が含まれる位置までに変更している。これは最後の押鍵に隣接した押鍵がなされた場合に、その押鍵もその前の押鍵と同じ鍵域で行なわれたとして扱うためである。
【００４０】
このような構成により、隣接した鍵を一定方向に連続して押鍵した際は、その連続した押鍵が続く限り、同一の鍵域で押鍵したものと取り扱われ、演奏途中で演奏者の意に反した音高の楽音が発音されるのを防止できる。
また、本実施形態において、隣接した鍵を所定方向に３個連続して押鍵した場合に最後の押鍵が鍵域をまたいでいるか否かを判断しているが、３個ではなく、４個以上の押鍵を対象にしてもよい。
【図面の簡単な説明】
【００４１】
【図１】本発明を適用した電子鍵盤楽器の外観図である。
【図２】図１の電子鍵盤楽器の構成を示すブロック図である。
【図３】ＣＰＵ１０の処理全体を示したフローチャートである。
【図４】図３のイニシャライズ処理（ステップＡ１）の詳細なフローチャートである。
【図５】図３のＳＷ処理（ステップＡ２）の詳細なフローチャートである。
【図６】図３の鍵盤処理（ステップＡ３）の詳細なフローチャートである。
【図７】図６の音高設定処理（１）（ステップＤ４）の詳細なフローチャートである。
【図８】図６の発音処理（１）（ステップＤ５）の詳細なフローチャートである。
【図９】図６の音高設定処理（２）（ステップＤ６）の詳細なフローチャートである。
【図１０】図６の音高変換処理（ステップＤ７）の詳細なフローチャートである。
【図１１】図６の発音処理（２）（ステップＤ８）の詳細なフローチャートである。
【図１２】図６の消音処理（１）（ステップＤ１２）の詳細なフローチャートである。
【図１３】図６の消音処理（２）（ステップＤ１１）の詳細なフローチャートである（一部）。
【図１４】図６の消音処理（２）（ステップＤ１１）の詳細なフローチャートである（続き）。
【符号の説明】
【００４２】
１      デュエットスイッチ
２      鍵盤
１０    ＣＰＵ
１１    プログラムＲＯＭ
１２    ワークＲＡＭ
１３    音源
【図１】
0005347278.tif 000002
【図２】
0005347278.tif 000003
【図３】
0005347278.tif 000004
【図４】
0005347278.tif 000005
【図５】
0005347278.tif 000006
【図６】
0005347278.tif 000007
【図７】
0005347278.tif 000008
【図８】
0005347278.tif 000009
【図９】
0005347278.tif 000010
【図１０】
0005347278.tif 000011
【図１１】
0005347278.tif 000012
【図１２】
0005347278.tif 000013
【図１３】
0005347278.tif 000014
【図１４】
0005347278.tif 000015