以下、図面を参照して本発明の実施形態について説明する。
A.構成
図1は、実施の一形態による演奏教習装置100の構成を示すブロック図である。この図において、鍵盤10は押離鍵操作に応じたキーオン/キーオフ信号、鍵番号およびベロシティ等の演奏情報を発生する。LED部11は、鍵盤10の各鍵毎に配設され、指定色で発光するLED(フルカラー発光素子)と、これらLEDを点灯駆動するドライバ(不図示)とから構成され、CPU13から供給される制御信号に従って指定される鍵のLEDを指定色で点滅して次に弾くべき鍵を、点滅から点灯に変更して弾くべき鍵をそれぞれユーザにガイドしたり、ガイドにより点滅(又は点灯)しているLEDの発光色を変化させ、現在ガイドされている音(鍵)がどのような演奏ミスを仕勝ちな音であるかユーザに報知する。
スイッチ部12は、装置パネルに配設される各種操作スイッチを有し、ユーザ操作されるスイッチ種に対応したスイッチイベントを発生する。スイッチ部12に配設される主要なスイッチとしては、例えばガイド実行の可否を選択するガイドスイッチや、ガイドの進行開始/停止を指示するスタート/ストップスイッチ等を備える。
CPU13は、スイッチ部12が発生する各種スイッチイベントに応じて装置各部を制御する。本発明の要旨に係わるCPU13の処理動作については追って詳述する。ROM14には、CPU13にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述するメインルーチン、スイッチ処理、ガイド処理および鍵盤処理を含む。
RAM15は、ワークエリアおよびデータエリアを備える。RAM15のワークエリアには、CPU13の処理に用いられる各種レジスタ・フラグデータが一時記憶される。RAM15のデータエリアには、図2に図示する構成の曲データが記憶される。曲データは、曲を構成する各音を表すデータと、それら各音の中で演奏ミスした音についてはどのような演奏ミスを仕勝ちであるかを表すデータとを含む。曲データは、タイムTIMEとイベントEVENTとが組となって曲進行に対応した時系列のアドレス順に記憶される、いわゆる相対時間方式と呼ばれるデータ形式で表現される。
タイムTIMEは、前イベントからの経過時間で現イベントのタイミングを表す。イベントEVENTは、イベント識別、ノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数を含む。イベント識別は、発音の場合にはノートオンイベントを、消音の場合にノートオフイベントを表す。ノートナンバは、発音(又は消音)する音高を表す。
有効フラグは、どのような演奏ミスを仕勝ちな音であるかを表すデータ(演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)が有効であるか否かを表す。後述するように、イベントEVENTで表される音が所定回数以上のガイドが行われた場合(後述の演奏回数がN回以上に達した場合)に、有効フラグが「1」にセットされる。有効フラグが「1」になると、どのような演奏ミスを仕勝ちな音であるかを表すデータ(演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)が有効になる。
演奏回数は、イベントEVENTで表される音をガイドした回数を表す。タイミングずれ(遅)回数とは、イベントEVENTで表される音を所定の適正タイミング範囲より遅れて押鍵した時にカウントされる回数である。タイミングずれ(早)回数とは、イベントEVENTで表される音を所定の適正タイミング範囲より早く押鍵した時にカウントされる回数である。
押鍵ミス回数とは、イベントEVENTに含まれるノートナンバに対応した鍵のLED点灯によりガイドされた鍵(弾くべき鍵)と異なる鍵を押鍵した時にカウントされる回数である。傾向フラグには、上述した演奏ミス項目(タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)の内、最も回数の多い演奏ミス項目を表すフラグ値がセットされる。具体的には、最も回数の多い演奏ミス項目が「タイミングずれ(遅)回数」ならばフラグ値「1」が、「タイミングずれ(早)回数」ならばフラグ値「2」が、「押鍵ミス回数」ならばフラグ値「3」がセットされる。
再び図1を参照して実施形態の構成について説明を進める。図1において、表示部16は、LCDパネル等から構成され、CPU13から供給される表示制御信号に応じて各種設定状態や動作状態など画面表示する。音源17は、周知の波形メモリ読み出し方式によって構成され、時分割動作する複数の発音チャンネルを備える。この音源17は、各種音色の波形データを記憶しており、これらの内、CPU13から供給される楽音パラメータに応じた波形データを読み出して楽音出力を発生する。サウンドシステム18は、音源17の楽音出力をアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。
B.動作
次に、図3〜図11を参照して上記構成による実施形態の動作について説明する。以下では、最初にメインルーチンの動作を説明し、続いてメインルーチンからコールされる各処理(スイッチ処理、ガイド処理および鍵盤処理)の動作について述べる。
(1)メインルーチンの動作
演奏教習装置100がパワーオンされると、CPU13は図3に図示するメインルーチンを実行してステップSA1に処理を進め、RAM15のワークエリアに格納される各種レジスタやフラグデータをゼロリセット又は初期値セットする他、音源17に対して初期化を指示するイニシャライズを行う。イニシャライズが完了すると、CPU113は、ステップSA2に進み、ガイドスイッチ処理およびスタート/ストップスイッチ処理を含むスイッチ処理を実行する。
ガイドスイッチ処理では、後述するように、ガイドスイッチがオン状態ならば、ガイドフラグGFを「1」にセットしてガイド実行指示状態に設定し、一方、ガイドスイッチがオフ状態であると、ガイドフラグGFおよびスタートフラグSTFをそれぞれゼロリセットしてガイド中止指示状態に設定すると共に、ガイド停止を指示した後、鍵盤10の各鍵に配設されるLEDの全てを消灯させ、さらに曲進行時間を計時するタイマインタラプトを禁止する。
スタート/ストップスイッチ処理では、後述するように、上記ガイドスイッチ処理によりガイド実行指示状態に設定された場合に、スタート/ストップスイッチのオン操作に応じてガイドの進行開始が指示されると、最初のノートオンイベントを含む曲データが見つかるまでRAM15に格納される曲データを先頭から順番に読み出し、その過程で曲データのタイムTIMEが読み出された場合には、そのタイムTIMEを順次レジスタTに加算して最初のノートオンイベントの発音タイミングを算出する。
最初のノートオンイベントを含む曲データのイベントEVENTが見つかると、当該イベントEVENTを構成する各データ(ノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)を読み出し、その中のノートナンバをレジスタNOTEにストアする。そして、有効フラグが「0」ならば、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを所定色(例えば白色)で点滅させてまず最初に弾くべき鍵をユーザにガイドする。
これに対し、有効フラグが「1」ならば、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDの発光色を、傾向フラグの値に応じて変化させる等の発光形態制御によって、最初に弾くべき音がどのような演奏ミスを仕勝ちな音であるかをユーザに報知する。
次いで、ステップSA3では、ガイド処理を実行する。後述するように、ガイド処理では、ガイド実行指示状態(ガイドフラグGFが「1」)であって、かつガイド進行中(スタートフラグSTFが「1」)に、タイマ機能(タイマインタラプト)によってタイマ最小時間がカウントされると、レジスタTの値をデクリメントし、デクリメントされたレジスタTの値が「0」以下となって、ノートオンイベントの発音タイミングに達すると、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを点滅から点灯に変更する。
続いて、ステップSA4では、鍵盤処理を実行する。後述するように、鍵盤処理では、押離鍵操作に応じて楽音を発音/消音させる一方、ガイド進行中であると、曲データ(ノートオンイベントを含むイベントEVENT)に基づくガイドに対して演奏ミスすると、その演奏ミスに該当するイベントEVENT中の演奏ミス項目(押鍵ミス回数、タイミングずれ(早)回数およびタイミングずれ(遅)回数の何れか)と演奏回数とをインクリメントする。
そして、インクリメントした演奏回数がN回以上に達すると、イベントEVENT中の有効フラグを「1」にセットし、どのような演奏ミスを仕勝ちな音であるかを表すデータ(演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)が有効になった旨を表す。
有効フラグが「1」にセットされると、イベントEVENT中の「タイミングずれ(遅)回数」、「タイミングずれ(早)回数」および「押鍵ミス回数」の内から最も回数の多い演奏ミス項目を抽出し、抽出した演奏ミス項目が「タイミングずれ(遅)回数」ならばイベントEVENT中の傾向フラグを「1」に、「タイミングずれ(早)回数」ならばイベントEVENT中の傾向フラグを「2」に、「押鍵ミス回数」ならばイベントEVENT中の傾向フラグを「3」にセットする。
こうして、ガイドに対して誤った押鍵が為され、それに応じてイベントEVENT中の、どのような演奏ミスを仕勝ちな音であるかを表すデータを更新し終えると、次に弾くべき鍵のガイドを行うべく次の曲データ(ノートオンイベントを含むイベントEVENT)からノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)を読み出す。
そして、読み出した有効フラグが「1」ならば、ノートナンバの鍵に配設されるLEDを傾向フラグの値で指定される発光色で点滅させる。例えば傾向フラグが「1」(押鍵するタイミングが遅れるという演奏ミスを仕勝ちな音)ならば赤色点滅、傾向フラグが「2」(押鍵するタイミングが早いという演奏ミスを仕勝ちな音)ならば青色点滅、傾向フラグが「3」(間違った鍵を押鍵するという演奏ミスを仕勝ちな音)ならば黄色点滅させることによって、次に弾くべき鍵をガイドしつつ、どのような演奏ミスを仕勝ちな音であるかをユーザに報知する。
次いで、ステップSA5では、例えば曲データを表示部16に楽譜として表示し、その表示された楽譜において現在ガイドされている音符をブリンク表示させる等の、その他の処理を実行する。以後、上述したステップSA2〜SA5を繰り返し実行する。
(2)スイッチ処理の動作
次に、図4〜図7を参照してスイッチ処理の動作を説明する。上述したメインルーチンのステップSA2(図3参照)を介して実行されるスイッチ処理は、図4に図示するステップSB1のガイドスイッチ処理、ステップSB2のスタート/ストップスイッチ処理およびステップSB3のその他のスイッチ処理から構成される。以下、ガイドスイッチ処理およびスタート/ストップスイッチ処理の各動作について述べる。
<ガイドスイッチ処理の動作>
スイッチ処理のステップSB1(図4参照)を介して本処理が実行されると、CPU13は図5に図示するステップSC1に進み、ガイドスイッチがオン状態であるか否かを判断する。オン状態ならば、判断結果は「YES」になり、ステップSC2に進み、ガイドフラグGFを「1」にセットしてガイド実行指示状態に設定して本処理を終える。
一方、ガイドスイッチがオフ状態であると、上記ステップSC1の判断結果は「NO」になり、ステップSC3に進み、ガイドフラグGFをゼロリセットしてガイド中止指示状態に設定し、続くステップSC4では、スタートフラグSTF(後述する)をゼロリセットしてガイド停止を指示する。そして、ステップSC5では、鍵盤10の各鍵に配設されるLEDの全てを消灯するようLED部11に指示する。この後、ステップSC6に進み、曲進行時間を計時するタイマインタラプトを禁止して本処理を終える。
<スタート/ストップスイッチ処理の動作>
スイッチ処理のステップSB2(図4参照)を介して本処理が実行されると、CPU13は図6に図示するステップSD1に進み、ガイドフラグGFが「1」であるか否かを判断する。ガイドフラグGFが「0」(ガイド中止指示状態)ならば、判断結果は「NO」になり、本処理を終えるが、ガイドフラグGFが「1」(ガイド実行指示状態)であれば、判断結果は「YES」になり、ステップSD2に処理を進める。
ステップSD2では、ガイドの進行開始/停止を指示するスタート/ストップスイッチのオン操作の有無を判断する。スタート/ストップスイッチがオン操作されなければ、判断結果は「NO」になり、本処理を終える。スタート/ストップスイッチがオン操作されると、上記ステップSD2の判断結果が「YES」になり、ステップSD3に進む。ステップSD3では、スタートフラグSTFを反転する。スタートフラグSTFとは、フラグ値「1」の場合にガイドの進行開始を表し、フラグ値「0」の場合にガイドの停止を表すフラグである。また、スタート/ストップスイッチは所謂トグル動作するスイッチであり、オン操作に応じてガイドの進行開始/停止を交互に指示する。
次いで、ステップSD4では、スタート/ストップスイッチのオン操作に応じて反転されたスタートフラグSTFが「1」であるか否かを判断する。反転されたスタートフラグSTFが「0」(ガイドの停止)ならば、判断結果は「NO」になり、ステップSD5に進み、鍵盤10の各鍵に配設されるLEDの内、点灯中(あるいは点滅中)のLEDを消灯するようLED部11に指示する。そして、ステップSD6に進み、曲進行時間を計時するタイマインタラプトを禁止して本処理を終える。
一方、スタート/ストップスイッチのオン操作に応じて反転されたスタートフラグSTFが「1」(ガイドの進行開始)であると、上記ステップSD4の判断結果は「YES」になり、ステップSD7に進み、RAM15のデータエリアに格納される曲データの先頭アドレスを読み出しアドレスADにセットし、続くステップSD8では、レジスタTをゼロリセットする。次いで、ステップSD9では、読み出しアドレスADに応じてRAM15のデータエリアから曲データを読み出す。
そして、ステップSD10では、読み出した曲データがタイムTIME又はイベントEVENTの何れであるかを判断する。読み出した曲データがタイムTIMEであると、ステップSD11に進み、レジスタTにタイムTIMEを加算する。続いて、ステップSD12では、次データであるイベントEVENTの読み出しの為に読み出しアドレスADを歩進させた後、上記ステップSD9に戻る。
歩進された読み出しアドレスADに応じてイベントEVENTが読み出されると、上記ステップSD10を介してステップSD13に進み、読み出したイベントEVENTに含まれるイベント識別を参照して当該イベントEVENTがノートオンイベントであるか否かを判断する。ノートオフイベントであったならば、判断結果は「NO」になり、上述したステップSD12に進み、読み出しアドレスADを歩進させた後、再びステップSD10に処理を戻す。
これに対し、ノートオンイベントならば、上記ステップSD13の判断結果は「YES」になり、ステップSD14に進み、そのノートオンイベントのイベントEVENTを構成する各データ(ノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)を読み出す。この後、図7に図示するステップSD15に進み、上記ステップSD14にて読み出したノートナンバをレジスタNOTEにストアする。
次いで、ステップSD16では、上記ステップSD14にて読み出した有効フラグが「0」であるか否かを判断する。有効フラグが「1」、すなわち上記ステップSD14にて読み出されたイベントEVENTで指定される音が、これまでにN回以上演奏されていると、判断結果は「NO」となり、ステップSD17に進む。ステップSD17では、上記ステップSD14にて読み出されたイベントEVENTに含まれる傾向フラグに基づき、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDの発光形態を制御して本処理を終える。
上記ステップSD17の発光形態制御とは、具体的には傾向フラグが「1」(押鍵するタイミングが遅れるという演奏ミスを仕勝ちな音)の場合には、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDが赤色点滅するようLED部11に指示する。傾向フラグが「2」(押鍵するタイミングが早いという演奏ミスを仕勝ちな音)の場合には、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDが青色点滅するようLED部11に指示する。傾向フラグが「3」(間違った鍵を押鍵するという演奏ミスを仕勝ちな音)の場合には、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDが黄色点滅するようLED部11に指示する。こうすることで曲中の演奏ミス仕勝ちな音や、そこで起こしやすい演奏ミスの内容をユーザに報知し得るようになる。
一方、上記ステップSD14にて読み出されたイベントEVENTで指定される音がこれまでにN回以上演奏されておらず、有効フラグが「0」であると、上記ステップSD16の判断結果は「YES」になり、ステップSD18に進む。ステップSD18では、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを所定色(例えば白色)で点滅するようLED部11に指示する。これにより、まず最初に弾くべき鍵をユーザに案内するガイドが開始される。この後、ステップSD19に進み、タイマインタラプト禁止を解除して本処理を終える。なお、CPU13では、タイマインタラプト禁止解除によりタイマ機能を具現するタイマインタラプト(不図示)をスタートさせ、曲再生テンポに対応したタイマ最小時間(ティック)をカウントし始める。
このように、スタート/ストップスイッチ処理では、ガイド実行指示状態(ガイドフラグGFが「1」)において、スタート/ストップスイッチのオン操作に応じて反転されるスタートフラグSTFが「1」になると、最初のノートオンイベントを含む曲データが見つかるまでRAM15に格納される曲データを先頭から順番に読み出し、その過程で曲データのタイムTIMEが読み出された場合には、そのタイムTIMEを順次レジスタTに加算して最初のノートオンイベントの発音タイミングを算出する。
最初のノートオンイベントを含む曲データ中のイベントEVENTが見つかると、当該イベントEVENT構成する各データ(ノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)を読み出し、その中のノートナンバをレジスタNOTEにストアする。そして、有効フラグが「0」であると、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDが所定色(例えば白色)で点滅させ、まず最初に弾くべき鍵をユーザにガイドする。
これに対し、有効フラグが「1」ならば、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDの発光色を、傾向フラグの値に応じて変化させる発光形態制御によって、最初に弾くべき音がどのような演奏ミスを仕勝ちなのかをユーザに報知する。なお、傾向フラグの値に応じた発光形態制御とは、一例として挙げた点滅発光色変化の他、発光輝度や点滅間隔を異ならせる等、各種バリエーションが可能である。
(3)ガイド処理の動作
次に、図8を参照してガイド処理の動作を説明する。前述したメインルーチンのステップSA3(図3参照)を介して本処理が実行されると、CPU13は図8に図示するステップSE1に進み、ガイドフラグGFが「1」であるか否かを判断する。ガイドフラグGFが「0」(ガイド中止指示状態)ならば、判断結果は「NO」になり、本処理を終えるが、ガイドフラグGFが「1」(ガイド実行指示状態)であると、判断結果は「YES」になり、ステップSE2に進む。
ステップSE2では、スタートフラグSTFが「1」(ガイドの進行開始)であるかどうかを判断する。スタートフラグSTFが「0」(ガイドの停止)ならば、判断結果は「NO」になり、本処理を終えるが、スタートフラグSTFが「1」(ガイドの進行開始)であると、判断結果は「YES」になり、ステップSE3に進む。ステップSE3では、タイマ機能(タイマインタラプト)が曲再生テンポに対応したタイマ最小時間をカウントしたか否かを判断する。
タイマ最小時間をカウントしていなければ、判断結果は「NO」となり、本処理を終えるが、タイマ最小時間をカウントすると、判断結果は「YES」になり、ステップSE4に進む。ステップSE4では、レジスタTの値をデクリメントする。そして、ステップSE5では、デクリメントされたレジスタTの値が「0」以下になったか否か、すなわちノートオンイベントの発音タイミングに達したかどうかを判断する。
ノートオンイベントの発音タイミングに達していなければ、判断結果は「NO」となり、本処理を終えるが、デクリメントされたレジスタTの値が「0」以下となって、ノートオンイベントの発音タイミングに達すると、上記ステップSE5の判断結果は「YES」になり、ステップSE6に進む。そして、ステップSE6では、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを点滅から点灯に変更するようLED部11に指示して本処理を終える。こうしてLEDの点滅から点灯に変更することによって、弾くべき鍵の押鍵タイミングがユーザにガイドされる。
このように、ガイド処理では、ガイド進行中に、タイマ機能(タイマインタラプト)によってタイマ最小時間がカウントされると、レジスタTの値をデクリメントし、デクリメントされたレジスタTの値が「0」以下となって、ノートオンイベントの発音タイミングに達すると、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを点滅から点灯に変更するようLED部11に指示して本処理を終える。
(4)鍵盤処理の動作
次に、図9〜図11を参照して鍵盤処理の動作を説明する。前述したメインルーチンのステップSA4(図3参照)を介して本処理が実行されると、CPU13は図9に図示するステップSF1に進み、鍵盤10の各鍵についてキーオン/キーオフ信号の有無を検出する鍵走査を行い、続くステップSF2では、上記ステップSF1の鍵走査結果に基づき鍵変化を判別する。
押離鍵操作が行われず、鍵変化が生じなければ、ステップSF2において鍵変化無しと判別して本処理を終えるが、押鍵操作に応じて発生するキーオン信号を検出した場合には後述のステップSF3〜SF38を、離鍵操作に応じて発生するキーオフ信号を検出した場合には後述のステップSF39〜SF41を実行する。以下、キーオン信号を検出した場合の動作と、キーオフ信号を検出した場合の動作とに分けて説明を進める。
<キーオン信号を検出した場合>
押鍵操作に応じて発生するキーオン信号を検出すると、ステップSF2を介してステップSF3に進み、押鍵された鍵の鍵番号をレジスタKEYにストアする。以下、レジスタKEYの内容を鍵番号KEYと称す。次いで、ステップSF4では、鍵番号KEYおよびベロシティを含むノートオンイベントを作成し、続くステップSF5では、作成したノートオンイベントに基づき生成した楽音パラメータを音源17に供給する。これにより、音源17は、押鍵された鍵の音高の楽音を発音する。
次に、ステップSF6では、ガイドフラグGFが「1」であるか否かを判断する。ガイドフラグGFが「0」ならば、判断結果は「NO」になり、本処理を終えるが、ガイドフラグGFが「1」であれば、判断結果は「YES」になり、ステップSF7に進む。そして、ステップSF7では、スタートフラグSTFが「1」、すなわちガイド進行中であるかどうかを判断する。ガイド停止中(スタートフラグSTFが「0」)ならば、判断結果は「NO」になり、本処理を終えるが、ガイド進行中であれば、判断結果は「YES」になり、ステップSF8に進む。
ステップSF8では、レジスタNOTEにストアされたノートナンバで表される音高と鍵番号KEYとが同一であるか否か、つまり曲データに従ってガイドされた鍵が押鍵されたかどうかを判断する。ガイドされた鍵とは異なる音高の鍵が押鍵された場合には、判断結果は「NO」になり、ステップSF9に進む。ステップSF9では、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中の押鍵ミス回数(図2参照)をインクリメントした後、後述のステップSF14(図10参照)に処理を進める。
一方、曲データに従ってガイドされた鍵が押鍵された場合には、上記ステップSF8の判断結果が「YES」になり、ステップSF10に進む。ステップSF10では、押鍵時点のレジスタTの値が、タイミングずれ(早)判定条件(0<α1≦T≦α2)を満たすか否かを判断する。なお、定数α1, α2は、ノートオンイベントの発音タイミング(T=0)以前の所定期間を指定する時間値である。
押鍵時点のレジスタTの値が、タイミングずれ(早)判定条件(0<α1≦T≦α2)を満たすと、判断結果は「YES」となり、ステップSF11に進み、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中のタイミングずれ(早)回数(図2参照)をインクリメントした後、後述のステップSF14(図10参照)に処理を進める。
これに対し、押鍵時点のレジスタTの値が、タイミングずれ(早)判定条件(0<α1≦T≦α2)を満たさなければ、上記ステップSF10の判断結果は「NO」になり、ステップSF12に進む。ステップSF12では、押鍵時点のレジスタTの値が、タイミングずれ(遅)判定条件(β1≦T≦β2<0)を満たすか否かを判断する。なお、定数β1, β2は、ノートオンイベントの発音タイミング(T=0)以降の所定期間を指定する時間値である。
押鍵時点のレジスタTの値が、タイミングずれ(遅)判定条件(β1≦T≦β2<0)を満たすと、判断結果は「YES」となり、ステップSF13に進み、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中のタイミングずれ(遅)回数(図2参照)をインクリメントした後、図10に図示するステップSF14に進む。
一方、押鍵時点のレジスタTの値が、タイミングずれ(遅)判定条件(β1≦T≦β2<0)を満たさなければ、上記ステップSF12の判断結果が「NO」となり、図10に図示するステップSF14に進む。そして、ステップSF14では、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中の演奏回数(図2参照)をインクリメントする。
次いで、ステップSF15では、インクリメントした演奏回数がN回以上であるか否かを判断する。インクリメントした演奏回数がN回以上ならば、判断結果は「YES」になり、ステップSF16に進み、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中の有効フラグを「1」にセットする。続いて、ステップSF17では、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中の「タイミングずれ(遅)回数」、「タイミングずれ(早)回数」および「押鍵ミス回数」の内から最も回数の多い演奏ミス項目を抽出する。
そして、ステップSF18〜SF20では、上記ステップSF17において抽出した演奏ミス項目が、「タイミングずれ(遅)回数」、「タイミングずれ(早)回数」および「押鍵ミス回数」の何れに該当するのかを判別する。なお、最も回数の多い演奏ミス項目を特定出来ない場合、例えば全ての演奏ミス項目が同じミス回数だったり演奏ミスが皆無であったりすると、上記ステップSF18〜SF20の各判断結果はいずれも「NO」となり、ステップSF24に進み、レジスタNOTEにストアされたノートナンバを含むイベントEVENT中の有効フラグをゼロリセットした後、図11に図示するステップSF25に進む。
これに対し、最も回数の多い演奏ミス項目が「タイミングずれ(遅)回数」であれば、上記ステップSF18の判断結果が「YES」となり、ステップSF21に進み、傾向フラグを「1」にセットした後、図11に図示するステップSF25に進む。最も回数の多い演奏ミス項目が「タイミングずれ(早)回数」であれば、上記ステップSF19の判断結果が「YES」となり、ステップSF22に進み、傾向フラグを「2」にセットした後、図11に図示するステップSF25に進む。最も回数の多い演奏ミス項目が「押鍵ミス回数」の場合には、上記ステップSF20の判断結果が「YES」となり、ステップSF23に進み、傾向フラグを「3」にセットした後、図11に図示するステップSF25に進む。
さて一方、上述したステップSF14においてインクリメントされた演奏回数がN回数未満であったならば、上記ステップSF15の判断結果は「NO」となり、図11に図示するステップSF25に進む。ステップSF25では、鍵盤10の各鍵に配設されるLEDの内、弾くべき鍵をガイドして点灯中のLEDを消灯するようLED部11に指示する。次いで、ステップSF26では、次の曲データの読み出しを進める為、読み出しアドレスADを歩進させ、続くステップSF27では、歩進された読み出しアドレスADに応じてRAM15のデータエリアから曲データを読み出す。
続いて、ステップSF28では、曲データの有無、つまり上記ステップSF27において曲データを読み出せたか否かを判断する。曲終端まで読み出しを進めていなければ、曲データを読み出せる為、判断結果は「YES」になり、ステップSF29に進む。ステップSF29では、読み出した曲データがタイムTIME又はイベントEVENTの何れであるかを判断する。読み出した曲データがタイムTIMEならば、ステップSF30に進み、レジスタTにタイムTIMEを加算し、続くステップSF31では、次データであるイベントEVENTの読み出しの為に読み出しアドレスADを歩進させた後、上記ステップSF27に処理を戻す。
そして、歩進された読み出しアドレスADに応じてイベントEVENTが読み出されると、上記ステップSF29を介してステップSF32に進み、読み出したイベントEVENTに含まれるイベント識別を参照して当該イベントEVENTがノートオンイベントであるか否かを判断する。ノートオフイベントであったならば、判断結果は「NO」になり、上述したステップSF31に進み、読み出しアドレスADを歩進させた後、上述のステップSF27に戻る。
これに対し、読み出したイベントEVENTがノートオンイベントであると、上記ステップSF32の判断結果が「YES」になり、ステップSF33に進む。ステップSF33では、そのノートオンイベントのイベントEVENTを構成する各データ(ノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)を読み出し、読み出したノートナンバについてはレジスタNOTEにストアし、それ以外はテンポラリレジスタに一時記憶する。
次に、ステップSF34では、ノートオンイベントのイベントEVENTから読み出した有効フラグが「0」であるか否かを判断する。ここで、当該ノートオンイベントのイベントEVENTで指定される音がN回以上演奏されておらず、有効フラグが「0」であったとする。そうすると、判断結果は「YES」になり、ステップSF35に進み、レジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを所定の発光色(例えば白色)で点滅させるようLED部11に指示する。これにより、新たに弾くべき鍵がユーザにガイドされる。
一方、イベントEVENTで指定される音がN回以上演奏され、有効フラグが「1」にセットされていれば、上記ステップSF34の判断結果は「NO」となり、ステップSF36に進み、イベントEVENTに含まれる傾向フラグの値で指定される発光色でレジスタNOTEにストアされたノートナンバの鍵に配設されるLEDを点滅させるようLED部11に指示した後、本処理を終える。
具体的には、傾向フラグが「1」(押鍵するタイミングが遅れるという演奏ミスを仕勝ちな音)ならば赤色点滅、傾向フラグが「2」(押鍵するタイミングが早いという演奏ミスを仕勝ちな音)ならば青色点滅、傾向フラグが「3」(間違った鍵を押鍵するという演奏ミスを仕勝ちな音)ならば黄色点滅させる。このようにして、傾向フラグの値に対応した発光色で弾くべき鍵に配設されるLEDを点滅させると、ガイドしつつ、曲中の演奏ミス仕勝ちな音や、そこで起こしやすい演奏ミスの内容をユーザに報知することが可能になる。
さて一方、曲終端まで読み出しを進め、全ての曲データを読み出し終えると、上述したステップSF28の判断結果が「NO」になり、ステップSF37に進み、鍵盤10の各鍵に配設されるLEDの内、点灯中のLEDを消灯するようLED部11に指示する。次いで、ステップSF38では、スタートフラグSTFをゼロリセットしてガイドを停止させ、続くステップSF39では、曲進行時間を計時するタイマインタラプトを禁止して本処理を終える。
<キーオフ信号を検出した場合>
離鍵操作に応じて発生するキーオフ信号を検出した場合には、ステップSF2(図9参照)を介してステップSF40に進み、離鍵された鍵の鍵番号をレジスタKEYにストアする。そして、ステップSF41では、その鍵番号KEYを含むノートオフイベントを作成し、続くステップSF42では、作成したノートオフイベントに基づき生成した楽音パラメータを音源17に供給する。これにより、音源17は、離鍵された鍵の音高の楽音を消音する。
以上のように、鍵盤処理では、押離鍵操作に応じて楽音を発音/消音させる一方、ガイド進行中であると、曲データ(ノートオンイベントを含むイベントEVENT)に基づくガイドに対して演奏ミスすると、その演奏ミスに該当するイベントEVENT中の演奏ミス項目(押鍵ミス回数、タイミングずれ(早)回数およびタイミングずれ(遅)回数の何れか)と演奏回数とをインクリメントして更新する。更新された演奏回数がN回以上に達すると、イベントEVENT中の有効フラグを「1」にセットし、どのような演奏ミスを仕勝ちな音であるかを表すデータ(演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)が有効になった旨を表す。
有効フラグが「1」にセットされると、イベントEVENT中の「タイミングずれ(遅)回数」、「タイミングずれ(早)回数」および「押鍵ミス回数」の内から最も回数の多い演奏ミス項目を抽出し、抽出した演奏ミス項目が「タイミングずれ(遅)回数」ならばイベントEVENT中の傾向フラグを「1」に、「タイミングずれ(早)回数」ならばイベントEVENT中の傾向フラグを「2」に、「押鍵ミス回数」ならばイベントEVENT中の傾向フラグを「3」にセットする。
こうして、ガイドに対して誤った押鍵が為され、それに応じてイベントEVENT中の、どのような演奏ミスを仕勝ちな音であるかを表すデータを更新し終えると、次に弾くべき鍵をガイドするべく次の曲データ(ノートオンイベントを含むイベントEVENT)からノートナンバ、有効フラグ、演奏回数、傾向フラグ、タイミングずれ(遅)回数、タイミングずれ(早)回数および押鍵ミス回数)を読み出す。
そして、読み出した有効フラグが「1」ならば、ノートナンバの鍵に配設されるLEDを傾向フラグの値で指定される発光色で点滅させる。例えば、傾向フラグが「1」(押鍵するタイミングが遅れるという演奏ミスを仕勝ちな音)ならば赤色点滅、傾向フラグが「2」(押鍵するタイミングが早いという演奏ミスを仕勝ちな音)ならば青色点滅、傾向フラグが「3」(間違った鍵を押鍵するという演奏ミスを仕勝ちな音)ならば黄色点滅させることによって、次に弾くべき鍵をガイドしつつ、どのような演奏ミスを仕勝ちな音であるかをユーザに報知する。
以上説明したように、本実施形態では、曲を構成する各音を表すデータと、それら各音の中で演奏ミスした音についてはどのような演奏ミスを仕勝ちであるかを表すデータ(有効フラグ、演奏回数、傾向フラグ、タイミングずれ(早)回数、タイミングずれ(遅)回数および押鍵ミス回数)とを備えた曲データに基づきユーザに弾くべき鍵をガイドする。このガイドに対してユーザが演奏ミスすると、ガイドに用いた曲データ中の該当する演奏ミス項目(押鍵ミス回数、タイミングずれ(早)回数およびタイミングずれ(遅)回数の何れか)および演奏回数をインクリメントして更新する。
更新された演奏回数がN回以上になった場合には、有効フラグを「1」にセットし、どのような演奏ミスを仕勝ちな音であるかを表すデータが有効になった旨を表す。そして、有効フラグが「1」にセットされると、最も回数の多い演奏ミス項目を抽出する。抽出した演奏ミス項目が「タイミングずれ(遅)回数」ならば、ガイドに用いた曲データ中の傾向フラグを「1」にセットし、「タイミングずれ(早)回数」ならば、ガイドに用いた曲データ中の傾向フラグを「2」にセットし、「押鍵ミス回数」ならば、ガイドに用いた曲データ中の傾向フラグを「3」にセットする。
こうして、演奏ミスの発生に応じて、ガイドに用いた曲データ中の、どのような演奏ミスを仕勝ちな音であるかを表すデータを更新し終えると、次の曲データを読み出し、読み出した曲データ中の有効フラグが「1」となっていれば、当該曲データ中の傾向フラグの値に応じたガイド形態で次に弾くべき鍵をガイドする。例えば、傾向フラグが「1」(押鍵タイミングが遅れがちな音)であると、次に弾くべき鍵に配設されるLEDを赤色点滅させ、傾向フラグが「2」(押鍵タイミングが早めがちの音)であると、次に弾くべき鍵に配設されるLEDを青色点滅させ、傾向フラグが「3」(押鍵し間違いがちな音)であると、次に弾くべき鍵に配設されるLEDを黄色点滅させる。こうすることによって、次に弾くべき鍵をガイドしつつ、どのような演奏ミスを仕勝ちな音であるかをユーザに報知することが出来る。
また、本実施形態では、演奏ミスに応じて更新される演奏回数がN回未満の場合、最も回数の多い演奏ミス項目を抽出する処理や、傾向フラグに基づきどのような演奏ミスを仕勝ちな音であるかをユーザに報知する処理を行わないようにしたので、最も回数の多い演奏ミス項目を見誤る虞が無くなり、この結果、ユーザに誤った報知することを回避し得るという効果も奏する。
さらに、本実施形態では、更新された演奏回数がN回以上になった場合に有効フラグを「1」にセットし、これにより、曲データ中の、どのような演奏ミスを仕勝ちな音であるかを表すデータを有効にして、最も回数の多い演奏ミス項目を抽出する処理や、傾向フラグに基づきどのような演奏ミスを仕勝ちな音であるかをユーザに報知する処理を実行する結果、最も起き易い演奏ミスをユーザに報知できるという効果も得られる。
なお、上述した実施形態では、説明の簡略化を図る為、曲を構成する各音を表すデータと、それら各音の中で演奏ミスした音についてはどのような演奏ミスを仕勝ちであるかを表すデータ(有効フラグ、演奏回数、傾向フラグ、タイミングずれ(早)回数、タイミングずれ(遅)回数および押鍵ミス回数)とを一体化した曲データを用いるようにしたが、それら両データを分離した態様とすることも可能である。
すなわち、どのような演奏ミスを仕勝ちであるかを表すデータ(有効フラグ、演奏回数、傾向フラグ、タイミングずれ(早)回数、タイミングずれ(遅)回数および押鍵ミス回数)を、曲を構成する各音に対応付けた別個のデータベースとして設けておき、ガイド実行時にこのデータベースを参照してどのような演奏ミスを仕勝ちな音であるかをユーザに報知し、一方、演奏ミスが生じた時には、その演奏ミスの内容に従ってデータベース中の対応するデータを更新すればよい。このようにしても、上述の実施形態と同様、曲中の演奏ミス仕勝ちな音や、そこで起こしやすい演奏ミスの内容をユーザに報知して練習効果を高めることができる。
また、本実施形態では、鍵盤10の各鍵に配設されるLEDの発光形態を制御して曲中の演奏ミス仕勝ちな音や、そこで起こしやすい演奏ミスの内容をユーザに報知するようにしたが、これに限らず、例えば鍵盤10の各鍵を示す画像を表示部16に画面表示しておき、その画面表示された鍵画像の表示形態を変化させて曲中の演奏ミス仕勝ちな音や、そこで起こしやすい演奏ミスの内容をユーザに報知する態様としても構わない。また、音声合成された人声音を用いて曲中の演奏ミス仕勝ちな音や、そこで起こしやすい演奏ミスの内容をユーザに音声案内することも可能である。