(57)【要約】【課題】ゲーム的な面白味を持たせたスクリーンセーバー動作で演奏練習の評価結果を表現する演奏練習装置を実現する。【解決手段】左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ画像を、表示画面上で予め割り当てられた表示範囲中のランダムな位置に表示し、右手演奏ミス率Ｎ２に相当する数のＦＩＳＨ  Ｂ画像を、表示画面上で予め割り当てられた表示範囲中のランダムな位置に表示し、所定数のＦＩＳＨ  Ｃ画像を、表示画面上で予め割り当てられ、練習回数に応じて可変設定される表示範囲中のランダムな位置に表示するスクリーンセーバー処理（ステップＳＡ９）によって表示画面を水槽に見立て、その水槽（表示画面）中の「どのエリア」に「どの熱帯魚」が「何匹」表示されているかで演奏練習の評価結果（左手演奏ミス率Ｎ１、右手演奏ミス率Ｎ２および練習回数Ｍ）を表現するゲーム的な面白味を持たせる。【選択図】図２
2012173474.tif 000002
【特許請求の範囲】
【請求項１】
演奏練習の評価結果の種類別に対応付けたキャラクタ画像を記憶する画像記憶手段と、
曲を演奏練習するユーザの演奏操作に応じて発生する演奏データと曲を構成する各音を表す曲データとを比較して演奏練習に係わる複数の評価結果を取得する取得手段と、
前記取得手段により取得される複数の評価結果に各々対応するキャラクタ画像を前記画像記憶手段から読み出す画像読み出し手段と、
予め演奏練習の評価結果の種類毎に表示画面上の表示範囲を割り当てておき、前記画像読み出し手段によって読み出された複数の評価結果に各々対応するキャラクタ画像を、それぞれ表示画面上で割り当てられた表示範囲において対応する評価結果の種類に応じた表示態様で表示する表示制御手段と
を具備することを特徴とする演奏練習装置。
【請求項２】
前記取得手段は、複数の評価結果として、少なくとも左手演奏ミス率、右手演奏ミス率および練習回数を取得することを特徴とする請求項１記載の演奏練習装置。
【請求項３】
前記表示制御手段は、
表示画面上で左手演奏ミス率に割り当てられた表示範囲において、左手演奏ミス率に相当する数の第１のキャラクタ画像をランダムな位置に表示する第１の表示制御手段と、
表示画面上で右手演奏ミス率に割り当てられた表示範囲において、右手演奏ミス率に相当する数の第２のキャラクタ画像をランダムな位置に表示する第２の表示制御手段と、
表示画面上で練習回数に割り当てられ、当該練習回数に応じて可変設定される表示範囲において、所定数の第３のキャラクタ画像をランダムな位置に表示する第３の表示制御手段と
を具備することを特徴とする請求項１記載の演奏練習装置。
【請求項４】
コンピュータに、
曲を演奏練習するユーザの演奏操作に応じて発生する演奏データと曲を構成する各音を表す曲データとを比較して演奏練習に係わる複数の評価結果を取得する取得ステップと、
演奏練習の評価結果の種類別に対応付けたキャラクタ画像を記憶しておき、前記取得ステップにて取得された複数の評価結果に各々対応するキャラクタ画像を読み出す画像読み出しステップと、
予め演奏練習の評価結果の種類毎に表示画面上の表示範囲を割り当てておき、前記画像読み出しステップにて読み出された複数の評価結果に各々対応するキャラクタ画像を、それぞれ表示画面上で割り当てられた表示範囲において対応する評価結果の種類に応じた表示態様で表示する表示制御ステップと
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザが行った演奏練習の評価結果を、スクリーンセーバー動作で表現する演奏練習装置およびプログラムに関する。
【背景技術】
【０００２】
従来より、ユーザの演奏操作を評価する装置が知られている。例えば特許文献１には、曲を構成する各音を表す曲データを再生（自動演奏）させながら、ユーザが当該曲を演奏すると、演奏操作に応じて発生する演奏データと曲データとを比較して演奏データの適否（音高、音量およびタイミングの適否）を判断する演奏評価を行い、評価結果を画面表示する装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−９１４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の装置では、単に演奏練習の評価結果を画面表示するだけなので、ゲーム的な面白味を持たせたスクリーンセーバー動作で演奏練習の評価結果を表現することが出来ないという問題がある。
【０００５】
本発明は、このような事情に鑑みてなされたもので、ゲーム的な面白味を持たせたスクリーンセーバー動作で演奏練習の評価結果を表現することができる演奏練習装置およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、演奏練習の評価結果の種類別に対応付けたキャラクタ画像を記憶する画像記憶手段と、曲を演奏練習するユーザの演奏操作に応じて発生する演奏データと曲を構成する各音を表す曲データとを比較して演奏練習に係わる複数の評価結果を取得する取得手段と、前記取得手段により取得される複数の評価結果に各々対応するキャラクタ画像を前記画像記憶手段から読み出す画像読み出し手段と、予め演奏練習の評価結果の種類毎に表示画面上の表示範囲を割り当てておき、前記画像読み出し手段によって読み出された複数の評価結果に各々対応するキャラクタ画像を、それぞれ表示画面上で割り当てられた表示範囲において対応する評価結果の種類に応じた表示態様で表示する表示制御手段とを具備することを特徴とする。
【発明の効果】
【０００７】
本発明では、ゲーム的な面白味を持たせたスクリーンセーバー動作で演奏練習の評価結果を表現することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の一形態による演奏練習装置１００の構成を示すブロック図である。
【図２】ＲＯＭ１４のデータエリアの構成を示すメモリマップである。
【図３】ＦＩＳＨ  Ａ画像、ＦＩＳＨ  Ｂ画像およびＦＩＳＨ  Ｃ画像の一例を示す図である。
【図４】ＲＡＭ１５に記憶されるＦＩＳＨ  Ａ用座標データ、ＦＩＳＨ  Ｂ用座標データおよびＦＩＳＨ  Ｃ用座標データの構成を示すメモリマップである。
【図５】表示画面座標系におけるＦＩＳＨ  Ａ画像、ＦＩＳＨ  Ｂ画像およびＦＩＳＨ  Ｃ画像の各表示範囲を説明するための図である。
【図６】メインルーチンの動作を示すフローチャートである。
【図７】楽器初期処理の動作を示すフローチャートである。
【図８】スクリーンセーバー初期処理の動作を示すフローチャートである。
【図９】ＦＩＳＨ  Ａ初期処理の動作を示すフローチャートである。
【図１０】ＦＩＳＨ  Ｂ初期処理の動作を示すフローチャートである。
【図１１】ＦＩＳＨ  Ｃ初期処理の動作を示すフローチャートである。
【図１２】楽器処理の動作を示すフローチャートである。
【図１３】スイッチ処理の動作を示すフローチャートである。
【図１４】自動演奏処理の動作を示すフローチャートである。
【図１５】鍵盤処理の動作を示すフローチャートである。
【図１６】鍵盤処理の動作を示すフローチャートである。
【図１７】スクリーンセーバー処理の動作を示すフローチャートである。
【図１８】ＦＩＳＨ  Ａ処理の動作を示すフローチャートである。
【図１９】ＦＩＳＨ  Ｂ処理の動作を示すフローチャートである。
【図２０】ＦＩＳＨ  Ｃ処理の動作を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．構成
図１は、実施の一形態による演奏練習装置１００の構成を示すブロック図である。この図において、鍵盤１０は押離鍵操作に応じたキーオン／キーオフ信号、ノートナンバおよびベロシティ等の演奏情報を発生する。押鍵ガイド部１１は、鍵盤１０の各鍵毎に配設されるＬＥＤ（発光素子）と、これらＬＥＤを点灯駆動するドライバ（不図示）とから構成され、ＣＰＵ１３から供給される制御信号に従って指定される鍵のＬＥＤを点灯／消灯して弾くべき鍵と押鍵のタイミングとをユーザにガイドする。
【００１０】
操作部１２は、装置パネルに配設される各種操作スイッチを有し、ユーザ操作されるスイッチ種に対応したスイッチイベントを発生する。操作部１２に配設される主要なスイッチとしては、例えば装置電源をパワーオン／パワーオフさせる電源スイッチの他、楽器動作をオンオフさせる楽器スイッチ、演奏練習の開始／停止を指示するスタート／ストップスイッチ等を備える。ＣＰＵ１３は、操作部１２が発生する各種スイッチイベントに応じて装置各部を制御する。本発明の要旨に係わるＣＰＵ１３の処理動作については追って詳述する。
【００１１】
ＲＯＭ１４は、プログラムエリアおよびデータエリアを備える。ＲＯＭ１４のプログラムエリアには、ＣＰＵ１３にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述するメインルーチン、楽器初期処理、スクリーンセーバー初期処理、楽器処理およびスクリーンセーバー処理を含む。なお、スクリーンセーバー初期処理は、ＦＩＳＨ  Ａ初期処理、ＦＩＳＨ  Ｂ初期処理およびＦＩＳＨ  Ｃ初期処理から構成される。楽器処理は、スイッチ処理、自動演奏処理および鍵盤処理から構成される。スクリーンセーバー処理は、ＦＩＳＨ  Ａ処理、ＦＩＳＨ  Ｂ処理およびＦＩＳＨ  Ｃ処理から構成される。
【００１２】
ＲＯＭ１４のデータエリアには、図２に図示するように、曲データＭＤ、ＦＩＳＨ  Ａ画像、ＦＩＳＨ  Ｂ画像およびＦＩＳＨ  Ｃ画像が記憶される。曲データＭＤは、演奏練習する曲を構成する各音を表すデータであり、タイムＴＩＭＥとイベントＥＶＥＮＴとが組となって曲進行に対応した時系列のアドレス順に記憶される、いわゆる相対時間方式と呼ばれるデータ形式で表現される。タイムＴＩＭＥは、前イベントからの経過時間で次イベントのタイミングを表す。イベントＥＶＥＮＴは、発音すべき音高を表すノートナンバおよび発音音量から構成されるノートオンイベント又は消音すべき音高を表すノートナンバから構成されるノートオフイベントの何れかを含む。
【００１３】
ＲＯＭ１４のデータエリアに記憶されるＦＩＳＨ  Ａ〜ＦＩＳＨ  Ｃの各画像は、楽器動作がオフ状態の時に起動されるスクリーンセーバーに用いられる画像である。本実施形態では、表示部１６の表示画面を水槽に見立て、例えば図３（ａ）〜図３（ｃ）に図示する一例の各種熱帯魚の画像（ＦＩＳＨ  Ａ〜ＦＩＳＨ  Ｃの各画像）をスクリーンセーバー動作で画面表示させる。スクリーンセーバー動作では、後述するように、水槽（表示画面）中の「どのエリア」に「どの熱帯魚」が「何匹」表示されているかで演奏練習の評価結果を表現するゲーム的な面白味を持たせている。
【００１４】
ＲＡＭ１５は、ワークエリアおよびデータエリアを備える。ＲＡＭ１５のワークエリアには、ＣＰＵ１３の処理に用いられる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ１５のデータエリアには、図４に図示するＦＩＳＨ  Ａ用座標データ、ＦＩＳＨ  Ｂ用座標データおよびＦＩＳＨ  Ｃ用座標データが格納される。
【００１５】
ＦＩＳＨ  Ａ用座標データは、図５に図示する表示画面座標系において、表示範囲（０≦ｘ１（ｎ）≦Ｘ１、０≦ｙ１（ｎ）≦Ｙ２）において定義されるＮ１個分の座標位置から構成される。ＦＩＳＨ  Ｂ用座標データは、表示範囲（Ｘ１≦ｘ２（ｎ）≦Ｘ２、０≦ｙ２（ｎ）≦Ｙ２）において定義されるＮ２個分の座標位置から構成される。ＦＩＳＨ  Ｃ用座標データは、表示範囲（０≦ｘ３（ｎ）≦Ｘ３、０≦ｙ３（ｎ）≦Ｙ３）において定義されるＮ個分の座標位置から構成される。座標位置は対応する画像（ＦＩＳＨ  Ａ〜ＦＩＳＨ  Ｃの各画像）の表示位置を指定する。例えば図３に図示したＦＩＳＨ  Ａ〜ＦＩＳＨ  Ｃの各画像がｎ行×ｍ列の矩形画素領域から形成される場合、左上頂点の画素（０，０）が座標位置（ｘ，ｙ）に対応する。
【００１６】
再び図１を参照して実施形態の構成について説明を進める。図１において、表示部１６は、ＬＣＤパネル等から構成され、ＣＰＵ１３から供給される表示制御信号に応じて各種設定状態を表示したり、後述する表示態様でスクリーンセーバーを表示したりする。音源１７は、周知の波形メモリ読み出し方式によって構成され、時分割動作する複数の発音チャンネルを備える。この音源１７は、各種音色の波形データを記憶しており、これらの内、ＣＰＵ１３から供給される楽音パラメータに応じた波形データを読み出して楽音出力を発生する。サウンドシステム１８は、音源１７の楽音出力をアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。
【００１７】
Ｂ．動作
次に、図６〜図２０を参照して上記構成による実施形態の動作を説明する。以下では、最初に全体動作を示すメインルーチンの動作を説明し、続いてメインルーチンからコールされる各処理（楽器初期処理、スクリーンセーバー初期処理、楽器処理およびスクリーンセーバー処理）の動作について述べる。なお、スクリーンセーバー初期処理は、ＦＩＳＨ  Ａ初期処理、ＦＩＳＨ  Ｂ初期処理およびＦＩＳＨ  Ｃ初期処理を含む。また、楽器処理はスイッチ処理、自動演奏処理および鍵盤処理を含む。さらに、スクリーンセーバー処理は、ＦＩＳＨ  Ａ処理、ＦＩＳＨ  Ｂ処理およびＦＩＳＨ  Ｃ処理を含む。
【００１８】
（１）メインルーチンの動作
演奏練習装置１００がパワーオンされると、ＣＰＵ１３は図６に図示するメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ１５のワークエリアに格納される各種レジスタやフラグデータをゼロリセット又は初期値セットする他、音源１７に対して初期化を指示するイニシャライズを行う。そして、イニシャライズが完了すると、ＣＰＵ１３は、ステップＳＡ２に進み、楽器スイッチのオン操作の有無を判断する。
【００１９】
楽器スイッチがオン操作されると、上記ステップＳＡ２の判断結果は「ＹＥＳ」になり、ステップＳＡ３に進み、オンフラグＯＮＦを反転する。続いて、ステップＳＡ４では、反転されたオンフラグＯＮＦのフラグ値が「１」であるか否かを判断する。反転されたオンフラグＯＮＦのフラグ値が「１」であると、判断結果は「ＹＥＳ」となり、ステップＳＡ５を介して楽器初期処理を実行する。楽器初期処理では、後述するように、練習回数Ｍを初期値「１」にセットすると共に、右手演奏ミス回数ＭＩＳＳＲおよび左手演奏ミス回数ＭＩＳＳＬをゼロリセットする。
【００２０】
一方、反転されたオンフラグＯＮＦのフラグ値が「０」ならば、上記ステップＳＡ４の判断結果は「ＮＯ」となり、ステップＳＡ６を介してスクリーンセーバー初期処理を実行する。スクリーンセーバー初期処理では、後述するように、左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ用座標データを、ＦＩＳＨ  Ａ画像の表示範囲（０≦ｘ１（ｎ）≦Ｘ１、０≦ｙ１（ｎ）≦Ｙ２）の中でランダムに生成し、生成した各ＦＩＳＨ  Ａ用座標データをＲＡＭ１５のデータエリアに登録すると共に、生成されたＦＩＳＨ  Ａ用座標データで表される各表示位置にＦＩＳＨ  Ａ画像を画面表示させる。
【００２１】
また、スクリーンセーバー初期処理では、右手演奏ミス率Ｎ２に相当する数のＦＩＳＨ  Ｂ用座標データを、ＦＩＳＨ  Ｂ画像の表示範囲（Ｘ１≦ｘ２（ｎ）≦Ｘ２、０≦ｙ２（ｎ）≦Ｙ２）の中でランダムに生成し、生成した各ＦＩＳＨ  Ｂ用座標データをＲＡＭ１５のデータエリアに登録すると共に、生成されたＦＩＳＨ  Ｂ用座標データで表される各表示位置にＦＩＳＨ  Ｂ画像を画面表示させる。さらに、所定値Ｎ分のＦＩＳＨ  Ｃ用座標データを、練習回数Ｍに応じて変化するＦＩＳＨ  Ｃ画像の表示範囲（０≦ｘ３（ｎ）≦Ｘ３、０≦ｙ３（ｎ）≦Ｙ３）の中でランダムに生成し、生成した各ＦＩＳＨ  Ｃ用座標データをＲＡＭ１５のデータエリアに登録すると共に、生成されたＦＩＳＨ  Ｃ用座標データで表される各表示位置にＦＩＳＨ  Ｃ画像を画面表示させる。
【００２２】
さて、ステップＳＡ５の楽器初期処理もしくはステップＳＡ６のスクリーンセーバー初期処理の実行後、上述したステップＳＡ２に処理を戻し、楽器スイッチがオン操作されなければ、当該ステップＳＡ２の判断結果は「ＮＯ」になり、ステップＳＡ７に進む。ステップＳＡ７では、オンフラグＯＮＦが「１」であるか否かを判断する。オンフラグＯＮＦが「１」ならば、判断結果は「ＹＥＳ」になり、ステップＳＡ８を介して楽器処理を実行する。
【００２３】
楽器処理では、後述するように、スタート／ストップスイッチのオン操作により演奏練習を開始（スタートフラグＳＴＦが「１」）させると、曲データＭＤに基づき鍵のＬＥＤを点灯させてユーザに弾くべき鍵をガイドする一方、そのガイドに伴うユーザの演奏操作（押離鍵操作）に応じた楽音を発音／消音させると共に、左鍵域および右鍵域毎に適正な押鍵が為されたかどうかを判断する演奏評価を施し、適正な押鍵タイミング期間を失したり間違った鍵を押鍵した場合に、左手演奏ミス回数ＭＩＳＳＬ又は右手演奏ミス回数ＭＩＳＳＲをカウントする。
【００２４】
これに対し、オンフラグＯＮＦが「１」でなければ、上記ステップＳＡ７の判断結果は「ＮＯ」になり、ステップＳＡ９を介してセクリーンセーバー処理を実行する。セクリーンセーバー処理では、後述するように、表示範囲（０≦ｘ１（ｎ）＋Δｘ≦Ｘ１、０≦ｙ１（ｎ）＋Δｙ≦Ｙ２）の中で表示座標位置をランダムに変化させた左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ画像と、表示範囲（Ｘ１≦ｘ２（ｎ）＋Δｘ≦Ｘ２、０≦ｙ２（ｎ）＋Δｙ≦Ｙ２）の中で表示座標位置をランダムに変化させた右手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ｂ画像と、表示範囲（０≦ｘ３（ｎ）＋Δｘ≦Ｘ３、０≦ｙ３（ｎ）＋Δｙ≦Ｙ３）の中で表示座標位置をランダムに変化させた所定値ＮのＦＩＳＨ  Ｃ画像とを画面表示させる。
【００２５】
（２）楽器初期処理の動作
次に、図７を参照して楽器初期処理の動作を説明する。上述したメインルーチンのステップＳＡ５（図６参照）を介して本処理が実行されると、ＣＰＵ１３は図７に図示するステップＳＢ１に進み、レジスタＭに初期値「１」をストアする。このレジスタＭは曲演奏の練習回数を計数するものである。以下、レジスタＭの値を練習回数Ｍと称す。
【００２６】
次いで、ステップＳＢ２では、レジスタＭＩＳＳＲ、ＭＩＳＳＬをそれぞれゼロリセットする。レジスタＭＩＳＳＲは右手演奏ミスの回数を計数し、レジスタＭＩＳＳＬは左手演奏ミスの回数を計数する。以下、レジスタＭＩＳＳＲの値を右手ミス回数ＭＩＳＳＲ、レジスタＭＩＳＳＬの値を左手ミス回数ＭＩＳＳＬと称する。なお、ここで言う右手演奏とは鍵盤１０の右手鍵域における演奏（例えばメロディ演奏）を指し、左手演奏とは鍵盤１０の左手鍵域における演奏（例えば伴奏演奏）を指す。
【００２７】
（３）スクリーンセーバー初期処理の動作
次に、図８を参照してスクリーンセーバー初期処理の動作を説明する。上述したメインルーチンのステップＳＡ６（図６参照）を介して本処理が実行されると、ＣＰＵ１３は図８に図示するステップＳＣ１に進み、左手ミス回数ＭＩＳＳＬを練習回数Ｍで除算した値に「１００」を乗算して得られる左手演奏ミス率（％値）を、レジスタＮ１にストアする。以下、レジスタＮ１の値を左手演奏ミス率Ｎ１と称す。なお、左手演奏ミス率Ｎ１は、後述するように、画面に表示するＦＩＳＨ  Ａ画像の数に割り当てられる。
【００２８】
続いて、ステップＳＣ２では、右手ミス回数ＭＩＳＳＲを練習回数Ｍで除算した値に「１００」を乗算して得られる右手演奏ミス率（％値）を、レジスタＮ２にストアする。以下、レジスタＮ２の値を右手演奏ミス率Ｎ２と称す。なお、右手演奏ミス率Ｎ２は、後述するように、画面に表示するＦＩＳＨ  Ｂ画像の数に割り当てられる。
【００２９】
次いで、ステップＳＣ３では、練習回数Ｍに応じた関数ＴＸ（Ｍ）の値をレジスタＸ３にストアすると共に、練習回数Ｍに応じた関数ＴＹ（Ｍ）の値をレジスタＹ３にストアする。レジスタＸ３、レジスタＹ３の値は、前述したように、図５に図示する表示画面座標系におけるＦＩＳＨ  Ｃ画像の表示範囲を規定する。したがって、例えば関数ＴＸ（Ｍ）、関数ＴＹ（Ｍ）が一次関数であれば、練習回数Ｍに応じてＦＩＳＨ  Ｃ画像の表示範囲が拡大する。
【００３０】
そして、ステップＳＣ４では、ＦＩＳＨ  Ａ画像の表示範囲（０≦ｘ１（ｎ）≦Ｘ１、０≦ｙ１（ｎ）≦Ｙ２）で発生させた乱数ｘ１（ｎ）、ｙ１（ｎ）をＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））で表される表示位置にＦＩＳＨ  Ａ画像を画面表示させる動作を行う毎に、ＦＩＳＨ  Ａ用座標データを指定するポインタｎをインクリメントして歩進させ、歩進されたポインタｎが左手演奏ミス率Ｎ１以上になるまで上記動作を繰り返すＦＩＳＨ  Ａ初期処理を実行する。
【００３１】
ステップＳＣ５では、ＦＩＳＨ  Ｂ画像の表示範囲（Ｘ１≦ｘ２（ｎ）≦Ｘ２、０≦ｙ２（ｎ）≦Ｙ２）で発生させた乱数ｘ２（ｎ）、ｙ２（ｎ）をＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））で表される表示位置にＦＩＳＨ  Ｂ画像を画面表示させる動作を行う毎に、ＦＩＳＨ  Ｂ用座標データを指定するポインタｎをインクリメントして歩進させ、歩進されたポインタｎが右手演奏ミス率Ｎ２以上になるまで上記動作を繰り返すＦＩＳＨ  Ｂ初期処理を実行する。
【００３２】
ステップＳＣ６では、ＦＩＳＨ  Ｃ画像の表示範囲（０≦ｘ３（ｎ）≦Ｘ３、０≦ｙ３（ｎ）≦Ｙ３）で発生させた乱数ｘ３（ｎ）、ｙ３（ｎ）をＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｂ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））で表される表示位置にＦＩＳＨ  Ｃ画像を画面表示させる動作を行う毎に、ＦＩＳＨ  Ｃ用座標データを指定するポインタｎをインクリメントして歩進させ、歩進されたポインタｎが所定値Ｎ以上になるまで上記動作を繰り返すＦＩＳＨ  Ｃ初期処理を実行した後、本処理（スクリーンセーバー初期処理）を終える。
【００３３】
このように、スクリーンセーバー初期処理では、左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ用座標データを、ＦＩＳＨ  Ａ画像の表示範囲（０≦ｘ１（ｎ）≦Ｘ１、０≦ｙ１（ｎ）≦Ｙ２）の中でランダムに生成し、生成した各ＦＩＳＨ  Ａ用座標データをＲＡＭ１５のデータエリアに登録すると共に、生成されたＦＩＳＨ  Ａ用座標データで表される各表示位置にＦＩＳＨ  Ａ画像を画面表示させる。
【００３４】
また、右手演奏ミス率Ｎ２に相当する数のＦＩＳＨ  Ｂ用座標データを、ＦＩＳＨ  Ｂ画像の表示範囲（Ｘ１≦ｘ２（ｎ）≦Ｘ２、０≦ｙ２（ｎ）≦Ｙ２）の中でランダムに生成し、生成した各ＦＩＳＨ  Ａ用座標データをＲＡＭ１５のデータエリアに登録すると共に、生成されたＦＩＳＨ  Ａ用座標データで表される各表示位置にＦＩＳＨ  Ａ画像を画面表示させる。
【００３５】
さらに、所定値Ｎ分のＦＩＳＨ  Ｃ用座標データを、練習回数Ｍに応じて変化するＦＩＳＨ  Ｃ画像の表示範囲（０≦ｘ３（ｎ）≦Ｘ３、０≦ｙ３（ｎ）≦Ｙ３）の中でランダムに生成し、生成した各ＦＩＳＨ  Ｃ用座標データをＲＡＭ１５のデータエリアに登録すると共に、生成されたＦＩＳＨ  Ｃ用座標データで表される各表示位置にＦＩＳＨ  Ａ￥Ｃ画像を画面表示させる。
【００３６】
（４）ＦＩＳＨ  Ａ初期処理の動作
次に、図９を参照してＦＩＳＨ  Ａ初期処理の動作を説明する。上述したスクリーンセーバー初期処理のステップＳＣ４（図８参照）を介して本処理が実行されると、ＣＰＵ１３は図９に図示するステップＳＤ１に進み、ポインタｎをゼロリセットし、続くステップＳＤ２では、ＦＩＳＨ  Ａ画像の表示範囲（０≦ｘ１（ｎ）≦Ｘ１、０≦ｙ１（ｎ）≦Ｙ２）に収まる乱数ｘ１（ｎ）、ｙ１（ｎ）を発生させ、これをポインタｎで指定されるＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））としてＲＡＭ１５のデータエリア（図４参照）にストアする。
【００３７】
次いで、ステップＳＤ３では、ポインタｎで指定されるＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））で表される座標位置に、ＲＯＭ１４から読み出したＦＩＳＨ  Ａ画像を画面表示する。この後、ステップＳＤ４に進み、ポインタｎをインクリメントして歩進させ、続くステップＳＤ５では、歩進されたポインタｎの値が左手演奏ミス率Ｎ１以上であるか否かを判断する。
【００３８】
歩進されたポインタｎの値が左手演奏ミス率Ｎ１未満であれば、判断結果は「ＮＯ」になり、上述のステップＳＤ２に処理を戻す。以後、歩進されたポインタｎが左手演奏ミス率Ｎ１以上になる迄、発生した乱数ｘ１（ｎ）、ｙ１（ｎ）をＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、その登録したＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））で表される座標位置にＦＩＳＨ  Ａ画像を画面表示する、上記ステップＳＤ２〜ＳＤ５の処理を繰り返す。そして、歩進されたポインタｎの値が左手演奏ミス率Ｎ１以上になると、上記ステップＳＤ５の判断結果が「ＹＥＳ」となり、本処理を終える。
【００３９】
なお、左手演奏ミス率Ｎ１が「０」、つまり演奏練習が行われていない初期状態の場合には、最初に発生させた乱数ｘ１（０）、ｙ１（０）をＦＩＳＨ  Ａ用座標データ（ｘ１（０）、ｙ１（０））としてＲＡＭ１５のデータエリアに登録すると共に、その登録したＦＩＳＨ  Ａ用座標データ（ｘ１（０）、ｙ１（０））で表される座標位置に一匹分のＦＩＳＨ  Ａ画像を画面表示して本処理を終える。
【００４０】
このように、ＦＩＳＨ  Ａ初期処理では、ＦＩＳＨ  Ａ画像の表示範囲（０≦ｘ１（ｎ）≦Ｘ１、０≦ｙ１（ｎ）≦Ｙ２）で発生させた乱数ｘ１（ｎ）、ｙ１（ｎ）をＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ）、ｙ１（ｎ））で表される座標位置にＦＩＳＨ  Ａ画像を画面表示させる動作を行う毎に、ＦＩＳＨ  Ａ用座標データを指定するポインタｎをインクリメントして歩進させ、歩進されたポインタｎが左手演奏ミス率Ｎ１以上になるまで上記動作を繰り返す。
【００４１】
（５）ＦＩＳＨ  Ｂ初期処理の動作
次に、図１０を参照してＦＩＳＨ  Ｂ初期処理の動作を説明する。前述したスクリーンセーバー初期処理のステップＳＣ５（図８参照）を介して本処理が実行されると、ＣＰＵ１３は図１０に図示するステップＳＥ１に進み、ポインタｎをゼロリセットする。次いで、ステップＳＥ２では、ＦＩＳＨ  Ｂ画像の表示範囲（Ｘ１≦ｘ２（ｎ）≦Ｘ２、０≦ｙ２（ｎ）≦Ｙ２）で発生させた乱数ｘ２（ｎ）、ｙ２（ｎ）をＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））としてＲＡＭ１５のデータエリアに登録する。
【００４２】
そして、ステップＳＥ３では、ＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））で表される座標位置にＦＩＳＨ  Ｂ画像を画面表示させ、続くステップＳＥ４では、ＦＩＳＨ  Ｂ用座標データを指定するポインタｎをインクリメントして歩進させる。ステップＳＥ５では、歩進されたポインタｎの値が右手演奏ミス率Ｎ１以上であるか否かを判断する。
【００４３】
歩進されたポインタｎの値が右手演奏ミス率Ｎ２未満であれば、判断結果は「ＮＯ」になり、上述のステップＳＥ２に処理を戻す。以後、歩進されたポインタｎが右手演奏ミス率Ｎ２以上になる迄、発生した乱数ｘ２（ｎ）、ｙ２（ｎ）をＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））で表される座標位置にＦＩＳＨ  Ｂ画像を画面表示する、上記ステップＳＥ２〜ＳＥ５の処理を繰り返す。そして、歩進されたポインタｎの値が右手演奏ミス率Ｎ２以上になると、上記ステップＳＥ５の判断結果が「ＹＥＳ」となり、本処理を終える。
【００４４】
なお、右手演奏ミス率Ｎ２が「０」、つまり演奏練習が行われていない初期状態の場合には、最初に発生させた乱数ｘ２（０）、ｙ２（０）をＦＩＳＨ  Ｂ用座標データ（ｘ２（０）、ｙ２（０））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｂ用座標データ（ｘ２（０）、ｙ２（０））で表される座標位置にＦＩＳＨ  Ｂ画像を画面表示して本処理を終える。
【００４５】
このように、ＦＩＳＨ  Ｂ初期処理では、ＦＩＳＨ  Ｂ画像の表示範囲（Ｘ１≦ｘ２（ｎ）≦Ｘ２、０≦ｙ２（ｎ）≦Ｙ２）で発生させた乱数ｘ２（ｎ）、ｙ２（ｎ）をＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｂ用座標データ（ｘ２（ｎ）、ｙ２（ｎ））で表される座標位置にＦＩＳＨ  Ｂ画像を画面表示させる動作を行う毎に、ＦＩＳＨ  Ｂ用座標データを指定するポインタｎをインクリメントして歩進させ、歩進されたポインタｎが右手演奏ミス率Ｎ２以上になるまで上記動作を繰り返す。
【００４６】
（６）ＦＩＳＨ  Ｃ初期処理の動作
次に、図１１を参照してＦＩＳＨ  Ｃ初期処理の動作を説明する。前述したスクリーンセーバー初期処理のステップＳＣ６（図８参照）を介して本処理が実行されると、ＣＰＵ１３は図１１に図示するステップＳＦ１に進み、ポインタｎをゼロリセットする。次いで、ステップＳＦ２では、ＦＩＳＨ  Ｃ画像の表示範囲（０≦ｘ３（ｎ）≦Ｘ３、０≦ｙ３（ｎ）≦Ｙ３）で発生させた乱数ｘ３（ｎ）、ｙ３（ｎ）をＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））としてＲＡＭ１５のデータエリアに登録する。
【００４７】
そして、ステップＳＦ３では、ＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））で表される座標位置にＦＩＳＨ  Ｃ画像を画面表示させ、続くステップＳＦ４では、ＦＩＳＨ  Ｃ用座標データを指定するポインタｎをインクリメントして歩進させる。ステップＳＦ５では、歩進されたポインタｎの値が所定値Ｎ以上であるか否かを判断する。
【００４８】
歩進されたポインタｎの値が所定値Ｎ未満であれば、判断結果は「ＮＯ」になり、上述のステップＳＦ２に処理を戻す。以後、歩進されたポインタｎが所定値Ｎ以上になる迄、発生した乱数ｘ３（ｎ）、ｙ３（ｎ）をＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））で表される座標位置にＦＩＳＨ  Ｃ画像を画面表示する、上記ステップＳＦ２〜ＳＦ５の処理を繰り返す。そして、歩進されたポインタｎの値が所定値Ｎ以上になると、上記ステップＳＦ５の判断結果が「ＹＥＳ」となり、本処理を終える。
【００４９】
このように、ＦＩＳＨ  Ｃ初期処理では、ＦＩＳＨ  Ｃ画像の表示範囲（０≦ｘ３（ｎ）≦Ｘ３、０≦ｙ３（ｎ）≦Ｙ３）で発生させた乱数ｘ３（ｎ）、ｙ３（ｎ）をＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））としてＲＡＭ１５のデータエリアに登録すると共に、そのＦＩＳＨ  Ｃ用座標データ（ｘ３（ｎ）、ｙ３（ｎ））で表される座標位置にＦＩＳＨ  Ｃ画像を画面表示させる動作を行う毎に、ＦＩＳＨ  Ｃ用座標データを指定するポインタｎをインクリメントして歩進させ、歩進されたポインタｎが所定値Ｎ以上になるまで上記動作を繰り返す。
【００５０】
（７）楽器処理の動作
次に、図１２を参照して楽器処理の動作を説明する。前述したメインルーチンのステップＳＡ８（図６参照）を介して本処理が実行されると、ＣＰＵ１３は図１２に図示するステップＳＧ１に進み、スイッチ処理を実行する。スイッチ処理では、後述するように、スタート／ストップスイッチのオン操作により演奏練習を開始すると、曲データＭＤの先頭アドレスを読み出しアドレスＡＤとし、これに応じて曲データＭＤから読み出される先頭のタイムＴＩＭＥをレジスタｔにストアすると共に、タイマＴ２をスタートさせる。一方、スタート／ストップスイッチのオン操作により演奏練習の停止すると、押鍵ガイド部１１に点灯中のＬＥＤを消灯するよう指示した後、タイマＴ２を停止させる。
【００５１】
続いて、ステップＳＧ２では、自動演奏処理を実行する。自動演奏処理では、後述するように、最小単位時間（ティック）が経過する毎に、レジスタｔの値（タイムＴＩＭＥ）をデクリメントし、デクリメントされたレジスタｔの値（タイムＴＩＭＥ）が「０」以下のイベントタイミングに達すると、曲データＭＤの読み出しアドレスＡＤを歩進させ、歩進された読み出しアドレスＡＤに応じて読み出される「イベントＥＶＥＮＴ」が発音を指示するノートオンイベントであると、当該ノートオンイベント中のノートナンバに対応する鍵に配設されるＬＥＤの点灯を押鍵ガイド部１１に指示して弾くべき鍵をガイドすると同時にタイマＴ２を停止させる。
【００５２】
一方、歩進された読み出しアドレスＡＤに応じて、次イベントタイミングを表す「タイムＴＩＭＥ」が読み出されると、当該「タイムＴＩＭＥ」をレジスタｔにストアして本処理を一旦終える。なお、歩進された読み出しアドレスＡＤが曲データＭＤの最終アドレスを超えた場合には、読み出しアドレスＡＤを曲データＭＤの先頭アドレスに戻し、さらに右手演奏ミス回数ＭＩＳＳＲおよび左手演奏ミス回数ＭＩＳＳＬをゼロリセットすると共に、練習回数Ｍをインクリメントして歩進させる。
【００５３】
次いで、ステップＳＧ３では、押離鍵操作に応じて楽音を発音／消音させる一方、鍵盤１０の左鍵域および右鍵域毎に適正な押鍵が為されたかどうかを判断し、適正な押鍵タイミング期間を失した場合や間違った鍵を押鍵した場合に、左手演奏ミス回数ＭＩＳＳＬ又は右手演奏ミス回数ＭＩＳＳＲを歩進させる鍵盤処理を実行する。この後、ステップＳＧ４に進み、例えばユーザ操作に応じて発生楽音の音色を変更したり、効果付与する等の、その他の処理を実行した後に本処理を終える。
【００５４】
（８）スイッチ処理の動作
次に、図１３を参照してスイッチ処理の動作を説明する。上述した楽器処理のステップＳＧ１（図１２参照）を介して本処理が実行されると、ＣＰＵ１３は図１３に図示するステップＳＨ１に進み、演奏練習の開始／停止を指示するスタート／ストップスイッチのオン操作の有無を判断する。スタート／ストップスイッチがオン操作されなければ、判断結果は「ＮＯ」になり、本処理を終えるが、スタート／ストップスイッチがオン操作されると、上記ステップＳＨ１の判断結果は「ＹＥＳ」になり、ステップＳＨ２に進み、スタートフラグＳＴＦを反転する。スタートフラグＳＴＦは、フラグ値「１」の場合に演奏練習の開始を表し、フラグ値「０」の場合に演奏練習の停止を表す。また、スタート／ストップスイッチは所謂トグル動作するスイッチであり、オン操作に応じて演奏練習の開始／停止を交互に指示する。
【００５５】
次いで、ステップＳＨ３では、スタート／ストップスイッチのオン操作に応じて反転されたスタートフラグＳＴＦが「１」であるか否かを判断する。反転されたスタートフラグＳＴＦが「０」（演奏練習の停止）ならば、判断結果は「ＮＯ」になり、ステップＳＨ４に進み、点灯中のＬＥＤを消灯するよう押鍵ガイド部１１に指示し、続くステップＳＨ５では、タイマＴ２を停止させて本処理を終える。
【００５６】
一方、スタート／ストップスイッチのオン操作に応じて反転されたスタートフラグＳＴＦが「１」（演奏練習の開始）であると、上記ステップＳＨ３の判断結果が「ＹＥＳ」になり、ステップＳＨ６に進み、ＲＯＭ１４のデータエリアに格納される曲データＭＤのアドレス初期値（先頭アドレス）を読み出しアドレスＡＤにセットし、続くステップＳＨ７では、読み出しアドレスＡＤに応じて曲データＭＤから読み出される先頭のタイムＴＩＭＥをレジスタｔにストアする。そして、ステップＳＨ８では、タイマＴ２をスタートさせて本処理を終える。
【００５７】
このように、スイッチ処理では、スタート／ストップスイッチのオン操作に応じて反転されたスタートフラグＳＴＦが「１」となり、演奏練習の開始を表すと、曲データＭＤのアドレス初期値（先頭アドレス）を読み出しアドレスＡＤにセットし、この読み出しアドレスＡＤに応じて曲データＭＤから読み出される先頭のタイムＴＩＭＥをレジスタｔにストアすると共に、タイマＴ２をスタートさせる。一方、スタート／ストップスイッチのオン操作に応じて反転されたスタートフラグＳＴＦが「０」となり、演奏練習の停止を表すと、押鍵ガイド部１１に点灯中のＬＥＤを消灯するよう指示した後、タイマＴ２を停止させる。
【００５８】
（９）自動演奏処理の動作
次に、図１４を参照して自動演奏処理の動作を説明する。上述した楽器処理のステップＳＧ２（図１２参照）を介して本処理が実行されると、ＣＰＵ１３は図１４に図示するステップＳＪ１に進み、スタートフラグＳＴＦが「１」（演奏練習の開始）であるかどうかを判断する。スタートフラグＳＴＦが「０」（演奏練習の停止）ならば、判断結果は「ＮＯ」になり、本処理を終えるが、スタートフラグＳＴＦが「１」であると、判断結果は「ＹＥＳ」になり、ステップＳＪ２に進み、最小単位時間（ティック）が経過したか否かを判断する。
【００５９】
最小単位時間が経過していなければ、判断結果は「ＮＯ」となり、本処理を終えるが、最小単位時間が経過していると、判断結果は「ＹＥＳ」になり、ステップＳＪ３に進み、レジスタｔの値（タイムＴＩＭＥ）をデクリメントする。そして、ステップＳＪ４では、デクリメントされたレジスタｔの値（タイムＴＩＭＥ）が「０」以下、すなわちイベントタイミングに達したかどうかを判断する。イベントタイミングに達していなければ、上記ステップＳＪ４の判断結果は「ＮＯ」になり、本処理を終える。
【００６０】
一方、デクリメントされたレジスタｔの値（タイムＴＩＭＥ）が「０」以下となり、イベントタイミングに達すると、上記ステップＳＪ４の判断結果は「ＹＥＳ」になり、ステップＳＪ５に進み、曲データＭＤの読み出しアドレスＡＤを歩進させる。そして、ステップＳＪ６では、歩進された読み出しアドレスＡＤが曲データＭＤの最終アドレス以下であるか否かを判断する。
【００６１】
歩進された読み出しアドレスＡＤが曲データＭＤの最終アドレスを超えたならば、判断結果は「ＮＯ」になり、ステップＳＪ７に進み、読み出しアドレスＡＤを曲データＭＤの先頭アドレスに戻す。そして、ステップＳＪ８に進み、右手演奏ミス回数ＭＩＳＳＲおよび左手演奏ミス回数ＭＩＳＳＬをゼロリセットし、続くステップＳＪ９では、練習回数Ｍをインクリメントして歩進させた後、ステップＳＪ１０に処理を進める。
【００６２】
これに対し、歩進された読み出しアドレスＡＤが曲データＭＤの最終アドレス以下であると、上記ステップＳＪ６の判断結果は「ＹＥＳ」になり、ステップＳＪ１０に進む。ステップＳＪ１０では、歩進された読み出しアドレスＡＤに応じて読み出される曲データＭＤが「タイムＴＩＭＥ」又は「イベントＥＶＥＮＴ」の何れであるかを判別する。読み出された曲データＭＤが「イベントＥＶＥＮＴ」ならば、ステップＳＪ１１に進み、当該「イベントＥＶＥＮＴ」に含まれるノートナンバをレジスタＮＯＴＥにストアする。
【００６３】
続いて、ステップＳＪ１２では、「イベントＥＶＥＮＴ」が発音を指示するノートオンイベントであると、レジスタＮＯＴＥに格納されたノートナンバに対応する鍵に配設されるＬＥＤを点灯するよう押鍵ガイド部１１に指示する。この後、ステップＳＪ１３に進み、タイマＴ２を停止させた後、上述のステップＳＪ５に処理を戻す。一方、読み出された曲データＭＤが次イベントタイミングを表す「タイムＴＩＭＥ」であれば、ステップＳＪ１４に進み、その「タイムＴＩＭＥ」をレジスタｔにストアして本処理を終える。
【００６４】
このように、自動演奏処理では、最小単位時間（ティック）が経過する毎に、レジスタｔの値（タイムＴＩＭＥ）をデクリメントし、デクリメントされたレジスタｔの値（タイムＴＩＭＥ）が「０」以下のイベントタイミングに達すると、曲データＭＤの読み出しアドレスＡＤを歩進させ、歩進された読み出しアドレスＡＤに応じて読み出される「イベントＥＶＥＮＴ」が発音を指示するノートオンイベントであると、当該ノートオンイベント中のノートナンバに対応する鍵に配設されるＬＥＤ点灯を押鍵ガイド部１１に指示して弾くべき鍵をガイドすると同時にタイマＴ２を停止させる。
【００６５】
一方、歩進された読み出しアドレスＡＤに応じて、次イベントタイミングを表す「タイムＴＩＭＥ」が読み出されると、当該「タイムＴＩＭＥ」をレジスタｔにストアして本処理を一旦終える。なお、歩進された読み出しアドレスＡＤが曲データＭＤの最終アドレスを超えた場合には、読み出しアドレスＡＤを曲データＭＤの先頭アドレスに戻し、さらに右手演奏ミス回数ＭＩＳＳＲおよび左手演奏ミス回数ＭＩＳＳＬをゼロリセットすると共に、練習回数Ｍをインクリメントして歩進させる。
【００６６】
（１０）鍵盤処理の動作
次に、図１５〜図１６を参照して鍵盤処理の動作を説明する。前述した楽器処理のステップＳＧ３（図１２参照）を介して本処理が実行されると、ＣＰＵ１３は図１５に図示するステップＳＫ１に進み、鍵盤１０の左鍵域の各鍵についてキーオン／キーオフ信号の有無を検出する鍵走査を行い、続くステップＳＫ２では、上記ステップＳＫ１の鍵走査結果に基づき鍵変化を判別する。押離鍵操作が行われず、鍵変化が生じなければ、ステップＳＫ２において鍵変化無しと判別して図１６に図示するステップＳＫ１１に進む。
【００６７】
押鍵操作に応じて発生するキーオン信号を検出した場合には、ステップＳＫ２を介してステップＳＫ３に進み、押鍵に応じて鍵盤１０が発生する演奏情報に基づきノートオンイベントを発生して音源１７に送出する。これにより、音源１７は、押鍵された鍵の音高の楽音をベロシティに従った音量で発音させる。次いで、ステップＳＫ４では、押鍵された鍵のノートナンバをレジスタＫＥＹにストアする。続いて、ステップＳＫ５では、タイマＴ２が停止中であるか否か、すなわち適正な押鍵タイミング期間であるかどうかを判断する。タイマＴ２が計時中の、適正な押鍵タイミング期間を失した誤押鍵であると、判断結果が「ＮＯ」になり、ステップＳＫ１０に進み、左手演奏ミス回数ＭＩＳＳＬをインクリメントして歩進させた後、図１６に図示するステップＳＫ１１に進む。
【００６８】
一方、タイマＴ２が停止中の、適正な押鍵タイミング期間の押鍵であると、上記ステップＳＫ５の判断結果が「ＹＥＳ」になり、ステップＳＫ６に進む。ステップＳＫ６では、レジスタＫＥＹの押鍵された鍵のノートナンバと、レジスタＮＯＴＥのノートナンバとが一致しているか否か、つまり正しい鍵が押鍵されたかどうかを判断する。間違った鍵を押鍵した場合には、判断結果が「ＮＯ」になり、ステップＳＫ１０に進み、左手演奏ミス回数ＭＩＳＳＬをインクリメントして歩進させた後、図１６に図示するステップＳＫ１１に進む。
【００６９】
これに対し、正しい鍵が押鍵されたならば、上記ステップＳＫ６の判断結果は「ＹＥＳ」となり、ステップＳＫ７に進み、タイマＴ２をスタートさせ、続くステップＳＫ８では、レジスタＮＯＴＥにストアされたノートナンバに対応する鍵に配設されるＬＥＤの消灯を押鍵ガイド部１１に指示した後、図１６に図示するステップＳＫ１１に進む。
【００７０】
さて一方、離鍵操作に応じて発生するキーオフ信号を検出した場合には、ステップＳＫ２を介してステップＳＫ９に進み、離鍵に応じて鍵盤１０が発生する演奏情報に基づきノートオフイベントを発生して音源１７に送出した後、図１６に図示するステップＳＫ１１に進む。なお、音源１７では、ノートオフイベントの受信に応じて、離鍵された鍵の音高の楽音を消音させる。
【００７１】
そして、図１６に図示するステップＳＫ１１に進むと、鍵盤１０の右鍵域の各鍵についてキーオン／キーオフ信号の有無を検出する鍵走査を行い、続くステップＳＫ１２では、上記ステップＳＫ１１の鍵走査結果に基づき鍵変化を判別する。押離鍵操作が行われず、鍵変化が生じなければ、ステップＳＫ１２において鍵変化無しと判別して本処理を終える。
【００７２】
押鍵操作に応じて発生するキーオン信号を検出した場合には、ステップＳＫ１２を介してステップＳＫ１３に進み、押鍵に応じて鍵盤１０が発生する演奏情報に基づきノートオンイベントを発生して音源１７に送出する。これにより、音源１７は、押鍵された鍵の音高の楽音をベロシティに従った音量で発音させる。次いで、ステップＳＫ１４では、押鍵された鍵のノートナンバをレジスタＫＥＹにストアする。続いて、ステップＳＫ１５では、タイマＴ２が停止中であるか否か、すなわち適正な押鍵タイミング期間であるかどうかを判断する。タイマＴ２が計時中の、適正な押鍵タイミング期間を失した誤押鍵であると、判断結果が「ＮＯ」になり、ステップＳＫ２０に進み、右手演奏ミス回数ＭＩＳＳＲをインクリメントして歩進させた後、本処理を終える。
【００７３】
一方、タイマＴ２が停止中の、適正な押鍵タイミング期間における押鍵ならば、上記ステップＳＫ１５の判断結果が「ＹＥＳ」になり、ステップＳＫ１６に進む。ステップＳＫ１６では、レジスタＫＥＹの押鍵された鍵のノートナンバと、レジスタＮＯＴＥのノートナンバとが一致しているか否か、つまり正しい鍵が押鍵されたかどうかを判断する。間違った鍵を押鍵した場合には、判断結果が「ＮＯ」になり、ステップＳＫ２０に進み、右手演奏ミス回数ＭＩＳＳＲをインクリメントして歩進させた後、本処理を終える。
【００７４】
これに対し、正しい鍵が押鍵されたならば、上記ステップＳＫ１６の判断結果は「ＹＥＳ」となり、ステップＳＫ１７に進み、タイマＴ２をスタートさせ、続くステップＳＫ１８では、レジスタＮＯＴＥにストアされたノートナンバに対応する鍵に配設されるＬＥＤの消灯を押鍵ガイド部１１に指示した後、本処理を終える。
【００７５】
さて一方、離鍵操作に応じて発生するキーオフ信号を検出した場合には、ステップＳＫ２を介してステップＳＫ９に進み、離鍵に応じて鍵盤１０が発生する演奏情報に基づきノートオフイベントを発生して音源１７に送出した後、本処理を終える。なお、音源１７では、ノートオフイベントの受信に応じて、離鍵された鍵の音高の楽音を消音させる。
【００７６】
以上のように、鍵盤処理では、押離鍵操作に応じて楽音を発音／消音させる一方、鍵盤１０の左鍵域および右鍵域毎に適正な押鍵が為されたかどうかを判断し、適正な押鍵タイミング期間を失した場合や間違った鍵を押鍵した場合に左手演奏ミス回数ＭＩＳＳＬ又は右手演奏ミス回数ＭＩＳＳＲを歩進させる。
【００７７】
（１１）スクリーンセーバー処理の動作
次に、図１７〜図１８を参照してスクリーンセーバー処理の動作を説明する。前述したメインルーチンのステップＳＡ９（図６参照）を介して本処理が実行されると、ＣＰＵ１３は図１７に図示するステップＳＬ１を介してＦＩＳＨ  Ａ処理を実行する。ＦＩＳＨ  Ａ処理が実行されると、ＣＰＵ１３は図１８に図示するステップＳＭ１に進む。
【００７８】
＜ＦＩＳＨ  Ａ処理の動作＞
ステップＳＭ１では、ポインタｎに初期値「０」をセットする。なお、ポインタｎは、ＦＩＳＨ  Ａ用座標データを指定する。続いて、ステップＳＭ２では、所定値域の乱数Δｘ、Δｙを発生する。次いで、ステップＳＭ３では、ポインタｎで指定されるＦＩＳＨ  Ａ用座標データｘ１（ｎ）に乱数Δｘを加算した値が、ＦＩＳＨ  Ａ画像のｘ軸表示範囲（０≦ｘ１（ｎ）＋Δｘ≦Ｘ１）に収まるか否かを判断する。表示範囲外ならば、判断結果は「ＮＯ」になり、後述のステップＳＭ５に進むが、表示範囲内であると、判断結果が「ＹＥＳ」になり、ステップＳＭ４に進み、ＦＩＳＨ  Ａ用座標データｘ１（ｎ）に乱数Δｘを加算してｘ軸座標データを更新する。
【００７９】
次に、ステップＳＭ５では、ポインタｎで指定されるＦＩＳＨ  Ａ用座標データｙ１（ｎ）に乱数Δｙを加算した値が、ＦＩＳＨ  Ａ画像のｙ軸表示範囲（０≦ｙ１（ｎ）＋Δｙ≦Ｙ２）に収まるか否かを判断する。表示範囲外ならば、判断結果は「ＮＯ」になり、後述のステップＳＭ７に進むが、表示範囲内であると、判断結果が「ＹＥＳ」になり、ステップＳＭ６に進み、ＦＩＳＨ  Ａ用座標データｙ１（ｎ）に乱数Δｙを加算してｙ軸座標データを更新する。
【００８０】
そして、ステップＳＭ７に進むと、ＦＩＳＨ  Ａ用座標データ（ｘ１（ｎ），ｙ１（ｎ））で指定される表示画面座標系上の座標位置にＦＩＳＨ  Ａ画像を表示し、続くステップＳＭ８では、ポインタｎをインクリメントして歩進させる。次いで、ステップＳＭ９では、歩進されたポインタｎが左手演奏ミス率Ｎ１を超えたか否かを判断する。歩進されたポインタｎが左手演奏ミス率Ｎ１を超えなければ、判断結果は「ＮＯ」になり、上述のステップＳＭ２に処理を戻す。
【００８１】
以後、歩進されたポインタｎが左手演奏ミス率Ｎ１を超える迄、上述したステップＳＭ２〜ＳＭ９を繰り返す。これにより、乱数成分Δｘ、Δｙを加算してもＦＩＳＨ  Ａ画像の表示範囲（０≦ｘ１（ｎ）＋Δｘ≦Ｘ１、０≦ｙ１（ｎ）＋Δｙ≦Ｙ２）を逸脱しない場合にはその乱数成分Δｘ、Δｙを加算して更新されたＦＩＳＨ  Ａ用座標データｘ１（ｎ）、ｙ１（ｎ）や、乱数成分Δｘ、Δｙの加算によりＦＩＳＨ  Ａ画像の表示範囲を逸脱する場合には元のＦＩＳＨ  Ａ用座標データｘ１（ｎ）、ｙ１（ｎ）を用いて左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ画像を画面表示させる。そして、歩進されたポインタｎが左手演奏ミス率Ｎ１を超えると、上記ステップＳＭ９の判断結果が「ＹＥＳ」になり、本処理を終える。
【００８２】
＜ＦＩＳＨ  Ｂ処理の動作＞
ＦＩＳＨ  Ａ処理が完了すると、ＣＰＵ１３は図１７に図示するステップＳＬ２を介して図１９に図示するステップＳＮ１〜ＳＮ９から構成されるＦＩＳＨ  Ｂ処理を実行する。ＦＩＳＨ  Ｂ処理では、上述したＦＩＳＨ  Ａ処理と同様に、歩進されたポインタｎが右手演奏ミス率Ｎ２を超える迄、ステップＳＮ２〜ＳＮ９を繰り返す。
【００８３】
これにより、乱数成分Δｘ、Δｙを加算してもＦＩＳＨ  Ｂ画像の表示範囲（Ｘ１≦ｘ２（ｎ）＋Δｘ≦Ｘ２、０≦ｙ２（ｎ）＋Δｙ≦Ｙ２）を逸脱しない場合にはその乱数成分Δｘ、Δｙを加算して更新されたＦＩＳＨ  Ｂ用座標データｘ２（ｎ）、ｙ２（ｎ）や、乱数成分Δｘ、Δｙの加算によりＦＩＳＨ  Ｂ画像の表示範囲を逸脱する場合には元のＦＩＳＨ  Ｂ用座標データｘ２（ｎ）、ｙ２（ｎ）を用いて右手演奏ミス率Ｎ２に相当する数のＦＩＳＨ  Ｂ画像を画面表示させる。そして、歩進されたポインタｎが右手演奏ミス率Ｎ２を超えると、ステップＳＮ９の判断結果が「ＹＥＳ」になり、本処理を終える。
【００８４】
＜ＦＩＳＨ  Ｃ処理の動作＞
ＦＩＳＨ  Ｂ処理が完了すると、ＣＰＵ１３は図１７に図示するステップＳＬ３を介して図２０に図示するステップＳＰ１〜ＳＰ９から構成されるＦＩＳＨ  Ｃ処理を実行する。ＦＩＳＨ  Ｃ処理では、上述したＦＩＳＨ  Ａ処理と同様に、歩進されたポインタｎが所定値Ｎを超える迄、ステップＳＰ２〜ＳＰ９を繰り返す。
【００８５】
これにより、乱数成分Δｘ、Δｙを加算してもＦＩＳＨ  Ｃ画像の表示範囲（０≦ｘ３（ｎ）＋Δｘ≦Ｘ３、０≦ｙ３（ｎ）＋Δｙ≦Ｙ３）を逸脱しない場合にはその乱数成分Δｘ、Δｙを加算して更新されたＦＩＳＨ  Ｃ用座標データｘ３（ｎ）、ｙ３（ｎ）や、乱数成分Δｘ、Δｙの加算によりＦＩＳＨ  Ｃ画像の表示範囲を逸脱する場合には元のＦＩＳＨ  Ｃ用座標データｘ３（ｎ）、ｙ３（ｎ）を用いて所定値Ｎ分のＦＩＳＨ  Ｃ画像を画面表示させる。そして、歩進されたポインタｎが所定値Ｎを超えると、ステップＳＰ９の判断結果が「ＹＥＳ」になり、本処理を終える。
【００８６】
このように、スクリーンセーバー処理では、表示範囲（０≦ｘ１（ｎ）＋Δｘ≦Ｘ１、０≦ｙ１（ｎ）＋Δｙ≦Ｙ２）の中で表示座標位置をランダムに変化させた左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ画像と、表示範囲（Ｘ１≦ｘ２（ｎ）＋Δｘ≦Ｘ２、０≦ｙ２（ｎ）＋Δｙ≦Ｙ２）の中で表示座標位置をランダムに変化させた右手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ｂ画像と、表示範囲（０≦ｘ３（ｎ）＋Δｘ≦Ｘ３、０≦ｙ３（ｎ）＋Δｙ≦Ｙ３）の中で表示座標位置をランダムに変化させた所定値ＮのＦＩＳＨ  Ｃ画像とを画面表示させる。
【００８７】
以上のように、本実施形態では、演奏練習の評価結果の種類毎に対応付けた画像（ＦＩＳＨ  Ａ画像、ＦＩＳＨ  Ｂ画像およびＦＩＳＨ  Ｃ画像）を記憶しておき、曲を構成する各音を表す曲データとユーザの演奏操作に応じて発生する演奏データとを比較して複数の評価結果（左手演奏ミス率Ｎ１、右手演奏ミス率Ｎ２および練習回数Ｍ）を取得すると、左手演奏ミス率Ｎ１に相当する数のＦＩＳＨ  Ａ画像を、表示画面上で予め割り当てられた表示範囲中のランダムな位置に表示し、右手演奏ミス率Ｎ２に相当する数のＦＩＳＨ  Ｂ画像を、表示画面上で予め割り当てられた表示範囲中のランダムな位置に表示し、所定数のＦＩＳＨ  Ｃ画像を、表示画面上で予め割り当てられ、練習回数に応じて可変設定される表示範囲中のランダムな位置に表示するスクリーンセーバー処理によって表示画面を水槽に見立て、その水槽（表示画面）中の「どのエリア」に「どの熱帯魚」が「何匹」表示されているかで演奏練習の評価結果（左手演奏ミス率Ｎ１、右手演奏ミス率Ｎ２および練習回数Ｍ）を表現するので、ゲーム的な面白味を持たせることが出来る。
【００８８】
なお、上述した実施形態では、演奏ミス率が増すほど画面表示する画像の数も増える比例関係としたが、これに限らず、演奏ミス率が増すほど画面表示する画像の数を減らすに反比例関係としても構わない。また、練習回数が増えるほどＦＩＳＨ  Ｃ画像の表示画面上の表示範囲を拡大するようにしたが、これに替えて、表示範囲の面積を一定にしておき、例えば練習回数が少ない時には画面上部、練習回数が増えるに連れて画面下部へ移動する等、練習回数に応じてＦＩＳＨ  Ｃ画像の表示範囲の位置を変化させる態様とすることも可能である。
【００８９】
さらに、本実施形態では、説明の簡略化を図る為、熱帯魚の静止画像を用いたが、これに限らず、泳ぐ動作をする熱帯魚の動画像を用いて実際の水槽中のような雰囲気を表現することも勿論可能である。加えて、本実施形態では、熱帯魚をキャラクタとした画像を用いたが、これに限定されず、例えばユーザ自身の顔画像や似顔絵画像などユーザが選択した画像をキャラクタとして用いる態様にすることも可能である。
【００９０】
以上、本発明の実施の一形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
【００９１】
（付記）
［請求項１］
演奏練習の評価結果の種類別に対応付けたキャラクタ画像を記憶する画像記憶手段と、
曲を演奏練習するユーザの演奏操作に応じて発生する演奏データと曲を構成する各音を表す曲データとを比較して演奏練習に係わる複数の評価結果を取得する取得手段と、
前記取得手段により取得される複数の評価結果に各々対応するキャラクタ画像を前記画像記憶手段から読み出す画像読み出し手段と、
予め演奏練習の評価結果の種類毎に表示画面上の表示範囲を割り当てておき、前記画像読み出し手段によって読み出された複数の評価結果に各々対応するキャラクタ画像を、それぞれ表示画面上で割り当てられた表示範囲において対応する評価結果の種類に応じた表示態様で表示する表示制御手段と
を具備することを特徴とする演奏練習装置。
【００９２】
［請求項２］
前記取得手段は、複数の評価結果として、少なくとも左手演奏ミス率、右手演奏ミス率および練習回数を取得することを特徴とする請求項１記載の演奏練習装置。
【００９３】
［請求項３］
前記表示制御手段は、
表示画面上で左手演奏ミス率に割り当てられた表示範囲において、左手演奏ミス率に相当する数の第１のキャラクタ画像をランダムな位置に表示する第１の表示制御手段と、
表示画面上で右手演奏ミス率に割り当てられた表示範囲において、右手演奏ミス率に相当する数の第２のキャラクタ画像をランダムな位置に表示する第２の表示制御手段と、
表示画面上で練習回数に割り当てられ、当該練習回数に応じて可変設定される表示範囲において、所定数の第３のキャラクタ画像をランダムな位置に表示する第３の表示制御手段と
を具備することを特徴とする請求項１記載の演奏練習装置。
【００９４】
［請求項４］
コンピュータに、
曲を演奏練習するユーザの演奏操作に応じて発生する演奏データと曲を構成する各音を表す曲データとを比較して演奏練習に係わる複数の評価結果を取得する取得ステップと、
演奏練習の評価結果の種類別に対応付けたキャラクタ画像を記憶しておき、前記取得ステップにて取得された複数の評価結果に各々対応するキャラクタ画像を読み出す画像読み出しステップと、
予め演奏練習の評価結果の種類毎に表示画面上の表示範囲を割り当てておき、前記画像読み出しステップにて読み出された複数の評価結果に各々対応するキャラクタ画像を、それぞれ表示画面上で割り当てられた表示範囲において対応する評価結果の種類に応じた表示態様で表示する表示制御ステップと
を実行させることを特徴とするプログラム。
【符号の説明】
【００９５】
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  操作部
１４  表示部
２０  センサ部
２０−１〜２０−６  圧力センサ
３０  本体部
１００  チューニング装置
【図１】
2012173474.tif 000003
【図２】
2012173474.tif 000004
【図３】
2012173474.tif 000005
【図４】
2012173474.tif 000006
【図５】
2012173474.tif 000007
【図６】
2012173474.tif 000008
【図７】
2012173474.tif 000009
【図８】
2012173474.tif 000010
【図９】
2012173474.tif 000011
【図１０】
2012173474.tif 000012
【図１１】
2012173474.tif 000013
【図１２】
2012173474.tif 000014
【図１３】
2012173474.tif 000015
【図１４】
2012173474.tif 000016
【図１５】
2012173474.tif 000017
【図１６】
2012173474.tif 000018
【図１７】
2012173474.tif 000019
【図１８】
2012173474.tif 000020
【図１９】
2012173474.tif 000021
【図２０】
2012173474.tif 000022