(57)【要約】【課題】  ユーザ自身が思っているよりも練習の成果が向上していることを強調することによって、初心者の練習意欲を長続きさせる。【解決手段】  ＣＰＵ１は、練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類して、分類した各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、基準レベルに達したときはそのグループの全てのフレーズを合格フレーズとする。そして、合格フレーズ数と練習曲の全てのフレーズ数との比率をその練習曲の達成度として評価する。【選択図】  図１
2006350154.tif 000002
【特許請求の範囲】
【請求項１】
練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類するフレーズ分類手段と、
前記グループ分類手段によって分類された各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、当該基準レベルに達したときは当該グループの全てのフレーズを合格フレーズとする演奏判定手段と、
前記演奏判定手段によって判定された合格フレーズ数と前記練習曲の全てのフレーズ数との比率を当該練習曲の達成度として評価する練習評価手段と、
を備えた演奏練習装置。
【請求項２】
前記フレーズ分類手段によって分類された各グループをフレーズ数が多い順に演奏をガイドする演奏ガイド手段をさらに備えたことを特徴とする請求項１に記載の演奏練習装置。
【請求項３】
既に演奏が行われた練習曲の合格フレーズと同一のフレーズが他の練習曲に存在するか否かを検索し、当該同一のフレーズが存在する場合には当該他の練習曲における同一のフレーズを合格フレーズとするフレーズ検索手段をさらに備えたことを特徴とする請求項１に記載の演奏練習装置。
【請求項４】
任意の練習曲が選択されたときに当該練習曲の中に合格フレーズが存在する場合には、所定の表示手段に前記練習曲の音符を表示する際に当該合格フレーズの音符を強調して表示する表示制御手段をさらに備えたことを特徴とする請求項１に記載の演奏練習装置。
【請求項５】
練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類するステップＡと、
前記ステップＡによって分類された各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、当該基準レベルに達したときは当該グループの全てのフレーズを合格フレーズとするステップＢと、
前記ステップＢによって判定された合格フレーズ数と前記練習曲の全てのフレーズ数との比率を当該練習曲の達成度として評価するステップＣと、
をコンピュータに実行させる演奏練習処理のプログラム。
【請求項６】
前記ステップＡによって分類された各グループをフレーズ数が多い順に演奏をガイドするステップＤをさらに有することを特徴とする請求項５に記載の演奏練習処理のプログラム。
【請求項７】
既に演奏が行われた練習曲の合格フレーズと同一のフレーズが他の練習曲に存在するか否かを検索し、当該同一のフレーズが存在する場合には当該他の練習曲における同一のフレーズを合格フレーズとするステップＥをさらに有することを特徴とする請求項に記載の演奏練習処理のプログラム。
【請求項８】
任意の練習曲が選択されたときに当該練習曲の中に合格フレーズが存在する場合には、所定の表示手段に前記練習曲の音符を表示する際に当該合格フレーズの音符を強調して表示するステップＦをさらに有することを特徴とする請求項５に記載の演奏練習処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏練習装置および演奏練習処理のプログラムに関し、特に、練習曲の演奏が正しい演奏であるかどうかを判定する機能を有する演奏練習装置および演奏練習処理のプログラムに関するものである。
【背景技術】
【０００２】
鍵盤を備えた電子楽器の中には、鍵盤にＬＥＤなどの発光素子を設けて演奏をガイドする機能を具備したものがある。このガイド機能によって初心者のユーザにも簡単なメロディの曲を演奏することができる。しかしながら、ある程度複雑な曲になると演奏を習得するまでに時間がかかる。特に曲の最初の段階で演奏がうまくできなくて、途中で投げ出してしまう傾向が強い。すなわち、発光素子を設けて演奏をガイドするだけでは、必ずしも初心者の練習意欲を長続きさせることにはつながらない。その大きな理由として、ユーザが満足できるような演奏の成果がなかなか得られないことが挙げられる。
【０００３】
一方、相当に長い曲であっても同じフレーズの音符列が繰り返されることが多いので、同じようなフレーズをまとめて把握できるような音符列の表示を行って、楽譜の特徴をユーザが把握できるような提案はいくつかなされている。
ある提案における電子楽譜の分析プログラムの発明は、楽曲全体のイメージを視覚的に把握でき、演奏の達成度が短期に向上し得るために、電子楽譜データの音符列の差分情報の中から、ユーザによって指定された構成単位の音符列の差分情報と所定の類似度の差分情報を有する音符列を抽出して、その抽出した音符列とそれ以外の音符とを視覚的に識別可能な付属情報を付与して表示する構成になっている。この場合において、指定された音符列に対して、同じ音数で、かつ同じ差分情報の「順行」する音符列、および、指定された音符列に対して、同じ音数で、かつ差分情報のそれぞれの値の正負が逆になった「反行」する音符列を色分けして表示する。（特許文献１参照）
また、他の提案におけるパターンごとに色分けされた楽譜の発明は、鍵盤楽器演奏者が、初級上級を問わず、従来に比べて読譜が容易になるように、ひと目で理解できるように、音符の繰り返しパターンをグループ化し、他の音符群と区別化した楽譜を提供する構成になっている。（特許文献２参照）
【特許文献１】特開２００３−２６３１５４号公報
【特許文献２】特開２００５−０３１６１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１のように、楽曲全体のイメージを視覚的に把握するために、例えば、図８のようにディスプレイに表示されたバッハのインベンションの楽譜の中で、演奏の未熟なユーザが構成単位の音符列を指定することは極めて困難であり、初心者の練習意欲を長続きさせるような効果は得られない。また、上記特許文献２のように、音符の繰り返しパターンをグループ化して表示しただけでは、初心者の練習意欲を長続きさせるような効果は得られない。
本発明は、このような従来の課題を解決するためのものであり、相当に長い曲であっても同じフレーズの音符列が繰り返されることが多いという事実に基づいて、ユーザ自身が思っているよりも練習の成果が向上していることを明確に示すことによって、初心者の練習意欲を長続きさせるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に記載の演奏練習装置は、練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類するフレーズ分類手段（実施形態においては、図１のＣＰＵ１の機能に相当する）と、グループ分類手段によって分類された各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、当該基準レベルに達したときは当該グループの全てのフレーズを合格フレーズとする演奏判定手段（実施形態においては、図１のＣＰＵ１の機能に相当する）と、演奏判定手段によって判定された合格フレーズ数と練習曲の全てのフレーズ数との比率を当該練習曲の達成度として評価する練習評価手段（実施形態においては、図１のＣＰＵ１の機能に相当する）と、を備えた構成になっている。
【０００６】
請求項１の演奏練習装置において、請求項２に記載したように、フレーズ分類手段によって分類された各グループをフレーズ数が多い順に演奏をガイドする演奏ガイド手段（実施形態においては、図１のＣＰＵ１の機能に相当する）をさらに備えた構成にしてもよい。
【０００７】
請求項１の演奏練習装置において、請求項３に記載したように、既に演奏が行われた練習曲の合格フレーズと同一のフレーズが他の練習曲に存在するか否かを検索し、当該同一のフレーズが存在する場合には当該他の練習曲における同一のフレーズを合格フレーズとするフレーズ検索手段（実施形態においては、図１のＣＰＵ１の機能に相当する）をさらに備えた構成にしてもよい。
【０００８】
請求項１の演奏練習装置において、請求項４に記載したように、任意の練習曲が選択されたときに当該練習曲の中に合格フレーズが存在する場合には、所定の表示手段（実施形態においては、図１の表示部６に相当する）に練習曲の音符を表示する際に当該合格フレーズの音符を強調して表示（実施形態においては、色分けして表示）する表示制御手段（実施形態においては、図１のＣＰＵ１の機能に相当する）をさらに備えた構成にしてもよい。
【０００９】
請求項５に記載の演奏練習処理のプログラムは、練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類するステップＡと、ステップＡによって分類された各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、当該基準レベルに達したときは当該グループの全てのフレーズを合格フレーズとするステップＢと、ステップＢによって判定された合格フレーズ数と練習曲の全てのフレーズ数との比率を当該練習曲の達成度として評価するステップＣと、をコンピュータに実行させる構成になっている。
【００１０】
請求項５の演奏練習処理のプログラムにおいて、請求項６に記載したように、ステップＡによって分類された各グループをフレーズ数が多い順に演奏をガイドするステップＤをさらに有するような構成にしてもよい。
【００１１】
請求項５の演奏練習処理のプログラムにおいて、請求項７に記載したように、既に演奏が行われた練習曲の合格フレーズと同一のフレーズが他の練習曲に存在するか否かを検索し、当該同一のフレーズが存在する場合には当該他の練習曲における同一のフレーズを合格フレーズとするステップＥをさらに有するような構成にしてもよい。
【００１２】
請求項５の演奏練習処理のプログラムにおいて、請求項８に記載したように、任意の練習曲が選択されたときに当該練習曲の中に合格フレーズが存在する場合には、所定の表示手段（実施形態においては、図１の表示部６に相当する）に練習曲の音符を表示する際に当該合格フレーズの音符を強調して表示（実施形態においては、色分けして表示）するステップＦをさらに有するような構成にしてもよい。
【発明の効果】
【００１３】
本発明の演奏練習装置および演奏練習処理のプログラムによれば、ユーザ自身が思っているよりも練習の成果が向上していることを強調することによって、初心者の練習意欲を長続きさせるという効果が得られる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明による演奏練習装置の実施形態について、鍵盤を演奏する演奏システムを例に採って図を参照して説明する。
図１は、実施形態における演奏システムの構成を示すブロック図である。ＣＰＵ１は、システムバス２を介して、ＲＯＭ３、ＲＡＭ４、操作部５、表示部６、ＭＩＤＩ  Ｉ／Ｆ（インターフェース）７、および曲メモリ８に接続され、これら各部との間でコマンドおよびデータの授受を行ってこのシステムを制御する。ＭＩＤＩ  Ｉ／Ｆ７には、鍵盤装置などの電子楽器９が接続されている。
【００１５】
ＲＯＭ３は、ＣＰＵ１によって実行される演奏練習処理のプログラムやその他の制御プログラム、および、電源スイッチがオンされた際のイニシャライズにおける初期データなどをあらかじめ記憶している。ＲＡＭ４は、ＣＰＵ１のワークエリアであり、練習曲の曲データのほか、ＣＰＵ１によって処理されるデータをストアするレジスタ、フラグ、ポインタ（変数）のエリアが設けられている。操作部５は、モードスイッチ、曲選択スイッチ、スタートスイッチ、ストップスイッチ、達成率スイッチ、音色設定スイッチなどのスイッチ群で構成され、各スイッチの操作に応じて対応するコマンドをＣＰＵ１に入力する。表示部６は、ＣＰＵ１の表示制御に応じて、練習曲の選択画面、練習曲の曲名や楽譜の画面を表示する。ＭＩＤＩ  Ｉ／Ｆ７は、電子楽器９の演奏に応じた演奏データをシステムバス２に入力するとともに、電子楽器９が外部のＭＩＤＩ機器から受信した曲データをシステムバス２に入力する。曲メモリ８は、電子楽器９によってシステムバス２に入力された演奏練習用の複数の曲データを記憶している。なお、図には示していないが、電子楽器９の鍵盤には練習曲の演奏をガイドするためのＬＥＤ（発光ダイオード）が設けられており、曲メモリ８からＲＡＭ４に読み出した練習曲が選択された場合には、ＣＰＵ１の演奏ガイド処理に応じて押鍵すべき鍵のＬＥＤが点灯する。
【００１６】
図２は、曲メモリ８から読み込んだ複数の曲データに対する編集データを記憶するＲＡＭ４のエリアを示す図である。編集データは曲メモリ８から読み出した曲データｄ１、および、ＲＯＭ３から読み出した色データｄ２で構成されている。各曲データｄ１は、データ本体およびフレーズ（０）〜フレーズ（ｎ）からなるフレーズデータとともに、後述する編集処理によって、カウンタレジスタの配列であるＣＯＵＮＴ（０）〜ＣＯＵＮＴ（Ｍ）および順位レジスタの配列であるＪＵＮＩ（０）〜ＪＵＮＩ（Ｌ）で構成される。各フレーズ（  ）は、フレーズの分類の番号を示すＮＯ、そのフレーズのスタートアドレス（ｓｔａｒｔ）およびエンドアドレス（ｅｎｄ）、演奏結果を示すフラグＯＫで構成される。色データｄ２は、楽譜表示用の異なる色のｃｏｌｏｒ［０］〜ｃｏｌｏｒ［Ｌ］で構成される。
【００１７】
次に、図１の電子鍵盤楽器の動作について、図３ないし図１９に示すＣＰＵ１のフローチャートを参照して説明する。
図３はＣＰＵ１のメインルーチンのフローチャートである。まず、所定のイニシャライズ（ステップＳＡ１）の後、モードが演奏モードであるか編集モードであるかを判別する（ステップＳＡ２）。編集モードの場合には編集処理を実行し（ステップＳＡ３）、演奏モードである場合には演奏処理を実行する（ステップＳＡ４）。編集処理又は演奏処理の後、操作部６によってモード変更操作がされたか否かを判別し（ステップＳ５）、モード変更操作がされたときはモード変更処理を行う（ステップＳＡ６）。モード変更処理の後、又は、モード変更操作がされない場合には、ステップＳＡ２に移行してモードを判別する。
【００１８】
図４は、図３のメインルーチンにおけるステップＳＡ３の編集処理のフローチャートである。編集処理では、曲選択処理（ステップＳＢ１）、演奏順序設定処理（ステップＳＢ２）、表示処理（ステップＳＢ３）、達成率生成処理（ステップＳＢ４）、消去処理（ステップＳＢ５）を行って、メインルーチンに戻る。
図５は、編集処理におけるステップＳＢ１の演奏順序設定処理のフローチャートである。曲選択スイッチがオンされたか否かを判別し（ステップＳＣ１）、このスイッチがオンされたときは、表示部６に曲選択画面を表示する（ステップＳＣ２）。すなわち、曲メモリ８からＲＡＭ４に読み出されている複数の曲名のリストを表示する。次に、操作部５から曲選択の操作がされたか否かを判別する（ステップＳＣ３）。曲選択の操作がされたときは、その選択された曲のアドレスを指定し（ステップＳＣ４）、その曲の楽譜を表示する（ステップＳＣ５）。そして、図４の編集処理のフローチャートに戻る。
【００１９】
図６は、編集処理におけるステップＳＢ２の演奏順序設定処理のフローチャートである。演奏順序設定のスイッチがオンされたか否かを判別し（ステップＳＤ１）、このスイッチがオンされたときは、グループ分け処理（ステップＳＤ２）、順序設定処理（ステップＳＤ３）を行う。
図７は、ステップＳＤ２のグループ分け処理のフローチャートである。まず、選択された曲のフレーズを指定するポインタｎを０にクリアし、フレーズグループを指定するレジスタＮを０にクリアする（ステップＳＥ１）。そして、ｎの値をインクリメントしながら、グループ分けの処理がなされていないフレーズを捜す。ｎの値がフレーズ数以下であるか否かを判別し（ステップＳＥ２）、ｎの値がフレーズ総数以下である場合、すなわち、グループ分けされていないフレーズが存在する場合には、フレーズ［ｎ］の［ＮＯ］がＮＵＬＬ（未処理）であるか否かを判別する（ステップＳＥ３）。フレーズ［ｎ］の［ＮＯ］がＮＵＬＬでなく数値がセットされている場合には、ｎの値をインクリメントして（ステップＳＥ４）、ステップＳＥ２に移行する。
【００２０】
フレーズ［ｎ］の［ＮＯ］がＮＵＬＬの場合には、フレーズ［ｎ］の［ＮＯ］にＮの数値をセットする（ステップＳＥ５）。次に、変数ｍに（ｎ＋１）の値をセットする（ステップＳＥ６）。そして、ｍの値がフレーズ総数以下であるか否かを判別する（ステップＳＥ７）。ｍの値がフレーズ総数以下である場合には、フレーズ［ｍ］の［ＮＯ］がＮＵＬＬであるか否かを判別する（ステップＳＥ１０）。フレーズ［ｍ］の［ＮＯ］がＮＵＬＬである場合には、フレーズ［ｎ］とフレーズ［ｍ］とは同じであるか否かを判別する（ステップＳＥ１１）。フレーズ［ｎ］とフレーズ［ｍ］とが同じである場合には、フレーズ［ｍ］の［ＮＯ］にＮの値をセットする（ステップＳＥ１２）。
【００２１】
ステップＳＥ１０においてフレーズ［ｍ］の［ＮＯ］がＮＵＬＬでない場合、ステップＳＥ１１においてフレーズ［ｎ］とフレーズ［ｍ］とが異なる場合、又は、ステップＳＥ１２においてフレーズ［ｍ］の［ＮＯ］にＮの値をセットした後は、ｍをインクリメントする（ステップＳＥ１３）。そして、ステップＳＥ７に移行してｍの値がフレーズ総数以下であるか否かを判別する。ｍの値がフレーズ総数より大きい場合には、Ｎをインクリメントし（ステップＳＥ８）、ｎをインクリメントして（ステップＳＥ９）、ステップＳＥ２に移行する。ステップＳＥ２において、ｎの値がフレーズ総数より大きい場合には、すべてのフレーズのグループ分けが終了したので、図６のフローチャートに戻る。
例えば、フレーズ［０］と同じフレーズが他に５個ある場合には、これら６個のフレーズの［ＮＯ］の値はすべて０となる。
【００２２】
図８および図９は、図６のフローチャートにおけるステップＳＤ３の順序設定処理のフローチャートである。図８において、図２に示したＲＡＭ４のレジスタで、すべてのＣＯＵＮＴ［  ］を０にクリアし（ステップＳＦ１）、すべてのＪＵＮＩ［  ］をＮＵＬＬ（空き）にセットする（ステップＳＦ２）。次に、フレーズを指定するポインタｎの値を０にセット（ステップＳＦ３）後、ｎの値をインクリメントしながら、ステップＳＦ４からステップＳＦ７のループ処理によって各グループにおけるフレーズ数の集計を行う。ｎの値がフレーズ総数以下であるか否かを判別し（ステップＳＦ４）、ｎの値がフレーズ総数以下で、集計が終了していない場合には、フレーズ［ｎ］の［ＮＯ］の値をレジスタＮにストアする（ステップＳＦ５）。そして、ＣＯＵＮＴ［Ｎ］をインクリメントする（ステップＳＦ６）。次に、ｎをインクリメントして（ステップＳＦ７）、ステップＳＦ４に移行し、ループ処理を繰り返す。
【００２３】
ステップＳＦ４においてｎの値がフレーズ総数より大きい場合、すなわち、すべてのグループについてフレーズ数の集計が終了したときは、図９において、フレーズを指定するポインタｎの値を０にセット（ステップＳＦ８）後、ｎの値をインクリメントしながら、ステップＳＦ９からステップＳＦ１７のループ処理によって、各フレーズグループの集計結果であるフレーズ数を検索する。ｎの値がフレーズ総数以下であるか否かを判別し（ステップＳＦ９）、ｎの値がフレーズ総数以下である場合には、変数ｍを１にセットし（ステップＳＦ１０）、フレーズ［ｎ］の順位を指定するレジスタＩに１（最高順位）をストアする（ステップＳＦ１１）。Ｉの値が小さいほど順位が高い。
【００２４】
次に、Ｉおよびｍをインクリメントしながら、ステップＳＦ１２からステップＳＦ１５のループ処理を実行して、各グループの順位を決定する。（ｍ＋ｎ）の値がフレーズ総数以下であるか否かを判別し（ステップＳＦ１２）、（ｍ＋ｎ）の値がフレーズ総数以下である場合には、フレーズ［ｎ］のフレーズ数であるＣＯＵＮＴ［ｎ］がフレーズ［ｎ＋ｍ］のフレーズ数であるＣＯＵＮＴ［ｍ＋ｎ］よりも少ないか否かを判別する（ステップＳＦ１３）。ＣＯＵＮＴ［ｎ］がＣＯＵＮＴ［ｍ＋ｎ］よりも少ない場合には、フレーズ［ｎ］の順位を１つ下げるために、Ｉの値をインクリメントする（ステップＳＦ１４）。Ｉのインクリメントの後、又は、ステップＳＦ１３においてＣＯＵＮＴ［ｎ］がＣＯＵＮＴ［ｍ＋ｎ］以下である場合には、ｍをインクリメントする（ステップＳＦ１５）。そして、ステップＳＦ１２に移行してループ処理を繰り返す。
【００２５】
ステップＳＦ１２において、（ｍ＋ｎ）の値がフレーズ総数より大きくなったときは、現在指定しているフレーズ［ｎ］の順位が確定する。したがって、ＪＵＮＩ［ｎ］にレジスタＩの値をストアする（ステップＳＦ１６）。そして、ｎをインクリメントして次のフレーズを指定し（ステップＳＦ１７）、ステップＳＦ９に移行してループ処理を繰り返す。ステップＳＦ９においてｎの値がフレーズ総数より大きくなった場合、すなわち、すべてのグループの順位が決定した場合には、図４のフローチャートに戻って表示処理に移行する。
【００２６】
図１０は、表示処理のフローチャートである。曲データの楽譜を表示して（ステップＳＧ１）、フレーズを指定するポインタｎを０にセットする（ステップＳＧ２）。そして、ｎの値をインクリメントしながら、ステップＳＧ３からステップＳＧ７までのループ処理を実行して、グループ分けされたフレーズを色分けする。ループ処理において、フレーズ［ｎ］の［ＮＯ］をレジスタＮにストアし（ステップＳＧ３）、Nの値に対応するＪＵＮＩ［Ｎ］の順位をレジスタＩにストアする（ステップＳＧ４）。次に、フレーズ［ｎ］の部分をｃｏｌｏｒ［Ｉ］に色付けし（ステップＳＧ５）、ｎをインクリメントする（ステップＳＧ６）。このとき、ｎの値がフレーズ数より大きくなったか否か、すなわち、すべてのフレーズについて色付けが終了したか否かを判別する（ステップＳＧ７）。ｎの値がフレーズ数以下である場合には、ステップＳＧ３に移行してループ処理を繰り返す。ｎの値がフレーズ数より大きくなった場合には、フラグＤＩＳＰＦを１にセットして（ステップＳＧ８）、図４の編集処理のフローチャートに戻る。
【００２７】
図１１は、編集処理におけるステップＳＢ４の達成率生成処理のフローチャートである。まず、ＤＩＳＰＦが１であるか否かを判別し（ステップＳＨ１）、ＤＩＳＰＦが１で楽譜のフレーズごとに色付けがされている場合には、達成率スイッチがオンされたか否かを判別する（ステップＳＨ２）。このスイッチがオンされたときは、フレーズを指定するポインタｎおよび達成率を示す変数ｍをともに０にクリアして（ステップＳＨ３）、ｎおよびｍをインクリメントしながらステップＳＨ４からステップＳＨ７までのループ処理を実行する。ループ処理において、フレーズ［ｎ］のフラグ［ＯＫ］が１であるか否かを判別する（ステップＳＨ４）。［ＯＫ］が１である場合、すなわち、そのフレーズの演奏が基準レベルに達している場合には、ｍをインクリメントする（ステップＳＨ５）。この後、又は、［ＯＫ］が０でまだ基準レベルに達していない場合には、ｎをインクリメントする（ステップＳＨ６）。このとき、ｎの値がフレーズ数より大きくなったか否か、すなわち、すべてのフレーズについて［ＯＫ］の値を判別したか否かを判別する（ステップＳＨ７）。ｎの値がフレーズ数以下である場合には、ステップＳＨ４に移行してループ処理を繰り返す。ｎの値がフレーズ数より大きくなった場合には、［ｍ／ｎ］％を一定時間表示して（ステップＳＨ８）、図４の編集処理のフローチャートに戻る。さらに、この場合において、基準レベルに達しているフレーズを例えば青色で表示で表示すれば、達成率を容易に把握できる。
【００２８】
図１２は、編集処理におけるステップＳＢ５の消去処理のフローチャートである。まず、ＤＩＳＰＦが１であるか否かを判別し（ステップＳＪ１）、ＤＩＳＰＦが１で楽譜が表示されている場合には、消去スイッチがオンされたか否かを判別する（ステップＳＪ２）。このスイッチがオンされたときは、楽譜表示を消去し（ステップＳＪ３）、ＤＩＳＰＦを０にリセットする（ステップＳＪ４）。そして、図３のメインルーチンに戻る。
【００２９】
図１３は、メインルーチンにおけるステップＳＡ４の演奏処理のフローチャートである。この処理では、スタートスイッチ処理（ステップＳＫ１）、ガイド処理（ステップＳＫ２）、演奏処理（ステップＳＫ３）、ストップスイッチ処理（ステップＳＫ４）を実行する。
図１４は、演奏処理におけるステップＳＫ１のスタートスイッチ処理のフローチャートである。スタートスイッチがオンされたか否かを判別し（ステップＳＬ１）、このスイッチがオンされたときは、フラグＳＴＦを１にセットし（ステップＳＬ２）、演奏の優先度を示す変数ｎを１（１位の優先度）にセットし（ステップＳＬ３）、順位のレジスタＪＵＮＩのグループ番号を指定するポインタｍを０にセットする（ステップＳＬ４）。そして、ｍをインクリメントしながら、演奏の優先度が高いグループから順に演奏開始アドレスおよび演奏終了アドレスを設定する。
【００３０】
ＪＵＮＩ［ｍ］の示す順位がｎであるか否かを判別する（ステップＳＬ５）。したがって最初は、ＪＵＮＩ［０］の示す順位が１であるか否かを判別する。ＪＵＮＩ［ｍ］の示す順位がｎでない場合には、ｍをインクリメントする（ステップＳＬ６）。そして、ｍがデータ数より大きくなったか否かを判別する（ステップＳＬ７）。ｍがデータ数より大きくなった場合にはＳＴＦを０にリセットして（ステップＳＬ８）、図１３の演奏処理に戻る。この場合は、本来あるべきデータが何らかの原因で見つからないので、エラーを表示するようにしてもよい。
【００３１】
ステップＳＬ７において、ｍがデータ数以下の場合には、ステップＳＬ５においてＪＵＮＩ［ｍ］の示す順位がｎであるか否かを判別する。すなわち、ステップＳＬ５からステップＳＬ７までのループ処理において順位ｎに該当する番号ｍのグループを捜す。ステップＳＬ５においてＪＵＮＩ［ｍ］の順位がｎである場合には、フレーズを指定するポインタｋを初期値０にセットして（ステップＳＬ９）、ｋをインクリメントしながら番号ｍのグループに分類されているフレーズを検索する。すなわち、フレーズ［ｋ］の［ＮＯ］がｍであるか否かを判別し（ステップＳＬ１０）、フレーズ［ｋ］の［ＮＯ］がｍでない場合には、ｋをインクリメントして（ステップＳＬ１１）、ステップＳＬ１０に移行する。
【００３２】
ステップＳＬ１０において、フレーズ［ｋ］の［ＮＯ］がｍである場合には、そのフレーズ［ｋ］の［ＯＫ］が０であるか否かを判別する（ステップＳＬ１２）。フレーズ［ｋ］の［ＯＫ］が１である場合には、番号ｍのグループのフレーズの演奏が基準レベルに達しているので、ｎをインクリメントして次の順位を指定する（ステップＳＬ１３）。ステップＳＬ１２においてフレーズ［ｋ］の［ＯＫ］が０である場合には、レジスタＳＴＡＲＴにフレーズ［ｋ］の［ｓｔａｒｔ］をセットし（ステップＳＬ１４）、レジスタＥＮＤにフレーズ［ｋ］の［ｅｎｄ］をセットする（ステップＳＬ１５）。次に、ＳＴＡＲＴをアドレスにしてデータを読み込み（ステップＳＬ１６）、その読み込んだデータの内容を判別する（ステップＳＬ１７）。データがイベントである場合にはイベント処理を行って（ステップＳＬ１８）、アドレスを進める（ステップＳＬ１９）。データがタイムである場合にはＴにタイムをストアし（ステップＳＬ２０）、ＭＩＳＳを０にクリアして（ステップＳＬ２１）、図１３の演奏処理に戻る。
【００３３】
図１５ないし図１７は、演奏処理におけるステップＳＫ２のガイド処理のフローチャートである。図１５において、ＳＴＦが１であるか否かを判別し（ステップＳＭ１）、ＳＴＦが１である場合には時間経過の基準である最小単位時間が経過したか否かを判別する（ステップＳＭ２）。最小単位時間が経過したときは、レジスタＴの値をデクリメントする（ステップＳＭ３）。そして、Ｔの値が０に達したか否かを判別する（ステップＳＭ４）。ＳＴＦが０の場合、最小単位時間が経過していない場合、Ｔの値が０に達していない場合には、図１３の演奏処理に戻るが、Ｔの値が０に達したときは、アドレスを進める（ステップＳＭ５）。
【００３４】
次に、進めたアドレスがＥＮＤを過ぎたか否かを判別する（ステップＳＭ６）。アドレスがＥＮＤを過ぎた場合には、レジスタＭＩＳＳの演奏ミスの値が所定値α以上であるか否かを判別する（ステップＳＭ７）。ＭＩＳＳの値が所定値より小さい場合、すなわち、ガイドされたフレーズの演奏が基準レベルに達している場合には、フレーズを指定するポインタａを０にクリアして（ステップＳＭ８）、フレーズ［ａ］の［ＮＯ］がｍであるか否かを判別する（ステップＳＭ９）。フレーズ［ａ］の［ＮＯ］がｍである場合、すなわち、フレーズ［ａ］が番号ｍのグループに属するフレーズである場合には、フレーズ［ｋ］の［ＯＫ］を１にセットする（ステップＳＭ１０）。［ＯＫ］を１にセットした後、又は、ステップＳＭ９においてフレーズ［ａ］の［ＮＯ］がｍでない場合には、ａをインクリメントして次のフレーズを指定する（ステップＳＭ１１）。このとき、ａの値がデータ数を超えたか否かを判別する（ステップＳＭ１２）。ａの値がデータ数以下である場合には、ステップＳＭ９に移行して、フレーズ［ａ］の［ＮＯ］がｍであるか否かを判別する。そして、ａの値がデータ数を超えるまでステップＳＭ９からステップＳＭ１２までのループ処理を繰り返して、番号ｍのグループに属するすべてのフレーズの［ＯＫ］を１にセットする。
【００３５】
ステップＳＭ７において、ＭＩＳＳの演奏ミスの値が所定値α以上である場合には、ＭＩＳＳを０にクリアして（ステップＳＭ１４）、演奏されたフレーズのｓｔａｒｔを再びアドレスにセットする（ステップＳＭ１５）。すなわち、同じフレーズの練習をガイドするために、そのアドレスによりデータを読み出し（ステップＳＭ１６）、読み出したデータを判別する（ステップＳＭ１７）。データがイベントである場合にはイベント処理を行って（ステップＳＭ１８）、ステップＳＭ５に移行してアドレスを進める。データがタイムである場合には、レジスタＴにタイムをセットして（ステップＳＭ１９）、図１３の演奏処理に戻る。
【００３６】
ステップＳＭ１２において、ａの値がデータ数を超えたときは、ｎをインクリメントして（ステップＳＭ１３）、図１６のフローチャートのステップＳＭ２０において、現在の演奏曲とは別の曲データがあるか否かを判別する。別の曲データとしては、図２に示したようにＲＡＭ４の別の曲データだけでなく、曲メモリ８に記憶されている別の曲データまで含めてもよい。別の曲データがある場合には、その曲データを指定して（ステップＳＭ２１）、その曲データのフレーズを指定するポインタｂを０にセットして（ステップＳＭ２２）、ｂをインクリメントしながら、ステップＳＭ２３からステップＳＭ２６までのループ処理を実行する。
このループ処理において、別の曲のフレーズ［ｂ］と演奏曲のフレーズ［ｋ］とは同じであるか否かを判別し（ステップＳＭ２３）、同じである場合には、別の曲のフレーズ［ｂ］の［ＯＫ］を１にセットする（ステップＳＭ２４）。［ＯＫ］を１にセットした後、又は、ステップＳＭ２３において別の曲のフレーズ［ｂ］と演奏曲のフレーズ［ｋ］とが異なる場合には、ｂをインクリメントする（ステップＳＭ２５）。このとき、ｂの値が別の曲のフレーズ数を超えたか否かを判別し（ステップＳＭ２６）、ｂの値が別の曲のフレーズ数以下である場合には、ステップＳＭ２３に移行してループ処理を繰り返す。
【００３７】
ｂの値が別の曲のフレーズ数を超えたときは、さらに別の曲を検索する（ステップＳＭ２７）。そして、ステップ２０に移行して別の曲データがあるか否かを判別する。別の曲データがある場合には、ステップＳＭ２１からステップＳＭ２７の処理を繰り返す。ステップ２０において別の曲データがない場合には、図１７のステップＳＭ２８においてｍを０にセットする。そして、ＪＵＮＩ［ｍ］の示す順位がｎであるか否かを判別する（ステップＳＭ２９）。ＪＵＮＩ［ｍ］の示す順位がｎでない場合には、ｍをインクリメントする（ステップＳＭ３０）。そして、ｍがデータ数より大きくなったか否かを判別する（ステップＳＭ３１）。ｍがデータ数より大きくなった場合にはＳＴＦを０にリセットして（ステップＳＭ３２）、図１３の演奏処理に戻る。この場合は、本来あるべきデータが何らかの原因で見つからないので、エラーを表示するようにしてもよい。
【００３８】
ステップＳＭ３１において、ｍがデータ数以下の場合には、ステップＳＭ２９においてＪＵＮＩ［ｍ］の示す順位がｎであるか否かを判別する。すなわち、ステップＳＭ２９からステップＳＭ３１までのループ処理において順位ｎに該当する番号ｍのグループを捜す。ステップＳＭ２９においてＪＵＮＩ［ｍ］の順位がｎである場合には、フレーズを指定するポインタｋを初期値０にセットして（ステップＳＭ３３）、ｋをインクリメントしながら番号ｍのグループに分類されているフレーズを検索する。すなわち、フレーズ［ｋ］の［ＮＯ］がｍであるか否かを判別し（ステップＳＭ３４）、フレーズ［ｋ］の［ＮＯ］がｍでない場合には、ｋをインクリメントして（ステップＳＭ３５）、ステップＳＭ３４に移行する。
【００３９】
ステップＳＭ３４において、フレーズ［ｋ］の［ＮＯ］がｍである場合には、そのフレーズ［ｋ］の［ＯＫ］が０であるか否かを判別する（ステップＳＭ３６）。フレーズ［ｋ］の［ＯＫ］が１である場合には、番号ｍのグループのフレーズの演奏が基準レベルに達しているので、ｎをインクリメントして次の順位を指定する（ステップＳＭ３７）。ステップＳＭ３６においてフレーズ［ｋ］の［ＯＫ］が０である場合には、レジスタＳＴＡＲＴにフレーズ［ｋ］の［ｓｔａｒｔ］をセットし（ステップＳＭ３８）、レジスタＥＮＤにフレーズ［ｋ］の［ｅｎｄ］をセットする（ステップＳＭ３９）。次に、ＭＩＳＳを０にクリアして（ステップＳＭ４０）、図１５のステップＳＭ１６に移行して、アドレスによりデータを読み出す。
【００４０】
図１８は、図１３のステップＳＫ３の演奏処理のフローチャートである。演奏の入力があるか否かを判別し（ステップＳＮ１）、入力があったときは、イベントを作成し（ステップＳＮ２）、作成したイベントを音源すなわち電子楽器９に送るイベント処理を行う（ステップＳＮ３）。次に、ＳＴＦが１であるか否かを判別し（ステップＳＮ４）、ＳＴＦが０の場合には図１３のフローチャートに戻るが、ＳＴＦが１の場合には、生成したイベントとガイド処理で読み出したイベントとが同じであるか否かを判別する（ステップＳＮ５）。これら２つのイベントが同じである場合には、ガイドに応じた正しい演奏が行われたので図１３のフローチャートに戻る。しかし、２つのイベントが異なる場合には、演奏が誤っているのでＭＩＳＳの値をインクリメントして（ステップＳＮ６）、図１３のフローチャートに戻る。
【００４１】
図１９は、図１３のフローチャートのステップＳＫ４のストップ処理のフローチャートである。ストップスイッチがオンされたか否かを判別し（ステップＳＰ１）、このスイッチがオンされたときは、ＳＴＦを０にリセットして（ステップＳＰ２）、電子楽器９に対してすべての音源を消音するように指示するオールノートオフ処理を行う（ステップＳＰ３）。そして、図３のメインルーチンに戻る。
【００４２】
以上のように、この実施形態によれば、練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類し、分類した各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、基準レベルに達したときはそのグループの全てのフレーズを合格フレーズとする。そして、合格フレーズ数と練習曲の全てのフレーズ数との比率をその練習曲の達成度として評価する。
したがって、ユーザ自身が思っているよりも練習の成果が向上していることを強調することによって、初心者の練習意欲を長続きさせることができる。
【００４３】
この場合において、分類された各グループをフレーズ数が多い順に演奏をガイドする。
したがって、初期の段階ほど基準レベルに達したフレーズ数が多くなり、ユーザの達成感を高めることで、よりいっそう、初心者の練習意欲を長続きさせることができる。
また、既に演奏が行われた練習曲の合格フレーズと同一のフレーズが他の練習曲に存在するか否かを検索し、他の練習曲に同一のフレーズが存在する場合には、他の練習曲における同一のフレーズを合格フレーズとする。
したがって、他の練習曲を初めて演奏する場合でも、演奏前に既に基準レベルに達している合格フレーズの存在をユーザに認識させることにより、初心者の練習意欲を喚起することができる。
さらに、任意の練習曲が選択されたときに、その練習曲の中に合格フレーズが存在する場合には、表示部６に練習曲の音符を表示する際に、その合格フレーズの音符を特定の色で強調して表示する。
この場合にも、演奏前に既に合格フレーズの存在をユーザに認識させることにより、初心者の練習意欲を喚起することができる。
【００４４】
なお、上記実施形態においては、ＲＯＭ３にあらかじめ記憶された演奏練習処理のプログラムをＣＰＵ１が実行する装置の発明について説明したが、フレキシブルディスク（ＦＤ）、ＣＤ、ＭＤなどの記憶媒体に記録されている演奏練習処理のプログラムをフラッシュＲＯＭなどの不揮発性メモリにインストールしたり、インターネットなどのネットワークからダウンロードした演奏練習処理のプログラムを不揮発性メモリにインストールして、そのプログラムをＣＰＵが実行することも可能である。この場合には、プログラムの発明やそのプログラムを記録した記録媒体の発明を実現できる。
【００４５】
すなわち、本発明による演奏練習処理のプログラムは、
練習曲を構成する複数のフレーズを同一のフレーズごとにグループに分類するステップＡと、前記ステップＡによって分類された各グループのフレーズに対する演奏が基準レベルに達したか否かを判定して、当該基準レベルに達したときは当該グループの全てのフレーズを合格フレーズとするステップＢと、前記ステップＢによって判定された合格フレーズ数と前記練習曲の全てのフレーズ数との比率を当該練習曲の達成度として評価するステップＣと、をコンピュータに実行させる。
【００４６】
前記ステップＡによって分類された各グループをフレーズ数が多い順に演奏をガイドするステップＤをさらに有することを特徴とする。
既に演奏が行われた練習曲の合格フレーズと同一のフレーズが他の練習曲に存在するか否かを検索し、当該同一のフレーズが存在する場合には当該他の練習曲における同一のフレーズを合格フレーズとするステップＥをさらに有することを特徴とする。
任意の練習曲が選択されたときに当該練習曲の中に合格フレーズが存在する場合には、所定の表示手段に前記練習曲の音符を表示する際に当該合格フレーズの音符を強調して表示するステップＦをさらに有する。
【図面の簡単な説明】
【００４７】
【図１】実施形態における演奏システムの構成を示すブロック図。
【図２】練習曲に対する編集データを記憶するＲＡＭのエリアを示す図。
【図３】図１におけるＣＰＵのメインルーチンのフローチャート。
【図４】図３のメインルーチンにおける編集処理のフローチャート。
【図５】図４の編集処理における曲選択処理のフローチャート。
【図６】図４の編集処理における演奏順序設定処理のフローチャート。
【図７】図６の演奏順序設定処理におけるグループ分け処理のフローチャート。
【図８】図６の演奏順序設定処理における順序設定処理のフローチャート。
【図９】図８に続く順序設定処理のフローチャート。
【図１０】図４の編集処理における表示処理のフローチャート。
【図１１】図４の編集処理における達成率生成処理のフローチャート。
【図１２】図４の編集処理における消去処理のフローチャート。
【図１３】図３のメインルーチンにおける演奏処理のフローチャート。
【図１４】図１３の演奏処理におけるスタートスイッチ処理のフローチャート。
【図１５】図１３の演奏処理におけるガイド処理のフローチャート。
【図１６】図１５に続くガイド処理のフローチャート。
【図１７】図１６に続くガイド処理のフローチャート。
【図１８】図１３における演奏処理のフローチャート。
【図１９】図１３の演奏処理におけるストップスイッチ処理のフローチャート。
【符号の説明】
【００４８】
１  ＣＰＵ
２  システムバス
３  ＲＯＭ
４  ＲＡＭ
５  スイッチ部
６  表示部
７  ＭＩＤＩインターフェース
８  曲メモリ
９  電子楽器
【図１】
2006350154.tif 000003
【図２】
2006350154.tif 000004
【図３】
2006350154.tif 000005
【図４】
2006350154.tif 000006
【図５】
2006350154.tif 000007
【図６】
2006350154.tif 000008
【図７】
2006350154.tif 000009
【図８】
2006350154.tif 000010
【図９】
2006350154.tif 000011
【図１０】
2006350154.tif 000012
【図１１】
2006350154.tif 000013
【図１２】
2006350154.tif 000014
【図１３】
2006350154.tif 000015
【図１４】
2006350154.tif 000016
【図１５】
2006350154.tif 000017
【図１６】
2006350154.tif 000018
【図１７】
2006350154.tif 000019
【図１８】
2006350154.tif 000020
【図１９】
2006350154.tif 000021