(57)【特許請求の範囲】
【請求項１】
原曲を記憶する第１の記憶手段と、
この第１の記憶手段に記憶された原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に移調量毎の音高データ群における黒鍵に対応する音高数をカウントする計数手段と、
この計数手段でカウントされた移調量毎の黒鍵に対応する音高数に基づき移調量毎の黒鍵数データを作成して当該データを黒鍵に対応する音高数が少ない順から配列するデータ配列手段と、
外部操作可能な操作子と、
第２の記憶手段と、
前記操作子が操作される毎に、前記データ配列手段により配列された前記移調量毎の黒鍵数データを配列順に選択し、最後に選択された黒鍵数データに対応する移調量を前記第２の記憶手段に記憶させる移調量選択手段と、
自動演奏が開始されたときは前記第１の記憶手段から原曲の音高データを読み出すとともに、当該読み出された音高データを前記第２の記憶手段に記憶された移調量だけ移調させて出力する曲データ出力手段と、
を有する鍵盤演奏装置。
【請求項２】
前記データ配列手段は、前記移調量毎の音高データ群のうち予め設定された最高音高及び最低音高の範囲から外れた音域に音高を有する音高データ群に基づく黒鍵数データを除外することを特徴とする請求項１記載の鍵盤演奏装置。
【請求項３】
前記データ配列手段は、作成した移調量毎の黒鍵数データにおいて黒鍵に対応する音高数が同一の黒鍵数データが２系統以上ある場合には、原音の音高からの移調量がより大きい黒鍵数データを除外することを特徴とする請求項１又は２記載の鍵盤演奏装置。
【請求項４】
前記データ配列手段は、作成した移調量毎の黒鍵数データにおいて黒鍵に対応する音高数が同一の黒鍵数データが２系統ある場合に、その２系統の黒鍵数データにおける原音の音高からの移調量が等しい場合には、移調方向が高音方向又は低音方向のいずれか一方の黒鍵数データを除外することを特徴とする請求項３記載の鍵盤演奏装置。
【請求項５】
鍵盤の各鍵毎に設けられた複数の発光手段と
前記発光手段を点灯させる点灯制御手段と、
前記移調量毎の黒鍵数データの中から操作子によって特定の黒鍵数データが選択された場合にはその選択された黒鍵数データにおける黒鍵数に応じて前記点灯制御手段に対して発光手段の点灯パターンを指示する点灯パターン指示手段と
をさらに有することを特徴とする請求項１〜４のいずれかに記載の鍵盤演奏装置。
【請求項６】
コンピュータに、
第１の記憶手段に記憶された原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に各移調量毎の音高データ群における黒鍵に対応する音高数をカウントするステップと、
このカウントされた移調量毎の黒鍵に対応する音高数に基づいて移調量毎の黒鍵数データを作成して当該データを黒鍵に対応する音高数が少ない順から配列するステップと
外部操作可能な操作子が操作される毎に、前記配列するステップにより配列された前記移調量毎の黒鍵数データを配列順に選択し、最後に選択された黒鍵数データに対応する移調量を第２の記憶手段に記憶させるステップと、
自動演奏が開始されたときは前記第１の記憶手段から原曲の音高データを読み出すとともに、当該読み出された音高データを前記第２の記憶手段に記憶された移調量だけ移調させて出力するステップと、
を実行させる鍵盤演奏処理のプログラム。
【請求項７】
前記黒鍵に対応する音高数が少ない順から配列するステップの実行後、
さらに前記移調量毎の音高データ群のうち予め設定された最高音高及び最低音高の範囲から外れた音域に音高を有する音高データ群に基づく黒鍵数データを除外するステップと
を実行させることを特徴とする請求項６記載の鍵盤演奏処理のプログラム。
【請求項８】
前記黒鍵に対応する音高数が少ない順から配列するステップの実行後、
さらに作成した移調量毎の黒鍵数データにおいて黒鍵に対応する音高数が同一の黒鍵数データが２系統以上ある場合には、原音の音高からの移調量がより大きい黒鍵数データを除外するステップと、
その２系統の黒鍵数データにおける原音の音高からの移調量が等しい場合には、移調方向が高音方向又は低音方向のいずれか一方の黒鍵数データを除外するステップと
を実行させることを特徴とする請求項６記載の鍵盤演奏処理のプログラム。
【請求項９】
前記最後に選択された黒鍵数データに対応する移調量を第２の記憶手段に記憶させるステップの実行の後、選択された黒鍵数データにおける黒鍵数に応じて鍵盤の各鍵に設けられた複数の発行手段の点灯パターンを指示するステップを、
さらに実行することを特徴とする請求項６記載の鍵盤演奏処理のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、鍵盤演奏装置及び鍵盤演奏処理のプログラムに関する。
【０００２】
【従来の技術】
電子鍵盤楽器の中には、鍵盤の各鍵にＬＥＤ（発光ダイオード）を設け、曲データＲＯＭ等に記憶されている複数種類の曲の中から、演奏者が選択した曲について押鍵すべき鍵に対応するＬＥＤを点灯させて、押鍵をガイドする機能を具備した鍵盤演奏装置がある。このようなガイド機能を用いることにより、楽譜を見ただけでは演奏できない初心者でも曲の演奏が可能になる。ところが、記憶された複数種類の曲の中でも黒鍵演奏の多い曲については、ＬＥＤを点灯させて押鍵をガイドしても初心者にとっては容易に演奏することは困難である。このため、白鍵だけで演奏できるように、原曲の音高データに修正を加えて曲データＲＯＭ等に記憶することが行われていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、原曲の音高データに修正を加えて記憶する従来の鍵盤演奏装置においては、原曲の優れた芸術性や美しい旋律が失われるばかりでなく、いつかは原曲を演奏できるようになりたいというユーザの願望を満たすことはできなかった。
【０００４】
本発明の課題は、原曲の優れた芸術性や美しい旋律を維持するとともに、演奏の未熟な初心者でも難易度の高い原曲を容易に演奏できるようにガイドすることである。
【０００５】
【課題を解決するための手段】
請求項１に記載の鍵盤演奏装置は原曲を記憶する第１の記憶手段と、
この第１の記憶手段に記憶された原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に移調量毎の音高データ群における黒鍵に対応する音高数をカウントする計数手段と、この計数手段でカウントされた移調量毎の黒鍵に対応する音高数に基づき移調量毎の黒鍵数データを作成して当該データを黒鍵に対応する音高数が少ない順から配列するデータ配列手段と、外部操作可能な操作子と、第２の記憶手段と、前記操作子が操作される毎に、前記データ配列手段により配列された前記移調量毎の黒鍵数データを配列順に選択し、最後に選択された黒鍵数データに対応する移調量を前記第２の記憶手段に記憶させる移調量選択手段と、自動演奏が開始されたときは前記第１の記憶手段から原曲の音高データを読み出すとともに、当該読み出された音高データを前記第２の記憶手段に記憶された移調量だけ移調させて出力する曲データ出力手段とを有する構成になっている。
【０００６】
請求項６に記載のプログラムはコンピュータに、第１の記憶手段に記憶された原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に各移調量毎の音高データ群における黒鍵に対応する音高数をカウントするステップと、このカウントされた移調量毎の黒鍵に対応する音高数に基づいて移調量毎の黒鍵数データを作成して当該データを黒鍵に対応する音高数が少ない順から配列するステップと外部操作可能な操作子が操作される毎に、前記配列するステップにより配列された前記移調量毎の黒鍵数データを配列順に選択し、最後に選択された黒鍵数データに対応する移調量を第２の記憶手段に記憶させるステップと、自動演奏が開始されたときは前記第１の記憶手段から原曲の音高データを読み出すとともに、当該読み出された音高データを前記第２の記憶手段に記憶された移調量だけ移調させて出力するステップとを実行する。
【０００７】
請求項１又は請求項４に記載の発明によれば、原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に、各移調量毎の音高データ群における黒鍵に対応する音高数が少ない順に配列して移調量毎の黒鍵数データを作成し、特定の黒鍵数データが選択された場合にはその選択された黒鍵数データに対応する移調量だけ原曲の音高データを移調させて出力する。
【０００８】
【発明の実施の形態】
以下、本発明による鍵盤演奏装置としての電子鍵盤楽器の実施形態について図を参照して説明する。
図１は、実施形態における電子鍵盤楽器の構成を示すブロック図である。図において、ＣＰＵ１は、システムバス２を介してＲＯＭ３、ＲＡＭ４、曲データＲＯＭ５、スイッチ部６、鍵盤部７、ガイドＬＥＤ群駆動部８、音源部９に接続され、これらの各部との間でコマンド及びデータの授受を行い、制御プログラムにしたがってこの電子鍵盤楽器を制御する。
【０００９】
ＲＯＭ３には、ＣＰＵ１によって実行される制御プログラムや初期データ等が格納されている。ＲＡＭ４はＣＰＵ１のワークエリアであり、図２（１）に示すように、トランスポーズエリア、最高設定音高エリア、最低設定音高エリアが設けられている。また、ＣＰＵ１が制御プログラムを実行するために必要な各種のレジスタ、フラグ、ポインタのエリアがＲＡＭ４に設けられている。各エリアのデータについては後述する。図２（２）は、図２（１）のトランスポーズエリアにおけるトランスポーズ量（移調量）毎の黒鍵数等からなるデータ（これを「黒鍵数データ」という）である。これについてはさらに詳述する。
【００１０】
図１の曲データＲＯＭ５には、図３に示すように、複数種類の原曲の曲データが記憶されている。各曲データはイベントデータ及び時間データからなるシーケンスデータで構成されている。また、各イベントデータは発音イベントであるノートオンイベント、音高データ、及びベロシティデータ、又は消音イベントであるノートオフイベント、音高データ、及び値が「０」のベロシティデータで構成されている。その他、イベントデータの中にはコントロールチェンジ等の制御イベントがあるが、本発明には特に関係しないので説明は省略する。
【００１１】
図１のスイッチ部６は、複数のスイッチ群で構成され、曲データＲＯＭ５に記憶されている複数の曲の中から１つの曲を選択する曲選択スイッチ、曲データＲＯＭ５に記憶されている原曲のトランスポーズ（移調）を検出する際のレッスンスイッチ、曲教習を開始又は停止するスタートスイッチ、原曲の曲データをトランスポーズした複数種類のトランスポーズデータを演奏者に提示するための「おすすめ」スイッチ（これについては後述する）等が設けられている。
【００１２】
鍵盤部７は複数の白鍵及び複数の黒鍵で構成され、演奏に応じて音高データやベロシティデータ等からなる演奏データをＣＰＵ１に入力する。また、各鍵の下には演奏ガイド用の発光手段であるＬＥＤが設けられている。ガイドＬＥＤ群駆動部８はＣＰＵ１からの点灯コマンド又は消灯コマンド及び鍵番号のデータに応じて、対応するＬＥＤを点灯又は消灯する。
音源部９はＣＰＵ１からの音高データ等からなる楽音データ及び発音コマンドに応じて発音回路１０に楽音波形信号を送出し、ＣＰＵ１からの音高データ及び消音コマンドに応じて発音回路１０に送出している楽音波形信号を停止する。
【００１３】
次に、図１の電子鍵盤楽器における鍵盤演奏処理の動作について、図４〜図１６のフローチャートを参照して説明する。
図４はメインフローであり、所定のイニシャライズ（ステップＡ１）の後、曲選択処理（ステップＡ２）、トランスポーズ検出処理（ステップＡ３）、トランスポーズ選択処理（ステップＡ４）、最高最低音高設定処理（ステップＡ５）、鍵盤処理（ステップＡ６）、ガイド処理（ステップＡ７）、その他の処理（ステップＡ８）を繰り返し実行する。
【００１４】
図５は、メインフローにおける曲選択処理のフローであり、曲選択スイッチ及び曲番号を示すテンキースイッチが操作されたか否かを判別し（ステップＢ１）、操作されたときはレジスタＮに曲番号をストアする（ステップＢ２）。次にＮの曲番号で示す曲（Ｎ）の先頭データのアドレスにポインタを設定する（ステップＢ３）。そして、トランスポーズ（移調）用のレジスタＫＥＹに「０（トランスポーズ量がゼロ）」をセットする（ステップＢ４）。また、図２（１）のトランスポーズエリアをクリアする（ステップＢ５）。具体的には、図２（２）に示すトランスポーズエリア内の黒鍵数、最高音高、最低音高の各エリアをクリアする。そして、図４のメインフローに戻る。
【００１５】
図６〜図１０は、メインフローにおけるトランスポーズ検出処理のフローである。図６において、レッスンスイッチがオンされたか否かを判別し（ステップＣ１）、オンされない場合にはこのフローを終了するが、オンされたときはフラグＴＥＦが「０」であるか否かを判別する（ステップＣ２）。ＴＥＦは選択された曲データのトランスポーズ検出が完了したときに「１」にセットされるフラグである。したがって、ＴＥＦがすでに「１」である場合には、このフローを終了してメインフローに戻る。
【００１６】
ＴＥＦが「０」である場合には、図２（２）のトランスポーズエリアのアドレスを指定するポインタｎに「０」をセットし、半音単位のトランスポーズ量（移調量）を指定するポインタｍに「−１１」をセットする（ステップＣ３）。すなわち、原曲の曲データの音高を「１１半音」だけ低い方にトランスポーズする。例えば、Ｂ４の音高をＣ４の音高にトランスポーズする。
次に、検出した黒鍵数をストアするレジスタＢＬＫに「０」をストアし、検出した最高音高をストアするレジスタＭＡＸに「−１１」をストアし、最低音高をストアするレジスタＭＩＮに「１３８」をストアする（ステップＣ４）。なお、音高は「０」から「１２７」までの数値で表され、半音単位を「１」とする。次に、選択された曲（Ｎ）のポインタが示すデータはノートオンイベントであるか否かを判別する（ステップＣ５）。ノートオンイベントである場合には、レジスタＰＩＴＣＨにそのノートオンイベントの音高をストアする（ステップＣ６）。そして、ＰＩＴＣＨの音高にｍの値を加算する（ステップＣ７）。すなわち、ＰＩＴＣＨにストアされた原曲の音高をｍの値（最初は−１１）だけトランスポーズする。
【００１７】
次に、ＰＩＴＣＨにストアされた音高がＭＡＸにストアされた音高（最初は「−１１」）以上であるか否かを判別する（ステップＣ８）。ＰＩＴＣＨにストアされた音高がＭＡＸにストアされた音高以上である場合には、ＰＩＴＣＨの音高を現在の最高音高としてＭＡＸにストアする（ステップＣ９）。ＰＩＴＣＨにストアされた音高がＭＡＸにストアされた音高よりも低い場合には、ＰＩＴＣＨにストアされた音高がＭＩＮにストアされた音高（最初は「１３８」）以下であるか否かを判別する（ステップＣ１０）。ＰＩＴＣＨにストアされた音高がＭＩＮにストアされた音高以下である場合には、ＰＩＴＣＨの音高を現在の最低音高としてＭＩＮにストアする（ステップＣ１１）。
【００１８】
次に、ＰＩＴＣＨにストアした音高を「１２」で除算して、その余りの数値をレジスタＯＤＤにストアする（ステップＣ１２）。次に図７のステップＣ１３において、ＯＤＤにストアした数値が「１」、「３」、「６」、「８」又は「１０」のいずれかの値であるか否かを判別する。１オクターブは１２の音高で構成され、白鍵に対応するＣの音高（ハ長調の「ド」の音高）は１２の倍数で表されるので、ＯＤＤにストアした数値が上記のいずれかの値である場合には、ＰＩＴＣＨにストアした音高は「Ｃ＃」、「Ｄ＃」、「Ｆ＃」、「Ｇ＃」又は「Ａ＃」であり、黒鍵に対応する音高ということになる。したがって、黒鍵数をストアするＢＬＫの値に「１」を加算する（ステップＣ１４）。
【００１９】
ＢＬＫの値に「１」を加算した後、又はステップＣ１３においてＯＤＤにストアした数値が上記のいずれの値でもない場合、すなわちＰＩＴＣＨにストアした音高が白鍵に対応する音高である場合には、曲（Ｎ）のデータのアドレスを指定するポインタをインクリメントして、次のアドレスのデータを指定する（ステップＣ１５）。そして、インクリメントしたポインタで指定するアドレスにはデータなしか否かを判別する（ステップＣ１６）。データがある場合には、図６のステップＣ５に移行して、ステップＣ１６までのループを繰り返す。すなわち、曲（Ｎ）のデータがある限りこのループを繰り返して、原曲の音高データをｍの値だけトランスポーズしたすべての音高データにおいて、黒鍵に対応する音高数、最高音高及び最低音高を検出する。
【００２０】
ステップＣ１６においてポインタで指定するアドレスにデータがない場合には、図２（２）に示したトランスポーズエリアのＫＥＹ（０，ｎ）のエリアにｍの値をストアし（ステップＣ１７）、黒鍵数（１、ｎ）のエリアにＢＬＫの値をストアし（ステップＣ１８）、最高音高（２，ｎ）のエリアにＭＡＸの音高をストアし（ステップＣ１９）、最低音高（３，ｎ）のエリアにＭＩＮの音高をストアする（ステップＣ２０）。すなわち、ｍの値であるトランスポーズ量に対応する黒鍵数データを作成する。
次に、ｎの値をインクリメントしてトランスポーズエリアの次のアドレスを指定すると共に、ｍの値をインクリメントしてトランスポーズ量を半音だけ高い側に設定する（ステップＣ２１）。そして、ｎの値が「２２」を超えたか否かを判別する（ステップＣ２２）。すなわち、トランスポーズエリアのすべてのエリアへのデータのストアが完了したか否かを判別する。
ｎの値が「２２」以下である場合、すなわちトランスポーズエリアにストアすべきエリアが残っている場合には、図６のステップＣ４に移行して、図７のステップＣ２２までのループを繰り返し、トランスポーズ量を順に半音だけ高い側に設定した場合の黒鍵数、最高音高及び最低音高を検出する。
【００２１】
ステップＣ２２においてｎの値が「２２」を超えた場合には、図２（２）に示すように、トランスポーズ量を「−１１」から「１１」まで変化させた場合の黒鍵数、最高音高及び最低音高のデータがストアされる。すなわち、トランスポーズ量毎の黒鍵数データが作成される。
この場合には、図８のステップＣ２３に移行して、トランスポーズエリアの配列を黒鍵数（１，ｎ）の小さい順に並べ変える。次に、ポインタｎを「０」に戻して（ステップＣ２４）、ｎの値をインクリメントしながら、以下のループを繰り返し実行する。
すなわち、トランスポーズエリアの最高音高（２，ｎ）の音高が予め設定してレジスタｍａｘにストアした最高音高以下であるか否かを判別し（ステップＣ２５）、トランスポーズエリアの最低音高（３，ｎ）の音高が予め設定してレジスタｍｉｎにストアした最低音高以上であるか否かを判別する（ステップＣ２６）。トランスポーズエリアの最高音高（２，ｎ）の音高が予め設定した最高音高より高い場合、又はトランスポーズエリアの最低音高（３，ｎ）の音高が予め設定した最低音高より低い場合には、トランスポーズエリアの（０、ｎ）〜（３，ｎ）にストアしたトランスポーズ量、黒鍵数、最高音高及び最低音高の各データを削除する（ステップＣ２７）。
すなわち、トランスポーズ量毎の音高データ群のうち予め設定された最高音高及び最低音高の範囲から外れた音域に音高を有する音高データ群に基づく黒鍵数データを除外する。
【００２２】
ステップＣ２５においてトランスポーズエリアの最高音高（２，ｎ）の音高が予め設定した最高音高以下で、かつ、ステップＣ２６においてトランスポーズエリアの最低音高（３，ｎ）の音高が予め設定した最低音高以上である場合、又はステップＣ２７においてトランスポーズエリアのデータを削除した後は、ｎの値をインクリメントして、トランスポーズエリアの次のアドレスを指定する（ステップＣ２８）。そして、インクリメントしたｎの値が「２２」を超えたか否かを判別する（ステップＣ２９）。
すなわち、トランスポーズエリアのすべてにおいて、予め設定された最高音高及び最低音高の範囲から外れた音域に音高を有する種類のトランスポーズデータの有無を検出する処理が完了したか否かを判別する。ｎの値が「２２」以下である場合には、ステップＣ２５〜ステップＣ２９のループを繰り返す。
【００２３】
ｎの値が「２２」を超えた場合には、ｎの値を「０」に戻して（ステップＣ３０）、図９のフローのステップＣ３１に移行して、ｎで指定したトランスポーズデータと他のトランスポーズデータとを比較するするためのオフセット用のポインタｋを「１」にセットする。そして、ｎで指定するトランスポーズエリアの（０，ｎ）〜（３，ｎ）エリアにデータがあるか否かを判別する（ステップＣ３２）。図８のステップＣ２７の処理で（０，ｎ）〜（３，ｎ）エリアのデータが削除されていない場合にはそのエリアにデータが存在する。
データがある場合には、ｎの値とｋの値とを加算した値が「２２」以下であるか否かを判別する（ステップＣ３３）。すなわち、ｎの値にオフセット値であるｋの値を加算した値で示されるアドレスのエリアがトランスポーズエリア内に存在するか否かを判別する。加算した値が「２２」以下である場合には、トランスポーズエリアの（０，ｎ＋ｋ）〜（３，ｎ＋ｋ）エリアにデータがあるか否かを判別する（ステップＣ３４）。データがある場合には、トランスポーズエリアの（１，ｎ）にストアされた黒鍵数とトランスポーズエリアの（１，ｎ＋ｋ）にストアされた黒鍵数とが同一であるか否かを判別する（ステップＣ３５）。
【００２４】
両エリアの黒鍵数が同じである場合には、トランスポーズエリアの（０，ｎ）の絶対値がトランスポーズエリアの（０，ｎ＋ｋ）の絶対値より小さいか否かを判別する（ステップＣ３６）。すなわち、ｎで指定したトランスポーズエリアのトランスポーズ量の絶対値がｎ＋ｋで指定したトランスポーズエリアのトランスポーズ量の絶対値より小さいか否かを判別する。（０，ｎ）の絶対値が（０，ｎ＋ｋ）の絶対値より小さい場合には、ｎで指定したトランスポーズエリアの音高データの方がより原曲の音高データに近いことになる。この場合には、トランスポーズエリアの（０，ｎ＋ｋ）〜（３，ｎ＋ｋ）のデータを削除する（ステップＣ３７）。
すなわち、作成したトランスポーズ量毎の黒鍵数データにおいて黒鍵に対応する音高数が同一の黒鍵数データが２系統以上ある場合には、原音の音高からのトランスポーズ量がより大きい黒鍵数データを除外する。
【００２５】
（０，ｎ）の絶対値が（０，ｎ＋ｋ）の絶対値より小さくない場合には、（０，ｎ）の絶対値と（０，ｎ＋ｋ）の絶対値とが等しいか否かを判別する（ステップＣ３８）。これらが等しい場合には、（０，ｎ）のデータが負であるか否かを判別する（ステップＣ３９）。（０，ｎ）のデータが負である場合、すなわちｎで指定したトランスポーズエリアの音高データが原曲の音高データよりも負の方向（低音域の方向）にトランスポーズされている場合には、トランスポーズエリアの（０，ｎ）〜（３，ｎ）のデータを削除する（ステップＣ４０）。ステップＣ３９において（０，ｎ）のデータが負でなく、ｎで指定したトランスポーズエリアの音高データが原曲の音高データよりも正の方向（高音域の方向）にトランスポーズされている場合には、ステップＣ３７においてトランスポーズエリアの（０，ｎ＋ｋ）〜（３，ｎ＋ｋ）のデータを削除する。
【００２６】
すなわち、作成したトランスポーズ量毎の黒鍵数データにおいて黒鍵に対応する音高数が同一の黒鍵数データが２系統ある場合に、その２系統の黒鍵数データにおける原音の音高からのトランスポーズ量が等しい場合には、トランスポーズ方向が低音方向の黒鍵数データを除外する。高音方向にトランスポーズした方がより明快な音になるからである。ただし、演奏者の選択等に応じて、トランスポーズ方向が高音方向の黒鍵数データを除外する構成にしてもよい。
【００２７】
ステップＣ３７においてｎ＋ｋで指定したトランスポーズエリアのデータを削除した後、若しくはステップＣ３９において（０，ｎ）のデータが負でない場合、又は、ステップＣ３４においてトランスポーズエリアの（０，ｎ＋ｋ）〜（３，ｎ＋ｋ）のデータがない場合、若しくはステップＣ３５においてトランスポーズエリアの（１，ｎ）にストアされた黒鍵数とトランスポーズエリアの（１，ｎ＋ｋ）にストアされた黒鍵数とが異なる場合には、ポインタｋの値をインクリメントする（ステップＣ４１）。そして、ステップＣ３３に移行してｎ＋ｋの値が「２２」以下であるか否かを判別する。「２２」以下である場合にはステップＣ４１までのループを繰り返す。
【００２８】
ステップＣ３２においてトランスポーズエリアに（０，ｎ）〜（３，ｎ）のデータがない場合、又はステップＣ３３においてｎ＋ｋの値が「２２」を超えている場合には、ｎの値をインクリメントしてトランスポーズエリアにおける次のアドレスのデータを指定する（ステップＣ４２）。このときｎの値が「２２」を超えたか否かを判別し（ステップＣ４３）、超えていない場合にはステップＣ３１に移行してｋの値を「１」に戻し、ステップＣ４３までのループを繰り返す。ｎの値が「２２」を超えた場合、すなわち原曲の音高データをトランスポーズした演奏候補となるデータの検出が完了した場合には、フラグＴＥＦに「１」をセットして（ステップＣ４４）、ｎの値を「０」に戻す（ステップＣ４５）。そして、このフローを終了してメインフローに戻る。
【００２９】
図１０及び図１１は、メインフローにおけるトランスポーズ選択処理のフローである。図１０において、おすすめスイッチがオンされたか否かを判別する（ステップＤ１）。おすすめスイッチは、上記したトランスポーズ検出処理によってトランスポーズエリアにストアされた演奏候補のデータを演奏者に提示するためのスイッチである。このスイッチがオンでない場合にはこのフローを終了するが、このスイッチがオンされたときは、点灯している鍵のＬＥＤをすべて消灯する（ステップＤ２）。そして、ＴＥＦが「１」であるか否かを判別する（ステップＤ３）。ＴＥＦが「０」である場合には、まだトランスポーズ検出処理が完了していないので、このフローを終了する。
【００３０】
ＴＥＦが「１」である場合には、トランスポーズエリアにおいてポインタｎ（最初は図９のステップＣ４５において「０」にセットされている）で指定するアドレスのエリア（０，ｎ）にデータがあるか否かを判別する（ステップＤ４）。その指定したエリアにデータがない場合にはｎの値をインクリメントして次のアドレスのエリアを指定する（ステップＤ５）。ｎで指定するアドレスのエリア（０，ｎ）にデータがある場合には、エリア（０，ｎ）にストアされているトランスポーズ量のデータをレジスタＫＥＹにストアし（ステップＤ６）、エリア（１，ｎ）にストアされている黒鍵数のデータをレジスタＢＬＫにストアする（ステップＤ７）。
【００３１】
次に、ＢＬＫにストアされた黒鍵数のデータに応じて所定の１オクターブの範囲（例えば、Ｃ４〜Ｂ４）における鍵の点灯パターンを変化させる。
すなわち、ＢＬＫにストアされた黒鍵数が「３」以下であるか否かを判別し（ステップＤ８）、「３」以下である場合にはＣ＃の鍵のＬＥＤを点灯させる（ステップＤ９）。
ＢＬＫにストアされた黒鍵数が「３」を超えている場合には、黒鍵数が「４」〜「１０」の範囲内であるか否かを判別し（ステップＤ１０）、この範囲内である場合にはＣ＃，Ｄ＃の鍵のＬＥＤを点灯させる（ステップＤ１１）。
ＢＬＫにストアされた黒鍵数が「１０」を超えている場合には、黒鍵数が「１１」〜「３０」の範囲内であるか否かを判別し（ステップＤ１２）、この範囲内である場合にはＣ＃，Ｄ＃，Ｇ＃の鍵のＬＥＤを点灯させる（ステップＤ１３）。
ＢＬＫにストアされた黒鍵数が「３０」を超えている場合には、図１１のフローのステップＤ１４において黒鍵数が「３１」〜「５０」の範囲内であるか否かを判別し、この範囲内である場合にはＣ＃，Ｄ＃，Ｇ＃，Ａ＃の鍵のＬＥＤを点灯させる（ステップＤ１５）。
ＢＬＫにストアされた黒鍵数が「５０」を超えている場合には、Ｃ＃，Ｄ＃，Ｇ＃，Ａ＃，Ｂ＃の鍵のＬＥＤを点灯させる（ステップＤ１６）。
【００３２】
いずれかのパターンでＬＥＤを点灯させた後は、ｎの値をインクリメントしてトランスポーズエリアの次のアドレスを指定する（ステップＤ１７）。このとき、ｎの値が「２２」を超えたか否かを判別する（ステップＤ１８）。「２２」を超えている場合には、ｎの値を「０」に戻す（ステップＤ１９）。ｎの値が「２２」以下である場合又はｎの値を「０」に戻した場合は、レッスンスイッチがオンされたか否かを判別する（ステップＤ２０）。このスイッチがオンでない場合は、図１０のステップＤ１に移行して上記した処理を繰り返す。
すなわち、おすすめスイッチを操作する毎に、黒鍵数が少ない方から順に演奏のトランスポーズデータを提示すると共に、黒鍵数に応じて鍵の点灯パターンを変化させる。
ステップＤ２０においてレッスンスイッチがオンされたときは、ＴＥＦに「０」をセットして（ステップＤ２１）、メインフローに戻る。
【００３３】
図１２は、メインフローにおける最高最低設定処理のフローである。テンキースイッチ等により最高音高の入力がされたか否かを判別し（ステップＥ１）、入力されたときはその最高音高のデータをレジスタｍａｘにストアする（ステップＥ２）。同様に、最低音高の入力がされたか否かを判別し（ステップＥ３）、入力されたときはその最低音高のデータをレジスタｍｉｎにストアする（ステップＥ４）。そして、メインフローに戻る。
【００３４】
図１３及び図１４は、メインフローにおけるガイド処理のフローである。まず図１３においてスタートスイッチがオンされたか否かを判別する（ステップＧ１）。このスイッチがオンされたときはフラグＳＴＦを反転する（ステップＧ２）。そしてＳＴＦの値が「１（演奏ガイド）」であるか否かを判別する（ステップＧ３）。ＳＴＦの値が「０（演奏ガイド停止）」である場合には、点灯している全ての鍵のＬＥＤを消灯して（ステップＧ４）、このフローを終了する。
【００３５】
ＳＴＦが「１」である場合には、レジスタＮにストアされた番号で選択した曲（Ｎ）における最初のアドレスのデータを読出し（ステップＧ５）、読出したデータの種類がイベントデータであるかタイムデータであるか判別する（ステップＧ６）。タイムデータである場合には、次のイベントデータまでの待ち時間であるので、タイマーをスタートしてこのフローを終了する。
読出したデータの種類がイベントデータである場合には、さらにそのイベントがノートオンであるか否かを判別する（ステップＧ８）。このイベントは曲の最初のイベントデータであるのでノートオフはあり得ず、ノートオンかコントロールチェンジ等の制御イベントである。
ノートオンである場合には、そのイベントのノートデータをＬＥＤ点灯用のレジスタＬＩＧＨＴにストアする（ステップＧ９）。さらに、ＬＩＧＨＴにストアしたノートデータの数値にＫＥＹにストアされたトランスポーズ量の数値を加算する（ステップＧ１０）。そして、ＬＩＧＨＴの数値に対応する鍵番号の鍵を点灯する（ステップＧ１１）。すなわち、原曲の音高をトランスポーズした音高の鍵を点灯させて演奏ガイドを行う。
この後、次のデータの読出しを行い（ステップＧ１２）、ステップＧ６に移行してそのデータの種類を判別する。ステップＧ８においてイベントデータがノートオンでない場合には、そのイベントに対応した処理を行って（ステップＧ１３）、ステップＧ１２に移行して次のデータの読出しを行う。
【００３６】
ステップＧ１においてスタートスイッチがオンでない場合には、図１４のステップＧ１４に移行して、ＳＴＦが「１」になっているか否かを判別する。ＳＴＦが「１」である場合すなわち演奏ガイドが開始している場合には、タイマインタラプト等によって一定時間が経過したか否かを判別する（ステップＧ１５）。ＳＴＦが「０」である場合、又は一定時間が経過していない場合には、このフローを終了する。
一定時間が経過した場合には、タイムデータの値をデクリメントする（ステップＧ１６）。そして、タイムデータの値がゼロに達したか否かを判別する（ステップＧ１７）。すなわち、タイムデータの次のアドレスにおけるイベントデータの処理開始時間に達したか否かを判別する。タイムデータの値がゼロに達していない場合にはこのフローを終了するが、ゼロに達したときは次のアドレスにデータがあるか否かを判別する（ステップＧ１８）。
【００３７】
次のデータがある場合には、そのデータを読出し（ステップＧ２１）、読出したデータの種類を判別する（ステップＧ２２）。そのデータがタイムデータである場合にはタイマーをスタートして（ステップＧ２３）、このフローを終了する。読出したデータがイベントデータである場合には、そのイベントデータの種類を判別する（ステップＧ２４）。イベントデータがノートオンである場合には、そのイベントのノートデータをＬＥＤ点灯用のレジスタＬＩＧＨＴにストアする（ステップＧ２５）。さらに、ＬＩＧＨＴにストアしたノートデータの数値にＫＥＹにストアされたトランスポーズ量の数値を加算する（ステップＧ２６）。そして、ＬＩＧＨＴの数値に対応する鍵番号の鍵を点灯する（ステップＧ２７）。すなわち、原曲の音高をトランスポーズした音高の鍵を点灯させて演奏ガイドを行う。
【００３８】
イベントデータがノートオフである場合には、そのイベントのノートデータをＬＥＤ点灯用のレジスタＬＩＧＨＴにストアする（ステップＧ２８）。さらに、ＬＩＧＨＴにストアしたノートデータの数値にＫＥＹにストアされたトランスポーズ量の数値を加算する（ステップＧ２９）。そして、ＬＩＧＨＴの数値に対応する鍵番号の鍵を消灯する（ステップＧ３０）。
イベントデータがノートオン及びノートオフ以外のその他のイベントである場合には、そのイベントに対応したその他の処理を行う（ステップＧ３１）。
【００３９】
ステップＧ２７において鍵を点灯した後、ステップＧ３０において鍵を消灯した後、又はステップ３１においてその他の処理を行った後は、ステップＧ１８に移行して次のアドレスにデータがあるか否かを判別する。そして、次のアドレスにデータがある限り、そのデータに対応する処理を繰り返す。
ステップＧ１８において次のアドレスにデータがない場合には、ＳＴＦに「０（演奏ガイド停止）」をセットして（ステップＧ１９）、点灯している全ての鍵のＬＥＤを消灯して（ステップＧ２０）、このフローを終了してメインフローに戻る。
【００４０】
図１５は、メインフローにおける鍵盤処理のフローである。まず、鍵走査を行って（ステップＦ１）、鍵変化があるか否かを判別する（ステップＦ２）。鍵変化がない場合にはこのフローを終了するが、鍵変化があったときはその変化が押鍵（オン）であるか離鍵（オフ）であるかを判別する。押鍵である場合には、その鍵番号すなわちノート番号をレジスタＮＯＴＥにストアする（ステップＦ３）。また、押鍵によるベロシティデータをレジスタＶＥＬにストアする（ステップＦ４）。次に、ＮＯＴＥの音高データからＫＥＹのトランスポーズ量を減算して（ステップＦ５）、その減算したＮＯＴＥの音高データに基づいてノートオンイベントを作成し（ステップＦ６）、音源に送付する（ステップＦ７）。すなわち、演奏用にトランスポーズされて演奏ガイドに従って押鍵された音高を再び原曲の音高に修正して音源に送付して発音させる。
なお、この場合において、押鍵された音高を修正することなくそのまま音源に送付してもよい。また、押鍵された音高を修正するかそのまま音源に送付するかを演奏者の操作に応じて選択してもよい。
【００４１】
ステップＦ２において、鍵変化が離鍵である場合には、その鍵番号すなわちノート番号をレジスタＮＯＴＥにストアする（ステップＦ８）。次に、ＮＯＴＥの音高データからＫＥＹのトランスポーズ量を減算して（ステップＦ９）、その減算したＮＯＴＥの音高データに基づいてノートオフイベントを作成し（ステップＦ１０）、消音のために音源に送付する（ステップＦ７）。
【００４２】
このように、上記実施形態によれば、原曲の音高データ群を半音単位でトランスポーズ（移調）させてトランスポーズ量毎の音高データ群を作成した場合に、各トランスポーズ量（移調量）毎の音高データ群における黒鍵に対応する音高数が少ない順に配列してトランスポーズ量毎の黒鍵数データを作成し、特定の黒鍵数データが選択された場合にはその選択された黒鍵数データに対応するトランスポーズ量だけ原曲の音高データをトランスポーズさせて出力するので、原曲の優れた芸術性や美しい旋律を維持するとともに、演奏の未熟な初心者でも難易度の高い原曲を容易に演奏できるようにガイドすることができる。
【００４３】
なお、上記実施形態においては、鍵盤演奏装置の発明について説明したが、上記フローチャートに示されるように、鍵盤演奏処理のプログラムの発明としても成立する。
すなわち、本発明による鍵盤演奏処理のプログラムは、第１の記憶手段（実施形態においては、図１の曲データＲＯＭ５に相当する）に記憶された原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に各移調量毎の音高データ群における黒鍵に対応する音高数をカウントするステップと、カウントされた黒鍵に対応する音高数が少ない順に配列して移調量毎の黒鍵数データ（実施形態においては、図２（２）のトランスポーズエリアのデータに相当する）を作成するステップと、移調量毎の黒鍵数データの中から選択操作によって特定の黒鍵数データが選択された場合にはその選択された黒鍵数データに対応する移調量を第２の記憶手段（実施形態においては、図１のＲＡＭに相当する）に記憶させるステップと、操作に応じて演奏が開始されたときは選択されて第１の記憶手段から読み出された原曲の音高データを第２の記憶手段に記憶された移調量だけ移調させて出力するステップとを実行する。
したがって、フロッピーディスク、ＣＤ、光磁気ディスク等の記憶媒体、又はインターネット等の通信回線を介して、この鍵盤演奏処理のプログラムをパソコン等の汎用情報機器にインストールして、鍵盤演奏機能をもたせることが可能になる。
【００４４】
【発明の効果】
本発明によれば、原曲の音高データ群を半音単位で移調させて移調量毎の音高データ群を作成した場合に、各移調量毎の音高データ群における黒鍵に対応する音高数が少ない順に配列して移調量毎の黒鍵数データを作成し、特定の黒鍵数データが選択された場合にはその選択された黒鍵数データに対応する移調量だけ原曲の音高データを移調させて出力するので、原曲の優れた芸術性や美しい旋律を維持するとともに、演奏の未熟な初心者でも難易度の高い原曲を容易に演奏できるようにガイドすることができる。
【図面の簡単な説明】
【図１】本発明の鍵盤演奏装置としての電子鍵盤楽器の実施形態のシステム構成を示すブロック図。
【図２】図１におけるＲＡＭ内のデータ構成を示す図。
【図３】図１における曲データＲＯＭに記憶された曲データを示す図。
【図４】図１におけるＣＰＵのメインフローチャート。
【図５】図４における曲選択処理のフローチャート。
【図６】図４におけるトランスポーズ検出処理のフローチャート。
【図７】図６に続くトランスポーズ検出処理のフローチャート。
【図８】図７に続くトランスポーズ検出処理のフローチャート。
【図９】図８に続くトランスポーズ検出処理のフローチャート。
【図１０】図４におけるトランスポーズ選択処理のフローチャート。
【図１１】図１０に続くトランスポーズ選択処理のフローチャート。
【図１２】図４における最高最低音高設定処理のフローチャート。
【図１３】図４におけるガイド処理のフローチャート。
【図１４】図１３に続くガイド処理のフローチャート。
【図１５】図４における鍵盤処理のフローチャート。
【符号の説明】
１  ＣＰＵ
３  ＲＯＭ
４  ＲＡＭ
５  曲データＲＯＭ
６  スイッチ部
７  鍵盤部
８  ガイドＬＥＤ群駆動部
９  音源部
１０  発音回路
【図１】
0003969019.tif 000002
【図２】
0003969019.tif 000003
【図３】
0003969019.tif 000004
【図４】
0003969019.tif 000005
【図５】
0003969019.tif 000006
【図６】
0003969019.tif 000007
【図７】
0003969019.tif 000008
【図８】
0003969019.tif 000009
【図９】
0003969019.tif 000010
【図１０】
0003969019.tif 000011
【図１１】
0003969019.tif 000012
【図１２】
0003969019.tif 000013
【図１３】
0003969019.tif 000014
【図１４】
0003969019.tif 000015
【図１５】
0003969019.tif 000016