JP3988633B2 - 学習結果表示装置、及びプログラム - Google Patents
学習結果表示装置、及びプログラム Download PDFInfo
- Publication number
- JP3988633B2 JP3988633B2 JP2002352631A JP2002352631A JP3988633B2 JP 3988633 B2 JP3988633 B2 JP 3988633B2 JP 2002352631 A JP2002352631 A JP 2002352631A JP 2002352631 A JP2002352631 A JP 2002352631A JP 3988633 B2 JP3988633 B2 JP 3988633B2
- Authority
- JP
- Japan
- Prior art keywords
- learning
- data
- lesson
- display
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrically Operated Instructional Devices (AREA)
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、学習用装置に備えられた1つ以上の操作子(例えばキーボード上のキーや鍵盤上の鍵、等)に対し、予め定められた順序で操作していく学習をユーザーが行った結果を表示させるための技術に関する。
【0002】
【従来の技術】
例えばピアノや電子キーボードなどの鍵盤楽器では、押鍵すべき鍵を順次、押鍵していくことで演奏が行われる。しかし、演奏技術が未熟な演奏者(ユーザー)にとって、自身が行った演奏のレベルを適切に把握することは必ずしも容易でないのが実情である。このことから、そのレベルをユーザーが適切に把握できるように、演奏結果をデータとして表示させる演奏結果表示装置が製品化されている。
【0003】
その演奏結果表示装置は、曲の手本とすべき演奏内容を示すデータ(以降、「模範演奏データ」と呼ぶ)を参照して、ユーザーが演奏中に発音を指示した楽音毎に、それが発音させるべきタイミングで発音が指示されているか否か確認し、その確認結果を基に演奏結果を表示させるようになっている。その内容とは、例えば発音させるべき音高の楽音を発音させるべきタイミングでユーザーが発音を指示した数、そのように楽音の発音を指示できなかった数、等である。
【0004】
そのような内容を表示させるためには、当然のことながら、ユーザーが行った演奏の内容を示すデータ(以降、「演奏内容データ」と呼ぶ)が必要である。その演奏を行うためには楽器が必要である。このようなことから、演奏結果表示装置の多くは、楽器に搭載された形で製品化されている。
【0005】
【特許文献1】
実願平2−91089(実開平4−48553号)のマイクロフィルム
【特許文献2】
特開平5−289605号公報
【特許文献3】
特開平5−313561号公報
【0006】
【発明が解決しようとする課題】
従来の演奏結果表示装置は、例えば実際の演奏に先立ってその結果の表示を指示させるなどして、ユーザーが指定した演奏のみを対象にその結果を表示させるようになっていた。しかし、演奏は繰り返し練習するのが普通である。このため、ユーザーにとっては、演奏の練習を重ねていくなかでその演奏レベルがどのように推移しているのか分かりにくいという問題点があった。
【0007】
練習を繰り返すことにより、演奏レベルは向上するのが普通である。そのレベルが向上していく様子を視覚的に提示することは、練習の成果をユーザーに確認させることになることから、ユーザーにとっては励みになると考えられる。ユーザーが練習熱心なほど、その傾向があると考えられる。このようなことから、演奏レベルの推移を視覚的に提示することは大きな意味があると言える。このことは、演奏以外の学習結果の内容を提示する他の学習結果表示装置においても同様であると考えられる。
【0008】
本発明の課題は、ユーザーが行った学習のレベルの推移を視覚的に提示できる学習結果表示装置を提供することにある。
【0009】
【課題を解決するための手段】
本発明の学習結果表示装置は、ユーザーが行うべき学習の手本とすべき内容を示す模範学習データを記憶する模範学習データ記憶手段と、ユーザーが行うべき学習のカリキュラムを複数種記憶するカリキュラム記憶手段と、ユーザーが行った学習の内容を示す学習内容データを外部より取得する学習内容取得手段と、前記カリキュラム記憶手段に記憶されたカリキュラムを読み出し、読み出されたカリキュラムに従って前記模範学習データ記憶手段に記憶された模範学習データと学習内容取得手段により取得された学習内容データとを比較して、ユーザーの学習における習得度合いを示す学習履歴データを生成する学習履歴データ生成手段と、この学習履歴データ生成手段によりデータが生成される度に、生成された学習履歴データに当該学習履歴データに対応するカリキュラムを表わすデータ及び前記学習履歴データの累積生成数を表わす変数を付加して学習履歴記憶手段に記憶させる保存手段と、この学習履歴記憶手段に記憶された学習履歴データを、前記付加された変数及び前記カリキュラムを表わすデータの夫々を縦軸及び横軸として表示手段上に2次元表示するとともに、当該学習履歴データを表示する際、習得度合いに応じて表示形態を異ならせる表示制御手段と、前記表示手段に表示されている各学習履歴データの表示位置から2次元平面上の座標を算出する座標算出手段と、この座標算出手段により算出した各座標位置を通る線に近似する線を表わす関数を生成する線形近似手段と、この線形近似手段により生成した関数に基づいて前記表示手段上に、線を描画する描画手段と、を有する。
【0011】
また、前記表示制御手段はさらに、カリキュラム記憶手段に記憶されているカリキュラム数をカウントするカウント手段と、このカウント手段によりカウントされたカリキュラム数と前記線形近似手段にて生成された関数とに基づいて、前記全てのカリキュラムが終了するに必要な学習履歴データの数を算出して前記表示手段に表示する学習履歴回数算出手段と、を有することが望ましい。
【0012】
本発明のプログラムは、ユーザーが行うべき学習の手本とすべき内容を示す模範学習データを記憶する模範学習データ記憶手段と、ユーザーが行うべき学習のカリキュラムを複数種記憶するカリキュラム記憶手段と、表示手段と、学習履歴記憶手段とを有する学習結果表示装置に適用されるプログラムであって、ユーザーが行った学習の内容を示す学習内容データを外部より取得するステップと、前記カリキュラム記憶手段に記憶されたカリキュラムを読み出し、読み出されたカリキュラムに従って、前記模範学習データ記憶手段に記憶された模範学習データと取得された学習内容データとを比較して、ユーザーの学習における習得度合いを示す学習履歴データを生成するステップと、この学習履歴データが生成される度に、生成された学習履歴データに当該学習履歴データに対応するカリキュラムを表わすデータ及び前記学習履歴データの累積生成数を表わす変数を付加して学習履歴記憶手段に記憶させるステップと、この学習履歴記憶手段に記憶された学習履歴データを、前記付加された変数及び前記カリキュラムを表わすデータの夫々を縦軸及び横軸として前記表示手段上に2次元表示させるとともに、当該学習履歴データを表示する際、習得度合いに応じて表示形態を異ならせるステップと、前記表示手段に表示されている各学習履歴データの表示位置から2次元平面上の座標を算出する座標算出ステップと、この算出された各座標位置を通る線に近似する線を表わす関数を生成する線形近似ステップと、この生成された関数に基づいて前記表示手段上に、線を描画する描画ステップと、を実行させる。
【0013】
本発明では、ユーザーが行った学習の内容を示す学習内容データを、学習の手本とすべき内容を示す模範学習データと比較して生成される、ユーザーの学習結果を示す結果データを予め定めた規則に従って選択し、選択した結果データを表示装置上に表示させる。
【0014】
複数の学習結果を表示させた場合、ユーザーは自分が過去に行った学習の結果がどのようなものであり、それがどのように推移していったか容易に把握することが可能となる。それにより、ユーザーが行った学習のレベルの推移を視覚的に提示することとなる。
【0015】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態につき詳細に説明する。
<第1の実施の形態>
図1は、第1の実施の形態による学習結果表示装置を搭載した電子楽器の構成図である。
【0016】
その電子楽器は、図1に示すように、楽器全体の制御を行うCPU101と、そのCPU101が実行するプログラムや各種データ等を格納したROM102と、CPU101がワーク用に使用するRAM103と、各種スイッチを有するスイッチ部104と、演奏操作の対象となる鍵盤105と、例えば不図示のLCDや複数のLED等を備えた表示部106と、CPU101の指示に従って、発音させる楽音の波形データを生成する音源107と、その音源107が生成した波形データをサウンドとして出力するサウンドシステム108と、を備えて構成される。それにより、本実施の形態による学習結果表示装置は、ユーザーが鍵盤105を操作して行った演奏を対象に、その結果を表示部106に表示させるものとして実現されている。
【0017】
上記スイッチ部104は、例えば各種のスイッチやボタンなどの操作子と、それらの操作子への操作を検出する検出用回路と、から構成されている。その操作子としては、モード選択用のモードスイッチ、自動演奏、或いは練習の対象とする曲を選択するためのソングスイッチ、自動演奏、或いは練習の開始、若しくはその終了を指示するためのスタート/ストップスイッチ、テンキー、演奏結果の表示を指示するための結果表示スイッチ、及びその表示形態を選択するための複数の選択スイッチなどがある。自動演奏、或いは練習の対象とする曲は、ソングスイッチを操作した後、所望の曲に割り当てられた番号(曲番号)をテンキーにより指定することで行うようになっている。スタート/ストップスイッチを操作することで行われるのが自動演奏か練習であるのかの切り換えは、モードスイッチにより行うようになっている。
【0018】
以上の構成において、その動作を説明する。
不図示の電源がオンされると、CPU101はROM102に格納されたプログラムを読み出して実行することにより、楽器全体の制御を開始する。その後は、RAM103を作業用に使用しながら、スイッチ群104や鍵盤105からそれぞれ受け取る操作子の状態を表す信号に応じた各部の制御を行う。なお、スイッチ群104を構成する検出用回路は、各スイッチの状態(操作の有無を含む)を例えば走査することで検出し、その検出結果からCPU101に送出する信号を生成する。これは鍵盤105(を構成する検出用回路)でも同様である。
【0019】
CPU101は、鍵盤105から各鍵の状態を表す信号を受け取ると、前回に検出されたその状態と比較することにより、状態が変化した鍵を特定する。そのような鍵を特定できた場合には、その特定した鍵とそれの状態の変化に応じて音源107に送出すべきコマンドを生成し、それを送出する。
【0020】
音源107は、そのコマンドに従い、楽音の波形データを生成してサウンドシステム108に送出する。サウンドシステム108は、例えばその波形データをアナログのオーディオ信号に変換し、それによって得られたオーディオ信号を増幅し、増幅後のオーディオ信号をスピーカに入力して楽音を放音する。それにより、ユーザー(演奏者)が鍵盤105を操作すると、その操作内容に応じた楽音が放音される。
【0021】
一方、CPU101は、スイッチ群104を構成する各スイッチの状態の変化に応じて、その状態が変化したスイッチに割り当てた機能を実現させるための処理を行う。その処理を行うことにより、練習の対象とする曲の設定を含む各種の設定や、その練習結果の表示などが実現される。その練習は、上記スタート/ストップスイッチへの操作に応答して開始したと見なし、それが終了するか、或いはそのスイッチを再度、操作するまで練習中であると見なすようにしている。
【0022】
本実施の形態では、演奏の練習(レッスン)は、曲の構成全体を複数の部分に分けることにより、その部分単位で選択された演奏範囲を対象に行えるようにしている。構成全体は、小節、及びパートで分けている。パートは、演奏に使う手によって分けている(このことから、右手で演奏するパートを「右手パート」、左手で演奏するパートを「左手パート」と呼ぶ)。押鍵していく鍵をユーザーに教示する演奏ガイドは、そのレッスンの際に必ず行わせるべきものというわけではないので、ここでは特には言及しないこととする。
【0023】
上記演奏範囲は、予め固定的に定め、その定めた演奏範囲はユーザーの習得度合に応じて選択可能な範囲を限定している。つまり、曲全体の演奏は、カリキュラムに沿って、習得度合に応じて演奏範囲を変更させていくことにより練習できるようになっている。以降、練習範囲については「レッスンエリア」、そのレッスンエリアの練習(レッスン)に対応付けられた番号は「レッスン番号」、ユーザーの習得度合については「クリアレベル」とそれぞれ呼ぶことにする。
【0024】
レッスンエリアによってレッスンの対象となる部分、つまり小節やパートが異なる。クリアレベルは、ユーザーが或るレッスンエリアのレッスンを行った結果を判断するうえで指標となる情報であると言える。このことから、クリアレベルはレッスンエリアやレッスン番号との関係が容易に把握できるように、それらの何れかとのみ対応付けて表示させられるようにしている。また、レッスン結果をより詳細に検討できるように、その結果を検討するうえで有用なデータを併せて表示できるようにしている。
【0025】
そのようにして、本実施の形態では、保存された演奏結果内容は3つの表示形態で表示させられるようになっている。それにより、ユーザーに、3つの表示形態のなかから所望のものを選択させ、その選択結果に応じて図2〜図4に示す画面の何れかを表示させるようになっている。所望の表示形態での表示は、例えば3つの選択スイッチのなかから所望の表示形態が割り当てられたものを操作した後、結果表示スイッチを操作することで行われる。
【0026】
レッスンの結果は、ユーザーが行ったレッスンの内容を、そのレッスンで行うべき手本となる内容を示す曲データと比較することにより求める。その曲データは、例えばスタンダードMIDIファイル(SMF)の形でROM102に格納されている。その比較をカリキュラムに沿って行うために、本実施の形態では図5に示す楽曲情報を曲データとは別に例えばROM102に用意している。
【0027】
その楽曲情報は、図5に示すように、曲全体に係わる全曲データと、カリキュラムを構成する1レッスンに係わる複数のカリキュラムデータと、から構成されている。全曲データは一次元の配列変数song_info として、各カリキュラムデータは2次元の配列変数cur_infoとして扱われる。
【0028】
配列変数song_info の括弧内の添え字が0で指定される要素には、図5中「SongID」と表記の曲を一意に識別するための曲番号が格納されている。以降、同様に、添え字が1で指定される要素には「AllMeas」と表記の全小節数、添え字が2で指定される要素には「SongName」と表記の曲名、添え字が3で指定される要素には「OrgTempo」と表記の基準となるテンポ値、添え字が4で指定される要素には「NoteCountR」と表記の右手パートでの全楽音数、添え字が5で指定される要素には「NoteCountL」と表記の左手パートでの全楽音数、がそれぞれ格納されている。
【0029】
他方の配列変数cur_infoのそれに続く側の添え字(以降、便宜的に「第1添え字」と呼ぶ)は、カリキュラムデータの指定に用いられ、それとは別の添え字(以降、便宜的に「第2添え字」と呼ぶ)はカリキュラムデータを構成するデータの指定に用いられる。そのような添え字の呼び方は他の配列変数でも同様に用いることとする。つまり、変数名に最も近い添え字を「第1添え字」と呼び、その変数名から離れるに従って、「第2添え字」「第3添え字」などと呼ぶことにする。
【0030】
第2添え字が0で指定される要素には図中「AreaID」と表記のレッスン番号が格納される。以降、同様に、第2添え字が1で指定される要素には「StartMeas」と表記のレッスンを開始する小節の番号、第2添え字が2で指定される要素には「EndMeas」と表記のレッスンを終了する小節の番号、第2添え字が3で指定される要素には「CurHand」と表記のレッスンの対象となるパートを示すデータ、第2添え字が4で指定される要素には「NoteCountR」と表記の右手パートの楽音数、第2添え字が5で指定される要素には「NoteCountL」と表記の左手パートの楽音数、がそれぞれ格納されている。なお、特には図示していないが、カリキュラムデータには、曲データ中のレッスンに対応する部分を特定できるように、例えばその部分の先頭と最後のそれぞれの位置を示すデータが含まれている。
【0031】
各表示形態では、図2〜図4に示すように、最後のレッスン結果だけでなく、過去のレッスン結果も表示させるようにしている。図1に示す練習履歴データベース(DB)110は、レッスン結果を示す練習データの保存用にRAM102に構築されている。その練習データを保存しておくために、RAM102は不図示のバッテリによって不揮発性化されている。
【0032】
最後に行ったレッスンの結果の他に、それ以外のレッスン結果を併せて表示させると、ユーザーは自分が過去にどのようなレッスンを行い、その結果がどのようなものであったかということと共に、その結果がどのように推移していったかということまで容易に把握できるようになる。それまでに自身が行ったレッスン(学習)のレベルの推移を容易に把握できるようになる。そのことは、特に練習熱心なユーザーでは、レッスンを繰り返し行ったことに伴う自身のレベル向上を客観的にも(実感以外にも)確かめられるということを意味する。
【0033】
レッスンを行うのは、通常、レベルを向上させることが最大の目標であり、その向上を客観的に把握することは、ユーザーが行ったレッスンが有意義であったことを客観的に確認することにあたる。その有意義なレッスンを行ったことの結果を客観的に確認できるということは、ユーザーにとって具体的な目標を持てるということを意味する。具体的な目標は、レッスンを行ううえでの励みとなる。このようなことから、レッスン(学習)のレベルの推移を容易に把握できるようにすることにより、ユーザーにとってはレッスンに励める環境が提供されることとなる。
【0034】
図2に示す演奏履歴画面は、レッスン結果検討用のデータをレッスン別に配置した画面である。そのデータとしては、レッスンを行った日付、レッスンの対象となった小節の範囲(レッスンを開始した小節とそれを終了した小節の各番号で表現)、レッスン番号、レッスンの対象となったパート、テンポ、レッスン中に発音を指示すべき楽音(音符)の数、及びその結果を示すデータが配置されている。以降、その結果を示すデータは「結果データ」、それ以外のデータは「状況データ」と呼ぶことにする。
【0035】
上記結果データは、「○」「×」「←→」「ミスタッチ」及び「クリアレベル」が配置された欄にそれぞれ対応する数値で表現している。「○」が配置された欄で表現する数値は、レッスン中に発音させるべき楽音のなかでそれを発音させるべきタイミングで発音を指示できた楽音(そのような楽音を便宜的に以降「適正楽音」と呼ぶ)の数を示している。「←→」が配置された欄で表現する数値は、発音させるべき楽音の発音の指示が発音させるべきタイミングからずれている楽音(タイミングミスタッチの楽音)の数を示している。「×」が配置された欄で表現する数値は、それら以外の楽音の数、即ち明らかに発音させるべきタイミングで発音を指示できなかった楽音(未発音楽音)の数を示している。「ミスタッチ」が配置された欄で表現する数値は、明らかに発音させるべきでないタイミングで発音が指示された楽音の数を示している。クリアレベルは、0〜100の間の数値で表現している。
【0036】
タイミングミスタッチとは、押鍵すべき鍵を押鍵したタイミングが押鍵すべきタイミングと一致していると見なせる範囲内では一致していないが、押鍵すべきでない鍵を明らかに押鍵したと認識されるほどその押鍵のタイミングがずれていないような操作のことである。このため、明らかに押鍵すべきでない鍵の押鍵であるミスタッチや、明らかに押鍵すべき鍵を押鍵しなかったことなどと比較して、ミスの度合は小さいと言える。度合がより大きいミスほど、演奏の内容を大きく低下させるのが普通である。タイミングミスタッチを別にカウントするのは、そのようにミスの度合によって演奏の内容に影響を及ぼす程度に差があるためである。言い換えれば、それらミスタッチの数を別にカウントすることにより、そのカウント結果からレッスンの内容をより具体的に把握できるようになるためである。
【0037】
図3に示すレッスン別履歴画面は、ユーザーが行ったレッスン別に、その番号とそのクリアレベルの対応関係を容易に把握できるように履歴を表示させる画面である。図中、グリッド状に枠(セル)が配置されたエリア(以降、「グリッドエリア」と呼ぶ)の上方に位置する「L1」はレッスン番号が1であることを表し(他も同様)、そのエリアの左側にはレッスンが行われた日付が配置されている。レッスンが行われた日付、その番号は、それらに対応する位置の枠内にクリアレベルを示す数値を配置することで表現している。本実施の形態では、数値を配置した枠内の表示色は、その数値に応じて変化させている。
【0038】
図4に示す小節別履歴画面は、ユーザーがレッスンを行った小節別に、その小節の番号とそのクリアレベルの対応関係を容易に把握できるように履歴を表示させる画面である。図中、グリッド状に枠が配置されたエリア(以降、同様に「グリッドエリア」と呼ぶ)の上方に位置する「M1」は小節番号が1であることを表し(他も同様)、そのエリアの左側にはレッスンが行われた日付が同様に配置されている。レッスンが行われた日付、その小節の番号は、それらに対応する位置の枠内にクリアレベルを示す数値を配置し、その枠内の表示色をその数値に応じて変化させることで表現している。
【0039】
図2〜図4に示す画面の表示は、特に詳細な説明は省略するが、例えばRAM103に確保した領域を用いて、画面を構成する要素の画像データを予め定めた順序で上書きしつつ配置して1画面分の画像データを生成し、その生成した1画面分の画像データを表示部106に送出することで行われる。部分的な表示内容の変更は、その内容を変更する部分を対象に変更後の画像データを生成し、その生成した画像データを表示部106に送出して上書きさせることで行われる。
【0040】
次に、図2〜図4に示す各種画面を表示部106に表示させるために管理するデータについて、図6〜図8を参照して詳細に説明する。
図6は、練習履歴DB110の構成を説明する図である。
そのDB110は、図6に示すように、2次元の配列変数practice_db として扱っている。第1添え字は、レッスンの結果を示す練習データの指定に用いられ、第2添え字は、その練習データを構成するデータの指定に用いられる。その添え字が0で指定される要素には、図中「practiceID」と表記の練習データに割り当てた一意に識別するための番号(以降、「履歴番号」と呼ぶ)が格納される。それ以外には、以下のようなデータが各要素に格納される。
【0041】
添え字が1〜4で指定される各要素には、図5に示す楽曲情報中から抽出したデータが格納される。添え字が5で指定される要素には「NoteCount」と表記のレッスンエリア内の楽音数、添え字が6で指定される要素には「Date」と表記のレッスン日時、添え字が7で指定される要素には「LStyle」と表記のレッスン方法を示すデータ、添え字が8で指定される要素には「LArea」と表記のレッスン番号、添え字が9で指定される要素には「LHand」と表記のレッスンの対象となったパートを示すデータ、添え字が10で指定される要素には「LTempo」と表記のレッスン時に設定されたテンポの値、添え字が11で指定される要素には「RsltOkey」と表記の適正楽音(発音させるべきタイミングで発音を指示した発音させるべき楽音)数、添え字が12で指定される要素には「RsltNG」と表記の発音させるべき楽音のなかで発音を指示できなかった楽音数、添え字が13で指定される要素には「RsltMissTouch」と表記の発音を指示した発音させるべきでない楽音数、添え字が14で指定される要素には「RsltTiming」と表記の発音を指示したタイミングが適切なタイミングから僅かにずれていた楽音数、及び添え字が15で指定される要素には「RsltClearLevel」と表記のクリアレベル、がそれそれ格納される。11〜15の添え字で指定される要素に格納されるのが結果データであり、それ以外の添え字、即ち0〜10の添え字で指定される要素に格納されるのが状況データである。
【0042】
本実施の形態では、図3、及び図4に示すように、グリッド状に枠(セル)を配置し、クリアレベルを配置する枠をユーザーが行ったレッスンに応じて決定することにより、その結果を複数、履歴という形で提示できるようになっている。そのような履歴の提示のために、図7に示す履歴表示用データ、及び図8に示す表示色設定用データを用意している。
【0043】
上記履歴表示用データは、枠をグリッド状に配置するためのものであり、3次元の配列変数dispGridとして扱っている。その第1、及び第2添え字は、それぞれグリッドを構成する行、列の指定用である。第3添え字は、第1、及び第2添え字によって指定される枠の表示に係わるデータの指定用である。そのデータとしては、以下のようなものを必要に応じて格納するようにしている。
【0044】
その添え字が0で指定される要素には、図7中「ColumnID」と表記の列番号が格納される。以降、同様に、添え字が1で指定される要素には「dispText」と表記の表示文字列、添え字が2で指定される要素には「posX」と表記の枠の横(X)座標値、添え字が3で指定される要素には「posY」と表記の枠の縦(Y)座標値、添え字が4で指定される要素には「SX」と表記の枠の横幅(X軸上の幅)、添え字が5で指定される要素には「SY」と表記の枠の縦幅(Y軸上の幅)、添え字が6で指定される要素には「bgColor」と表記の枠内の表示(背景)色を示す値、添え字が7で指定される要素には「Textcolor」と表記の表示文字列の表示色を示す値、添え字が8で指定される要素には「Linecolor」と表記のラインの表示色を示す値、がそれぞれ格納される。1、8の添え字で指定される要素には、必要に応じて値が格納される。
【0045】
図8に示す表示色設定用データは、クリアレベル別に枠内の表示色を変化させるためのものであり、2次元の配列変数dispColor として扱っている。その第1添え字は、クリアレベルに応じた枠内の表示色に係わるデータである表示色データ指定用であり、第2添え字は、表示色データを構成するデータの指定用である。その表示色データを構成するデータとしては、以下のようなものがある。
【0046】
第2添え字が0で指定される要素には、図8中「ScoreFrom」と表記の表示色データが対応するクリアレベルの最小値が格納される。以下、同様に、添え字が1で指定される要素には「ScoreTo」と表記のそのクリアレベルの最大値、添え字が2で指定される要素には「bgColor」と表記の枠内の表示(背景)色を示す値、添え字が3で指定される要素には「TextColor」と表記の文字列の表示色を示す値、添え字が4で指定される要素には「LineColor」と表記のラインの表示色を示す値、がそれぞれ格納される。図7に示す履歴表示用データの第3添え字が6〜8で指定される要素には、クリアレベルに応じて表示色データ中から抽出された値が代入される。
【0047】
次に、上述したような各種データを用いてレッスン結果を表示させるCPU101の動作について、図9〜図13に示す各種フローチャートを参照して詳細に説明する。
図9は、CPU101が実行するイベント処理のフローチャートである。レッスン、及びその結果の表示にのみ着目して、それらをユーザーが指示することで行われる処理の流れを示したものである。始めに、図9を参照して、そのイベント処理について詳細に説明する。そのイベント処理は、ROM102に格納されたプログラムをCPU101が実行することで実現される。
【0048】
先ず、ステップ901では、イベントが発生するのを待つ。ここで発生を待つイベントとは、レッスンの開始、或いはレッスン結果の表示を指示するための操作子への操作である。レッスンは、モードスイッチがレッスン有効側になっている状態でスタート/ストップスイッチを操作することにより、レッスン結果の表示は、表示形態を選択した後、結果表示スイッチを操作することにより行われるようになっている。このことから、そのような状態でスタート/ストップスイッチ、或いは表示スイッチをユーザーが操作した場合に、ステップ901からステップ902に移行する。なお、レッスン番号は、レッスンを行う曲を選択した状態で所定のスイッチを操作した後にテンキーを操作して入力するようになっている。デフォルトは、前回、行ったレッスンの番号である。
【0049】
ステップ902では、発生したイベントがレッスンの開始を指示するものか否か判定する。ユーザーがスタート/ストップスイッチを操作していた場合、レッスンの開始を指示するイベントが発生したとして、判定はTrueとなり、ステップ903に移行する。そうでない場合には、判定はFalseとなってステップ907に移行する。
【0050】
ステップ903では、レッスン(ユーザーによる演奏)が終了したか否か判定する。ユーザーがスタート/ストップスイッチを操作してからレッスンに必要な時間が経過するか、或いはそのスイッチをユーザーが再度、操作してその終了を指示した場合、レッスンは終了したとして判定はTrueとなり、ステップ905に移行する。そうでない場合には、判定はFalseとなってステップ904に移行し、ユーザーが鍵盤105を操作することで発生させたイベントの内容を保存した後、再度、ステップ903に戻る。それにより、レッスンが終了するまでの間、ユーザーによって発生したイベントの内容の保存を行う。このとき、保存するのは、例えばイベントの内容を示すイベントデータ(ここではMIDIデータ)、及びそのイベントが発生したタイミングを示す時間(タイム)データである。
【0051】
一方、ステップ905では、ユーザーが鍵盤105を操作して行った演奏内容を楽音単位で正しいか否か判定する演奏の正誤判定処理を実行する。次のステップ906では、その実行結果から、ユーザーが行ったレッスンの結果を特定し、特定した結果を練習履歴DB110に保存する練習結果の保存処理を実行する。その実行後は上記ステップ901に戻る。
【0052】
上記ステップ902の判定がFalseとなって移行するステップ907では、履歴の表示を指示する履歴表示コマンドの入力にあたる結果表示スイッチをユーザーが操作したか否か判定する。そのスイッチをユーザーが操作した場合、判定はTrueとなってステップ908に移行し、その操作の前にユーザーが選択した表示形態でレッスン結果を表示部106に表示させる演奏結果の表示処理を実行する。その後は上記ステップ901に戻る。一方、そうでない場合には、判定はFalseとなり、他のステップの処理を実行することなくそのステップ901に戻る。
【0053】
以降は、上記イベント処理内で実行されるサブルーチン処理について図10〜図13に示す各種フローチャートを参照して詳細に説明する。
図10は、上記ステップ905として実行される演奏の正誤判定処理のフローチャートである。サブルーチン処理については、始めに図10を参照して、その正誤判定処理について詳細に説明する。その判定処理は、上記ステップ904で保存したイベント内容を、ユーザーが選択した曲の曲データ(以降、「教材」とも呼ぶことにする)と比較することで行われる。
【0054】
先ず、ステップ1001では、各種変数の初期化を行う。それにより、適正楽音数の計数用の変数iOkey、ミスタッチによりユーザーが発音させた楽音数の計数用の変数iMissTouch、及びタイミングミスタッチした楽音数の計数用の変数iTimingMiss にそれぞれ0を代入する。
【0055】
各イベント内容は、MIDIデータ、及びその前に位置させた時間データの形で保存している。このことから、ステップ1001に続くステップ1002では、保存したデータのうちの一つに着目するためにポイント指定を行う。その次に移行するステップ1003では、それによって指定されたデータがMIDIデータか否か判定する。そのデータがMIDIデータだった場合、判定はTrueとなってステップ1004に移行する。そうでない場合には、判定はFalseとなってステップ1011に移行する。
【0056】
ステップ1011では、指定されたデータが存在しないか否か判定する。着目すべきデータを全て着目、つまりデータの処理が終了した場合、判定はTrueとなり、ここで一連の処理を終了する。そうでない場合には、例えば指定されたデータが時間データだったような場合には、判定はFalseとなって上記ステップ1002に戻り、次のデータのポイント指定を行う。
【0057】
ステップ1004では、それに付加された時間データ等から、指定されたMIDIデータの演奏上の位置(図中「現在地」と表記)を特定する。続くステップ1005では、特定した演奏上の位置を基準にして教材と比較する。本実施の形態では、楽音の発音開始に注目して比較を行っている。その比較を行った後にステップ1006に移行する。
【0058】
ステップ1006では、MIDIデータが示すイベントが楽音の発音開始であり、そのイベントの内容が正しいか否か判定する。特定した演奏上の位置と許容範囲内で一致する位置で教材が同じ音高の楽音の発音開始を表していたような場合、判定はTrueとなってステップ1007に移行し、変数iOkeyの値をインクリメントした後、上記ステップ1002に戻る。そうでない場合には、判定はFalseとなってステップ1008に移行する。
【0059】
ステップ1008では、MIDIデータが示すイベントが楽音の発音開始であり、タイミング的に許容範囲内では一致しない近傍な位置で教材が同じ音高の楽音の発音開始を表しているかか否か判定する。そのような楽音の発音開始を教材が表していた場合、判定はTrueとなり、次にステップ1009で変数iTimingMiss の値をインクリメントした後、上記ステップ1002に戻る。そうでない場合には、判定はFalseとなってステップ1010に移行する。
【0060】
ステップ1010では、MIDIデータが示すイベントが楽音の発音開始であった場合、その発音開始は発音させるべきでない楽音の発音を開始させるものだとして、変数iMissTouchの値をインクリメントする。その後は上記ステップ1002に戻る。
【0061】
このようにして、ユーザーが行ったレッスンの結果を示す3種類の値が計数される。次に、それら計数した値を含めたレッスン結果を示すデータを練習履歴DB110に保存するためにステップ906として実行される練習結果の保存処理について、図11に示すそのフローチャートを参照して詳細に説明する。
【0062】
先ず、ステップ1101では、上述の演奏の正誤判定処理の実行結果、及びレッスンの対象となった先頭と最後の各小節番号を取得する。正誤判定処理の実行結果は、その判定処理から各種変数iOkey、iMissTouch、及びiTimingMissが渡されることで取得され、各小節番号は、ユーザーが行ったレッスンの番号をキーに楽曲情報(図5参照)中から対応する番号(StartMeas、EndMeas)を抽出することで行われる。
【0063】
ステップ1101に続くステップ1102では、レッスン情報の取得を行う。その取得は、取得用の各種変数tmpLStyle、tmpLArea、tmpLHand、tmpLTempo、tmpNoteCountに、それぞれ、練習方法に割り当てられた番号、レッスン番号、レッスンパートを示す番号、レッスン時に設定されたテンポ値、発音させるべき全楽音数、を代入する。発音させるべき全楽音数は、楽音情報を構成するカリキュラムデータからパートに応じて抽出するか、或いは抽出した楽音数を更に加算することで取得される。レッスン情報の取得後はステップ1103に移行する。
【0064】
ステップ1104〜1106では、変数iの値を随時、インクリメントしながら、練習履歴DB110にレッスン結果を格納する場所(ここでは配列変数practice_db の要素)を探すための処理が行われる。そのDB110に格納可能なレッスン結果には限りがあることから、その場所を探し出せない場合には、レッスン結果の格納は行わないようにしている。つまり、レッスン結果を格納できるようにするには、それまでに格納されたレッスン結果の全て、或いは一部のユーザーによる消去を必要とさせている。
【0065】
ステップ1104では、変数iの値がDB110にデータの格納先として指定可能な値よりも大きいか否か判定する。変数iの値がその値より大きい場合、判定はTrueとなり、DB110に新たにレッスン結果を格納することはできないとして、ここで一連の処理を終了する。そうでない場合には、判定はFalseとなってステップ1105に移行する。
【0066】
ステップ1105では、配列変数practice_db の第1添え字が変数iの値、第2添え字が0で指定される要素practice_db [i][0]がnull、即ちその要素に値が代入されていないか否か判定する。それに値が代入されていた場合、判定はFalseとなり、次にステップ1106で変数iの値をインクリメントした後、上記ステップ1104に戻る。一方、そうでない場合には、判定はTrueとなってステップ1107に移行する。
【0067】
ステップ1107では、配列要素practice_db [i][0-14] にそれぞれ値を代入する。具体的には、要素practice_db [i][0]には変数iの値を代入する。以降、同様に、要素practice_db [i][1]には楽曲情報を構成する全曲データ中の配列要素song_info[1]の値、要素practice_db [i][2]にはステップ1101で取得した開始小節の番号、要素practice_db [i][3]には終了小節の番号、要素practice_db [i][4]には配列要素song_info[3]の値、要素practice_db [i][5]には変数tmpNoteCountの値、要素practice_db [i][6]には現在日時、要素practice_db [i][7-11] には、それぞれ変数tmpLStyle、tmpLArea、tmpLHand、tmpLTempo、及びiOkeyの各値、要素practice_db [i][12]には変数tmpNoteCountの値から変数iOkeyの値を引いた値、及び要素practice_db [i][13-14]にはそれぞれ変数iMissTouch、iTimingMissの各値が代入される。
【0068】
ステップ1107に続くステップ1108では、クリアレベルを算出し、その算出結果を配列要素practice_db[i][15] に代入する。その算出は、例えば変数iOkeyの値から変数iMissTouchの値を減算し、その減算結果に100を掛けて、更に変数tmpNoteCountの値で除算することで行うようになっている(クリアレベル=(iOkey−iMissTouch)×100/tmpNoteCount)。単位は%である。そのようにして算出したクリアレベルを保存した後、一連の処理を終了する。
【0069】
上述したようにして、ユーザーがレッスンを行う度に、その結果を示すデータが練習履歴DB110に保存される。それにより、過去に行ったレッスンの結果やその推移をユーザーが容易に把握できるようにさせている。
練習履歴DB110に保存されたレッスン結果は、図2〜図4の何れかの画面で表示される。それらの画面のうちの何れかを表示させるのが、図9に示すイベント処理内でステップ908として実行される演奏結果の表示処理である。
【0070】
その表示処理は、ユーザーが選択した表示形態でレッスン結果を表示させるために、その表示形態別に用意されたサブルーチン処理を実行するようになっている。ここでは、図3、及び図4に示す各画面でレッスン結果を表示させるためのサブルーチン処理に着目して、その内容について説明することとする。説明上、便宜的に、図3に示す画面でレッスン結果を表示させるサブルーチン処理を「レッスン別履歴表示処理」、図4に示す画面でそれを表示させるサブルーチン処理を「小節別履歴表示処理」とそれぞれ呼ぶことにする。
【0071】
図12は、上記レッスン別履歴表示処理のフローチャートである。その履歴表示処理は、他方の履歴表示処理と同様に、図7に示す履歴表示用データ、及び図8に示す表示色設定用データを参照して行われる。始めに図12を参照して、その履歴表示処理について詳細に説明する。
【0072】
図7に示す履歴表示用データ、即ち配列変数dispGridの第3添え字が0、2〜5で指定される各要素には、特に詳細な説明は省略するが、表示形態別のサブルーチン処理の実行前の段階でその表示形態に応じた値が代入される。それにより、図2〜図4に示す配置の画面を表示できるようにさせている。第2添え字がレッスン番号に対応し、第3添え字が0で指定される要素には、そのレッスン番号を代入させている。
【0073】
先ず、ステップ1201では、描画の対象とする行(ライン)の管理用である変数iに0を代入する。続くステップ1202では、その変数iの値で指定される行が描画の対象でないか、即ち描画すべき行の描画が終了したか否か判定する。描画すべき行の描画が終了した場合、判定はTrueとなり、ここで一連の処理を終了する。そうでない場合には、判定はFalseとなってステップ1203に移行する。
【0074】
ステップ1203では、変数jに0を代入する。その変数jは、配列変数dispColor として扱う表示色設定用データ(図8参照)を構成する表示色データのなかから現在、注目しているレッスン結果に対応するものを探し出すために用意したものである。変数jに1を代入した後に移行するステップ1204では、変数jの値で指定される表示色データが無いか否か判定する。そのような表示データが表示色設定用データに存在しない場合、判定はTrueとなり、ステップ1213で変数iの値をインクリメントした後、上記ステップ1202に戻る。それにより、着目する対象を別のレッスン結果に変えて、それ以下の処理を同様に実行する。一方、そうでない場合には、判定はFalseとなってステップ1205に移行する。ステップ1204でのTrueの判定は、レッスン結果に対応する表示色データが存在しないことを意味する。
【0075】
ステップ1205では、配列要素practice_db[i][15]の値が、配列要素dispColor [j][0]の値以上で、且つ配列要素dispColor [j][1]の値未満か否か判定する。変数jの値で指定される表示色データが変数iの値で指定されるレッスン結果中のクリアレベルと対応するものであった場合、その関係が満たされることから、判定はTrueとなってステップ1207に移行する。そうでない場合には、判定はFalseとなり、次にステップ1206で変数jの値をインクリメントした後、上記ステップ1204に戻る。それにより、インクリメント後の変数jの値で指定される表示色データが現在、注目しているレッスン結果に対応しているものか否かの確認を行う。
【0076】
ステップ1207では、描画の対象とする列の管理用である変数kに0を代入する。その後に移行するステップ1208では、その変数kの値で指定される列が描画の対象でないか、即ち現在、描画を行っている行での列の描画が終了したか否か判定する。列の描画が終了した場合、判定はTrueとなり、ステップ1213で変数iの値をインクリメントした後、上記ステップ1202に戻る。そうでない場合には、判定はFalseとなってステップ1209に移行する。
【0077】
ステップ1209では、配列要素dispGrid [i][k][0]の値(列番号)が、配列要素practice_db [i][8]の値(レッスン番号)と等しいか否か判定する。それらの値が等しい場合、判定はTrueとなってステップ1211に移行する。そうでない場合には、判定はFalseとなり、次にステップ1210で変数kの値をインクリメントした後、上記ステップ1208に戻る。
【0078】
ステップ1211では、各種表示データの設定を行う。その設定は、配列変数dispGridの第1添え字、第2添え字が変数i、kの各値で指定される要素を対象に行う。具体的には要素dispGrid[1][k][1] に配列要素practice_db[i][15]の値、要素dispGrid[1][k][6] に配列要素dispColor[i][2] の値、要素dispGrid[1][k][7] に配列要素dispColor[i][3] の値、要素dispGrid[1][k][8] に配列要素dispColor[i][4] の値、をそれぞれ代入する。次に移行するステップ1212では、ステップ1211で設定したデータに従い、変数i、kの各値から特定されるセル(枠)の描画を行う。その後はステップ1213に移行して、変数iのインクリメントを行う。
【0079】
このようにして、各行毎にレッスン結果を表示させるべきセルを特定し、そのセルを設定したデータに従って描画することにより、図3に示すように履歴画面の画像データを生成し、その画像データを表示部106に送出することにより表示させる。特には図示していないが、その履歴画面を表示させるために、「L1」等のレッスン番号を表すシンボルは、変数iの値を−1としたときに対応する行に描画し、レッスン日時は変数kの値を0、或いは−1としたときに対応する列に描画する。
【0080】
次に、図4に示す小節別履歴画面を表示させることをユーザーが指定した場合に実行される小節別履歴表示処理について、図13に示すそのフローチャートを参照して詳細に説明する。
この履歴表示処理では、ステップ1301〜1308で実行される処理が、上述のレッスン別履歴表示処理におけるステップ1201〜1208のそれと基本的に同じ内容である。このことから、ステップ1309以降の処理についてのみ説明することとする。
【0081】
図7に示す履歴表示用データ、即ち配列変数dispGridの第3添え字が0、2〜5で指定される各要素には、特に詳細な説明は省略するが、表示形態別のサブルーチン処理の実行前の段階でその表示形態に応じた値が代入される。第1添え字が同じで第3添え字が0で指定される、第2添え字を指定する値がレッスンした範囲の小節の番号に対応する各要素には、その小節番号を代入させている。それにより、図4に示すように、複数のセルによりレッスンを行った小節の範囲を示せるようにさせている。
【0082】
上記ステップ1309では、配列要素dispGrid[i][k][0] の値が、配列要素practice_db [i][2]の値(レッスンを開始した小節の番号)以上、且つ配列要素practice_db [i][3]の値(レッスンを終了した小節の番号)以下か否か判定する。配列要素dispGrid[i][k][0] の値がそのような条件を満たしていた場合、判定はTrueとなってステップ1311に移行する。そうでない場合には、判定はFalseとなり、次にステップ1310で変数kの値をインクリメントした後、上記ステップ1308に戻る。
【0083】
ステップ1311では、ステップ1211と同様に、各種表示データの設定を行う。但し、配列要素dispGrid[1][k][1] への配列要素practice_db[i][15]の値の代入は、レッスンが終了した小節に対応するセルにのみクリアレベルを配置させるために、配列要素dispGrid[1][k+1][1] に値が代入されていないことが確認された場合にのみ行う。その設定後に移行するステップ1312では、ステップ1311で設定したデータに従い、変数i、kの各値から特定されるセル(枠)の描画を行う。その後はステップ1313に移行して、変数kのインクリメントを行う。
<第2の実施の形態>
上記第1の実施の形態では、最後に行ったレッスンの結果の他に、それ以外のレッスン結果を併せて表示させるようにしている。これに対し、第2の実施の形態は、その他に、レッスンの対象としている曲を修了するまでの今後の過程を予測し、その予測結果を表示させられるようにしたものである。
【0084】
その予測結果は、今後におけるユーザーの具体的な一つの目標となる。このため、その予測結果を提示することにより、ユーザーにとってはレッスンに励める環境が実現されることになる。
第2の実施の形態による学習結果表示装置を搭載した電子鍵盤楽器の構成は、第1の実施の形態におけるそれと基本的に同じである。動作についても大部分は同じである。このことから、第1の実施の形態の説明で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明することとする。
【0085】
図14は、第2の実施の形態におけるレッスン別履歴画面を示す図である。
上述したように、曲のレッスンは、レッスン番号を選択して行い、その選択範囲は、過去に行ったレッスンの結果に応じて制限している。このようなことから、第2の実施の形態では、図14に示すように、番号別に各レッスンの結果を参照し、その番号別のレッスンのクリアレベルが推移していく状態を考慮して今後のレッスンのクリアレベルの推移を予測し、その予測結果をグラフ表示させるようにしている。
【0086】
その予測を行うために、第2の実施の形態では、練習データ毎に、その予測用のデータ(以降、「修了予測用データ」と呼ぶ)を用意している。図15は、その修了予測用データの構成を示す図である。
その予測用データは、図15に示すように、2次元の配列変数linierとして扱っている。第1添え字は、練習データ(レッスン結果)毎に用意した予測用データの指定用であり、第2添え字は、その予測用データを構成するデータ指定用である。1練習データ分の予測用データとして、第2添え字が0で指定される要素に「linerID」と表記の座標番号、第2添え字が1で指定される要素に「LArea」と表記のレッスン番号、第2添え字が2で指定される要素に「ClearLevel」と表記のクリアレベル、第2添え字が3で指定される要素に「X」と表記の水平方向(X軸)座標値、第2添え字が4で指定される要素に「Y」と表記の鉛直方向(Y軸)座標値、が代入される。
【0087】
レッスン結果から得られた予測用データは、図14に示す履歴画面上の点の位置を示すものとして用いている。それにより、本実施の形態では、クリアレベルの今後の推移は、各点を通る線、或いは各点を通る線に近似する線を特定することにより予測するようにしている。
【0088】
第2の実施の形態では、レッスン別履歴表示処理の実行時に、レッスン結果毎にその予測用データを抽出・生成し、そのデータを用いて修了予測を行う。次に、第2の実施の形態におけるレッスン別履歴表示処理について、図16に示すそのフローチャートを参照して詳細に説明する。
【0089】
図14に示すように、第2の実施の形態でもレッスン結果をセルの表示色等を変えて表示している。その表示に係わる部分は第1の実施の形態と基本的に同じである。このことから、その部分の重複する説明を省くために、図16には、修了予測に係わる部分のみを抜粋してその処理の流れを表している。それにより、修了予測に係わる部分、つまり配列変数liner の各要素へのデータの代入やその代入されたデータを用いた今後のクリアレベルの予測方法などについてのみ説明する。
【0090】
ステップ1601〜1608では、着目する行(レッスン結果)を随時、変更しながら、その行に対応する修了予測用データを抽出して配列要素に代入していくための処理が行われる。その行の管理用が変数iであり、行われたレッスンのレッスン番号を特定するために変数kを用意している。
【0091】
先ず、ステップ1601では、変数iに0を代入する。続くステップ1602では、その変数iの値で指定されるレッスン結果(練習データ)が存在しないか否か、即ち予測用データの抽出が終了したか否か判定する。その抽出が終了した場合、判定はTrueとなってステップ1609に移行する。そうでない場合には、判定はFalseとなってステップ1603に移行する。
【0092】
なお、特に詳細な説明は省略するが、今後、予測されるクリアレベルの推移をグラフ表示させるために、表示させるレッスン結果が存在していない行もそれを表示させる余裕があれば表示の対象としている。それにより、図14に示すように履歴画面を表示させるようにしている。
【0093】
ステップ1603では、変数kに0を代入する。続くステップ1604では、配列変数dispGridの第1添え字が変数iの値、第2添え字が変数kの値で指定される要素の確認が全て終了したか否か判定する。その確認は、変数iの値で指定される行に表示させるべきレッスン結果が存在しないか否か判断するために行うものである。このため、その行に表示させるべきレッスン結果が存在しないことが確認できた場合、判定はTrueとなり、ステップ1608で変数iの値をインクリメントした後、上記ステップ1603に戻る。そうでない場合には、判定はFalseとなってステップ1605に移行する。
【0094】
ステップ1605では、配列要素dispGrid[i][k][0] の値(列番号)が配列要素practice_db [i][8]の値(レッスン番号)と等しいか否か判定する。それらの値が等しい場合、判定はTrueとなってステップ1607に移行し、そうでない場合には、判定はFalseとなり、次にステップ1606で変数kの値をインクリメントした後、上記ステップ1604に戻る。配列要素practice_db [i][8]の値が0であった場合には、レッスン番号として0はありえない番号であることから、それらの値が等しくとも一致していないと見なしている。
【0095】
ステップ1607では、図14に示す履歴画面上でレッスン結果が対応する点の座標位置を計算し、配列変数liner の第1添え字が変数iの値で指定される各要素へのデータの代入を行う。その代入は、配列要素liner[i][0] には変数iの値、配列要素liner[i][1] には配列要素practice_db [i][8]の値、配列要素liner[i][2] には配列要素practice_db[i][15]の値、配列要素liner[i][3] には配列要素dispGrid[i][k][2] の値に対し、配列要素dispGrid[i][k][4] の値に配列要素practice_db[i][15]の値を掛けて100で割った値を加算して得られる値(=dispGrid[i][k][2]+dispGrid[i][k][4]×practice_db[i][15]/100)、配列要素liner[i][4] には配列要素dispGrid[i][k][3] の値に対し、配列要素dispGrid[i][k][5] の値を2で割って得られる値(=dispGrid[i][k][3]+dispGrid[i][k][5]/2)、をそれぞれ代入する。その代入後はステップ1608に移行し、変数iの値のインクリメントを行う。
【0096】
このようにして、配列変数linerの第1添え字が変数iの値で指定される各要素には、レッスン結果、及びそのレッスンの番号に応じたデータが代入される。配列要素liner[i][3] に代入されたX座標値は、レッスン番号に対応するセルにおいて、そのセルの基点となるX座標値に、そのセルのX軸上の幅を示す値をクリアレベルに応じて加算した値である。配列要素liner[i][4]に代入されたY座標値は、レッスン番号に対応するセルにおいて、そのセルの基点となるY座標値に、そのセルのY軸上の幅を示す値の半分を加算した値である。
【0097】
上記ステップ1602の判定がTrueとなって移行するステップ1609では、レッスン別に座標位置を特定した点を通る線に近似する線の描画用である関数を生成する線形近似処理を実行する。続くステップ1610では、生成した関数を用いて線を描画する近似曲線描画処理を実行する。その後に移行するステップ1611では、生成した関数から曲の全レッスンが修了するまでに要するレッスン回数を予測し、その予測結果を描画する修了予測処理を実行する。一連の処理はその後に修了する。
【0098】
以降は、上述の履歴表示処理内で実行されるサブルーチン処理について、図17、図18に示す各フローチャートを参照して詳細に説明する。
図17は、上記ステップ1609として実行される線形近似処理のフローチャートである。履歴表示処理内で実行されるサブルーチン処理では、図17を参照して、始めに線形近似処理について詳細に説明する。本実施の形態では、レッスン別に座標位置を特定した点を通る線に近似する線の描画用である関数は、その関数で用いる係数を特定することで生成するようにしている。
【0099】
先ず、ステップ1701では、係数代入用の変数grad、rootにそれぞれ0を代入する。続くステップ1702では、係数算出用の変数sum_x、sum_y、count、sum_x_sq、及びsum_xyにそれぞれ0を代入する。その代入後は、ステップ1703で変数iに0を代入してからステップ1704に移行する。その変数iは、注目するレッスン結果の管理用である。
【0100】
ステップ1704では、配列要素practice_db [i][0]に値が代入されていない、即ちその値がnullか否か判定する。それに値が代入されていない場合、つまり他に注目すべきレッスン結果が存在しない場合、判定はTrueとなってステップ1707に移行する。そうでない場合には、判定はFalseとなってステップ1705に移行する。
【0101】
ステップ1705では、係数算出用の各変数に代入する値を計算して代入する処理を行う。それにより、変数sum_xにはそれまでの値に配列要素liner[i][3] の値を加算した値、変数sum_yにはそれまでの値に配列要素liner[i][4] の値を加算した値、変数sum_x_sqにはそれまでの値に対し、配列要素liner[i][3] の値を2乗した値を加算した値、及び変数sum_xyにはそれまでの値に対し、配列要素liner[i][3] の値に配列要素liner[i][4] の値を掛けた値を加算した値、をそれぞれ代入し、変数countの値はインクリメントする。その次のステップ1706では、変数iの値をインクリメントする。その後は上記ステップ1704に戻る。
【0102】
そのステップ1704の判定がTrueとなって移行するステップ1707では、変数grad、rootに代入する値を計算してそれらに代入する処理を行う。それらの変数に代入する値は、以下のようにして求めている。そのようにして変数grad、rootに代入する値を計算して代入した後、一連の処理を終了する。
【0103】
本実施の形態では、生成する関数は1次関数、即ちy=ax+bで表される関数としている。a、bは係数である。
【0104】
1次関数とi番目の点(xi,yi)との間の誤差eri は、
eri =axi +b−yi
eri2 =a2xi2 +b2−yi2+2abxi−2axiyi−2byi
となり、全体の誤差(2乗誤差)の和Erは、
bΣyi
となる。
【0105】
このとき、和Erが最も小さくなるa,bは、
∂Er/∂a=2aΣxi2+2bΣxi−2Σxiyi=0
∂Er/∂b=2aΣxi+2nb−2Σyi=0
を満たすものとなるので、
a=(nΣxiyi−ΣxiΣyi)/(nΣxi2−(Σxi)2)
b=(Σxi2Σyi−ΣxiΣxiyi)/(nΣxi2−(Σxi)2)
から得られることとなる。上述した線形近似処理は、係数であるa,bを求めるために実行される。
【0106】
図18は、図16に示すレッスン別履歴表示処理内でステップ1611として実行される修了予測計算処理のフローチャートである。次に図18を参照して、その計算処理について詳細に説明する。
先ず、ステップ1801では、変数termに0を代入する。次のステップ1802では、変数max_cur、iにそれぞれ0を代入する。その代入後にはステップ1803に移行する。
【0107】
ステップ1803では、配列要素cur_info[i][0]に値が代入されていないか否か、即ちその値がnullか否か判定する。それに値が代入されていない場合、判定はTrueとなってステップ1805に移行する。そうでない場合には、判定はFalseとなり、ステップ1804で変数iの値をインクリメントした後、再度、ステップ1803の処理を実行する。それにより、そのステップ1803の判定がTrueとなった時点では、変数iには最も大きいレッスン番号が代入されていることとなる。
【0108】
ステップ1805では、変数max_curに変数iの値を代入する。続くステップ1806では、変数max_prac、iにそれぞれ0を代入する。その後に移行するステップ1807では、配列要素practice_db [i][0]に値が代入されていないか否か、即ちその値がnullか否か判定する。それに値が代入されていない場合、判定はTrueとなってステップ1809に移行する。そうでない場合には、判定はFalseとなり、ステップ1808で変数iの値をインクリメントした後、再度、ステップ1807の処理を実行する。それにより、そのステップ1807の判定がTrueとなった時点では、変数iにはユーザーが行ったレッスンの全回数が代入されていることとなる。
【0109】
ステップ1809では、変数max_pracに変数iの値を代入する。次のステップ1810では、曲のレッスンを修了するまでに要すると予測されるレッスン回数(修了回数)を計算し、その計算結果を変数termに代入する。その計算は、上述の線形近似処理で値が代入された変数grad、rootを用いて行われる。具体的には、変数max_curの値に変数gradの値を乗算し、その乗算結果に変数rootの値を加算し、その加算結果を四捨五入することにより行っている(図中「term=int(grad×max_cur+root)」と表記)。
【0110】
ステップ1810に続くステップ1811では、変数termの値が変数max_pracの値以上か否か判定する。計算した修了回数がこれまで行ったレッスンの全回数以上であった場合、その関係が満たされることから、判定はTrueとなり、変数termの値から変数max_pracの値を減算した値、つまりユーザーが今後、行っていないレッスン番号のレッスンを全て修了するのに要すると予測されるレッスン回数を計算し、その計算結果を描画(図14参照)させた後、一連の処理を修了する。反対にそうでない場合には、判定はFalseとなり、次にステップ1812で変数termに0を代入した後、一連の処理を終了する。
【0111】
なお、第2の実施の形態では、修了予測を行うために関数として1次関数を生成しているが、生成する関数は1次関数に限定されるものではない。指数関数、対数関数、或いはn(nは1より大きい整数)次関数などであっても良い。そのような関数は、例えば以下のようにして生成することができる。
【0112】
指数関数はy=Aexp(Bx)+cと表される。その起点を最初のレッスンに対応する点に合わせればcの値は0となるのでy=Aexp(Bx)となる。ここではそのことを前提に説明を行うこととする。
y=Aexp(Bx)の両辺の対数をとると、
Bx=lny−lnA
となり、
lny=Bx+lnA
が導かれる。よって、m個の各点(x1,y1)、・・・(xm,ym)の代わりに点(x1,lny1)、・・・(xm,lnym)をサンプルとして、そのサンプルとする点を通る線に近似する1次の関数lny=ax+bを作成し、その作成した関数から、A=exp(b)、B=aとすることで指数関数を作成する。
【0113】
対数関数は、y=Aln(Bx)+cと表される。その起点を最初のレッスンに対応する点に合わせればcの値は0となるのでy=Aln(Bx)となる。ここでもそのことを前提に説明を行うこととする。
y=Aln(Bx)は、
y=Aln(Bx)=Aln(x)+Aln(B)
と表すことができる。よって、指数関数のときと同様に、m個の各点(x1,y1)、・・・(xm,ym)の代わりに点(lnx1,y1)、・・・(lnxm,yn)をサンプルとして、そのサンプルとする点を通る線に近似する1次の関数lny=ax+bを作成し、その作成した関数から、A=a、B=exp(b/a)とすることで対数関数を作成する。
【0114】
n次関数は、例えばnの値が3であればy=ax3+bx2+cx+dと表される。その関数とi番目の点(xi,yi)との間の誤差eri は、
となり、全体の誤差(2乗誤差)の和Erは、
となる。
【0115】
このとき、和Erが最も小さくなるa、b、c、dは、
を満たすものとなる。
【0116】
n次関数をy=anxn+an−1xn−1+・・・+a1x+a0としたとき、
Er=ΣxΣkΣlakxikalxil−2ΣxyΣkΣlakxikyi+yi2
となるから、
【0117】
【数1】
【0118】
の関係を与えるa0、a1、・・・、anが最も誤差が小さくなると言える。よって、
【0119】
【数2】
【0120】
を解くことによりn次関数を作成することができる。
表示の対象とするレッスン結果については、本実施の形態(第1、及び第2の実施の形態)では全てのレッスン結果を表示の対象とさせているが、必ずしもそうしなくとも良い。例えば予め定めた回数のレッスン毎に1レッスン結果を表示させても良く、1日につき1レッスン結果を表示させるようにしても良い。回数や日時の他には、行ったレッスンのレッスン番号に注目してレッスン結果を抜粋して表示させるようにしても良い。このように、様々な変形を行うことができる。これは練習履歴DB110へのレッスン結果(練習データ)の格納にも適用することができる。
【0121】
本実施の形態による学習結果表示装置は、電子楽器に搭載された学習結果表示装置に本発明を適用したものであるが、適用できる学習結果表示装置は電子楽器に搭載されたものに限定されるわけではない。また、結果を表示させる学習も曲の演奏に限定されるわけではなく、キーボードの操作を伴う学習などにも本発明は幅広く適用させることができる。
【0122】
上述したような学習演奏表示装置の動作、或いはその変形例の動作を実現させるようなプログラムは、CD−ROM、DVD、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置を用いて本発明を適用させた学習結果表示装置を構築することができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【0123】
【発明の効果】
以上説明したように本発明は、ユーザーが行った学習の内容を示す学習内容データを、学習の手本とすべき内容を示す模範学習データと比較して生成される、ユーザーの学習結果を示す結果データを予め定めた規則に従って選択し、選択した結果データを表示装置上に表示させる。
【0124】
複数の学習結果を表示させた場合、ユーザーは自分が過去に行った学習の結果がどのようなものであり、それがどのように推移していったか容易に把握することができる。それにより、ユーザーが行った学習のレベルの推移を視覚的に提示することとなる。
【図面の簡単な説明】
【図1】第1の実施の形態による学習結果表示装置を搭載した電子楽器の構成図である。
【図2】演奏履歴画面を示す図である。
【図3】レッスン別履歴画面を示す図である。
【図4】小節別履歴画面を示す図である。
【図5】楽曲情報の構成を説明する図である。
【図6】練習履歴データベースの構成を説明する図である。
【図7】履歴表示用データを説明する図である。
【図8】表示色設定用データを説明する図である。
【図9】イベント処理のフローチャートである。
【図10】演奏の正誤判定処理のフローチャートである。
【図11】演奏結果の保存処理のフローチャートである。
【図12】レッスン別履歴表示処理のフローチャートである。
【図13】小節別履歴表示処理のフローチャートである。
【図14】レッスン別履歴画面を示す図である(第2の実施の形態)。
【図15】修了予測用データを説明する図である。
【図16】レッスン別履歴表示処理のフローチャートである(第2の実施の形態)。
【図17】線形近似処理のフローチャートである。
【図18】修了予測計算処理のフローチャートである。
【符号の説明】
101 CPU
102 ROM
103 RAM
104 スイッチ部
105 鍵盤
106 表示部
110 練習履歴データベース
Claims (3)
- ユーザーが行うべき学習の手本とすべき内容を示す模範学習データを記憶する模範学習データ記憶手段と、
ユーザーが行うべき学習のカリキュラムを複数種記憶するカリキュラム記憶手段と、
ユーザーが行った学習の内容を示す学習内容データを外部より取得する学習内容取得手段と、
前記カリキュラム記憶手段に記憶されたカリキュラムを読み出し、読み出されたカリキュラムに従って前記模範学習データ記憶手段に記憶された模範学習データと学習内容取得手段により取得された学習内容データとを比較して、ユーザーの学習における習得度合いを示す学習履歴データを生成する学習履歴データ生成手段と、
この学習履歴データ生成手段によりデータが生成される度に、生成された学習履歴データに当該学習履歴データに対応するカリキュラムを表わすデータ及び前記学習履歴データの累積生成数を表わす変数を付加して学習履歴記憶手段に記憶させる保存手段と、
この学習履歴記憶手段に記憶された学習履歴データを、前記付加された変数及び前記カリキュラムを表わすデータの夫々を縦軸及び横軸として表示手段上に2次元表示するとともに、当該学習履歴データを表示する際、習得度合いに応じて表示形態を異ならせる表示制御手段と、
前記表示手段に表示されている各学習履歴データの表示位置から2次元平面上の座標を算出する座標算出手段と、
この座標算出手段により算出した各座標位置を通る線に近似する線を表わす関数を生成する線形近似手段と、
この線形近似手段により生成した関数に基づいて前記表示手段上に、線を描画する描画手段と、
を有することを特徴とする学習結果表示装置。 - 前記表示制御手段はさらに、
カリキュラム記憶手段に記憶されているカリキュラム数をカウントするカウント手段と、
このカウント手段によりカウントされたカリキュラム数と前記線形近似手段にて生成された関数とに基づいて、前記全てのカリキュラムが終了するに必要な学習履歴データの数を算出して前記表示手段に表示する学習履歴回数算出手段と、
を有することを特徴とする請求項1記載の学習結果表示装置。 - ユーザーが行うべき学習の手本とすべき内容を示す模範学習データを記憶する模範学習データ記憶手段と、ユーザーが行うべき学習のカリキュラムを複数種記憶するカリキュラム記憶手段と、表示手段と、学習履歴記憶手段とを有する学習結果表示装置に適用されるプログラムであって、
ユーザーが行った学習の内容を示す学習内容データを外部より取得するステップと、
前記カリキュラム記憶手段に記憶されたカリキュラムを読み出し、読み出されたカリキュラムに従って、前記模範学習データ記憶手段に記憶された模範学習データと取得された学習内容データとを比較して、ユーザーの学習における習得度合いを示す学習履歴データを生成するステップと、
この学習履歴データが生成される度に、生成された学習履歴データに当該学習履歴データに対応するカリキュラムを表わすデータ及び前記学習履歴データの累積生成数を表わす変数を付加して学習履歴記憶手段に記憶させるステップと、
この学習履歴記憶手段に記憶された学習履歴データを、前記付加された変数及び前記カリキュラムを表わすデータの夫々を縦軸及び横軸として前記表示手段上に2次元表示させるとともに、当該学習履歴データを表示する際、習得度合いに応じて表示形態を異ならせるステップと、
前記表示手段に表示されている各学習履歴データの表示位置から2次元平面上の座標を算出する座標算出ステップと、
この算出された各座標位置を通る線に近似する線を表わす関数を生成する線形近似ステ ップと、
この生成された関数に基づいて前記表示手段上に、線を描画する描画ステップと、
を実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002352631A JP3988633B2 (ja) | 2002-12-04 | 2002-12-04 | 学習結果表示装置、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002352631A JP3988633B2 (ja) | 2002-12-04 | 2002-12-04 | 学習結果表示装置、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004184757A JP2004184757A (ja) | 2004-07-02 |
JP3988633B2 true JP3988633B2 (ja) | 2007-10-10 |
Family
ID=32754199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002352631A Expired - Fee Related JP3988633B2 (ja) | 2002-12-04 | 2002-12-04 | 学習結果表示装置、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3988633B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013148774A (ja) * | 2012-01-20 | 2013-08-01 | Casio Comput Co Ltd | 楽譜表示装置、及びそのプログラム |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4797523B2 (ja) * | 2005-09-12 | 2011-10-19 | ヤマハ株式会社 | 合奏システム |
JP4752425B2 (ja) | 2005-09-28 | 2011-08-17 | ヤマハ株式会社 | 合奏システム |
JP4692189B2 (ja) | 2005-09-28 | 2011-06-01 | ヤマハ株式会社 | 合奏システム |
JP5811448B2 (ja) * | 2011-09-26 | 2015-11-11 | カシオ計算機株式会社 | 予想練習量提供装置、予想練習量提供方法、予想練習量提供システム、プログラム、並びに電子楽器 |
JP5418561B2 (ja) | 2011-09-26 | 2014-02-19 | カシオ計算機株式会社 | サポート機能推薦装置、サポート機能推薦方法、サポート機能推薦システム、並びにプログラム |
JP5786624B2 (ja) * | 2011-10-05 | 2015-09-30 | カシオ計算機株式会社 | 演奏評価装置、プログラム及び演奏評価方法 |
JP5748128B2 (ja) * | 2012-09-20 | 2015-07-15 | カシオ計算機株式会社 | 練習時間予測装置、及び練習時間予測方法、プログラム |
CN111583738B (zh) * | 2020-06-17 | 2021-09-17 | 湖南卡罗德音乐集团有限公司 | 一种一对多钢琴在线陪练方法 |
-
2002
- 2002-12-04 JP JP2002352631A patent/JP3988633B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013148774A (ja) * | 2012-01-20 | 2013-08-01 | Casio Comput Co Ltd | 楽譜表示装置、及びそのプログラム |
US9183754B2 (en) | 2012-01-20 | 2015-11-10 | Casio Computer Co., Ltd. | Music score display device, music score display method and storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP2004184757A (ja) | 2004-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4094236B2 (ja) | 演奏支援装置、演奏支援方法及び同方法をコンピュータで実現させる演奏支援プログラム | |
JP5799977B2 (ja) | 音符列解析装置 | |
US20080115657A1 (en) | Electronic musical instrument and performance control program systems and methods | |
JP4797523B2 (ja) | 合奏システム | |
CN111052223A (zh) | 播放控制方法、播放控制装置及程序 | |
JP3988633B2 (ja) | 学習結果表示装置、及びプログラム | |
JP5040927B2 (ja) | 演奏教習装置及びプログラム | |
KR100894866B1 (ko) | 애니메이션을 이용한 피아노 교습과 음파장을 이용한 평가시스템 | |
JP4517508B2 (ja) | 演奏教示装置および演奏教示方法 | |
US20020157521A1 (en) | Method and system for learning to play a musical instrument | |
JP4361327B2 (ja) | 電子楽器の演奏評価装置 | |
CN110959172B (zh) | 演奏解析方法、演奏解析装置以及存储介质 | |
JP4131279B2 (ja) | 合奏パラメータ表示装置 | |
JP3915428B2 (ja) | 楽曲分析装置、及びプログラム | |
CN111627409B (zh) | 一种钢琴弹奏的教学辅助系统 | |
Goebl | The role of timing and intensity in the production and perception of melody in expressive piano performance | |
JP3582320B2 (ja) | 音楽教習システム、音楽教習方法、及び同方法を実現するためのプログラムを記録した記録媒体 | |
JPH06301333A (ja) | 演奏教習装置 | |
JP4735969B2 (ja) | 伴奏表示装置及びプログラム | |
JP5195209B2 (ja) | 演奏データ編集装置及びプログラム | |
KR101790998B1 (ko) | 악보전환방법 및 악보전환장치 | |
JPH05142984A (ja) | 電子楽器 | |
JP5980613B2 (ja) | スクリーニング支援システム及びスクリーニング支援プログラム | |
JP4743615B2 (ja) | 練習機能付き電子楽器 | |
WO2022172732A1 (ja) | 情報処理システム、電子楽器、情報処理方法および機械学習システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050517 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061017 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070320 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070405 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070626 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070709 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100727 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110727 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110727 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120727 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120727 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130727 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |