(57)【要約】【課題】ユーザーが行った学習のレベルの推移を視覚的に提示できる学習結果表示装置を提供する。【解決手段】レッスンを行った結果を示すデータとして、レッスンを行った日付、レッスンの対象となった小節の範囲、レッスンの対象となったパート、テンポ、レッスン中に発音を指示すべき楽音の数、それを指示するタイミングが適切な範囲から若干ずれていた楽音の数、発音を指示できなかった楽音の数、及びレッスンした演奏の習得度合を示すクリアレベルなどを各レッスン毎に保存しておき、それをユーザーの要求により各レッスン毎に表示させる。【選択図】            図２
2004184757.tif 000002
【特許請求の範囲】
【請求項１】
学習用装置に備えられた１つ以上の操作子に対し、予め定められた順序で操作していく学習をユーザーが行った結果を表示させる装置であって、
ユーザーが行った前記学習の内容を示す学習内容データを取得する学習内容取得手段と、
前記学習の手本とすべき内容を示す模範学習データを前記学習内容取得手段が取得した前記学習内容データと比較して、ユーザーの学習結果を示す結果データを生成するデータ生成手段と、
前記データ生成手段が生成した結果データのなかで表示の対象とする結果データを予め定めた規則に従って選択し、該選択した結果データを表示装置上に表示させることができる学習結果表示手段と、
を具備することを特徴とする学習結果表示装置。
【請求項２】
前記学習すべき内容全体が複数の部分に分けられて、該部分単位で学習範囲が選択される場合に、前記学習結果表示手段は、該学習範囲と対応付けて前記結果データを表示させる、
ことを特徴とする請求項１記載の学習結果表示装置。
【請求項３】
前記データ生成手段は、前記結果データとして、前記学習を行ったユーザーの該学習における習得度合を示すデータを生成でき、
前記学習結果表示手段は、前記データ生成手段がデータを生成した習得度合を表示させることができる、
ことを特徴とする請求項１、または２記載の学習結果表示装置。
【請求項４】
前記データ生成手段は、前記習得度合を基に、前記学習を行うユーザーの習得度合の今後における推移を予測し、
前記学習結果表示手段は、前記データ生成手段が予測した習得度合の今後の推移を表示させることができる、
ことを特徴とする請求項３記載の学習結果表示装置。
【請求項５】
前記学習が前記学習用装置として楽器を使用する曲の演奏であった場合、前記データ生成手段は、前記模範学習データを前記学習内容データと比較して、該楽器上の操作子への操作によりユーザーが発音を指示した楽音のなかで、該操作のタイミングで放音させるべき楽音の音高と所定の範囲内で異なっている楽音の数を計数し、
前記学習結果表示手段は、前記データ生成手段が計数した楽音の数を表示させることができる、
ことを特徴とする請求項１〜４の何れか１項に記載の学習結果表示装置。
【請求項６】
学習用装置に備えられた１つ以上の操作子に対し、予め定められた順序で操作していく学習をユーザーが行った結果を表示させる装置に実行させるプログラムであって、
ユーザーが行った前記学習の内容を示す学習内容データを取得する機能と、
前記学習の手本とすべき内容を示す模範学習データを前記取得する機能により取得した前記学習内容データと比較して、ユーザーの学習結果を示す結果データを生成する機能と、
前記生成する機能により生成した結果データのなかで表示の対象とする結果データを予め定めた規則に従って選択し、該選択した結果データを表示装置上に表示させることができる機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、学習用装置に備えられた１つ以上の操作子（例えばキーボード上のキーや鍵盤上の鍵、等）に対し、予め定められた順序で操作していく学習をユーザーが行った結果を表示させるための技術に関する。
【０００２】
【従来の技術】
例えばピアノや電子キーボードなどの鍵盤楽器では、押鍵すべき鍵を順次、押鍵していくことで演奏が行われる。しかし、演奏技術が未熟な演奏者（ユーザー）にとって、自身が行った演奏のレベルを適切に把握することは必ずしも容易でないのが実情である。このことから、そのレベルをユーザーが適切に把握できるように、演奏結果をデータとして表示させる演奏結果表示装置が製品化されている。
【０００３】
その演奏結果表示装置は、曲の手本とすべき演奏内容を示すデータ（以降、「模範演奏データ」と呼ぶ）を参照して、ユーザーが演奏中に発音を指示した楽音毎に、それが発音させるべきタイミングで発音が指示されているか否か確認し、その確認結果を基に演奏結果を表示させるようになっている。その内容とは、例えば発音させるべき音高の楽音を発音させるべきタイミングでユーザーが発音を指示した数、そのように楽音の発音を指示できなかった数、等である。
【０００４】
そのような内容を表示させるためには、当然のことながら、ユーザーが行った演奏の内容を示すデータ（以降、「演奏内容データ」と呼ぶ）が必要である。その演奏を行うためには楽器が必要である。このようなことから、演奏結果表示装置の多くは、楽器に搭載された形で製品化されている。
【０００５】
【特許文献１】
実願平２−９１０８９（実開平４−４８５５３号）のマイクロフィルム
【特許文献２】
特開平５−２８９６０５号公報
【特許文献３】
特開平５−３１３５６１号公報
【０００６】
【発明が解決しようとする課題】
従来の演奏結果表示装置は、例えば実際の演奏に先立ってその結果の表示を指示させるなどして、ユーザーが指定した演奏のみを対象にその結果を表示させるようになっていた。しかし、演奏は繰り返し練習するのが普通である。このため、ユーザーにとっては、演奏の練習を重ねていくなかでその演奏レベルがどのように推移しているのか分かりにくいという問題点があった。
【０００７】
練習を繰り返すことにより、演奏レベルは向上するのが普通である。そのレベルが向上していく様子を視覚的に提示することは、練習の成果をユーザーに確認させることになることから、ユーザーにとっては励みになると考えられる。ユーザーが練習熱心なほど、その傾向があると考えられる。このようなことから、演奏レベルの推移を視覚的に提示することは大きな意味があると言える。このことは、演奏以外の学習結果の内容を提示する他の学習結果表示装置においても同様であると考えられる。
【０００８】
本発明の課題は、ユーザーが行った学習のレベルの推移を視覚的に提示できる学習結果表示装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明の学習結果表示装置は、学習用装置に備えられた１つ以上の操作子に対し、予め定められた順序で操作していく学習をユーザーが行った結果を表示させる装置であって、ユーザーが行った学習の内容を示す学習内容データを取得する学習内容取得手段と、学習の手本とすべき内容を示す模範学習データを学習内容取得手段が取得した学習内容データと比較して、ユーザーの学習結果を示す結果データを生成するデータ生成手段と、データ生成手段が生成した結果データのなかで表示の対象とする結果データを予め定めた規則に従って選択し、該選択した結果データを表示装置上に表示させることができる学習結果表示手段と、を具備する。
【００１０】
なお、学習すべき内容全体が複数の部分に分けられて、該部分単位で学習範囲が選択される場合に、学習結果表示手段は、該学習範囲と対応付けて結果データを表示させる、ことが望ましい。また、データ生成手段は、結果データとして、学習を行ったユーザーの該学習における習得度合を示すデータを生成でき、学習結果表示手段は、データ生成手段がデータを生成した習得度合を表示させることができる、ことが望ましい。或いは、データ生成手段は、習得度合を基に、学習を行うユーザーの習得度合の今後における推移を予測し、学習結果表示手段は、データ生成手段が予測した習得度合の今後の推移を表示させることができる、ことが望ましい。
【００１１】
また、学習が学習用装置として楽器を使用する曲の演奏であった場合、データ生成手段は、模範学習データを学習内容データと比較して、該楽器上の操作子への操作によりユーザーが発音を指示した楽音のなかで、該操作のタイミングで放音させるべき楽音の音高と所定の範囲内で異なっている楽音の数を計数し、学習結果表示手段は、データ生成手段が計数した楽音の数を表示させることができる、ことが望ましい。
【００１２】
本発明のプログラムは、学習用装置に備えられた１つ以上の操作子に対し、予め定められた順序で操作していく学習をユーザーが行った結果を表示させる装置に実行させることを前提とし、ユーザーが行った学習の内容を示す学習内容データを取得する機能と、学習の手本とすべき内容を示す模範学習データを取得する機能により取得した学習内容データと比較して、ユーザーの学習結果を示す結果データを生成する機能と、生成する機能により生成した結果データのなかで表示の対象とする結果データを予め定めた規則に従って選択し、該選択した結果データを表示装置上に表示させることができる機能と、を実現させる。
【００１３】
本発明では、ユーザーが行った学習の内容を示す学習内容データを、学習の手本とすべき内容を示す模範学習データと比較して生成される、ユーザーの学習結果を示す結果データを予め定めた規則に従って選択し、選択した結果データを表示装置上に表示させる。
【００１４】
複数の学習結果を表示させた場合、ユーザーは自分が過去に行った学習の結果がどのようなものであり、それがどのように推移していったか容易に把握することが可能となる。それにより、ユーザーが行った学習のレベルの推移を視覚的に提示することとなる。
【００１５】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態につき詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態による学習結果表示装置を搭載した電子楽器の構成図である。
【００１６】
その電子楽器は、図１に示すように、楽器全体の制御を行うＣＰＵ１０１と、そのＣＰＵ１０１が実行するプログラムや各種データ等を格納したＲＯＭ１０２と、ＣＰＵ１０１がワーク用に使用するＲＡＭ１０３と、各種スイッチを有するスイッチ部１０４と、演奏操作の対象となる鍵盤１０５と、例えば不図示のＬＣＤや複数のＬＥＤ等を備えた表示部１０６と、ＣＰＵ１０１の指示に従って、発音させる楽音の波形データを生成する音源１０７と、その音源１０７が生成した波形データをサウンドとして出力するサウンドシステム１０８と、を備えて構成される。それにより、本実施の形態による学習結果表示装置は、ユーザーが鍵盤１０５を操作して行った演奏を対象に、その結果を表示部１０６に表示させるものとして実現されている。
【００１７】
上記スイッチ部１０４は、例えば各種のスイッチやボタンなどの操作子と、それらの操作子への操作を検出する検出用回路と、から構成されている。その操作子としては、モード選択用のモードスイッチ、自動演奏、或いは練習の対象とする曲を選択するためのソングスイッチ、自動演奏、或いは練習の開始、若しくはその終了を指示するためのスタート／ストップスイッチ、テンキー、演奏結果の表示を指示するための結果表示スイッチ、及びその表示形態を選択するための複数の選択スイッチなどがある。自動演奏、或いは練習の対象とする曲は、ソングスイッチを操作した後、所望の曲に割り当てられた番号（曲番号）をテンキーにより指定することで行うようになっている。スタート／ストップスイッチを操作することで行われるのが自動演奏か練習であるのかの切り換えは、モードスイッチにより行うようになっている。
【００１８】
以上の構成において、その動作を説明する。
不図示の電源がオンされると、ＣＰＵ１０１はＲＯＭ１０２に格納されたプログラムを読み出して実行することにより、楽器全体の制御を開始する。その後は、ＲＡＭ１０３を作業用に使用しながら、スイッチ群１０４や鍵盤１０５からそれぞれ受け取る操作子の状態を表す信号に応じた各部の制御を行う。なお、スイッチ群１０４を構成する検出用回路は、各スイッチの状態（操作の有無を含む）を例えば走査することで検出し、その検出結果からＣＰＵ１０１に送出する信号を生成する。これは鍵盤１０５（を構成する検出用回路）でも同様である。
【００１９】
ＣＰＵ１０１は、鍵盤１０５から各鍵の状態を表す信号を受け取ると、前回に検出されたその状態と比較することにより、状態が変化した鍵を特定する。そのような鍵を特定できた場合には、その特定した鍵とそれの状態の変化に応じて音源１０７に送出すべきコマンドを生成し、それを送出する。
【００２０】
音源１０７は、そのコマンドに従い、楽音の波形データを生成してサウンドシステム１０８に送出する。サウンドシステム１０８は、例えばその波形データをアナログのオーディオ信号に変換し、それによって得られたオーディオ信号を増幅し、増幅後のオーディオ信号をスピーカに入力して楽音を放音する。それにより、ユーザー（演奏者）が鍵盤１０５を操作すると、その操作内容に応じた楽音が放音される。
【００２１】
一方、ＣＰＵ１０１は、スイッチ群１０４を構成する各スイッチの状態の変化に応じて、その状態が変化したスイッチに割り当てた機能を実現させるための処理を行う。その処理を行うことにより、練習の対象とする曲の設定を含む各種の設定や、その練習結果の表示などが実現される。その練習は、上記スタート／ストップスイッチへの操作に応答して開始したと見なし、それが終了するか、或いはそのスイッチを再度、操作するまで練習中であると見なすようにしている。
【００２２】
本実施の形態では、演奏の練習（レッスン）は、曲の構成全体を複数の部分に分けることにより、その部分単位で選択された演奏範囲を対象に行えるようにしている。構成全体は、小節、及びパートで分けている。パートは、演奏に使う手によって分けている（このことから、右手で演奏するパートを「右手パート」、左手で演奏するパートを「左手パート」と呼ぶ）。押鍵していく鍵をユーザーに教示する演奏ガイドは、そのレッスンの際に必ず行わせるべきものというわけではないので、ここでは特には言及しないこととする。
【００２３】
上記演奏範囲は、予め固定的に定め、その定めた演奏範囲はユーザーの習得度合に応じて選択可能な範囲を限定している。つまり、曲全体の演奏は、カリキュラムに沿って、習得度合に応じて演奏範囲を変更させていくことにより練習できるようになっている。以降、練習範囲については「レッスンエリア」、そのレッスンエリアの練習（レッスン）に対応付けられた番号は「レッスン番号」、ユーザーの習得度合については「クリアレベル」とそれぞれ呼ぶことにする。
【００２４】
レッスンエリアによってレッスンの対象となる部分、つまり小節やパートが異なる。クリアレベルは、ユーザーが或るレッスンエリアのレッスンを行った結果を判断するうえで指標となる情報であると言える。このことから、クリアレベルはレッスンエリアやレッスン番号との関係が容易に把握できるように、それらの何れかとのみ対応付けて表示させられるようにしている。また、レッスン結果をより詳細に検討できるように、その結果を検討するうえで有用なデータを併せて表示できるようにしている。
【００２５】
そのようにして、本実施の形態では、保存された演奏結果内容は３つの表示形態で表示させられるようになっている。それにより、ユーザーに、３つの表示形態のなかから所望のものを選択させ、その選択結果に応じて図２〜図４に示す画面の何れかを表示させるようになっている。所望の表示形態での表示は、例えば３つの選択スイッチのなかから所望の表示形態が割り当てられたものを操作した後、結果表示スイッチを操作することで行われる。
【００２６】
レッスンの結果は、ユーザーが行ったレッスンの内容を、そのレッスンで行うべき手本となる内容を示す曲データと比較することにより求める。その曲データは、例えばスタンダードＭＩＤＩファイル（ＳＭＦ）の形でＲＯＭ１０２に格納されている。その比較をカリキュラムに沿って行うために、本実施の形態では図５に示す楽曲情報を曲データとは別に例えばＲＯＭ１０２に用意している。
【００２７】
その楽曲情報は、図５に示すように、曲全体に係わる全曲データと、カリキュラムを構成する１レッスンに係わる複数のカリキュラムデータと、から構成されている。全曲データは一次元の配列変数ｓｏｎｇ＿ｉｎｆｏ  として、各カリキュラムデータは２次元の配列変数ｃｕｒ＿ｉｎｆｏとして扱われる。
【００２８】
配列変数ｓｏｎｇ＿ｉｎｆｏ  の括弧内の添え字が０で指定される要素には、図５中「ＳｏｎｇＩＤ」と表記の曲を一意に識別するための曲番号が格納されている。以降、同様に、添え字が１で指定される要素には「ＡｌｌＭｅａｓ」と表記の全小節数、添え字が２で指定される要素には「ＳｏｎｇＮａｍｅ」と表記の曲名、添え字が３で指定される要素には「ＯｒｇＴｅｍｐｏ」と表記の基準となるテンポ値、添え字が４で指定される要素には「ＮｏｔｅＣｏｕｎｔＲ」と表記の右手パートでの全楽音数、添え字が５で指定される要素には「ＮｏｔｅＣｏｕｎｔＬ」と表記の左手パートでの全楽音数、がそれぞれ格納されている。
【００２９】
他方の配列変数ｃｕｒ＿ｉｎｆｏのそれに続く側の添え字（以降、便宜的に「第１添え字」と呼ぶ）は、カリキュラムデータの指定に用いられ、それとは別の添え字（以降、便宜的に「第２添え字」と呼ぶ）はカリキュラムデータを構成するデータの指定に用いられる。そのような添え字の呼び方は他の配列変数でも同様に用いることとする。つまり、変数名に最も近い添え字を「第１添え字」と呼び、その変数名から離れるに従って、「第２添え字」「第３添え字」などと呼ぶことにする。
【００３０】
第２添え字が０で指定される要素には図中「ＡｒｅａＩＤ」と表記のレッスン番号が格納される。以降、同様に、第２添え字が１で指定される要素には「ＳｔａｒｔＭｅａｓ」と表記のレッスンを開始する小節の番号、第２添え字が２で指定される要素には「ＥｎｄＭｅａｓ」と表記のレッスンを終了する小節の番号、第２添え字が３で指定される要素には「ＣｕｒＨａｎｄ」と表記のレッスンの対象となるパートを示すデータ、第２添え字が４で指定される要素には「ＮｏｔｅＣｏｕｎｔＲ」と表記の右手パートの楽音数、第２添え字が５で指定される要素には「ＮｏｔｅＣｏｕｎｔＬ」と表記の左手パートの楽音数、がそれぞれ格納されている。なお、特には図示していないが、カリキュラムデータには、曲データ中のレッスンに対応する部分を特定できるように、例えばその部分の先頭と最後のそれぞれの位置を示すデータが含まれている。
【００３１】
各表示形態では、図２〜図４に示すように、最後のレッスン結果だけでなく、過去のレッスン結果も表示させるようにしている。図１に示す練習履歴データベース（ＤＢ）１１０は、レッスン結果を示す練習データの保存用にＲＡＭ１０２に構築されている。その練習データを保存しておくために、ＲＡＭ１０２は不図示のバッテリによって不揮発性化されている。
【００３２】
最後に行ったレッスンの結果の他に、それ以外のレッスン結果を併せて表示させると、ユーザーは自分が過去にどのようなレッスンを行い、その結果がどのようなものであったかということと共に、その結果がどのように推移していったかということまで容易に把握できるようになる。それまでに自身が行ったレッスン（学習）のレベルの推移を容易に把握できるようになる。そのことは、特に練習熱心なユーザーでは、レッスンを繰り返し行ったことに伴う自身のレベル向上を客観的にも（実感以外にも）確かめられるということを意味する。
【００３３】
レッスンを行うのは、通常、レベルを向上させることが最大の目標であり、その向上を客観的に把握することは、ユーザーが行ったレッスンが有意義であったことを客観的に確認することにあたる。その有意義なレッスンを行ったことの結果を客観的に確認できるということは、ユーザーにとって具体的な目標を持てるということを意味する。具体的な目標は、レッスンを行ううえでの励みとなる。このようなことから、レッスン（学習）のレベルの推移を容易に把握できるようにすることにより、ユーザーにとってはレッスンに励める環境が提供されることとなる。
【００３４】
図２に示す演奏履歴画面は、レッスン結果検討用のデータをレッスン別に配置した画面である。そのデータとしては、レッスンを行った日付、レッスンの対象となった小節の範囲（レッスンを開始した小節とそれを終了した小節の各番号で表現）、レッスン番号、レッスンの対象となったパート、テンポ、レッスン中に発音を指示すべき楽音（音符）の数、及びその結果を示すデータが配置されている。以降、その結果を示すデータは「結果データ」、それ以外のデータは「状況データ」と呼ぶことにする。
【００３５】
上記結果データは、「○」「×」「←→」「ミスタッチ」及び「クリアレベル」が配置された欄にそれぞれ対応する数値で表現している。「○」が配置された欄で表現する数値は、レッスン中に発音させるべき楽音のなかでそれを発音させるべきタイミングで発音を指示できた楽音（そのような楽音を便宜的に以降「適正楽音」と呼ぶ）の数を示している。「←→」が配置された欄で表現する数値は、発音させるべき楽音の発音の指示が発音させるべきタイミングからずれている楽音（タイミングミスタッチの楽音）の数を示している。「×」が配置された欄で表現する数値は、それら以外の楽音の数、即ち明らかに発音させるべきタイミングで発音を指示できなかった楽音（未発音楽音）の数を示している。「ミスタッチ」が配置された欄で表現する数値は、明らかに発音させるべきでないタイミングで発音が指示された楽音の数を示している。クリアレベルは、０〜１００の間の数値で表現している。
【００３６】
タイミングミスタッチとは、押鍵すべき鍵を押鍵したタイミングが押鍵すべきタイミングと一致していると見なせる範囲内では一致していないが、押鍵すべきでない鍵を明らかに押鍵したと認識されるほどその押鍵のタイミングがずれていないような操作のことである。このため、明らかに押鍵すべきでない鍵の押鍵であるミスタッチや、明らかに押鍵すべき鍵を押鍵しなかったことなどと比較して、ミスの度合は小さいと言える。度合がより大きいミスほど、演奏の内容を大きく低下させるのが普通である。タイミングミスタッチを別にカウントするのは、そのようにミスの度合によって演奏の内容に影響を及ぼす程度に差があるためである。言い換えれば、それらミスタッチの数を別にカウントすることにより、そのカウント結果からレッスンの内容をより具体的に把握できるようになるためである。
【００３７】
図３に示すレッスン別履歴画面は、ユーザーが行ったレッスン別に、その番号とそのクリアレベルの対応関係を容易に把握できるように履歴を表示させる画面である。図中、グリッド状に枠（セル）が配置されたエリア（以降、「グリッドエリア」と呼ぶ）の上方に位置する「Ｌ１」はレッスン番号が１であることを表し（他も同様）、そのエリアの左側にはレッスンが行われた日付が配置されている。レッスンが行われた日付、その番号は、それらに対応する位置の枠内にクリアレベルを示す数値を配置することで表現している。本実施の形態では、数値を配置した枠内の表示色は、その数値に応じて変化させている。
【００３８】
図４に示す小節別履歴画面は、ユーザーがレッスンを行った小節別に、その小節の番号とそのクリアレベルの対応関係を容易に把握できるように履歴を表示させる画面である。図中、グリッド状に枠が配置されたエリア（以降、同様に「グリッドエリア」と呼ぶ）の上方に位置する「Ｍ１」は小節番号が１であることを表し（他も同様）、そのエリアの左側にはレッスンが行われた日付が同様に配置されている。レッスンが行われた日付、その小節の番号は、それらに対応する位置の枠内にクリアレベルを示す数値を配置し、その枠内の表示色をその数値に応じて変化させることで表現している。
【００３９】
図２〜図４に示す画面の表示は、特に詳細な説明は省略するが、例えばＲＡＭ１０３に確保した領域を用いて、画面を構成する要素の画像データを予め定めた順序で上書きしつつ配置して１画面分の画像データを生成し、その生成した１画面分の画像データを表示部１０６に送出することで行われる。部分的な表示内容の変更は、その内容を変更する部分を対象に変更後の画像データを生成し、その生成した画像データを表示部１０６に送出して上書きさせることで行われる。
【００４０】
次に、図２〜図４に示す各種画面を表示部１０６に表示させるために管理するデータについて、図６〜図８を参照して詳細に説明する。
図６は、練習履歴ＤＢ１１０の構成を説明する図である。
そのＤＢ１１０は、図６に示すように、２次元の配列変数ｐｒａｃｔｉｃｅ＿ｄｂ  として扱っている。第１添え字は、レッスンの結果を示す練習データの指定に用いられ、第２添え字は、その練習データを構成するデータの指定に用いられる。その添え字が０で指定される要素には、図中「ｐｒａｃｔｉｃｅＩＤ」と表記の練習データに割り当てた一意に識別するための番号（以降、「履歴番号」と呼ぶ）が格納される。それ以外には、以下のようなデータが各要素に格納される。
【００４１】
添え字が１〜４で指定される各要素には、図５に示す楽曲情報中から抽出したデータが格納される。添え字が５で指定される要素には「ＮｏｔｅＣｏｕｎｔ」と表記のレッスンエリア内の楽音数、添え字が６で指定される要素には「Ｄａｔｅ」と表記のレッスン日時、添え字が７で指定される要素には「ＬＳｔｙｌｅ」と表記のレッスン方法を示すデータ、添え字が８で指定される要素には「ＬＡｒｅａ」と表記のレッスン番号、添え字が９で指定される要素には「ＬＨａｎｄ」と表記のレッスンの対象となったパートを示すデータ、添え字が１０で指定される要素には「ＬＴｅｍｐｏ」と表記のレッスン時に設定されたテンポの値、添え字が１１で指定される要素には「ＲｓｌｔＯｋｅｙ」と表記の適正楽音（発音させるべきタイミングで発音を指示した発音させるべき楽音）数、添え字が１２で指定される要素には「ＲｓｌｔＮＧ」と表記の発音させるべき楽音のなかで発音を指示できなかった楽音数、添え字が１３で指定される要素には「ＲｓｌｔＭｉｓｓＴｏｕｃｈ」と表記の発音を指示した発音させるべきでない楽音数、添え字が１４で指定される要素には「ＲｓｌｔＴｉｍｉｎｇ」と表記の発音を指示したタイミングが適切なタイミングから僅かにずれていた楽音数、及び添え字が１５で指定される要素には「ＲｓｌｔＣｌｅａｒＬｅｖｅｌ」と表記のクリアレベル、がそれそれ格納される。１１〜１５の添え字で指定される要素に格納されるのが結果データであり、それ以外の添え字、即ち０〜１０の添え字で指定される要素に格納されるのが状況データである。
【００４２】
本実施の形態では、図３、及び図４に示すように、グリッド状に枠（セル）を配置し、クリアレベルを配置する枠をユーザーが行ったレッスンに応じて決定することにより、その結果を複数、履歴という形で提示できるようになっている。そのような履歴の提示のために、図７に示す履歴表示用データ、及び図８に示す表示色設定用データを用意している。
【００４３】
上記履歴表示用データは、枠をグリッド状に配置するためのものであり、３次元の配列変数ｄｉｓｐＧｒｉｄとして扱っている。その第１、及び第２添え字は、それぞれグリッドを構成する行、列の指定用である。第３添え字は、第１、及び第２添え字によって指定される枠の表示に係わるデータの指定用である。そのデータとしては、以下のようなものを必要に応じて格納するようにしている。
【００４４】
その添え字が０で指定される要素には、図７中「ＣｏｌｕｍｎＩＤ」と表記の列番号が格納される。以降、同様に、添え字が１で指定される要素には「ｄｉｓｐＴｅｘｔ」と表記の表示文字列、添え字が２で指定される要素には「ｐｏｓＸ」と表記の枠の横（Ｘ）座標値、添え字が３で指定される要素には「ｐｏｓＹ」と表記の枠の縦（Ｙ）座標値、添え字が４で指定される要素には「ＳＸ」と表記の枠の横幅（Ｘ軸上の幅）、添え字が５で指定される要素には「ＳＹ」と表記の枠の縦幅（Ｙ軸上の幅）、添え字が６で指定される要素には「ｂｇＣｏｌｏｒ」と表記の枠内の表示（背景）色を示す値、添え字が７で指定される要素には「Ｔｅｘｔｃｏｌｏｒ」と表記の表示文字列の表示色を示す値、添え字が８で指定される要素には「Ｌｉｎｅｃｏｌｏｒ」と表記のラインの表示色を示す値、がそれぞれ格納される。１、８の添え字で指定される要素には、必要に応じて値が格納される。
【００４５】
図８に示す表示色設定用データは、クリアレベル別に枠内の表示色を変化させるためのものであり、２次元の配列変数ｄｉｓｐＣｏｌｏｒ  として扱っている。その第１添え字は、クリアレベルに応じた枠内の表示色に係わるデータである表示色データ指定用であり、第２添え字は、表示色データを構成するデータの指定用である。その表示色データを構成するデータとしては、以下のようなものがある。
【００４６】
第２添え字が０で指定される要素には、図８中「ＳｃｏｒｅＦｒｏｍ」と表記の表示色データが対応するクリアレベルの最小値が格納される。以下、同様に、添え字が１で指定される要素には「ＳｃｏｒｅＴｏ」と表記のそのクリアレベルの最大値、添え字が２で指定される要素には「ｂｇＣｏｌｏｒ」と表記の枠内の表示（背景）色を示す値、添え字が３で指定される要素には「ＴｅｘｔＣｏｌｏｒ」と表記の文字列の表示色を示す値、添え字が４で指定される要素には「ＬｉｎｅＣｏｌｏｒ」と表記のラインの表示色を示す値、がそれぞれ格納される。図７に示す履歴表示用データの第３添え字が６〜８で指定される要素には、クリアレベルに応じて表示色データ中から抽出された値が代入される。
【００４７】
次に、上述したような各種データを用いてレッスン結果を表示させるＣＰＵ１０１の動作について、図９〜図１３に示す各種フローチャートを参照して詳細に説明する。
図９は、ＣＰＵ１０１が実行するイベント処理のフローチャートである。レッスン、及びその結果の表示にのみ着目して、それらをユーザーが指示することで行われる処理の流れを示したものである。始めに、図９を参照して、そのイベント処理について詳細に説明する。そのイベント処理は、ＲＯＭ１０２に格納されたプログラムをＣＰＵ１０１が実行することで実現される。
【００４８】
先ず、ステップ９０１では、イベントが発生するのを待つ。ここで発生を待つイベントとは、レッスンの開始、或いはレッスン結果の表示を指示するための操作子への操作である。レッスンは、モードスイッチがレッスン有効側になっている状態でスタート／ストップスイッチを操作することにより、レッスン結果の表示は、表示形態を選択した後、結果表示スイッチを操作することにより行われるようになっている。このことから、そのような状態でスタート／ストップスイッチ、或いは表示スイッチをユーザーが操作した場合に、ステップ９０１からステップ９０２に移行する。なお、レッスン番号は、レッスンを行う曲を選択した状態で所定のスイッチを操作した後にテンキーを操作して入力するようになっている。デフォルトは、前回、行ったレッスンの番号である。
【００４９】
ステップ９０２では、発生したイベントがレッスンの開始を指示するものか否か判定する。ユーザーがスタート／ストップスイッチを操作していた場合、レッスンの開始を指示するイベントが発生したとして、判定はＴｒｕｅとなり、ステップ９０３に移行する。そうでない場合には、判定はＦａｌｓｅとなってステップ９０７に移行する。
【００５０】
ステップ９０３では、レッスン（ユーザーによる演奏）が終了したか否か判定する。ユーザーがスタート／ストップスイッチを操作してからレッスンに必要な時間が経過するか、或いはそのスイッチをユーザーが再度、操作してその終了を指示した場合、レッスンは終了したとして判定はＴｒｕｅとなり、ステップ９０５に移行する。そうでない場合には、判定はＦａｌｓｅとなってステップ９０４に移行し、ユーザーが鍵盤１０５を操作することで発生させたイベントの内容を保存した後、再度、ステップ９０３に戻る。それにより、レッスンが終了するまでの間、ユーザーによって発生したイベントの内容の保存を行う。このとき、保存するのは、例えばイベントの内容を示すイベントデータ（ここではＭＩＤＩデータ）、及びそのイベントが発生したタイミングを示す時間（タイム）データである。
【００５１】
一方、ステップ９０５では、ユーザーが鍵盤１０５を操作して行った演奏内容を楽音単位で正しいか否か判定する演奏の正誤判定処理を実行する。次のステップ９０６では、その実行結果から、ユーザーが行ったレッスンの結果を特定し、特定した結果を練習履歴ＤＢ１１０に保存する練習結果の保存処理を実行する。その実行後は上記ステップ９０１に戻る。
【００５２】
上記ステップ９０２の判定がＦａｌｓｅとなって移行するステップ９０７では、履歴の表示を指示する履歴表示コマンドの入力にあたる結果表示スイッチをユーザーが操作したか否か判定する。そのスイッチをユーザーが操作した場合、判定はＴｒｕｅとなってステップ９０８に移行し、その操作の前にユーザーが選択した表示形態でレッスン結果を表示部１０６に表示させる演奏結果の表示処理を実行する。その後は上記ステップ９０１に戻る。一方、そうでない場合には、判定はＦａｌｓｅとなり、他のステップの処理を実行することなくそのステップ９０１に戻る。
【００５３】
以降は、上記イベント処理内で実行されるサブルーチン処理について図１０〜図１３に示す各種フローチャートを参照して詳細に説明する。
図１０は、上記ステップ９０５として実行される演奏の正誤判定処理のフローチャートである。サブルーチン処理については、始めに図１０を参照して、その正誤判定処理について詳細に説明する。その判定処理は、上記ステップ９０４で保存したイベント内容を、ユーザーが選択した曲の曲データ（以降、「教材」とも呼ぶことにする）と比較することで行われる。
【００５４】
先ず、ステップ１００１では、各種変数の初期化を行う。それにより、適正楽音数の計数用の変数ｉＯｋｅｙ、ミスタッチによりユーザーが発音させた楽音数の計数用の変数ｉＭｉｓｓＴｏｕｃｈ、及びタイミングミスタッチした楽音数の計数用の変数ｉＴｉｍｉｎｇＭｉｓｓ  にそれぞれ０を代入する。
【００５５】
各イベント内容は、ＭＩＤＩデータ、及びその前に位置させた時間データの形で保存している。このことから、ステップ１００１に続くステップ１００２では、保存したデータのうちの一つに着目するためにポイント指定を行う。その次に移行するステップ１００３では、それによって指定されたデータがＭＩＤＩデータか否か判定する。そのデータがＭＩＤＩデータだった場合、判定はＴｒｕｅとなってステップ１００４に移行する。そうでない場合には、判定はＦａｌｓｅとなってステップ１０１１に移行する。
【００５６】
ステップ１０１１では、指定されたデータが存在しないか否か判定する。着目すべきデータを全て着目、つまりデータの処理が終了した場合、判定はＴｒｕｅとなり、ここで一連の処理を終了する。そうでない場合には、例えば指定されたデータが時間データだったような場合には、判定はＦａｌｓｅとなって上記ステップ１００２に戻り、次のデータのポイント指定を行う。
【００５７】
ステップ１００４では、それに付加された時間データ等から、指定されたＭＩＤＩデータの演奏上の位置（図中「現在地」と表記）を特定する。続くステップ１００５では、特定した演奏上の位置を基準にして教材と比較する。本実施の形態では、楽音の発音開始に注目して比較を行っている。その比較を行った後にステップ１００６に移行する。
【００５８】
ステップ１００６では、ＭＩＤＩデータが示すイベントが楽音の発音開始であり、そのイベントの内容が正しいか否か判定する。特定した演奏上の位置と許容範囲内で一致する位置で教材が同じ音高の楽音の発音開始を表していたような場合、判定はＴｒｕｅとなってステップ１００７に移行し、変数ｉＯｋｅｙの値をインクリメントした後、上記ステップ１００２に戻る。そうでない場合には、判定はＦａｌｓｅとなってステップ１００８に移行する。
【００５９】
ステップ１００８では、ＭＩＤＩデータが示すイベントが楽音の発音開始であり、タイミング的に許容範囲内では一致しない近傍な位置で教材が同じ音高の楽音の発音開始を表しているかか否か判定する。そのような楽音の発音開始を教材が表していた場合、判定はＴｒｕｅとなり、次にステップ１００９で変数ｉＴｉｍｉｎｇＭｉｓｓ  の値をインクリメントした後、上記ステップ１００２に戻る。そうでない場合には、判定はＦａｌｓｅとなってステップ１０１０に移行する。
【００６０】
ステップ１０１０では、ＭＩＤＩデータが示すイベントが楽音の発音開始であった場合、その発音開始は発音させるべきでない楽音の発音を開始させるものだとして、変数ｉＭｉｓｓＴｏｕｃｈの値をインクリメントする。その後は上記ステップ１００２に戻る。
【００６１】
このようにして、ユーザーが行ったレッスンの結果を示す３種類の値が計数される。次に、それら計数した値を含めたレッスン結果を示すデータを練習履歴ＤＢ１１０に保存するためにステップ９０６として実行される練習結果の保存処理について、図１１に示すそのフローチャートを参照して詳細に説明する。
【００６２】
先ず、ステップ１１０１では、上述の演奏の正誤判定処理の実行結果、及びレッスンの対象となった先頭と最後の各小節番号を取得する。正誤判定処理の実行結果は、その判定処理から各種変数ｉＯｋｅｙ、ｉＭｉｓｓＴｏｕｃｈ、及びｉＴｉｍｉｎｇＭｉｓｓが渡されることで取得され、各小節番号は、ユーザーが行ったレッスンの番号をキーに楽曲情報（図５参照）中から対応する番号（ＳｔａｒｔＭｅａｓ、ＥｎｄＭｅａｓ）を抽出することで行われる。
【００６３】
ステップ１１０１に続くステップ１１０２では、レッスン情報の取得を行う。その取得は、取得用の各種変数ｔｍｐＬＳｔｙｌｅ、ｔｍｐＬＡｒｅａ、ｔｍｐＬＨａｎｄ、ｔｍｐＬＴｅｍｐｏ、ｔｍｐＮｏｔｅＣｏｕｎｔに、それぞれ、練習方法に割り当てられた番号、レッスン番号、レッスンパートを示す番号、レッスン時に設定されたテンポ値、発音させるべき全楽音数、を代入する。発音させるべき全楽音数は、楽音情報を構成するカリキュラムデータからパートに応じて抽出するか、或いは抽出した楽音数を更に加算することで取得される。レッスン情報の取得後はステップ１１０３に移行する。
【００６４】
ステップ１１０４〜１１０６では、変数ｉの値を随時、インクリメントしながら、練習履歴ＤＢ１１０にレッスン結果を格納する場所（ここでは配列変数ｐｒａｃｔｉｃｅ＿ｄｂ  の要素）を探すための処理が行われる。そのＤＢ１１０に格納可能なレッスン結果には限りがあることから、その場所を探し出せない場合には、レッスン結果の格納は行わないようにしている。つまり、レッスン結果を格納できるようにするには、それまでに格納されたレッスン結果の全て、或いは一部のユーザーによる消去を必要とさせている。
【００６５】
ステップ１１０４では、変数ｉの値がＤＢ１１０にデータの格納先として指定可能な値よりも大きいか否か判定する。変数ｉの値がその値より大きい場合、判定はＴｒｕｅとなり、ＤＢ１１０に新たにレッスン結果を格納することはできないとして、ここで一連の処理を終了する。そうでない場合には、判定はＦａｌｓｅとなってステップ１１０５に移行する。
【００６６】
ステップ１１０５では、配列変数ｐｒａｃｔｉｃｅ＿ｄｂ  の第１添え字が変数ｉの値、第２添え字が０で指定される要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［０］がｎｕｌｌ、即ちその要素に値が代入されていないか否か判定する。それに値が代入されていた場合、判定はＦａｌｓｅとなり、次にステップ１１０６で変数ｉの値をインクリメントした後、上記ステップ１１０４に戻る。一方、そうでない場合には、判定はＴｒｕｅとなってステップ１１０７に移行する。
【００６７】
ステップ１１０７では、配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［０−１４］  にそれぞれ値を代入する。具体的には、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［０］には変数ｉの値を代入する。以降、同様に、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［１］には楽曲情報を構成する全曲データ中の配列要素ｓｏｎｇ＿ｉｎｆｏ［１］の値、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［２］にはステップ１１０１で取得した開始小節の番号、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［３］には終了小節の番号、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［４］には配列要素ｓｏｎｇ＿ｉｎｆｏ［３］の値、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［５］には変数ｔｍｐＮｏｔｅＣｏｕｎｔの値、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［６］には現在日時、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［７−１１］  には、それぞれ変数ｔｍｐＬＳｔｙｌｅ、ｔｍｐＬＡｒｅａ、ｔｍｐＬＨａｎｄ、ｔｍｐＬＴｅｍｐｏ、及びｉＯｋｅｙの各値、要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［１２］には変数ｔｍｐＮｏｔｅＣｏｕｎｔの値から変数ｉＯｋｅｙの値を引いた値、及び要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［１３−１４］にはそれぞれ変数ｉＭｉｓｓＴｏｕｃｈ、ｉＴｉｍｉｎｇＭｉｓｓの各値が代入される。
【００６８】
ステップ１１０７に続くステップ１１０８では、クリアレベルを算出し、その算出結果を配列要素ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］  に代入する。その算出は、例えば変数ｉＯｋｅｙの値から変数ｉＭｉｓｓＴｏｕｃｈの値を減算し、その減算結果に１００を掛けて、更に変数ｔｍｐＮｏｔｅＣｏｕｎｔの値で除算することで行うようになっている（クリアレベル＝（ｉＯｋｅｙ−ｉＭｉｓｓＴｏｕｃｈ）×１００／ｔｍｐＮｏｔｅＣｏｕｎｔ）。単位は％である。そのようにして算出したクリアレベルを保存した後、一連の処理を終了する。
【００６９】
上述したようにして、ユーザーがレッスンを行う度に、その結果を示すデータが練習履歴ＤＢ１１０に保存される。それにより、過去に行ったレッスンの結果やその推移をユーザーが容易に把握できるようにさせている。
練習履歴ＤＢ１１０に保存されたレッスン結果は、図２〜図４の何れかの画面で表示される。それらの画面のうちの何れかを表示させるのが、図９に示すイベント処理内でステップ９０８として実行される演奏結果の表示処理である。
【００７０】
その表示処理は、ユーザーが選択した表示形態でレッスン結果を表示させるために、その表示形態別に用意されたサブルーチン処理を実行するようになっている。ここでは、図３、及び図４に示す各画面でレッスン結果を表示させるためのサブルーチン処理に着目して、その内容について説明することとする。説明上、便宜的に、図３に示す画面でレッスン結果を表示させるサブルーチン処理を「レッスン別履歴表示処理」、図４に示す画面でそれを表示させるサブルーチン処理を「小節別履歴表示処理」とそれぞれ呼ぶことにする。
【００７１】
図１２は、上記レッスン別履歴表示処理のフローチャートである。その履歴表示処理は、他方の履歴表示処理と同様に、図７に示す履歴表示用データ、及び図８に示す表示色設定用データを参照して行われる。始めに図１２を参照して、その履歴表示処理について詳細に説明する。
【００７２】
図７に示す履歴表示用データ、即ち配列変数ｄｉｓｐＧｒｉｄの第３添え字が０、２〜５で指定される各要素には、特に詳細な説明は省略するが、表示形態別のサブルーチン処理の実行前の段階でその表示形態に応じた値が代入される。それにより、図２〜図４に示す配置の画面を表示できるようにさせている。第２添え字がレッスン番号に対応し、第３添え字が０で指定される要素には、そのレッスン番号を代入させている。
【００７３】
先ず、ステップ１２０１では、描画の対象とする行（ライン）の管理用である変数ｉに０を代入する。続くステップ１２０２では、その変数ｉの値で指定される行が描画の対象でないか、即ち描画すべき行の描画が終了したか否か判定する。描画すべき行の描画が終了した場合、判定はＴｒｕｅとなり、ここで一連の処理を終了する。そうでない場合には、判定はＦａｌｓｅとなってステップ１２０３に移行する。
【００７４】
ステップ１２０３では、変数ｊに０を代入する。その変数ｊは、配列変数ｄｉｓｐＣｏｌｏｒ  として扱う表示色設定用データ（図８参照）を構成する表示色データのなかから現在、注目しているレッスン結果に対応するものを探し出すために用意したものである。変数ｊに１を代入した後に移行するステップ１２０４では、変数ｊの値で指定される表示色データが無いか否か判定する。そのような表示データが表示色設定用データに存在しない場合、判定はＴｒｕｅとなり、ステップ１２１３で変数ｉの値をインクリメントした後、上記ステップ１２０２に戻る。それにより、着目する対象を別のレッスン結果に変えて、それ以下の処理を同様に実行する。一方、そうでない場合には、判定はＦａｌｓｅとなってステップ１２０５に移行する。ステップ１２０４でのＴｒｕｅの判定は、レッスン結果に対応する表示色データが存在しないことを意味する。
【００７５】
ステップ１２０５では、配列要素ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］の値が、配列要素ｄｉｓｐＣｏｌｏｒ  ［ｊ］［０］の値以上で、且つ配列要素ｄｉｓｐＣｏｌｏｒ  ［ｊ］［１］の値未満か否か判定する。変数ｊの値で指定される表示色データが変数ｉの値で指定されるレッスン結果中のクリアレベルと対応するものであった場合、その関係が満たされることから、判定はＴｒｕｅとなってステップ１２０７に移行する。そうでない場合には、判定はＦａｌｓｅとなり、次にステップ１２０６で変数ｊの値をインクリメントした後、上記ステップ１２０４に戻る。それにより、インクリメント後の変数ｊの値で指定される表示色データが現在、注目しているレッスン結果に対応しているものか否かの確認を行う。
【００７６】
ステップ１２０７では、描画の対象とする列の管理用である変数ｋに０を代入する。その後に移行するステップ１２０８では、その変数ｋの値で指定される列が描画の対象でないか、即ち現在、描画を行っている行での列の描画が終了したか否か判定する。列の描画が終了した場合、判定はＴｒｕｅとなり、ステップ１２１３で変数ｉの値をインクリメントした後、上記ステップ１２０２に戻る。そうでない場合には、判定はＦａｌｓｅとなってステップ１２０９に移行する。
【００７７】
ステップ１２０９では、配列要素ｄｉｓｐＧｒｉｄ  ［ｉ］［ｋ］［０］の値（列番号）が、配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［８］の値（レッスン番号）と等しいか否か判定する。それらの値が等しい場合、判定はＴｒｕｅとなってステップ１２１１に移行する。そうでない場合には、判定はＦａｌｓｅとなり、次にステップ１２１０で変数ｋの値をインクリメントした後、上記ステップ１２０８に戻る。
【００７８】
ステップ１２１１では、各種表示データの設定を行う。その設定は、配列変数ｄｉｓｐＧｒｉｄの第１添え字、第２添え字が変数ｉ、ｋの各値で指定される要素を対象に行う。具体的には要素ｄｉｓｐＧｒｉｄ［１］［ｋ］［１］  に配列要素ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］の値、要素ｄｉｓｐＧｒｉｄ［１］［ｋ］［６］  に配列要素ｄｉｓｐＣｏｌｏｒ［ｉ］［２］  の値、要素ｄｉｓｐＧｒｉｄ［１］［ｋ］［７］  に配列要素ｄｉｓｐＣｏｌｏｒ［ｉ］［３］  の値、要素ｄｉｓｐＧｒｉｄ［１］［ｋ］［８］  に配列要素ｄｉｓｐＣｏｌｏｒ［ｉ］［４］  の値、をそれぞれ代入する。次に移行するステップ１２１２では、ステップ１２１１で設定したデータに従い、変数ｉ、ｋの各値から特定されるセル（枠）の描画を行う。その後はステップ１２１３に移行して、変数ｉのインクリメントを行う。
【００７９】
このようにして、各行毎にレッスン結果を表示させるべきセルを特定し、そのセルを設定したデータに従って描画することにより、図３に示すように履歴画面の画像データを生成し、その画像データを表示部１０６に送出することにより表示させる。特には図示していないが、その履歴画面を表示させるために、「Ｌ１」等のレッスン番号を表すシンボルは、変数ｉの値を−１としたときに対応する行に描画し、レッスン日時は変数ｋの値を０、或いは−１としたときに対応する列に描画する。
【００８０】
次に、図４に示す小節別履歴画面を表示させることをユーザーが指定した場合に実行される小節別履歴表示処理について、図１３に示すそのフローチャートを参照して詳細に説明する。
この履歴表示処理では、ステップ１３０１〜１３０８で実行される処理が、上述のレッスン別履歴表示処理におけるステップ１２０１〜１２０８のそれと基本的に同じ内容である。このことから、ステップ１３０９以降の処理についてのみ説明することとする。
【００８１】
図７に示す履歴表示用データ、即ち配列変数ｄｉｓｐＧｒｉｄの第３添え字が０、２〜５で指定される各要素には、特に詳細な説明は省略するが、表示形態別のサブルーチン処理の実行前の段階でその表示形態に応じた値が代入される。第１添え字が同じで第３添え字が０で指定される、第２添え字を指定する値がレッスンした範囲の小節の番号に対応する各要素には、その小節番号を代入させている。それにより、図４に示すように、複数のセルによりレッスンを行った小節の範囲を示せるようにさせている。
【００８２】
上記ステップ１３０９では、配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［０］  の値が、配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［２］の値（レッスンを開始した小節の番号）以上、且つ配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［３］の値（レッスンを終了した小節の番号）以下か否か判定する。配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［０］  の値がそのような条件を満たしていた場合、判定はＴｒｕｅとなってステップ１３１１に移行する。そうでない場合には、判定はＦａｌｓｅとなり、次にステップ１３１０で変数ｋの値をインクリメントした後、上記ステップ１３０８に戻る。
【００８３】
ステップ１３１１では、ステップ１２１１と同様に、各種表示データの設定を行う。但し、配列要素ｄｉｓｐＧｒｉｄ［１］［ｋ］［１］  への配列要素ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］の値の代入は、レッスンが終了した小節に対応するセルにのみクリアレベルを配置させるために、配列要素ｄｉｓｐＧｒｉｄ［１］［ｋ＋１］［１］  に値が代入されていないことが確認された場合にのみ行う。その設定後に移行するステップ１３１２では、ステップ１３１１で設定したデータに従い、変数ｉ、ｋの各値から特定されるセル（枠）の描画を行う。その後はステップ１３１３に移行して、変数ｋのインクリメントを行う。
＜第２の実施の形態＞
上記第１の実施の形態では、最後に行ったレッスンの結果の他に、それ以外のレッスン結果を併せて表示させるようにしている。これに対し、第２の実施の形態は、その他に、レッスンの対象としている曲を修了するまでの今後の過程を予測し、その予測結果を表示させられるようにしたものである。
【００８４】
その予測結果は、今後におけるユーザーの具体的な一つの目標となる。このため、その予測結果を提示することにより、ユーザーにとってはレッスンに励める環境が実現されることになる。
第２の実施の形態による学習結果表示装置を搭載した電子鍵盤楽器の構成は、第１の実施の形態におけるそれと基本的に同じである。動作についても大部分は同じである。このことから、第１の実施の形態の説明で付した符号をそのまま用いて、第１の実施の形態から異なる部分についてのみ説明することとする。
【００８５】
図１４は、第２の実施の形態におけるレッスン別履歴画面を示す図である。
上述したように、曲のレッスンは、レッスン番号を選択して行い、その選択範囲は、過去に行ったレッスンの結果に応じて制限している。このようなことから、第２の実施の形態では、図１４に示すように、番号別に各レッスンの結果を参照し、その番号別のレッスンのクリアレベルが推移していく状態を考慮して今後のレッスンのクリアレベルの推移を予測し、その予測結果をグラフ表示させるようにしている。
【００８６】
その予測を行うために、第２の実施の形態では、練習データ毎に、その予測用のデータ（以降、「修了予測用データ」と呼ぶ）を用意している。図１５は、その修了予測用データの構成を示す図である。
その予測用データは、図１５に示すように、２次元の配列変数ｌｉｎｉｅｒとして扱っている。第１添え字は、練習データ（レッスン結果）毎に用意した予測用データの指定用であり、第２添え字は、その予測用データを構成するデータ指定用である。１練習データ分の予測用データとして、第２添え字が０で指定される要素に「ｌｉｎｅｒＩＤ」と表記の座標番号、第２添え字が１で指定される要素に「ＬＡｒｅａ」と表記のレッスン番号、第２添え字が２で指定される要素に「ＣｌｅａｒＬｅｖｅｌ」と表記のクリアレベル、第２添え字が３で指定される要素に「Ｘ」と表記の水平方向（Ｘ軸）座標値、第２添え字が４で指定される要素に「Ｙ」と表記の鉛直方向（Ｙ軸）座標値、が代入される。
【００８７】
レッスン結果から得られた予測用データは、図１４に示す履歴画面上の点の位置を示すものとして用いている。それにより、本実施の形態では、クリアレベルの今後の推移は、各点を通る線、或いは各点を通る線に近似する線を特定することにより予測するようにしている。
【００８８】
第２の実施の形態では、レッスン別履歴表示処理の実行時に、レッスン結果毎にその予測用データを抽出・生成し、そのデータを用いて修了予測を行う。次に、第２の実施の形態におけるレッスン別履歴表示処理について、図１６に示すそのフローチャートを参照して詳細に説明する。
【００８９】
図１４に示すように、第２の実施の形態でもレッスン結果をセルの表示色等を変えて表示している。その表示に係わる部分は第１の実施の形態と基本的に同じである。このことから、その部分の重複する説明を省くために、図１６には、修了予測に係わる部分のみを抜粋してその処理の流れを表している。それにより、修了予測に係わる部分、つまり配列変数ｌｉｎｅｒ  の各要素へのデータの代入やその代入されたデータを用いた今後のクリアレベルの予測方法などについてのみ説明する。
【００９０】
ステップ１６０１〜１６０８では、着目する行（レッスン結果）を随時、変更しながら、その行に対応する修了予測用データを抽出して配列要素に代入していくための処理が行われる。その行の管理用が変数ｉであり、行われたレッスンのレッスン番号を特定するために変数ｋを用意している。
【００９１】
先ず、ステップ１６０１では、変数ｉに０を代入する。続くステップ１６０２では、その変数ｉの値で指定されるレッスン結果（練習データ）が存在しないか否か、即ち予測用データの抽出が終了したか否か判定する。その抽出が終了した場合、判定はＴｒｕｅとなってステップ１６０９に移行する。そうでない場合には、判定はＦａｌｓｅとなってステップ１６０３に移行する。
【００９２】
なお、特に詳細な説明は省略するが、今後、予測されるクリアレベルの推移をグラフ表示させるために、表示させるレッスン結果が存在していない行もそれを表示させる余裕があれば表示の対象としている。それにより、図１４に示すように履歴画面を表示させるようにしている。
【００９３】
ステップ１６０３では、変数ｋに０を代入する。続くステップ１６０４では、配列変数ｄｉｓｐＧｒｉｄの第１添え字が変数ｉの値、第２添え字が変数ｋの値で指定される要素の確認が全て終了したか否か判定する。その確認は、変数ｉの値で指定される行に表示させるべきレッスン結果が存在しないか否か判断するために行うものである。このため、その行に表示させるべきレッスン結果が存在しないことが確認できた場合、判定はＴｒｕｅとなり、ステップ１６０８で変数ｉの値をインクリメントした後、上記ステップ１６０３に戻る。そうでない場合には、判定はＦａｌｓｅとなってステップ１６０５に移行する。
【００９４】
ステップ１６０５では、配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［０］  の値（列番号）が配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［８］の値（レッスン番号）と等しいか否か判定する。それらの値が等しい場合、判定はＴｒｕｅとなってステップ１６０７に移行し、そうでない場合には、判定はＦａｌｓｅとなり、次にステップ１６０６で変数ｋの値をインクリメントした後、上記ステップ１６０４に戻る。配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［８］の値が０であった場合には、レッスン番号として０はありえない番号であることから、それらの値が等しくとも一致していないと見なしている。
【００９５】
ステップ１６０７では、図１４に示す履歴画面上でレッスン結果が対応する点の座標位置を計算し、配列変数ｌｉｎｅｒ  の第１添え字が変数ｉの値で指定される各要素へのデータの代入を行う。その代入は、配列要素ｌｉｎｅｒ［ｉ］［０］  には変数ｉの値、配列要素ｌｉｎｅｒ［ｉ］［１］  には配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［８］の値、配列要素ｌｉｎｅｒ［ｉ］［２］  には配列要素ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］の値、配列要素ｌｉｎｅｒ［ｉ］［３］  には配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［２］  の値に対し、配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［４］  の値に配列要素ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］の値を掛けて１００で割った値を加算して得られる値（＝ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［２］＋ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［４］×ｐｒａｃｔｉｃｅ＿ｄｂ［ｉ］［１５］／１００）、配列要素ｌｉｎｅｒ［ｉ］［４］  には配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［３］  の値に対し、配列要素ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［５］  の値を２で割って得られる値（＝ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［３］＋ｄｉｓｐＧｒｉｄ［ｉ］［ｋ］［５］／２）、をそれぞれ代入する。その代入後はステップ１６０８に移行し、変数ｉの値のインクリメントを行う。
【００９６】
このようにして、配列変数ｌｉｎｅｒの第１添え字が変数ｉの値で指定される各要素には、レッスン結果、及びそのレッスンの番号に応じたデータが代入される。配列要素ｌｉｎｅｒ［ｉ］［３］  に代入されたＸ座標値は、レッスン番号に対応するセルにおいて、そのセルの基点となるＸ座標値に、そのセルのＸ軸上の幅を示す値をクリアレベルに応じて加算した値である。配列要素ｌｉｎｅｒ［ｉ］［４］に代入されたＹ座標値は、レッスン番号に対応するセルにおいて、そのセルの基点となるＹ座標値に、そのセルのＹ軸上の幅を示す値の半分を加算した値である。
【００９７】
上記ステップ１６０２の判定がＴｒｕｅとなって移行するステップ１６０９では、レッスン別に座標位置を特定した点を通る線に近似する線の描画用である関数を生成する線形近似処理を実行する。続くステップ１６１０では、生成した関数を用いて線を描画する近似曲線描画処理を実行する。その後に移行するステップ１６１１では、生成した関数から曲の全レッスンが修了するまでに要するレッスン回数を予測し、その予測結果を描画する修了予測処理を実行する。一連の処理はその後に修了する。
【００９８】
以降は、上述の履歴表示処理内で実行されるサブルーチン処理について、図１７、図１８に示す各フローチャートを参照して詳細に説明する。
図１７は、上記ステップ１６０９として実行される線形近似処理のフローチャートである。履歴表示処理内で実行されるサブルーチン処理では、図１７を参照して、始めに線形近似処理について詳細に説明する。本実施の形態では、レッスン別に座標位置を特定した点を通る線に近似する線の描画用である関数は、その関数で用いる係数を特定することで生成するようにしている。
【００９９】
先ず、ステップ１７０１では、係数代入用の変数ｇｒａｄ、ｒｏｏｔにそれぞれ０を代入する。続くステップ１７０２では、係数算出用の変数ｓｕｍ＿ｘ、ｓｕｍ＿ｙ、ｃｏｕｎｔ、ｓｕｍ＿ｘ＿ｓｑ、及びｓｕｍ＿ｘｙにそれぞれ０を代入する。その代入後は、ステップ１７０３で変数ｉに０を代入してからステップ１７０４に移行する。その変数ｉは、注目するレッスン結果の管理用である。
【０１００】
ステップ１７０４では、配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［０］に値が代入されていない、即ちその値がｎｕｌｌか否か判定する。それに値が代入されていない場合、つまり他に注目すべきレッスン結果が存在しない場合、判定はＴｒｕｅとなってステップ１７０７に移行する。そうでない場合には、判定はＦａｌｓｅとなってステップ１７０５に移行する。
【０１０１】
ステップ１７０５では、係数算出用の各変数に代入する値を計算して代入する処理を行う。それにより、変数ｓｕｍ＿ｘにはそれまでの値に配列要素ｌｉｎｅｒ［ｉ］［３］  の値を加算した値、変数ｓｕｍ＿ｙにはそれまでの値に配列要素ｌｉｎｅｒ［ｉ］［４］  の値を加算した値、変数ｓｕｍ＿ｘ＿ｓｑにはそれまでの値に対し、配列要素ｌｉｎｅｒ［ｉ］［３］  の値を２乗した値を加算した値、及び変数ｓｕｍ＿ｘｙにはそれまでの値に対し、配列要素ｌｉｎｅｒ［ｉ］［３］  の値に配列要素ｌｉｎｅｒ［ｉ］［４］  の値を掛けた値を加算した値、をそれぞれ代入し、変数ｃｏｕｎｔの値はインクリメントする。その次のステップ１７０６では、変数ｉの値をインクリメントする。その後は上記ステップ１７０４に戻る。
【０１０２】
そのステップ１７０４の判定がＴｒｕｅとなって移行するステップ１７０７では、変数ｇｒａｄ、ｒｏｏｔに代入する値を計算してそれらに代入する処理を行う。それらの変数に代入する値は、以下のようにして求めている。そのようにして変数ｇｒａｄ、ｒｏｏｔに代入する値を計算して代入した後、一連の処理を終了する。
【０１０３】
ｇｒａｄ＝（ｃｏｕｎｔ×ｓｕｍ＿ｘｙ−ｓｕｍ＿ｘ×ｓｕｍ＿ｙ）／（ｃｏｕｎｔ×ｓｕｍ＿ｘ＿ｓｑ−ｓｕｍ＿ｘ×ｓｕｍ＿ｘ）
ｒｏｏｔ＝（ｓｕｍ＿ｘ＿ｓｑ×ｓｕｍ＿ｙ−ｓｕｍ＿ｘ×ｓｕｍ＿ｘｙ）／（ｃｏｕｎｔ×ｓｕｍ＿ｘ＿ｓｑ−ｓｕｍ＿ｘ×ｓｕｍ＿ｘ）
本実施の形態では、生成する関数は１次関数、即ちｙ＝ａｘ＋ｂで表される関数としている。ａ、ｂは係数である。
【０１０４】
１次関数とｉ番目の点（ｘｉ，ｙｉ）との間の誤差ｅｒｉ  は、
ｅｒｉ  ＝ａｘｉ  ＋ｂ−ｙｉ
ｅｒｉ２  ＝ａ２ｘｉ２  ＋ｂ２−ｙｉ２＋２ａｂｘｉ−２ａｘｉｙｉ−２ｂｙｉ
となり、全体の誤差（２乗誤差）の和Ｅｒは、
Ｅｒ＝Σｅｒｉ２
＝ａ２Σｘｉ２＋ｎｂ２＋Σｙｉ２＋２ａｂΣｘｉ−２ａΣｘｉｙｉ−２ｂΣｙｉ
となる。
【０１０５】
このとき、和Ｅｒが最も小さくなるａ，ｂは、
∂Ｅｒ／∂ａ＝２ａΣｘｉ２＋２ｂΣｘｉ−２Σｘｉｙｉ＝０
∂Ｅｒ／∂ｂ＝２ａΣｘｉ＋２ｎｂ−２Σｙｉ＝０
を満たすものとなるので、
ａ＝（ｎΣｘｉｙｉ−ΣｘｉΣｙｉ）／（ｎΣｘｉ２−（Σｘｉ）２）
ｂ＝（Σｘｉ２Σｙｉ−ΣｘｉΣｘｉｙｉ）／（ｎΣｘｉ２−（Σｘｉ）２）
から得られることとなる。上述した線形近似処理は、係数であるａ，ｂを求めるために実行される。
【０１０６】
図１８は、図１６に示すレッスン別履歴表示処理内でステップ１６１１として実行される修了予測計算処理のフローチャートである。次に図１８を参照して、その計算処理について詳細に説明する。
先ず、ステップ１８０１では、変数ｔｅｒｍに０を代入する。次のステップ１８０２では、変数ｍａｘ＿ｃｕｒ、ｉにそれぞれ０を代入する。その代入後にはステップ１８０３に移行する。
【０１０７】
ステップ１８０３では、配列要素ｃｕｒ＿ｉｎｆｏ［ｉ］［０］に値が代入されていないか否か、即ちその値がｎｕｌｌか否か判定する。それに値が代入されていない場合、判定はＴｒｕｅとなってステップ１８０５に移行する。そうでない場合には、判定はＦａｌｓｅとなり、ステップ１８０４で変数ｉの値をインクリメントした後、再度、ステップ１８０３の処理を実行する。それにより、そのステップ１８０３の判定がＴｒｕｅとなった時点では、変数ｉには最も大きいレッスン番号が代入されていることとなる。
【０１０８】
ステップ１８０５では、変数ｍａｘ＿ｃｕｒに変数ｉの値を代入する。続くステップ１８０６では、変数ｍａｘ＿ｐｒａｃ、ｉにそれぞれ０を代入する。その後に移行するステップ１８０７では、配列要素ｐｒａｃｔｉｃｅ＿ｄｂ  ［ｉ］［０］に値が代入されていないか否か、即ちその値がｎｕｌｌか否か判定する。それに値が代入されていない場合、判定はＴｒｕｅとなってステップ１８０９に移行する。そうでない場合には、判定はＦａｌｓｅとなり、ステップ１８０８で変数ｉの値をインクリメントした後、再度、ステップ１８０７の処理を実行する。それにより、そのステップ１８０７の判定がＴｒｕｅとなった時点では、変数ｉにはユーザーが行ったレッスンの全回数が代入されていることとなる。
【０１０９】
ステップ１８０９では、変数ｍａｘ＿ｐｒａｃに変数ｉの値を代入する。次のステップ１８１０では、曲のレッスンを修了するまでに要すると予測されるレッスン回数（修了回数）を計算し、その計算結果を変数ｔｅｒｍに代入する。その計算は、上述の線形近似処理で値が代入された変数ｇｒａｄ、ｒｏｏｔを用いて行われる。具体的には、変数ｍａｘ＿ｃｕｒの値に変数ｇｒａｄの値を乗算し、その乗算結果に変数ｒｏｏｔの値を加算し、その加算結果を四捨五入することにより行っている（図中「ｔｅｒｍ＝ｉｎｔ（ｇｒａｄ×ｍａｘ＿ｃｕｒ＋ｒｏｏｔ）」と表記）。
【０１１０】
ステップ１８１０に続くステップ１８１１では、変数ｔｅｒｍの値が変数ｍａｘ＿ｐｒａｃの値以上か否か判定する。計算した修了回数がこれまで行ったレッスンの全回数以上であった場合、その関係が満たされることから、判定はＴｒｕｅとなり、変数ｔｅｒｍの値から変数ｍａｘ＿ｐｒａｃの値を減算した値、つまりユーザーが今後、行っていないレッスン番号のレッスンを全て修了するのに要すると予測されるレッスン回数を計算し、その計算結果を描画（図１４参照）させた後、一連の処理を修了する。反対にそうでない場合には、判定はＦａｌｓｅとなり、次にステップ１８１２で変数ｔｅｒｍに０を代入した後、一連の処理を終了する。
【０１１１】
なお、第２の実施の形態では、修了予測を行うために関数として１次関数を生成しているが、生成する関数は１次関数に限定されるものではない。指数関数、対数関数、或いはｎ（ｎは１より大きい整数）次関数などであっても良い。そのような関数は、例えば以下のようにして生成することができる。
【０１１２】
指数関数はｙ＝Ａｅｘｐ（Ｂｘ）＋ｃと表される。その起点を最初のレッスンに対応する点に合わせればｃの値は０となるのでｙ＝Ａｅｘｐ（Ｂｘ）となる。ここではそのことを前提に説明を行うこととする。
ｙ＝Ａｅｘｐ（Ｂｘ）の両辺の対数をとると、
Ｂｘ＝ｌｎｙ−ｌｎＡ
となり、
ｌｎｙ＝Ｂｘ＋ｌｎＡ
が導かれる。よって、ｍ個の各点（ｘ１，ｙ１）、・・・（ｘｍ，ｙｍ）の代わりに点（ｘ１，ｌｎｙ１）、・・・（ｘｍ，ｌｎｙｍ）をサンプルとして、そのサンプルとする点を通る線に近似する１次の関数ｌｎｙ＝ａｘ＋ｂを作成し、その作成した関数から、Ａ＝ｅｘｐ（ｂ）、Ｂ＝ａとすることで指数関数を作成する。
【０１１３】
対数関数は、ｙ＝Ａｌｎ（Ｂｘ）＋ｃと表される。その起点を最初のレッスンに対応する点に合わせればｃの値は０となるのでｙ＝Ａｌｎ（Ｂｘ）となる。ここでもそのことを前提に説明を行うこととする。
ｙ＝Ａｌｎ（Ｂｘ）は、
ｙ＝Ａｌｎ（Ｂｘ）＝Ａｌｎ（ｘ）＋Ａｌｎ（Ｂ）
と表すことができる。よって、指数関数のときと同様に、ｍ個の各点（ｘ１，ｙ１）、・・・（ｘｍ，ｙｍ）の代わりに点（ｌｎｘ１，ｙ１）、・・・（ｌｎｘｍ，ｙｎ）をサンプルとして、そのサンプルとする点を通る線に近似する１次の関数ｌｎｙ＝ａｘ＋ｂを作成し、その作成した関数から、Ａ＝ａ、Ｂ＝ｅｘｐ（ｂ／ａ）とすることで対数関数を作成する。
【０１１４】
ｎ次関数は、例えばｎの値が３であればｙ＝ａｘ３＋ｂｘ２＋ｃｘ＋ｄと表される。その関数とｉ番目の点（ｘｉ，ｙｉ）との間の誤差ｅｒｉ  は、
ｅｒｉ  ＝ａｘｉ３＋ｂｘｉ２＋ｃｘｉ＋ｄ−ｙｉ
ｅｒｉ２  ＝ａ２ｘｉ６  ＋ｂ２ｘｉ４＋ｃ２ｘｉ２＋ｄ２＋ｙｉ２
＋２ａｂｘｉ５＋２ａｃｘｉ４＋２ａｄｘｉ３＋２ｂｃｘｉ３
＋２ｂｄｘｉ２＋２ｃｄｘｉ
−２ａｘｉ３ｙｉ−２ａｘｉ２ｙｉ−２ａｘｉｙｉ−２ｄｙｉ
となり、全体の誤差（２乗誤差）の和Ｅｒは、
Ｅｒ＝Σｅｒｉ２
＝ａ２Σｘｉ６＋ｂ２Σｘｉ４＋ｃ２Σｘｉ２＋ｎｄ２＋Σｙｉ２
＋２ａｂΣｘｉ５＋２ａｃΣｘｉ４＋２ａｄΣｘｉ３＋２ｂｃΣｘｉ３
＋２ｂｄΣｘｉ２＋２ｃｄΣｘｉ
−２ａΣｘｉ３ｙｉ−２ａΣｘｉ２ｙｉ−２ａΣｘｉｙｉ−２ｄΣｙｉ
となる。
【０１１５】
このとき、和Ｅｒが最も小さくなるａ、ｂ、ｃ、ｄは、
∂Ｅｒ／∂ａ＝２ａΣｘｉ６＋２ｂΣｘｉ５＋２ｃΣｘｉ４＋２ｄΣｘｉ３
−２Σｘｉ３ｙｉ＝０
∂Ｅｒ／∂ｂ＝２ａΣｘｉ５＋２ｂΣｘｉ４＋２ｃΣｘｉ３＋２ｄΣｘｉ２
−２Σｘｉ２ｙｉ＝０
∂Ｅｒ／∂ｃ＝２ａΣｘｉ４＋２ｂΣｘｉ３＋２ｃΣｘｉ２＋２ｄΣｘｉ
−２Σｘｉｙｉ＝０
∂Ｅｒ／∂ｄ＝２ａΣｘｉ３＋２ｂΣｘｉ２＋２ｃΣｘｉ＋２ｎｄ
−２Σｙｉ＝０
を満たすものとなる。
【０１１６】
ｎ次関数をｙ＝ａｎｘｎ＋ａｎ−１ｘｎ−１＋・・・＋ａ１ｘ＋ａ０としたとき、
Ｅｒ＝ΣｘΣｋΣｌａｋｘｉｋａｌｘｉｌ−２ΣｘｙΣｋΣｌａｋｘｉｋｙｉ＋ｙｉ２
となるから、
【０１１７】
【数１】
2004184757.tif 000003
【０１１８】
の関係を与えるａ０、ａ１、・・・、ａｎが最も誤差が小さくなると言える。よって、
【０１１９】
【数２】
2004184757.tif 000004
【０１２０】
を解くことによりｎ次関数を作成することができる。
表示の対象とするレッスン結果については、本実施の形態（第１、及び第２の実施の形態）では全てのレッスン結果を表示の対象とさせているが、必ずしもそうしなくとも良い。例えば予め定めた回数のレッスン毎に１レッスン結果を表示させても良く、１日につき１レッスン結果を表示させるようにしても良い。回数や日時の他には、行ったレッスンのレッスン番号に注目してレッスン結果を抜粋して表示させるようにしても良い。このように、様々な変形を行うことができる。これは練習履歴ＤＢ１１０へのレッスン結果（練習データ）の格納にも適用することができる。
【０１２１】
本実施の形態による学習結果表示装置は、電子楽器に搭載された学習結果表示装置に本発明を適用したものであるが、適用できる学習結果表示装置は電子楽器に搭載されたものに限定されるわけではない。また、結果を表示させる学習も曲の演奏に限定されるわけではなく、キーボードの操作を伴う学習などにも本発明は幅広く適用させることができる。
【０１２２】
上述したような学習演奏表示装置の動作、或いはその変形例の動作を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置を用いて本発明を適用させた学習結果表示装置を構築することができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【０１２３】
【発明の効果】
以上説明したように本発明は、ユーザーが行った学習の内容を示す学習内容データを、学習の手本とすべき内容を示す模範学習データと比較して生成される、ユーザーの学習結果を示す結果データを予め定めた規則に従って選択し、選択した結果データを表示装置上に表示させる。
【０１２４】
複数の学習結果を表示させた場合、ユーザーは自分が過去に行った学習の結果がどのようなものであり、それがどのように推移していったか容易に把握することができる。それにより、ユーザーが行った学習のレベルの推移を視覚的に提示することとなる。
【図面の簡単な説明】
【図１】第１の実施の形態による学習結果表示装置を搭載した電子楽器の構成図である。
【図２】演奏履歴画面を示す図である。
【図３】レッスン別履歴画面を示す図である。
【図４】小節別履歴画面を示す図である。
【図５】楽曲情報の構成を説明する図である。
【図６】練習履歴データベースの構成を説明する図である。
【図７】履歴表示用データを説明する図である。
【図８】表示色設定用データを説明する図である。
【図９】イベント処理のフローチャートである。
【図１０】演奏の正誤判定処理のフローチャートである。
【図１１】演奏結果の保存処理のフローチャートである。
【図１２】レッスン別履歴表示処理のフローチャートである。
【図１３】小節別履歴表示処理のフローチャートである。
【図１４】レッスン別履歴画面を示す図である（第２の実施の形態）。
【図１５】修了予測用データを説明する図である。
【図１６】レッスン別履歴表示処理のフローチャートである（第２の実施の形態）。
【図１７】線形近似処理のフローチャートである。
【図１８】修了予測計算処理のフローチャートである。
【符号の説明】
１０１    ＣＰＵ
１０２    ＲＯＭ
１０３    ＲＡＭ
１０４    スイッチ部
１０５    鍵盤
１０６    表示部
１１０  練習履歴データベース
【図１】
2004184757.tif 000005
【図２】
2004184757.tif 000006
【図３】
2004184757.tif 000007
【図４】
2004184757.tif 000008
【図５】
2004184757.tif 000009
【図６】
2004184757.tif 000010
【図７】
2004184757.tif 000011
【図８】
2004184757.tif 000012
【図９】
2004184757.tif 000013
【図１０】
2004184757.tif 000014
【図１１】
2004184757.tif 000015
【図１２】
2004184757.tif 000016
【図１３】
2004184757.tif 000017
【図１４】
2004184757.tif 000018
【図１５】
2004184757.tif 000019
【図１６】
2004184757.tif 000020
【図１７】
2004184757.tif 000021
【図１８】
2004184757.tif 000022