(57)【要約】【課題】ユーザが評価対象の曲を演奏してその評価を受ける際に、ユーザの緊張を和らげて、無演奏状態に陥るのを回避させる。【解決手段】ＣＰＵ１は、プログラムＲＯＭ３のプログラムに従って、曲メモリ５に記憶された曲データの演奏を評価する際に、演奏すべき音符が演奏されない状態を検出したときは、音源９および発音回路１０によって演奏を支援する声援を出力する。【選択図】        図１
2004252158.tif 000002
【特許請求の範囲】
【請求項１】
演奏対象の曲データの内容に応じて設定された評価対象期間における演奏結果を評価する演奏評価手段と、
前記評価対象期間において演奏すべき音符が演奏されない無演奏状態を検出する無演奏検出手段と、
前記演奏評価手段による評価結果および前記無演奏検出手段によって検出された無演奏状態に対する演奏支援を出力する出力手段と、
を備えたことを特徴とする演奏支援装置。
【請求項２】
前記無演奏検出手段は、所定数の音符の中で演奏された音符数が最小値に達しない状態を無演奏状態として検出することを特徴とする請求項１記載の演奏支援装置。
【請求項３】
前記無演奏検出手段は、前記曲データの所定の時間内において演奏された音符数が最小値に達しない状態を無演奏状態として検出することを特徴とする請求項１記載の演奏支援装置。
【請求項４】
前記無演奏検出手段は、前記曲データに含まれている識別データに基づいて設定された評価対象期間の所定数の音符又は所定の時間内において演奏された音符数が最小値に達しない状態を無演奏状態として検出することを特徴とする請求項１記載の演奏支援装置。
【請求項５】
演奏対象の曲データの内容に応じて設定された評価対象期間における演奏結果を評価する第１のステップと、
前記評価対象期間において演奏すべき音符が演奏されない無演奏状態を検出する第２のステップと、
前記第１のステップによる評価結果および前記第２のステップによって検出された無演奏状態に対する演奏支援を出力する第３のステップと、
を実行することを特徴とする演奏支援処理のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、課題曲の演奏に対する評価および支援を行なう演奏支援装置および演奏支援処理のプログラムに関する。
【０００２】
【従来の技術】
演奏教習の分野ではないが、演奏を評価する観点から類似する従来技術として、カラオケ歌唱を採点する採点機能を備えたカラオケ装置が提案されている。この提案によれば、カラオケ曲の演奏に合わせて歌唱された歌唱音声信号を入力して、この歌唱音声信号を分析して周波数・音量などを割り出し、これをリアルタイムに採点する構成になっている。採点は、カラオケ曲のガイドメロディデータと前記周波数データ・音量データとを比較して、その一致度・相違度に基づいて行なう（例えば、特許文献１参照。）。
【０００３】
【特許文献１】
特開平１０−１６１６７３号公報（段落番号「０００７」）
【０００４】
【発明が解決しようとする課題】
しかしながら、上記特許文献１などの従来の技術においては、カラオケ曲の内容に関係なく、ガイドメロディデータの開始と同時にリアルタイムの採点すなわち評価が始まるので、技量的にも精神的にも最も困難な歌唱開始の部分から採点されるために、歌い出しに失敗したユーザは、最初に低い評価、例えば、「音程が悪い」、「テンポが悪い」、「声が出ていない」のような評価を受けることになる。したがって、その後は、悪い状態を改善できないまま曲が終了する場合が多い。
【０００５】
このことは、カラオケ曲の歌唱に限らず楽器の演奏においても同様である。特に、電子鍵盤楽器において課題曲すなわち評価対象の曲を演奏してその評価を受ける場合には、曲の最初の部分、曲の途中においてテンポの変化や転調があったとき、メロディラインのフレーズが大きく変化したときは、タイミングを取るのが困難であり、特に初心者にとってはスムーズな演奏開始はむしろ稀である。このため、ユーザが緊張し過ぎて演奏できない状態に陥る場合も多い。このような場合に、単に低い評価を行なうだけでは、ユーザが自信を喪失するばかりか、楽器の演奏に対するユーザの意欲や興味を失わせてしまう結果にもなりかねない。
したがって、歌唱力の優劣を争うゲームの場合とは異なり、音楽教育の一環として評価対象の曲を演奏する場合には、上記従来の技術をもってしては、ユーザの演奏を支援することができない。
【０００６】
本発明は、ユーザが評価対象の曲を演奏してその評価を受ける際に、ユーザの緊張を和らげて、無演奏状態に陥るのを回避させることにより、演奏技術の向上を効率的に支援できる演奏支援装置および演奏支援処理のプログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
請求項１に記載の演奏支援装置は、演奏対象の曲データの内容に応じて設定された評価対象期間における演奏結果を評価する演奏評価手段（実施形態においては、図１のＣＰＵ１に相当する）と、評価対象期間において演奏すべき音符が演奏されない無演奏状態を検出する無演奏検出手段（実施形態においては、図１のＣＰＵ１に相当する）と、演奏評価手段による評価結果および無演奏検出手段によって検出された無演奏状態に対する演奏支援を出力する出力手段（実施形態においては、図１のＣＰＵ１に相当する）とを備えた構成になっている。
【０００８】
この場合において、無演奏検出手段は、所定数の音符（実施形態においては、１０個の音符に相当する）の中で演奏された音符数が最小値に達しない状態を無演奏状態として検出するように構成してもよい。
また、この場合において、無演奏検出手段は、曲データの所定の時間内において演奏された音符数が最小値に達しない状態を無演奏状態として検出するように構成してもよい。
また、この場合において、無演奏検出手段は、曲データに含まれている識別データ（実施の形態においては、有効フラグおよび無効フラグに相当する）に基づいて設定された評価対象期間の所定数の音符（実施形態においては、１０個の音符に相当する）又は所定の時間内において演奏された音符数が最小値に達しない状態を無演奏状態として検出するように構成してもよい。
【０００９】
請求項５に記載の演奏支援処理のプログラムは、演奏対象の曲データの内容に応じて設定された評価対象期間における演奏結果を評価する第１のステップと、評価対象期間において演奏すべき音符が演奏されない無演奏状態を検出する第２のステップと、第１のステップによる評価結果および第２のステップによって検出された無演奏状態に対する演奏支援を出力する第３のステップとを実行する構成になっている。上記各ステップは、図１のＣＰＵ１によって実行されるフローチャートの処理機能に相当する。
【００１０】
【発明の実施の形態】
以下、本発明による演奏支援装置の第１の実施形態ないし第３の実施形態について、図を参照して説明する。
図１は、各実施形態における演奏支援装置のシステムの構成を示すブロック図である。この図において、ＣＰＵ１は、システムバス２を介して、プログラムＲＯＭ３、ワークＲＡＭ４、曲メモリ５、鍵盤６、スイッチ部７、表示部８、および音源９に接続され、これら各部との間で、コマンドおよびデータを授受しながら、この装置全体を制御する。
【００１１】
プログラムＲＯＭ３は、ＣＰＵ１によって実行される制御プログラム、演奏支援処理のプログラムなどのアプリケーションプログラム、起動時のイニシャライズにおける初期データなどをあらかじめ記憶している。ワークＲＡＭ４は、プログラムの実行に必要な各種のレジスタやフラグのエリアを持っている。曲メモリ５は、演奏の評価対象である複数の自動演奏曲の曲データを記憶している。鍵盤６は、演奏操作に応じて鍵番号およびベロシティをＣＰＵ１に入力する。スイッチ部７は、曲メモリ５に記憶されている曲を選択するスイッチ、自動演奏を開始又は停止するスタート／ストップスイッチなどで構成されている。
表示部８は、自動演奏曲すなわち評価対象の曲の楽譜や評価結果などを表示する。音源９は、発音回路１０に接続され、ＣＰＵ１の発音指示（ノートオンコマンド）や消音指示（ノートオフコマンド）に応じて、演奏者を支援する声援やその他の音響信号を発生して発音回路１０に出力し又は出力を停止する。発音回路１０は、Ｄ／Ａ変換回路、フィルタ回路、増幅回路、スピーカなどで構成され、音源９から出力される音響信号に応じて楽音や声援を発生する。
なお、図には示していないが、ＣＰＵ１の演奏指示に応じて点灯してガイド表示を行なうＬＥＤが各鍵ごとに設けられている。
【００１２】
次に、第１の実施形態における動作について、図２〜図１１に示すＣＰＵ１のフローチャート、および図１２、図１３に示す図を参照して説明する。
図２（１）は、ＣＰＵ１の演奏支援処理のメインフローチャートであり、図２（２）はタイマインタラプトのフローチャートである。図２（１）において、イニシャライズを行なって（ステップＡ１）、ワークＲＡＭ４の各種のレジスタをクリアし、各種のフラグを「０」にリセットし、タイマインタラプトを禁止する。イニシャライズの後は、スイッチ部７の各スイッチのオンおよびオフを検出するスイッチ処理（ステップＡ２）、曲メモリ５から選択された評価対象の曲の曲データを読み出して演奏指示を行う自動演奏処理（ステップＡ３）、鍵盤６を走査して演奏すなわち押鍵および離鍵の鍵変化を検出する鍵盤処理（ステップＡ４）、評価対象の曲の演奏結果を評価する評価処理（ステップＡ５）、およびその他の処理（ステップＡ６）を繰り返し実行する。
図２（２）において、設定した一定時間ごとの周期でタイマインタラプトが入ると、後述するレジスタＴＩＭＥの値をデクリメントして（ステップＡ７）、メインフローに戻る。
【００１３】
図３は、メインフローにおけるステップＡ２のスイッチ処理のフローチャートである。まず、曲選択処理を実行し（ステップＢ１）、次に、スタート／ストップスイッチ処理を実行し（ステップＢ２）、その他のスイッチ処理を行い（ステップＢ３）、メインフローに戻る。
図４は、スイッチ処理におけるステップＢ１の曲選択スイッチ処理のフローチャートである。スタートフラグＳＴＦが「０（演奏停止）」であるか否かを判別し（ステップＣ１）、このフラグが「１（自動演奏）」である場合にはこのフローを終了するが、このフラグが「０」である場合には、曲選択のスイッチが操作されたか否かを判別する（ステップＣ２）。スイッチの操作がない場合にはこのフローを終了するが、スイッチが操作されたときは、そのスイッチによって指定された選択曲の番号をレジスタＭにストアする（ステップＣ３）。そして、このフローを終了する。
【００１４】
図５は、図３におけるステップＢ３のスタート／ストップスイッチ処理のフローチャートである。スタート／ストップスイッチがオンされたか否かを判別し（ステップＤ１）、オンされない場合にはこのフローを終了するが、オンされたときはフラグＳＴＦの値を反転する（ステップＤ２）。そして、ＳＴＦの値が「１」であるか否かを判別する（ステップＤ３）。ＳＴＦの値が「１」である場合には自動演奏を開始して、レジスタＭの選択曲の番号で指定される曲（Ｍ）の先頭アドレスをレジスタＡＤにストアする（ステップＤ４）。また、曲（Ｍ）のテンポをレジスタＴＥＭＰＯにストアする（ステップＤ５）。
【００１５】
次に、ＡＤにより指定される先頭アドレスの曲データのタイムを読出し（ステップＤ６）、そのタイムをレジスタＴＩＭＥにストアする（ステップＤ７）。そして、ＴＥＭＰＯに基づくタイマインタラプトの周期を設定する（ステップＤ８）。次に、曲の進行に応じて曲開始からの音符をカウントするレジスタＮを「０」にクリアし（ステップＤ９）、演奏結果を評価するための所定数の音符をカウントするレジスタＴを「０」にクリアする（ステップＤ１０）。次に、押鍵をカウントするレジスタｍに「０」をストアして初期化し（ステップＤ１１）、タイマインタラプトの禁止を解除する（ステップＤ１２）。したがって、図２（２）のタイマインタラプトに示したように、ＴＥＭＰＯに基づく周期ごとにＴＩＭＥの値がデクリメントされる。
ステップＤ３において、ＳＴＦが「１」から「０」に反転したときは、自動演奏の停止であるので、タイマインタラプトを禁止して（ステップＤ１２）、鍵盤６のガイド表示をすべて消灯する（ステップＤ１３）。そして、メインフローに戻る。
【００１６】
図６ないし図８は、メインフローにおけるステップＡ３の自動演奏処理のフローチャートである。ＳＴＦが「１」であるか否かを判別し（ステップＥ１）、ＳＴＦが「１」で自動演奏状態である場合には、タイマインタラプトごとにデクリメントされるＴＩＭＥの値が「０」に達したか否かを判別する（ステップＥ２）。ＳＴＦが「０」である場合、又は、ＴＩＭＥの値が「０」に達していない場合には、このフローを終了するが、ＴＩＭＥの値が「０」に達したときは、次の曲データを読み出すために、ＡＤのアドレスを進める（ステップＥ３）。そして、ＡＤのアドレスによる曲データの読出しを行なう（ステップＥ４）。
【００１７】
次に、読出した曲データがＥＮＤすなわち曲の終了でないか否かを判別する（ステップＥ５）。ＥＮＤでない場合には、そのデータがノートオフのイベントであるか否かを判別する（ステップＥ６）。ノートオフのイベントでない場合には、図７のフローにおいて、データがタイムであるか否かを判別し（ステップＥ１３）、タイムである場合には、そのタイムをＴＩＭＥにストアして（ステップＥ１４）、このフローを終了する。
データがタイムでない場合には、ノートオンのイベントであるか否かを判別する（ステップＥ１５）。ノートオンのイベントである場合には、レジスタＮＯＴＥにイベントのノートをストアする（ステップＥ１６）。次に、イベントのノートに対応して鍵盤６のガイド表示を点灯する（ステップＥ１７）。また、ガイドフラグＧＵＩＤＥ  ＯＮＦを「１」にセットする（ステップＥ１８）。そして、押鍵の有無を示すフラグＫＥＹ  ＯＮＦが「１（押鍵）」であるか否かを判別する（ステップＥ１９）。
【００１８】
ＫＥＹ  ＯＮＦが「１」である場合には、鍵盤６が押鍵されている。このため、ＮＯＴＥにストアしたイベントのノートと、後述する図９の鍵盤処理においてレジスタＫＥＹにストアされた押鍵のノートとが一致するか否かを判別する（ステップＥ２０）。一致する場合、すなわちＧＵＩＤＥ  ＯＮＦを「１」にセットしたときには、すでに演奏指示する鍵が押鍵されている場合には、評価値をストアするレジスタＰＯＩＮＴの値にαの値を加算する（ステップＥ２１）。一致しない場合、すなわちガイド表示した鍵とは異なる鍵が押鍵されている場合には、ＰＯＩＮＴの値からαを減算する（ステップＥ２２）。αを加算又は減算した後は、評価フラグＨＹＯＫＡＦを「１」にセットする（ステップＥ２３）。ステップＥ１５において、データがノートオンのイベントでない場合には、その他のイベント処理を行なう（ステップＥ２４）。
ステップＥ２３においてＨＹＯＫＡＦを「１」にセットした後、ステップＥ１９においてＫＥＹ  ＯＮＦが「０」である場合、又は、ステップＥ２４においてその他のイベント処理を行なった後は、図６のステップＥ３に移行してＡＤを進める。
【００１９】
図６のステップＥ４で読出した曲データが、ステップＥ６においてノートオフのイベントであると判別した場合には、イベントのノートに対応する鍵のガイド表示を消灯する（ステップＥ７）。そして、ガイドフラグＧＵＩＤＥ  ＯＮＦを「０」にリセットし（ステップＥ８）、評価を行なう所定期間の１つの音符に対する処理が終わったので、Ｔのノート数をインクリメントする（ステップＥ９）。この後、図８のフローにおいて、Ｔのノート数が基準ノート数に達したか否かを判別する（ステップＥ２５）。
【００２０】
Ｔのノート数が基準ノート数に達したときは、表示や音声などでユーザに対して支援するか否かを示すフラグＳＨＩＥＮＦを「１（支援）」にセットする（ステップＥ２６）。そして、Ｔのノート数を「０」にクリアする（ステップＥ２７）。Ｔをクリアした後、又は、ステップＥ２５においてＴのノート数が基準ノート数に達しない場合には、ＨＹＯＫＡＦが「０」であるか否かを判別し（ステップＥ２８）、「０」である場合には「１」にセットする（ステップＥ２９）。ＨＹＯＫＡＦを「１」にセットした後、又は、ＨＹＯＫＡＦが「１」である場合には、曲の最初からのノート数をストアするレジスタＮのノート数をインクリメントする（ステップＥ３０）。そして、図６のステップＥ３に移行してＡＤのアドレスを進める。
【００２１】
図６のステップＥ５において、読み出したデータがＥＮＤである場合には、ＳＴＦを「０」にリセットして（ステップＥ１０）、鍵盤６のガイド表示をすべて消灯する（ステップＥ１１）。また、タイマインタラプトを禁止する（ステップＥ１２）。そして、このフローを終了してメインフローに戻る。
【００２２】
図９は、メインフローにおけるステップＡ４の鍵盤処理のフローチャートである。このフローでは、鍵走査を行なって（ステップＦ１）、鍵変化があるか否かを判別する（ステップＦ２）。鍵変化がない場合には、このフローを終了してメインフローに戻る。鍵変化がオフからオンに変化した場合、すなわち押鍵がされた場合には、その押鍵のノートをレジスタＫＥＹにストアする（ステップＦ３）。そして、ＫＥＹのノートを元にノートオンコマンドを作成し（ステップＦ４）、そのノートオンコマンドを音源９に送出する（ステップＦ５）。また、押鍵をカウントするレジスタｍの値をインクリメントする（ステップＦ６）。そして、ＫＥＹ  ＯＮＦを「１」にセットする（ステップＦ７）。
【００２３】
次に、ＧＵＩＤＥ  ＯＮＦが「１」であるか否かを判別する（ステップＦ８）。このフラグが「０」である場合にはメインフローに戻るが、このフラグが「１」で押鍵指示の鍵のガイド表示が点灯している場合には、ＫＥＹにストアしたノートとＮＯＴＥにストアした押鍵指示のノートとが一致するか否かを判別する（ステップＦ９）。一致した場合、すなわち、押鍵指示された鍵が正確に押鍵された場合には、ＰＯＩＮＴにαの値を加算する（ステップＦ１０）。一致しなかった場合、すなわち、押鍵指示された鍵とは異なる鍵が押鍵された場合には、ＰＯＩＮＴからαの値を減算する（ステップＦ１１）。αの値を加算又は減算した後は、ＨＹＯＫＡＦを「１」にセットする（ステップＦ１２）。そして、メインフローに戻る。
【００２４】
ステップＦ２において、鍵変化がオンからオフに変化した場合、すなわち、離鍵がされた場合には、その離鍵のノートをＫＥＹにストアする（ステップＦ１３）。そして、ＫＥＹのノートを元にノートオンコマンドを作成し（ステップＦ１４）、そのノートオフコマンドを音源９に送出する（ステップＦ１５）。次に、ＫＥＹＯＮＦを「０」にリセットする（ステップＦ１６）。そして、このフローを終了してメインフローに戻る。
【００２５】
図１０および図１１は、メインフローにおけるステップＡ５の評価処理のフローチャートである。図１０のフローにおいて、まず、ＨＹＯＫＡＦが「１」であるか否かを判別する（ステップＧ１）。このフラグが「１」である場合にはこれを「０」にリセットする（ステップＧ２）。次に、評価すべき所定期間の配列Ｐ（ｎ）を指定するポインタｎを「０」にセットして（ステップＧ３）、Ｐ（ｎ）にＰ（ｎ＋１）を代入して（ステップＧ４）、ｎの値をインクリメントする（ステップＧ５）。そして、ｎ＋１の値が評価ノート数になったか否かを判別する（ステップＧ）。評価ノート数になっていない場合には、ステップＧ４に移行して、ステップＧ６までの処理を繰り返す。
【００２６】
ステップＧ６において、ｎ＋１の値が評価ノート数になった場合には、ＰＯＩＮＴの値をＰ（ｎ）にストアする（ステップＧ７）。ＰＯＩＮＴの値をＰ（ｎ）にストアした後は、フラグＳＨＩＥＮＦが「１」であるか否かを判別し（ステップＧ８）、ＳＨＩＥＮＦが「０」である場合にはこのフローを終了するが、ＳＨＩＥＮＦが「１」である場合には、これをリセットする（ステップＧ９）。
【００２７】
次に、Ｎにストアした曲の最初からの音符数が、あらかじめ設定されている２つの音符数であるＤ１より大きくＤ２より小さい期間にあるか否かを判別する（ステップＧ１０）。すなわち、曲の最初の音符からＤ１までの音符、および、Ｄ２の音符から曲の終了までの範囲を除く期間（評価対象期間）にＮの音符数があるか否かを判別する。Ｎにストアした音符数がこの期間にない場合には、このフローを終了する。
【００２８】
Ｎにストアした音符数がＤ１より大きくＤ２より小さい期間にある場合には、図１１のフローにおいて、配列Ｐ（ｎ）の評価ノート数を指定するポインタｎを「０」にセットする（ステップＧ１１）。次に、評価用レジスタＨＹＯＫＡを「０」にクリアする（ステップＧ１２）。そして、ＨＹＯＫＡにＰ（ｎ）の値を加算する（ステップＧ１３）。次に、ｎの値をインクリメントして（ステップＧ１４）、ｎの値が評価ノート数になったか否かを判別する（ステップＧ１５）。評価ノート数になっていない場合には、ステップＧ１３に移行して、ステップＧ１５までの処理を繰り返す。
【００２９】
ｎの値が評価ノート数になった場合には、レジスタｍの値が「０」であるか否かを判別する（ステップＧ１６）。すなわち、評価ノート数に対応するすべての音符に対して演奏がなされていない無演奏状態であるか否かを判別する。ｍの値が「０」である場合には、評価レベル以外の声援を発生する（ステップＧ１７）。例えば、「弾いてみよう」や「Ｌｅｔ’Ｐｌａｙ」などのように、ユーザの緊張を和らげて、演奏を促すような声援を音源９で生成して、発音回路１０により音声で発生する。このとき、表示部８にも同じように、演奏を促す声援のメッセージを表示してもよい。そして、このフローを終了する。
【００３０】
一方、ｎの値が評価ノート数になった場合に、ｍが「０」でなく１回でも演奏がされた場合には、前回の所定期間における評価データをストアするＦＨＹＯＫＡに評価データがあるか否かを判別する（ステップＧ１８）。ＦＨＹＯＫＡに評価データがある場合には、今回の所定期間の評価データをストアしたＨＹＯＫＡの値がＦＨＹＯＫＡの値以下であるか、又は、ＨＹＯＫＡの値がＦＨＹＯＫＡの値より大きいか否かを判別する（ステップＧ１９）。すなわち、今回の所定期間の評価が前回より低い若しくは同じか、又は、前回より高いかを判別する。
【００３１】
ＨＹＯＫＡの値（今回の評価）がＦＨＹＯＫＡの値（前回の評価）以下である場合には、例えば「もっとがんばれ」などの声援音声を指定する変数ＶＯＩＣＥ１（ＨＹＯＫＡ）のデータをレジスタＬＡＮＫにストアする（ステップＧ２０）。一方、ＨＹＯＫＡの値がＦＨＹＯＫＡの値より大きい場合、又は、ＦＨＹＯＫＡに評価データがない場合には、例えば「いいぞ、その調子」などの声援音声を指定する変数ＶＯＩＣＥ２（ＨＹＯＫＡ）のデータをレジスタＬＡＮＫにストアする（ステップＧ２１）。ＬＡＮＫにいずれかの声援音声のデータをストアした後は、ＬＡＮＫのデータに基づく声援の音声データを発生する（ステップＧ２２）。次に、ｍに「０」をストアして初期化する（ステップＧ２３）。この後、ＨＹＯＫＡの値をＦＨＹＯＫＡにストアして更新し（ステップＧ２４）、次の所定期間の評価に備える。そして、このフローを終了してメインフローに戻る。
【００３２】
図１２は、評価小節経過数に対する評価レベルの具体例を示す図である。この場合は、演奏対象の曲データにおいて、Ｄ１＝２５、Ｄ２＝８に設定されている。すなわち、評価支援有効範囲（評価対象期間）は、曲の最初から２５まで、および、曲の総音符数から８を減算した音符数の範囲を除く、図１２の矢印で示す期間である。また、評価基準ノート数は１０個であり、評価基準ノート数の１０音符数ごとに逐次演奏状態を評価採点し、合計２０音符ごとの評価状況に応じて演奏支援を実施する。すなわち、前回の１０個の音符に対する評価と、今回の１０個の音符に対する評価とを比較する。
【００３３】
したがって、評価ノート数が２０，３０，４０，５０，６０，７０，８０，１００を経過した時点で、その経過以前の２０音符の評価状況が算出される。その評価状況に応じて、表示部８での支援の表示や音源９による音声又は効果音での支援を発音させる。そして、最初の１０個の評価および今回の１０個の評価が前回の１０個より大きい場合には評価がアップし、今回の１０個の評価が前回の１０個より小さい場合には評価がダウンする。
【００３４】
この場合において、評価基準ノート数の１０音符数のすべてに対して演奏がされないときは無演奏状態として検出する。すなわち、図１２において、評価小節経過数が「３」から「４」まで、および、「７」から「８」までのそれぞれの１０音符数のすべてに対して演奏がされないときは、その期間を無演奏状態ＮＰとして検出する。この場合には、ユーザがあまりの緊張のために演奏することができない状態に陥っているので、「もっとがんばれ」などの声援を発生しても効果はない。したがって、「弾いてみよう」、「Ｌｅｔ’Ｐｌａｙ」などのように、ユーザの緊張を和らげて演奏を促す声援を発生する。
【００３５】
図１３は、演奏指示のガイドノートと実際の押鍵のノートとのタイミングの関係を示す図である。例１の場合には、ガイドノートＣ３がオンからオフまでの期間（ガイド表示が点灯している期間）にＣ３の押鍵がなされた場合であり、ポイントアップとして評価される。これは図９のフローにおけるステップＦ９の処理（ＰＯＩＮＴにαを加算）に対応する。
例２の場合には、ノートＣ３の押鍵がなされている期間に、ガイドノートＣ３がオン（ガイド表示が点灯）になった場合であり、ポイントアップとして評価される。これは、図７のフローにおけるステップＥ２１の処理（ＰＯＩＮＴにαを加算）に対応する。
例３の場合には、ガイドノートＣ３がオンからオフまでの期間にＥ３の押鍵がなされた場合である。すなわち、ガイド表示の鍵とは異なる鍵が押鍵された場合であるので、ポイントダウンとして評価される。これは図９のフローにおけるステップＦ１０の処理（ＰＯＩＮＴからαを減算）に対応する。
【００３６】
以上のように、この第１の実施形態によれば、ＣＰＵ１は、演奏対象の曲データの内容に応じて設定された評価対象期間における演奏結果を評価する場合に、その評価対象期間において演奏すべき音符が演奏されない無演奏状態を検出する。そして、評価結果および無演奏状態に対する演奏支援を音源９および発音回路１０並びに表示部８を介して出力するので、ユーザが評価対象の曲を演奏してその評価を受ける際に、ユーザの緊張を和らげて、無演奏状態に陥るのを回避させることにより、演奏技術の向上を効率的に支援することができる。
【００３７】
この場合において、ＣＰＵ１は、評価基準ノート数の１０音符数の中で演奏された音符数が全くない状態を無演奏状態として検出するので、ユーザが緊張し過ぎて演奏できない状態を確実に検出することができる。ただし、評価基準ノート数を２０音符数や３０音符数程度に設定する場合には、演奏された音符数が「２」ないし「３」であっても、ユーザが緊張し過ぎて演奏できない状態であると判断できる。したがって、曲データの所定数の音符の中で演奏された音符数が最小値に達しない状態を無演奏状態として検出するように構成してもよい。
【００３８】
次に、第２の実施形態の動作について、図１４ないし図１６に示すＣＰＵ１のフローチャートを参照して説明する。なお、この第２の実施形態において、図２（１）のメインフロー、図２（２）のタイマインタラプトのフロー、図３のスイッチ処理のフロー、図４の曲選択処理のフロー、図９の鍵盤処理のフロー、図１０および図１１の評価処理のフロー、並びに、自動演奏処理の一部のフローについては、第１の実施形態と同じであるので、その図面および記述を援用して、第１の実施形態と異なる部分のフローについて説明する。
【００３９】
図１４は、図３のスイッチ処理におけるステップＢ３のスタート／ストップスイッチ処理のフローチャートである。まず、スタート／ストップスイッチがオンされたか否かを判別し（ステップＨ１）、オンされない場合にはこのフローを終了するが、オンされたときはスタートフラグＳＴＦの値を反転する（ステップＨ２）。そして、ＳＴＦの値が「１」であるか否かを判別する（ステップＨ３）。ＳＴＦの値が「１」である場合には自動演奏を開始して、レジスタＭの選択曲の番号で指定される曲（Ｍ）の先頭アドレスをレジスタＡＤにストアする（ステップＨ４）。また、曲（Ｍ）のテンポをレジスタＴＥＭＰＯにストアする（ステップＨ５）。
【００４０】
次に、ＡＤによって指定される先頭アドレスの曲データのタイムを読出し（ステップＨ６）、そのタイムをレジスタＴＩＭＥにストアする（ステップＨ７）。そして、ＴＥＭＰＯに基づくタイマインタラプトの周期を設定する（ステップＨ８）。次に、曲の進行に応じて曲開始からの時間をカウントするレジスタＮにタイムをストアし（ステップＨ９）、演奏結果を評価する所定期間における音符をカウントするレジスタＴを「０」にクリアする（ステップＨ１０）。次に、押鍵した音符数をストアするレジスタｍに「０」をストアして初期化する（ステップＨ１１）。そして、タイマインタラプトの禁止を解除する（ステップＨ１２）。
ステップＨ３において、ＳＴＦが「１」から「０」に反転したときは、自動演奏の停止であるので、タイマインタラプトを禁止して（ステップＨ１３）、鍵盤６のガイド表示をすべて消灯する（ステップＨ１４）。そして、メインフローに戻る。
【００４１】
図１５および図１６は、図２のメインフローにおけるステップＡ３の自動演奏処理の一部のフローチャートである。残りのフローチャートは、第１の実施形態において図６に示したものと同じである。図６のフローにおいて読み出した曲データがＥＮＤでもノートオフでもない場合には、図１５のフローにおいて、そのデータがタイムであるか否かを判別し（ステップＪ１）、タイムである場合には、そのタイムをレジスタＴＩＭＥにストアして（ステップＪ２）、Ｎの値にタイムを累算する（ステップＪ３）。この第２の実施形態においては、レジスタＮは曲の開始からの経過時間をストアするので、イベントからイベントまでのタイムをＮの値に累算するのである。ステップＪ３の処理の後は、このフローを終了する。
【００４２】
ステップＪ１において、読み出したデータがタイムでない場合には、そのデータがノートオンのイベントであるか否かを判別する（ステップＪ４）。ノートオンのイベントである場合には、レジスタＮＯＴＥにイベントのノートをストアする（ステップＪ５）。次に、イベントのノートに対応してガイド表示を点灯する（ステップＪ６）。また、ガイドフラグＧＵＩＤＥ  ＯＮＦを「１」にセットする（ステップＪ７）。そして、押鍵の有無を示すフラグＫＥＹ  ＯＮＦが「１（押鍵）」であるか否かを判別する（ステップＪ８）。
【００４３】
ＫＥＹ  ＯＮＦが「１」である場合には、ＮＯＴＥにストアしたイベントのノートと、図９の鍵盤処理においてレジスタＫＥＹにストアした押鍵のノートとが一致するか否かを判別する（ステップＪ９）。一致する場合、すなわちＧＵＩＤＥＯＮＦを「１」にセットしたときに、すでに演奏指示する鍵が押鍵されている場合には、レジスタＰＯＩＮＴの値にαの値を加算する（ステップＪ１０）。ＮＯＴＥにストアしたイベントのノートと、図９の鍵盤処理においてレジスタＫＥＹにストアされた押鍵のノートとが一致しない場合には、評価値をストアするレジスタＰＯＩＮＴの値からαを減算する（ステップＪ１１）。αを加算又は減算した後は、評価フラグＨＹＯＫＡＦを「１」にセットする（ステップＪ１２）。ステップＪ４において、データがノートオンのイベントでない場合には、その他のイベント処理を行なう（ステップＪ１３）。
ステップＪ１２においてＨＹＯＫＡＦを「１」にセットした後、ステップＪ８においてＫＥＹ  ＯＮＦが「０」である場合、又は、ステップＪ１３においてその他のイベント処理を行なった後は、図６のステップＥ３に移行してＡＤのアドレスを進める。
【００４４】
図６のステップＥ９において、Ｔの値をインクリメントした後は、図１６のフローにおいて、Ｔのノート数が基準ノート数に達したか否かを判別する（ステップＪ１３）。Ｔのノート数が基準ノート数に達したときは、ユーザに対して支援するか否かを示すフラグＳＨＩＥＮＦを「１（支援）」にセットする（ステップＪ１４）。そして、Ｔのノート数を「０」にクリアする（ステップＪ１５）。Ｔをクリアした後、又は、ステップＪ１３においてＴのノート数が基準ノート数に達しない場合には、ＨＹＯＫＡＦが「０」であるか否かを判別し（ステップＪ１６）、「０」である場合にはこれを「１」にセットする（ステップＪ１７）。ＨＹＯＫＡＦを「１」にセットした後、又は、ＨＹＯＫＡＦが「１」である場合には、図６のステップＥ３に移行してＡＤのアドレスを進める。
【００４５】
以上のように、この第２の実施形態によれば、ＣＰＵ１は、曲データの所定の時間内において、演奏された音符数が全くない状態を無演奏状態として検出するので、実施の形態１の場合と同様に、ユーザが緊張し過ぎて演奏できない状態を確実に検出することができる。ただし、評価対象となる時間範囲を大きく設定する場合には、演奏された音符数が「２」ないし「３」程度であっても、ユーザが緊張し過ぎて演奏できない状態であると判断できる。したがって、曲データの所定の時間内において、演奏された音符数が最小値に達しない状態を無演奏状態として検出するように構成してもよい。
【００４６】
次に、第３の実施形態の動作について、図１７ないし図１９に示すＣＰＵ１のフローチャートおよび図２０を参照して説明する。なお、この第３の実施形態において、図２（１）のメインフロー、図２（２）のタイマインタラプトのフロー、図３のスイッチ処理のフロー、図４の曲選択処理のフロー、図９の鍵盤処理のフロー、並びに、自動演奏処理の一部のフロー、および、評価処理の一部のフローについては、第１の実施形態と同じであるので、その図面および記述を援用して、第１の実施形態と異なる部分のフローについて説明する。
【００４７】
図１７は、図３のスイッチ処理におけるステップＢ３のスタート／ストップスイッチ処理のフローチャートである。まず、スタート／ストップスイッチがオンされたか否かを判別し（ステップＫ１）、オンされない場合にはこのフローを終了するが、オンされたときはスタートフラグＳＴＦの値を反転する（ステップＫ２）。そして、ＳＴＦの値が「１」であるか否かを判別する（ステップＫ３）。ＳＴＦの値が「１」である場合には自動演奏を開始して、レジスタＭの選択曲の番号で指定される曲（Ｍ）の先頭アドレスをレジスタＡＤにストアする（ステップＫ４）。また、曲（Ｍ）のテンポをレジスタＴＥＭＰＯにストアする（ステップＫ５）。
【００４８】
次に、ＡＤによって指定される先頭アドレスの曲データのタイムを読出し（ステップＫ６）、そのタイムをレジスタＴＩＭＥにストアする（ステップＫ７）。そして、ＴＥＭＰＯに基づくタイマインタラプトの周期を設定する（ステップＫ８）。次に、演奏結果を評価する所定期間における音符をカウントするレジスタＴを「０」にクリアし（ステップＫ９）、押鍵した音符数を記憶するレジスタｍに「０」をストアして初期化する（ステップＫ１０）。次に、タイマインタラプトの禁止を解除する（ステップＫ１１）。そして、メインフローに戻る。
ステップＫ３において、ＳＴＦが「１」から「０」に反転したときは、自動演奏の停止であるので、タイマインタラプトを禁止して（ステップＫ１２）、鍵盤６のガイド表示をすべて消灯する（ステップＫ１３）。そして、メインフローに戻る。
【００４９】
図１８は、図２のメインフローにおけるステップＡ３の自動演奏処理の一部のフローチャートである。残りのフローチャートは、第１の実施形態において示した図６、および、第２の実施形態において示した図１６と同じである。図６のフローにおいて読み出した曲データがＥＮＤでもノートオフでもない場合には、図１８のフローにおいて、データがタイムであるか否かを判別し（ステップＬ１）、タイムである場合には、そのタイムをレジスタＴＩＭＥにストアする（ステップＬ２）。そして、このフローを終了する。
【００５０】
データがタイムでない場合には、ノートオンのイベントであるか否かを判別する（ステップＬ３）。ノートオンのイベントである場合には、レジスタＮＯＴＥにイベントのノートをストアする（ステップＬ４）。次に、イベントのノートに対応して鍵盤６のガイド表示を点灯する（ステップＬ５）。また、ガイドフラグＧＵＩＤＥ  ＯＮＦを「１」にセットする（ステップＬ６）。そして、押鍵の有無を示すフラグＫＥＹ  ＯＮＦが「１（押鍵）」であるか否かを判別する（ステップＬ７）。
【００５１】
ＫＥＹ  ＯＮＦが「１」である場合には、鍵盤６が押鍵されている。この場合には、ＮＯＴＥにストアしたイベントのノートと、図９の鍵盤処理においてレジスタＫＥＹにストアした押鍵のノートとが一致するか否かを判別する（ステップＬ８）。一致する場合、すなわちＧＵＩＤＥ  ＯＮＦを「１」にセットしたときに、すでに演奏指示する鍵が押鍵されている場合には、レジスタＰＯＩＮＴの値にαの値を加算する（ステップＬ９）。ＮＯＴＥにストアしたイベントのノートと、図９の鍵盤処理においてレジスタＫＥＹにストアされた押鍵のノートとが一致しない場合には、ガイド表示を点灯した鍵とは異なる鍵が押鍵された場合であるので、ＰＯＩＮＴの値からαを減算する（ステップＬ１０）。αを加算又は減算した後は、評価フラグＨＹＯＫＡＦを「１」にセットする（ステップＬ１１）。
【００５２】
ステップＬ３において、データがノートオンのイベントでない場合には、データが有効フラグであるか否かを判別する（ステップＬ１２）。有効フラグである場合には、フラグＹＵＫＯＦを「１」にセットする（ステップＬ１３）。データが有効フラグでない場合には、無効フラグであるか否かを判別する（ステップＬ１４）。無効フラグである場合には、ＹＵＫＯＦを「０」にリセットする（ステップＬ１５）。データが有効フラグおよび無効フラグでない場合には、その他のイベント処理を行なう（ステップＬ１６）。
【００５３】
ステップＬ１１においてＨＹＯＫＡＦを「１」にセットした後、ステップＬ７においてＫＥＹ  ＯＮＦが「０」である場合、ステップＬ１３若しくはＬ１５においてＹＵＫＯＦを「１」若しくは「０」にセットした後、又は、ステップＬ１６においてその他のイベント処理を行なった後は、図６のステップＥ３に移行してＡＤのアドレスを進める。
なお、図６のステップＥ９において、Ｔの値をインクリメントした後は、第２の実施形態における図１６に示したフローを実行する。
【００５４】
図１９は、メインフローにおけるステップＡ５の評価処理のフローチャートである。図１９のフローにおいて、まず、ＨＹＯＫＡＦが「１」であるか否かを判別する（ステップＭ１）。このフラグが「１」である場合にはこれを「０」にリセットする（ステップＭ２）。次に、評価すべき所定期間の配列Ｐ（ｎ）を指定するポインタｎを「０」にセットして（ステップＭ３）、Ｐ（ｎ）にＰ（ｎ＋１）を代入して（ステップＭ４）、ｎの値をインクリメントする（ステップＭ５）。そして、ｎ＋１の値が評価ノート数になったか否かを判別する（ステップＭ６）。評価ノート数になっていない場合には、ステップＭ４に移行して、ステップＭ６までの処理を繰り返す。
【００５５】
ステップＭ６において、ｎ＋１の値が評価ノート数になった場合には、ＰＯＩＮＴの値をＰ（ｎ）にストアする（ステップＭ７）。ＰＯＩＮＴの値をＰ（ｎ）にストアした後は、フラグＳＨＩＥＮＦが「１」であるか否かを判別し（ステップＭ８）、フラグが「０」である場合にはこのフローを終了するが、フラグが「１」である場合には、これをリセットする（ステップＭ９）。次に、フラグＹＵＫＯＦが「１」であるか否かを判別する（ステップＭ１０）。このフラグが「０」である場合にはこのフローを終了するが、このフラグが「１」で、現在演奏している曲データの位置が、評価支援有効範囲すなわち評価対象期間である場合には、第１の実施形態における図１１のフローに移行して、演奏評価処理を行なう。
【００５６】
図２０は、評価小節経過数に対する評価レベルの具体例を示す図である。この場合は、演奏対象の曲データの中に有効フラグのデータおよび無効フラグのデータが挿入されている。そして、有効フラグから無効フラグまでの期間が評価支援有効範囲すなわち評価対象期間として設定される。
【００５７】
この場合において、有効フラグから無効フラグまでの期間において、評価基準ノート数の１０音符数のすべてに対して演奏がされないときは無演奏状態として検出する。あるいは、有効フラグから無効フラグまでの期間において、所定の時間内において１回も演奏がされないときは無演奏状態として検出する。すなわち、図２０において、評価小節経過数が「３」から「４」まで、および、「７」から「８」までのそれぞれの１０音符数のすべてに対して演奏がされないときは、その期間を無演奏状態ＮＰとして検出する。この場合には、ユーザがあまりの緊張のために演奏することができない状態に陥っているので、「弾いてみよう」、「Ｌｅｔ’Ｐｌａｙ」などのように、ユーザの緊張を和らげて演奏を促す声援を発生する。
【００５８】
さらにこの場合において、演奏評価よりも、ユーザの緊張を和らげて演奏を支援するほうに重点をおくとすれば、ユーザが緊張して演奏できない曲データの部分を推定して、その部分を含む範囲を評価対象期間として設定し、有効フラグおよび無効フラグの位置を設定してもよい。例えば、曲の最初の部分、曲の途中においてテンポの変化や転調がある部分、メロディラインのフレーズが大きく変化する部分を含む範囲を評価対象期間として設定してもよい。
【００５９】
以上のように、この第３の実施形態によれば、ＣＰＵ１は、曲データに含まれている有効フラグおよび無効フラグに基づいて設定された評価対象期間の所定の区間（所定数の音符又は所定の時間内の区間）において、演奏された音符数が全くない状態を無演奏状態として検出するので、実施の形態１の場合と同様に、ユーザが緊張し過ぎて演奏できない状態を確実に検出することができる。この場合にも、その区間が広い範囲である場合には、演奏された音符数が「２」ないし「３」程度であっても、ユーザが緊張し過ぎて演奏できない状態であると判断できる。したがって、その区間において演奏された音符数が最小値に達しない状態を無演奏状態として検出するように構成してもよい。
【００６０】
なお、上記各実施形態においては、図１のプログラムＲＯＭ３に予め記憶されている演奏支援処理のプログラムをＣＰＵ１によって実行する演奏支援装置について説明したが、ＦＤ（フレキシブルディスク）、ＣＤ−ＲＯＭなどの外部記憶媒体に記憶されている演奏支援処理のプログラムや、インターネットなどの通信網を介してダウンロードされる演奏支援処理のプログラムを、パソコンなどの汎用の情報処理装置にインストールして実行することも可能である。この場合には、プログラムの発明を構成する。
【００６１】
すなわち、本発明による演奏支援処理のプログラムは、演奏対象の曲データの内容に応じて設定された評価対象期間における演奏結果を評価する第１のステップと、評価対象期間において演奏すべき音符が演奏されない無演奏状態を検出する第２のステップと、第１のステップによる評価結果および第２のステップによって検出された無演奏状態に対する演奏支援を出力する第３のステップとを実行する。
【００６２】
【発明の効果】
本発明によれば、演奏すべき音符が演奏されない無演奏状態を検出したときは、ユーザに対する演奏支援を出力するので、ユーザが評価対象の曲を演奏してその評価を受ける際に、ユーザの緊張を和らげて、無演奏状態に陥るのを回避させることにより、演奏技術の向上を効率的に支援できるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の各実施形態における演奏支援装置の構成を示すブロック図。
【図２】第１の実施形態におけるＣＰＵの演奏評価処理のメインフローチャート。
【図３】第１の実施形態におけるスイッチ処理のフローチャート。
【図４】第１の実施形態における曲選択スイッチ処理のフローチャート。
【図５】第１の実施形態におけるスタート／ストップスイッチ処理のフローチャート。
【図６】第１の実施形態における自動演奏処理のフローチャート。
【図７】図６に続く自動演奏処理のフローチャート。
【図８】図６に続く自動演奏処理のフローチャート。
【図９】第１の実施形態における鍵盤処理のフローチャート。
【図１０】第１の実施形態における評価処理のフローチャート。
【図１１】図１０に続く評価処理のフローチャート。
【図１２】第１の実施形態における評価小節経過数に対する評価レベルの例を示す図。
【図１３】第１の実施形態におけるガイドノートおよび押鍵ノートのタイミング図。
【図１４】第２の実施形態におけるスタート／ストップスイッチ処理のフローチャート。
【図１５】第２の実施形態における自動演奏処理の一部のフローチャート。
【図１６】第２の実施形態における自動演奏処理の一部のフローチャート。
【図１７】第３の実施形態におけるスタート／ストップスイッチ処理のフローチャート。
【図１８】第３の実施形態における自動演奏処理の一部のフローチャート。
【図１９】第３の実施形態における評価処理の一部のフローチャート。
【図２０】第３の実施形態における評価小節経過数に対する評価レベルの具体例を示す図。
【符号の説明】
１  ＣＰＵ
３  プログラムＲＯＭ
４  ワークＲＡＭ
５  曲メモリ
６  鍵盤
７  スイッチ部
８  表示部
９  音源
１０  発音回路
【図１】
2004252158.tif 000003
【図２】
2004252158.tif 000004
【図３】
2004252158.tif 000005
【図４】
2004252158.tif 000006
【図５】
2004252158.tif 000007
【図６】
2004252158.tif 000008
【図７】
2004252158.tif 000009
【図８】
2004252158.tif 000010
【図９】
2004252158.tif 000011
【図１０】
2004252158.tif 000012
【図１１】
2004252158.tif 000013
【図１２】
2004252158.tif 000014
【図１３】
2004252158.tif 000015
【図１４】
2004252158.tif 000016
【図１５】
2004252158.tif 000017
【図１６】
2004252158.tif 000018
【図１７】
2004252158.tif 000019
【図１８】
2004252158.tif 000020
【図１９】
2004252158.tif 000021
【図２０】
2004252158.tif 000022