JP2004246237A - 演奏診断装置および演奏診断プログラム - Google Patents

演奏診断装置および演奏診断プログラム Download PDF

Info

Publication number
JP2004246237A
JP2004246237A JP2003037966A JP2003037966A JP2004246237A JP 2004246237 A JP2004246237 A JP 2004246237A JP 2003037966 A JP2003037966 A JP 2003037966A JP 2003037966 A JP2003037966 A JP 2003037966A JP 2004246237 A JP2004246237 A JP 2004246237A
Authority
JP
Japan
Prior art keywords
performance
note
data
practice
perfection
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.)
Granted
Application number
JP2003037966A
Other languages
English (en)
Other versions
JP4482853B2 (ja
Inventor
Junichiro Soejima
淳一郎 副島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2003037966A priority Critical patent/JP4482853B2/ja
Publication of JP2004246237A publication Critical patent/JP2004246237A/ja
Application granted granted Critical
Publication of JP4482853B2 publication Critical patent/JP4482853B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Auxiliary Devices For Music (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

【課題】どの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を教示する演奏診断装置を実現する。
【解決手段】演奏記録データベースDBに記録される各練習データから課題曲を形成する各音符毎の演奏練習回数および適正演奏回数を集計し、その適正演奏回数と演奏練習回数との比から算出される各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する。また、演奏記録データベースDBに履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを各音符毎に集計し、各度数分布間の相関を表す1次近似関数を各音符毎に算出する。算出された1次近似関数から各音符毎の向上度を判定する。判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する。
【選択図】 図8

Description

【0001】
【発明の属する技術分野】
本発明は、演奏技術の完成度や向上度あるいは演奏ミスを犯し易い苦手箇所を分析して表示する演奏診断装置および演奏診断プログラムに関する。
【0002】
【従来の技術】
適正な演奏であるか否かを診断する装置として、例えば特許文献1には、予め記憶された練習曲の音符情報を読み出して楽譜表示すると共に、練習曲の音符情報と演奏入力される音符情報とを比較し、両音符情報が一致する場合には対応する音符を第1の表示態様で楽譜表示し、一方、不一致である場合には対応する音符を第2の表示態様で楽譜表示することによって、適正に演奏された音符と誤った演奏が行われた音符とを識別する技術が開示されている。
【0003】
【特許文献1】
特許公開平6−236141号公報
(特許第2611624号)
【0004】
【発明が解決しようとする課題】
ところで、上述した従来の装置では、楽譜表示される各音符毎の表示態様を異ならせて正しく弾けたか否かを識別するだけなので、どの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を判定してユーザに教示したり、演奏ミスを犯し易い苦手箇所を分析してユーザに報知することができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、どの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を教示でき、しかも演奏ミスを犯し易い苦手箇所を報知することができる演奏診断装置および演奏診断プログラムを提供することを目的としている。
【0005】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【0006】
請求項2に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出手段と、前記向上度算出手段によって算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定手段にて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【0007】
請求項3に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、前記完成度解析手段によって算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段とを具備することを特徴とする。
【0008】
請求項4に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出手段と、前記向上度算出手段によって算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、前記向上度判定手段によって判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段とを具備することを特徴とする。
【0009】
請求項5に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【0010】
請求項6に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段とを具備することを特徴とする。
【0011】
請求項7に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【0012】
請求項8に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出ステップと、前記向上度算出ステップにて算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定ステップにて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【0013】
請求項9に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、前記完成度解析ステップにて算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップとをコンピュータで実行させることを特徴とする。
【0014】
請求項10に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出ステップと、前記向上度算出ステップにて算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、前記向上度判定ステップにて判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップとをコンピュータで実行させることを特徴とする。
【0015】
請求項11に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録演奏記録データベースと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【0016】
請求項12に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップとをコンピュータで実行させることを特徴とする。
【0017】
第1の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、この演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて楽譜表示される各音符を区別表示するので、演奏技術の完成度をユーザに教示することが可能になる。
【0018】
第2の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計し、集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数をノートデータ毎に算出した後、算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する。そして、判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示するので、どれだけ演奏技術が向上しているのかをユーザに教示することが可能になる。
【0019】
第3の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。算出された各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【0020】
第4の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とをノートデータ毎に集計し、ノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数をノートデータ毎に算出する。算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定し、判定された各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【0021】
第5の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する。そして、演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、演奏パート別にどの程度演奏操作を習得しているかをユーザに教示することが可能になる。
【0022】
第6の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の演奏練習回数と、範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、どの程度演奏操作を習得しているかをユーザに教示することが可能になる。
【0023】
【発明の実施の形態】
以下、本発明の実施の一形態による演奏診断装置が搭載されたDTM装置を実施例とし、これについて図面を参照して説明する。
A.第1実施例の構成
(1)全体構成
図1は、本発明による第1実施例の構成を示すブロック図である。この図において、10は構成要素1〜7からなるDTM(デクストップミュージック)装置、20はDTM装置10とMIDI接続される電子楽器である。電子楽器20は鍵盤を備え、この鍵盤を用いたユーザの演奏操作に応じて発生する演奏データをMIDI出力する。DTM装置10では、電子楽器20側から演奏データがMIDI入力される毎に、手本となる課題曲のノートデータと比較して演奏判定し、その判定結果を課題曲のノートデータに付加した練習データとして演奏記録データベースDB(後述する)に記録する。また、DTM装置10では、演奏記録データベースDBに記録された練習データを分析してどの程度演奏操作を習得しているかを表す演奏技術の完成度や向上度を判定したり、演奏ミスを犯し易い苦手箇所を分析した結果を表示してユーザに報知する。
【0024】
(2)DTM装置10の構成
次に、図1を参照してDTM装置10の構成を説明する。図1において、1は装置各部を制御するCPUである。CPU1は、電子楽器20側から演奏データがMIDI入力される毎に、課題曲のノートデータと比較して演奏判定し、その結果を課題曲のノートデータに付加した練習データを、後述する演奏記録データベースDBに記録する一方、演奏記録データベースDBに記録された練習データを分析して演奏技術の完成度や向上度あるいは演奏ミスを犯し易い苦手箇所を判定する。こうした本発明の要旨に係わるCPU1の処理動作は追って詳述する。
【0025】
2はプログラムエリアおよびデータエリアを有するROMである。ROM2のプログラムエリアには、後述するメインルーチン、演奏判定処理、完成度解析処理、向上度算出処理、向上度判定処理および苦手箇所抽出処理を実行させる各種制御プログラムが記憶される。
ROM2のデータエリアには、手本となる課題曲のノートデータが複数曲分記憶され、その内から選曲指定される課題曲のノートデータが後述の演奏記録データベースDBに登録される。課題曲を形成する各音符に対応するノートデータは、曲頭からの経過時間で表現される発音タイミングTick、音高を表すノートナンバNote#および左手/右手のいずれのパートであるかを識別するパート番号Trackから構成される。
【0026】
3はワークエリアおよびデータエリアを備えるRAMである。RAM3のワークエリアには、CPU1の各種演算に用いられる各種レジスタ・フラグデータが一時記憶される。RAM3のデータエリアには、演奏記録データベースDBおよび苦手箇所抽出スタックSTが設けられる。以下、図2および図3を参照して演奏記録データベースDBおよび苦手箇所抽出スタックSTの構成を説明する。
【0027】
図2はRAM3のデータエリアに設けられる演奏記録データベースDBの構成を示す図である。演奏記録データベースDBは、演奏練習した課題曲の練習データpract_db[0]〜pract_db[n]を履歴記憶する。練習データpract_db[i]は、練習属性(pract_db[i][0]〜pract_db[i][9])、演奏結果(pract_db[i][10]〜pract_db[i][14])およびノートデータNotes[NOTES]から構成される。
【0028】
練習属性は、記録IDを表すpracticeID(pract_db[i][0])、課題曲中の練習開始時点(開始Tick)を表すStartMeas(pract_db[i][1])、課題曲中の練習終了時点(終了Tick)を表すEndMeas(pract_db[i][2])、課題曲のテンポを表すOrgTemp(pract_db[i][3])、課題曲中の練習開始時点(開始Tick)から練習終了時点(終了Tick)までの演奏練習範囲に含まれるノートイベント総数を表すNoteCount(pract_db[i][4])、演奏練習日時を表すDate(pract_db[i][5])、演奏モードを表すLStyle(pract_db[i][6])、演奏エリアを表すLArea(pract_db[i][7])、練習パート選択状況を表すLHand(pract_db[i][8])および演奏練習時に設定されたテンポを表すLTempo(pract_db[i][9])から構成される。
【0029】
演奏結果は、正しく弾けたノートイベント総数を表すRsltOkey(pract_db[i][10])、演奏ミスしたノートイベント総数を表すRsltNG(pract_db[i][11])、押鍵タイミングを逸したノートイベント総数を表すRsltMissTouch(pract_db[i][12])、正しい発音タイミングから一定時間以上ずれて発音されたノートイベント総数を表すRsltTiming(pract_db[i][13])および課題曲中の練習開始時点(開始Tick)から練習終了時点(終了Tick)までの演奏練習範囲の内で正しく弾けたノートイベントの割合を表すRsltClearLevel(pract_db[i][14])から構成される。
【0030】
ノートデータNotes[NOTES]は、ROM2のデータエリアから転送されるデータであって、選択された課題曲を形成する各音符に対応したNotes[0]〜Notes[NOTES](NOTESは音符数を表す)からなる。1つのノートデータNotes[i]は、曲頭からの経過時間で表現される発音タイミングTick(Notes[i][0])、音高を表すノートナンバNote#(Notes[i][1])、左手/右手のいずれのパートであるかを識別するパート番号Track(Notes[i][2])および演奏入力される演奏データとの比較結果Result(Notes[i][3])から構成される。
【0031】
なお、ノートデータNotes[i][3]の比較結果Resultは、後述する演奏判定処理により「−1」〜「3」の整数値になる。各値が意味するところは次の通りである。「−1」は正しく弾けていないことを表す。「0」は演奏範囲に無いことを表す。「1」は正しく弾かれたことを表す。「2」は演奏データが課題曲のノートデータの発音タイミングより早く押鍵されたことを表す。「3」は演奏データが課題曲のノートデータの発音タイミングより遅く押鍵されたことを表す。
【0032】
次に、図3を参照してRAM3のデータエリアに設けられる苦手箇所抽出スタックSTの構成を説明する。苦手箇所抽出スタックSTには、演奏ミスを犯し易い苦手箇所を表す苦手箇所データweakpoint[0]〜[n]が格納される。苦手箇所データweakpoint[i]は、課題曲中の苦手箇所の始点を表すStartMeas(weakpoint[i][0])と、その終点を表すEndMeas(weakpoint[i][1])とから構成される。苦手箇所データweakpoint[i]は、後述する完成度解析処理にて得られる演奏完成度に基づき、課題曲のノートデータ中から演奏ミスを犯し易い苦手箇所を抽出して得られる。なお、上記苦手箇所の始点StartMeasおよび終点EndMeasはそれぞれ曲頭からの経過時間で表現される。
【0033】
次に、再び図1を参照して実施例の構成について説明を進める。図1において、MIDIインタフェース4は、CPU1の制御の下に、電子楽器20側から送出される演奏データを取り込む。マウス5は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。キーボード6はキー入力操作に応じたイベントを発生する。表示部7はLCDパネル等から構成され、CPU1から供給される表示制御信号に応じて、演奏技術の完成度や向上度あるいは苦手箇所を画面表示する。
【0034】
B.第1実施例の動作
次に、図4〜図15を参照して第1実施例の動作について説明する。以下では、最初に全体動作としてメインルーチンの動作について説明し、続いてメインルーチンからコールされる演奏判定処理、完成度解析処理、向上度算出処理、向上度判定処理および苦手箇所抽出処理の各動作について述べる。
【0035】
(1)メインルーチンの動作
DTM装置10において、メインルーチンが実行されると、CPU1は図4に示すステップSA1に処理を進め、メニュー画面(不図示)を表示部7に表示する。図示していないが、メニュー画面には練習開始アイコン、完成度解析アイコン、向上度解析アイコンおよび終了アイコンが設けられており、これらアイコンにマウス5のマウスカーソルをポインティングさせてクリック操作することで、クリック操作されたアイコンに対応するコマンド(イベント)が生成する。そして、ステップSA2以降では、メニュー画面に表示される上記各アイコンのクリック操作に応じて発生するコマンド種に対応した処理を実行する。以下、発生するコマンド種別の処理動作を説明する。
【0036】
a.練習開始コマンドが発生した場合
演奏練習を開始すべくユーザがメニュー画面に表示される練習開始アイコンにマウス5のマウスカーソルをポインティングさせてクリック操作したとする。そうすると、練習開始コマンドが発生し、これによりステップSA2の判断結果が「YES」になり、ステップSA3を介して演奏判定処理を実行する。演奏判定処理では、後述するように、ユーザの演奏操作に応じて電子楽器20がMIDI出力する演奏データを、MIDIインタフェース4を介して取り込み、取り込んだ演奏データと課題曲のノートデータとを比較して適正な演奏であるか否かを判定し、その判定結果を課題曲のノートデータに付加した練習データとして演奏記録データベースDBに記録する。
【0037】
そして、ステップSA4では、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、演奏判定結果した結果に基づき、楽譜表示された各音符が正しく弾かれたかどうかを区別して表示する表示処理を実行する。この後、ステップSA5では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「YES」になり、上記ステップSA1に処理を戻し、メニュー画面表示状態に復帰する。
【0038】
b.完成度解析コマンドが発生した場合
演奏技術の完成度を解析するためにユーザが完成度解析アイコンをクリック操作したとする。そうすると、完成度解析コマンドが発生し、これによりステップSA6の判断結果が「YES」となり、ステップSA7に進み、完成度解析処理を実行する。後述するように、完成度解析処理では、演奏記録データベースDBに履歴記録された各練習データにそれぞれ含まれる演奏判定結果を参照して課題曲を形成するノートデータ毎の演奏完成度、つまり音符毎に正しく弾けた割合を算出する。この後、ステップSA4に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、楽譜表示された各音符毎の演奏完成度を表示する表示処理を実行し、続くステップSA5では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「YES」になり、上記ステップSA1に処理を戻し、メニュー画面表示状態に復帰する。
【0039】
c.向上度解析コマンドが発生した場合
演奏技術の向上度を解析するためにユーザが向上度解析アイコンをクリック操作したとする。そうすると、向上度解析コマンドが発生し、これによりステップSA8の判断結果が「YES」となり、ステップSA9,SA10に進み、向上度算出処理および向上度判定処理を実行し、演奏記録データベースDBに履歴記録された各練習データにそれぞれ含まれる演奏判定結果を参照して演奏向上度を算出して判定する。この後、ステップSA4に進み、上記ステップSA10にて判定された演奏向上度を表示する表示処理を実行し、続くステップSA5では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「YES」になり、上記ステップSA1に処理を戻し、メニュー画面表示状態に復帰する。
【0040】
c.苦手箇所解析コマンドが発生した場合
演奏ミスが生じ易い苦手箇所を解析するためにユーザが苦手箇所解析アイコンをクリック操作したとする。そうすると、苦手箇所解析コマンドが発生し、これによりステップSA11の判断結果が「YES」となり、ステップSA12に進み、演奏記録データベースDBに履歴記録された各練習データにそれぞれ含まれる演奏判定結果を参照して演奏ミスが生じ易い苦手箇所を抽出する苦手箇所抽出処理(後述する)を実行する。次いで、ステップSA4に進み、上記ステップSA12にて抽出された苦手箇所を表示する表示処理を実行し、続くステップSA5では、メニュー画面に復帰する入力操作の有無を判断し、その入力操作が行われた場合には、判断結果が「YES」になり、上記ステップSA1に処理を戻し、メニュー画面表示状態に復帰する。
【0041】
d.終了コマンドが発生した場合
メインルーチンを完了させるべく終了アイコンをクリック操作すると、終了コマンドが発生し、これによりステップSA13の判断結果が「YES」となり、メインルーチンの処理を終了させる。
【0042】
(3)演奏判定処理の動作
次に、図5を参照して演奏判定処理の動作を説明する。上述したステップSA3(図4参照)を介して本処理が実行されると、CPU1は図5のステップSB1に進み、準備処理を行う。準備処理では、ユーザ操作に従ってROM2のデータエリアに格納される複数の課題曲のノートデータの内から演奏練習する課題曲のノートデータを選曲し、選曲された課題曲のノートデータを、RAM3のデータエリアに設けられた演奏記録データベースDBのpract_db[iPID]のNotes[NOTES]に転送する。ここで、ポインタiPIDは演奏記録データベースDBの空きエリアを表す。
【0043】
また、準備処理では、演奏記録データベースDBのpract_db[iPID]に格納された課題曲のノートデータを楽譜表示する楽譜表示画面(不図示)を発生して表示部7に画面表示する。楽譜表示画面は、クリック操作に応じて演奏停止イベントを発生する演奏停止アイコンや、表示された楽譜上で練習開始ポイントをユーザ操作で指定する機能を有する。さらに準備処理では、楽譜表示画面においてユーザが行う練習開始ポイント指定に従い、指定された練習開始ポイントの開始TickをレジスタStartMeasにストアする。なお、ここで言う開始Tickとは、曲頭からの経過時間を表す。したがって、曲頭を練習開始ポイントに指定した場合には、開始Tickは「0」となる。
【0044】
こうして、演奏判定に必要な準備が整うと、CPU1はステップSB2に進み、レジスタiOKey、レジスタiMisTouchおよびレジスタiTimingMissをそれぞれゼロリセットする。なお、これらレジスタに格納される値が意図するところについては追って述べる。
次いで、ステップSB3以降では、MIDI入力イベントおよび演奏停止イベントの有無に応じた処理を実行する。以下、イベント無しの場合、MIDI入力イベントが有る場合および演奏停止イベントが有る場合に分けて説明を進める。
【0045】
a.イベント無しの場合
MIDI入力イベントや演奏停止イベントのいずれも無い場合には、ステップSB3、SB4の各判断結果が「NO」となり、ステップSB3、SB4を繰り返してイベント待ちの状態になる。
【0046】
b.MIDI入力イベントが有る場合
ユーザが電子楽器20の鍵盤を弾いて演奏練習を始めると、電子楽器20は演奏操作に応じて発生する演奏データをDTM装置10側にMIDI出力する。これに応じてMIDI入力イベントが発生すると、ステップSB3の判断結果は「YES」になり、ステップSB5に進む。ステップSB5では、MIDI入力イベントが発生したイベントタイミングをレジスタTickTmpにストアする。本実施例では、図示していないが、一定周期毎に実行されるタイマ割込みによって曲テンポに対応したタイマクロックを開始Tickに累算し、これにて曲先頭からの経過時間で表現されるイベントタイミングを計時するようになっている。続いて、ステップSB6では、レジスタTickTmpにストアされたイベントタイミングを参照し、そのイベントタイミングの近傍であって押鍵ノート(演奏データのノートナンバ)と同じノートオンイベントが演奏記録データベースDBのpract_db[iPID]に格納された課題曲のノートデータNotes[0]〜Notes[NOTES]に存在するか否かを判断する。
【0047】
該当するノートオンイベントがノートデータNotes[0]〜Notes[NOTES]に存在しない場合には、上記ステップSB6の判断結果は「NO」になり、ステップSB7に進み、押鍵ミス回数をカウントするレジスタiMisTouchをインクリメントして歩進させた後、ステップSB3に処理を戻す。一方、該当するノートオンイベントが存在すると、上記ステップSB6の判断結果は「YES」になり、そのノートオンイベントを含むノートデータを指定するポインタiNoteを設定してステップSB8に進む。ステップSB8では、該当するノートオンイベントに対応するノートデータNotes[iNote]の発音タイミングTick(Notes[iNote][0])と、レジスタTickTmpにストアされたイベントタイミングとの差分が許容誤差erOffsetに収まっているか否か、つまり適正なタイミングで演奏しているかどうかを判断する。
【0048】
適正なタイミングで演奏していると、判断結果は「YES」になり、ステップSB9に進み、演奏記録データベースDBのpract_db[iPID][Notes[iNote][3]]の比較結果Resultに「1」をストアする。これによりノートデータNotes[iNote]は正しく弾かれたことを表す。そして、適正押鍵回数をカウントするレジスタiOkeyをインクリメントして歩進させた後、前述のステップSB3に処理を戻す。
【0049】
これに対し、適正なタイミングで演奏できなかった場合には、上記ステップSB8の判断結果が「NO」となり、ステップSB10に進む。ステップSB10では、レジスタTickTmpにストアされたイベントタイミングが、対応するノートデータNotes[iNote]の発音タイミングTick(Notes[iNote][0])より小さいか否か、つまりノートデータの発音タイミングより早いタイミングで押鍵したかどうかを判断する。
【0050】
ノートデータの発音タイミングより早いタイミングで押鍵した場合には、判断結果が「YES」になり、ステップSB11に進み、演奏記録データベースDBのpract_db[iPID][Notes[iNote][3]]の比較結果Resultに「2」をストアする。これによりノートデータNotes[iNote]は早いタイミングで押鍵されたことを表す。そして、ステップSB12に進み、押鍵タイミングミス回数をカウントするレジスタiTimingMissをインクリメントして歩進させた後、前述のステップSB3に処理を戻す。
【0051】
一方、ノートデータの発音タイミングより遅いタイミングで押鍵した場合には、上記ステップSB10の判断結果が「NO」になり、ステップSB13に進み、演奏記録データベースDBのpract_db[iPID][Notes[iNote][3]]の比較結果Resultに「3」をストアする。これによりノートデータNotes[iNote]は遅いタイミングで押鍵されたことを表す。そして、ステップSB12に進み、押鍵タイミングミス回数をカウントするレジスタiTimingMissをインクリメントして歩進させた後、前述のステップSB3に処理を戻す。
【0052】
c.演奏停止イベントが有る場合
演奏練習を終えるためユーザが楽譜表示画面に配設される演奏停止アイコンをクリック操作したとする。そうすると、演奏停止イベントが発生してステップSB4の判断結果が「YES」になり、ステップSB15に進む。ステップSB15では、演奏停止イベントが発生した時点の停止TickをレジスタEndMeasにストアする。
次いで、ステップSB15では、演奏判定した結果を演奏記録データベースDBのpract_db[iPID]に記録する。すなわち、レジスタStartMeasに格納される開始TickやレジスタEndMeasに格納される停止Tick等、練習属性を表す各種データを演奏記録データベースDBのpract_db[iPID][0]〜pract_db[iPID][9]にストアすると共に、レジスタiOkeyに格納される適正押鍵回数をpract_db[iPID][10]のRsltOkeyとしてストアする。
【0053】
また、レジスタiMisTouchに格納される押鍵ミス回数とレジスタiTimingMissに格納される押鍵タイミングミス回数との和をpract_db[iPID][11]のRsltNGとしてストアする。レジスタiMisTouchに格納される押鍵ミス回数をpract_db[iPID][12]のRsltMissTouchとしてストアする。レジスタiTimingMissに格納される押鍵タイミングミス回数をpract_db[iPID][13]のRsltTimingとしてストアする。さらに上記RsltOkeyとRsltNGとから正しく弾けたノートイベントの割合を表すRsltClearLevelを算出してpract_db[iPID][14]にストアする。
【0054】
このように、演奏判定処理では、演奏練習する課題曲を選曲し、選曲された課題曲の練習開始ポイントを楽譜上で指定して演奏練習を始めると、ユーザの鍵盤操作に応じて発生する演奏データを取り込むMIDI入力イベントが発生する毎に、その演奏データと同じノートオンイベントを持つ課題曲のノートデータの有無を判断して無ければ押鍵ミスと見做し、一方、該当するノートデータが有れば適正な押鍵タイミングであるか否かを判断する。適正な押鍵タイミングの時には正しく弾かれた旨を表す比較結果Resultを該当ノートデータに付与し、適正な押鍵タイミングでなければ、適正タイミングより早い押鍵あるいは遅い押鍵である旨を表す比較結果Resultを該当ノートデータに付与するようになっている。
【0055】
さて、このようにして、課題曲のノートデータと比較して演奏判定し、その判定結果を課題曲のノートデータに付加した練習データとして演奏記録データベースDBに記録し終えると、CPU1はメインルーチンのステップSA4(図4参照)に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、演奏判定結果に基づき楽譜表示された各音符が正しく弾かれたかどうかを区別して表示する。これにより、例えば図6に図示する表示画面の一例のように、正しく弾かれた音符を○印、正しく弾かれていない音符を×印で区別表示する結果、どの程度演奏操作を習得しているかをユーザに教示し得るようになっている。
【0056】
(4)完成度解析処理の動作
次に、図7を参照して完成度解析処理の動作を説明する。前述したメインルーチンのステップSA7(図4参照)を介して本処理が実行されると、CPU1は図7のステップSC1に進み、完成度解析に必要な条件を設定するGUI画面(不図示)を表示部7に表示する。GUI画面では、演奏記録データベースDBに記録される練習データの内、同一課題曲の練習データを検索するための検索開始位置iLUStatおよび検索数iLUTimeをユーザ操作により入力する。そして、入力されると、ステップSC2に進み、ポインタiDBに検索開始位置iLUStatをセットすると共に、各レジスタ(iAnlOrgCnt[NOTES]、iAnlOKCnt[NOTES]およびiAnlRatio[NOTES])を初期化する。これらレジスタが意図するところは追って述べる。
【0057】
次いで、ステップSC3では、ポインタiDBから検索開始位置iLUStatを差し引いた値が検索数iLUTime−1より大きいか、すなわち同一課題曲の練習データを検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「YES」になり、次のステップSC4に進む。ステップSC4では、ポインタiDBに対応する演奏記録データベースDBのpract_db[iDB][0]が空き領域を表すデータNULLであるか否かを判断する。空き領域を表すデータNULLであると、検索対象となる練習データが無い為、判断結果は「YES」になり、後述するステップSC13に進む。一方、空き領域を表すデータNULLでなければ、検索対象となる練習データが存在するので、判断結果は「NO」となり、ステップSC5に進む。
【0058】
ステップSC5では、検索対象となる練習データ中のノートデータNotes[0]〜[NOTES]を読み出すためのポインタiNoteをゼロリセットする。続いて、ステップSC6では、ポインタiNoteの値がノートデータ数NOTES以上に達したか否か、すなわち検索対象とされている練習データ中のノートデータNotes[0]〜[NOTES]を読み出し終えたかどうかを判断する。
【0059】
読み出し終えていなければ、判断結果は「NO」になり、ステップSC7に進む。ステップSC7では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][0]](発音タイミングTick)が、parct_db[iDB][1](開始Tickを表すStartMeas)からparct_db[iDB][2](終了Tickを表すEndMeas)の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「NO」となり、ステップSC11に進み、ポインタiNoteを歩進させた後、上記ステップSC6に処理を戻す。
【0060】
一方、演奏練習したノートデータであると、判断結果が「YES」になり、次のステップSC8に進み、演奏練習回数をポインタiNote毎にカウントするレジスタiAnlOrgCnt[iNote]をインクリメントして歩進させる。そして、ステップSC9では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][3]](比較結果Result)が「1」であるか否か、つまり正しく弾けたノートデータであるかどうかを判断する。正しく弾けたノートデータであると、判断結果は「YES」になり、次のステップSC10に進み、適正演奏回数をポインタiNote毎にカウントするレジスタiAnlOKCnt[iNote]をインクリメントして歩進させる。これに対し、正しく弾けたノートデータでなければ、判断結果が「NO」になり、ステップSC11に進み、ポインタiNoteを歩進させた後、上記ステップSC6に処理を戻す。
【0061】
以後、ポインタiNoteがノートデータ数NOTES以上に達するまでステップSC6〜SC11を繰り返し、ポインタiDBで指定される練習データに含まれるノートデータについて演奏練習したものであるか否かを判別し、演奏練習したノートデータであれば、演奏練習回数をポインタiNote毎にカウントするレジスタiAnlOrgCnt[iNote]を歩進させ、さらにそのノートデータが適正演奏されたものであると、適正演奏回数をポインタiNote毎にカウントするレジスタiAnlOKCnt[iNote]を歩進させるようになっている。
【0062】
そして、ポインタiNoteがノートデータ数NOTES以上に達すると、ステップSC6の判断結果が「YES」になり、ステップSC12に進み、ポインタiDBをインクリメントして歩進させた後、前述のステップSC3に処理を戻す。
以後、同一課題曲の練習データを演奏記録データベースDBから検索し終えるまでステップSC3〜SC12を繰り返す。これにより、課題曲を形成する各音符毎の演奏練習回数および適正演奏回数が集計される。そして、検索し終えると、ステップSC3の判断結果が「NO」となり、ステップSC13に進む。
【0063】
ステップSC13以降では、上記ステップSC3〜SC12によって集計された各音符毎の演奏練習回数および適正演奏回数に基づき演奏完成度を算出する。すなわち、ステップSC13では、演奏練習回数を格納するレジスタiAnlOrgCnt[iNote]および適正演奏回数を格納するレジスタiAnlOKCnt[iNote]の内容を読み出すためのポインタiNoteをゼロリセットし、続くステップSC14では、ポインタiNoteの値がノートデータ数NOTES以上に達したか否か、すなわち読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、ステップSC15に進む。ステップSC15では、ポインタiNoteに応じてレジスタiAnlOrgCnt[iNote]から読み出される値が「0」、つまりポインタiNoteに対応するノートデータが一回も演奏練習されていない状態であるかどうかを判断する。
【0064】
一度も演奏練習されていない状態であると、判断結果は「YES」となり、この場合、演奏完成度を算出出来ないので、ステップSC16に進み、ポインタiNoteを歩進させた後、ステップSC14に戻る。
一方、そうでなければ、判断結果が「NO」となり、ステップSC17に進み、レジスタiAnlOKCnt[iNote]とレジスタiAnlOrgCnt[iNote]との比に「100」を乗じて演奏完成度(%表示)を算出してレジスタiAnlRatio[iNote]にストアする。この後、ステップSC16にてポインタiNoteを歩進させてからステップSC14に戻る。
【0065】
以後、ポインタiNoteの値がノートデータ数NOTES以上に達するまでステップSC14〜SC17を繰り返し、ポインタiNoteの値がノートデータ数NOTES以上に達すると、ステップSC14の判断結果が「YES」となり、本処理を完了する。これにより、適正演奏回数と演奏練習回数との比で定まる演奏完成度が課題曲の各音符毎に得られる。
【0066】
さて、こうして課題曲の各音符毎の演奏完成度が算出されると、CPU1はメインルーチンのステップSA4(図4参照)に処理を進め、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示すると共に、各音符毎の演奏完成度を、例えば図8に図示する表示画面の一例のように、完成度が0%〜30%未満の音符を×印、30%以上〜50%未満の音符を△印、50%以上〜70%未満の音符を▽印、70%以上〜90%未満の音符を○印、90%以上〜100%の音符を◎印で区別表示する結果、どの程度演奏操作を習得しているかを表す演奏技術の完成度をユーザに教示することができる。
【0067】
(5)向上度算出処理の動作
次に、図9〜図10を参照して向上度算出処理の動作を説明する。なお、向上度算出処理では、同一の課題曲について複数回演奏練習して得た練習データが演奏記録データベースDBに履歴記録されていることを前提とする。
前述したメインルーチンのステップSA9(図4参照)を介して本処理が実行されると、CPU1は図9のステップSD1に進み、各種レジスタ・ポインタを初期化する。続いて、ステップSD2では、ポインタiDBで指定される演奏記録データベースDB中の練習データpract_db[iDB][0]が空き領域を表すデータNULLであるか否かを判断する。空き領域を表すデータNULLであると、検索対象となる練習データが無い為、判断結果は「YES」になり、後述するステップSD10(図10参照)に進む。一方、空き領域を表すデータNULLでなければ、検索対象となる練習データが存在するので、判断結果は「NO」となり、次のステップSD3に進む。
【0068】
ステップSD3では、ポインタiNoteをゼロリセットする。次いで、ステップSD4では、ポインタiNoteの値が、ポインタiDBで指定される練習データに含まれるノートデータ数NOTESを超えたか否か、すなわちノートデータを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、次のステップSD5に進む。
ステップSD5では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][0]](発音タイミングTick)が、parct_db[iDB][1](開始Tickを表すStartMeas)からparct_db[iDB][2](終了Tickを表すEndMeas)の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「NO」となり、ステップSD8に進み、ポインタiNoteを歩進させた後、上記ステップSD4に処理を戻す。
【0069】
一方、演奏練習したノートデータであると、判断結果が「YES」になり、次のステップSD6に進み、演奏練習回数をポインタiNote毎にカウントするレジスタiAnlCnt[iNote]をインクリメントして歩進させると共に、練習データ数をポインタiNote毎にカウントするレジスタsum_Time[iNote]にポインタiDBの値を加算する。次に、ステップSD7では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][3]](比較結果Result)に応じて線形近似パラメータを更新する。
【0070】
すなわち、比較結果Resultが正しく弾かれた旨を表す値「1」の場合には、レジスタrslt_tmpに「1」をストアする。比較結果Resultが正しく弾けていないことを表す値「−1」の場合には、レジスタrslt_tmpに「0」をストアする。比較結果Resultが早く押鍵されたことを表す値「2」もくしは遅く押鍵されたことを表す値「3」の場合には、レジスタrslt_tmpに「0.5」をストアする。
そして、レジスタrslt_tmpの値をレジスタsum_Rslt[iNote]に加算する。また、レジスタrslt_tmpの自乗値をレジスタsum_Rsq[iNote]にストアする。さらに、レジスタrslt_tmpの値にポインタiDBを乗算した値をレジスタsum_RT[iNote]にストアする。
【0071】
ここで、線形近似パラメータとなるレジスタsum_Rslt[iNote]、レジスタsum_Time[iNote]、レジスタsum_RT[iNote]およびレジスタsum_Rsq[iNote]の各値が意図するところを説明する。
向上度判定処理では演奏記録データベースDBに履歴記録された各練習データに含まれるノートデータに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出する。上記レジスタrslt_tmpに格納される演奏結果は、正しく弾かれていない場合に「0」、早く押鍵もしくは遅く押鍵された場合に「0.5」、正しく弾かれた場合に「1」となる。そうした値の演奏結果をx軸に、この演奏結果に対応する練習回数をy軸に割り当て、例えば図13(ロ)に図示するように演奏結果毎の度数分布を得る。
【0072】
この度数分布では、正しく弾かれていない場合の値「0」に対応する練習回数、早く押鍵もしくは遅く押鍵された場合の値「0.5」に対応する練習回数および正しく弾かれた場合の値「1」に対応する練習回数を、順次積み上げる形で表現する。そのように表現された各度数分布間の相関を得るため、最小自乗法にて各度数分布を一次近似する。最小自乗法によれば、1次近似関数y=ax+bの傾きaおよび切片bは、次式(1)および(2)で表現される。
a=nΣxiyi−ΣxiΣyi/nΣxi−(Σxi) …(1)
b=ΣxiΣyi−ΣxiΣxiyi/nΣxi−(Σxi) …(2)
ここで、nはデータ数、xiおよびyiはi番目の演奏結果、練習回数を表す。そして、上記(1),(2)式におけるデータ数nがレジスタiAnlCnt[iNote]に、Σxiyiがレジスタsum_RT[iNote]に、Σxiがレジスタsum_Rslt[iNote]に、Σyiがレジスタsum_Time[iNote]に、Σxiがレジスタsum_Rsq[iNote]にそれぞれ対応している。
【0073】
こうした線形近似パラメータが上記ステップSD6、SD7にて更新されると、ステップSD8に処理を進め、ポインタiNoteをインクリメントして歩進させた後、上述のステップSD4に処理を戻す。
以後、ポインタiDBで指定される練習データに含まれるノートデータを読み出し終えるまでステップSD4〜SD8を繰り返して線形近似パラメータを更新する。そして、ノートデータを読み出し終えると、ステップSD4の判断結果が「YES」となり、ステップSD9に進み、ポインタiDBをインクリメントして歩進させる。この後、ステップSD2に処理を戻し、演奏記録データベースDBに記憶される練習データ群を全て読み出したかどうかを判断し、全て読み出し終えると、判断結果が「YES」になり、図10に示すステップSD10に処理を進める。
【0074】
ステップSD10〜SD14では、演奏記録データベースDBに履歴記録された各練習データに含まれるノートデータに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを、上述の式(1),(2)により算出する。
すなわち、まずステップSD10では、ポインタiNoteをゼロリセットし、続くステップSD11では、ノートデータ数NOTES分の線形近似パラメータを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、次のステップSD12に進む。ステップSD12では、ポインタiNoteに対応したレジスタiAnlCnt[iNote]の値(練習回数)が「0」、つまりポインタiNoteで指定される課題曲の音符が練習されているかどうかを判断する。練習されておらず、練習回数が「0」であると、判断結果は「NO」となり、後述するステップSD14に進む。
【0075】
一方、練習されている場合には、判断結果が「NO」になり、ステップSD13に進み、ポインタiNoteに対応した線形近似パラメータを前述の式(1),(2)に代入して最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを算出し、算出した傾きaをレジスタgrad[iNote]に、算出した切片bをレジスタroot[iNote]にストアする。次いで、ステップSD14に進み、ポインタiNoteをインクリメントして歩進させた後、上述のステップSD11に処理を戻す。
【0076】
以後、ポインタiNoteがノートデータ数NOTESに達するまでステップSD11〜SD14を繰り返し、ポインタiNoteに対応した線形近似パラメータに基づき課題曲の各音符毎の1次近似関数の傾きaおよび切片bを算出してレジスタgrad[iNote]、レジスタroot[iNote]にストアする。そして、ノートデータ数NOTES分の線形近似パラメータを読み出し終えると、ステップSD11の判断結果が「YES」となり、本処理を完了させる。
【0077】
このように、向上度算出処理では、演奏記録データベースDBに履歴記録された各練習データに含まれるノートデータに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを、課題曲の各音符毎に算出するようにしている。
【0078】
(6)向上度判定処理の動作
次に、図11〜図12を参照して向上度判定処理の動作を説明する。前述したメインルーチンのステップSA10(図4参照)を介して本処理が実行されると、CPU1は図11のステップSE1に進み、課題曲の各音符毎の向上度判定結果を保持するレジスタiProgress[NOTES]をゼロリセットする。次に、ステップSE2では、ポインタiNoteをゼロリセットし、続くステップSE3では、ノートデータ数NOTES分の向上度を判定し終えたかどうかを判断する。判定し終えていなければ、判断結果は「NO」になり、ステップSE4に進む。ステップSE4では、上述の向上度算出処理にて得たレジスタiAnlCnt[iNote]の値(練習回数)が「0」、つまりポインタiNoteで指定されるノートデータが練習されているかどうかを判断する。ポインタiNoteで指定されるノートデータが練習されていない場合には、判断結果が「YES」になり、ステップSE9にてポインタiNoteを歩進させてから再びステップSE3に処理を戻す。
【0079】
一方、ポインタiNoteで指定されるノートデータが練習されていると、上記ステップSE4の判断結果が「NO」になり、ステップSE5に進む。ステップSE5では、上述の向上度算出処理で求めた線形近似パラメータを、nΣxi−(Σxi)なる条件式(3)に代入したときの値が「0」か否かを判断する。この条件式(3)は、1次近似関数y=ax+bの傾きaを算出する式(1)の分母に相当するものである。したがって、このステップSE5では線形近似の可否を判断することになる。以下、線形近似することが出来ない場合と出来る場合とに分けて動作説明を進める。
【0080】
a.線形近似することが出来ない場合
この場合、ステップSE5の判断結果が「YES」になり、次のステップSE6に進む。ステップSE6では、上述の向上度算出処理で求めた線形近似パラメータを、Σxi/nなる条件式(4)に代入したときの値が「1」か否かを判断する。条件式(4)は演奏結果の平均値を表しており、これが「1」になるケースは演奏ミスがなく全て正しく弾けたことを表す。
従って、演奏ミスがなく全て正しく弾けた音符であると、ステップSE6の判断結果は「YES」になり、ステップSE7に進み、演奏ミスがなく全て正しく弾けた完了期を表す判定値「5」をレジスタiProgressにストアした後、ステップSE9に進み、ポインタiNoteを歩進させてから前述のステップSE3に処理を戻す。
【0081】
一方、条件式(4)の値が「1」でない場合、つまり図13(イ)に図示するように、適正タイミングより早く押鍵したり遅く押鍵した場合の演奏結果「0.5」の頻度分布しか存在しない場合には、ステップSE6の判断結果が「NO」になり、ステップSE8に進み、練習初期段階にある旨を表す判定値「1」をレジスタiProgressにストアする。この後、ステップSE9にてポインタiNoteを歩進させてから前述のステップSE3に処理を戻す。
【0082】
b.線形近似することが出来る場合
この場合、上述したステップSE5の判断結果が「NO」になり、図12に示すステップSE10以降に進み、上述の向上度算出処理で求めた線形近似パラメータ、一次近似関数の傾きa(レジスタgrad[iNote])および切片b(レジスタroot[iNote])に基づき向上度を判定する。まずステップSE10では、下記条件式(5)を満たすか否かを判断する。
grad[iNote]>ParamErr+iAnlCnt[iNote]×2/3 and root[iNote]>ParamErr+iAnlCnt[iNote]/6 …(5)
ここで、grad[iNote]は傾きa、ParamErrは許容誤差、iAnlCnt[iNote]は練習回数(Npractと記す)、root[iNote]は切片bを表す。
【0083】
したがって、条件式(5)はポインタiNoteで指定されるノートデータについて得られた一次近似関数の傾きaが2×Nprac/3+ParamErrより大きく、かつ一次近似関数の切片bがNprac/6+ParamErrより大きいか否か、つまり図13(ロ)に図示する向上期に該当するかどうかを判断する。そして、向上期に該当する場合には、判断結果が「YES」になり、ステップSE11に進み、向上期段階にある旨を表す判定値「2」をレジスタiProgress[iNote]にストアする。この後、図11のステップSE9にてポインタiNoteを歩進させてからステップSE3に処理を戻す。
【0084】
一方、条件式(5)を満たさず、向上期に該当しない場合には、ステップSE10の判断結果が「NO」となり、ステップSE12に進む。ステップSE12では、下記条件式(6)を満たすか否かを判断する。
grad[iNote]<iAnlCnt[iNote]×2/3−ParamErr and root[iNote]<iAnlCnt[iNote]/6−ParamErr …(6)
【0085】
したがって、条件式(6)はポインタiNoteで指定されるノートデータについて得られた一次近似関数の傾きaが2×Nprac/3−ParamErrより大きく、かつ一次近似関数の切片bがNprac/6−ParamErrより大きいか否か、つまり図13(ニ)に図示する完成期に該当するかどうかを判断する。そして、完成期に該当する場合には、判断結果が「YES」になり、ステップSE13に進み、完成期段階にある旨を表す判定値「4」をレジスタiProgress[iNote]にストアする。この後、図11のステップSE9にてポインタiNoteを歩進させてからステップSE3に処理を戻す。
【0086】
これに対し、条件式(6)を満たさず、完成期に該当しない場合には、ステップSE12の判断結果が「NO」となり、ステップSE14に進む。ステップSE14では、下記条件式(7)を満たすか否かを判断する。
sum_Rslt[iNote]/iAnlCnt[iNote]>0.5 …(7)
条件式(7)は演奏結果の平均値(Σxi/n)を表しており、これが「0.5」より大きいか否か、つまり図13(ハ)に図示する安定期に該当するかどうかを判断する。そして、安定期に該当する場合には、判断結果が「YES」になり、ステップSE15に進み、安定期段階にある旨を表す判定値「3」をレジスタiProgress[iNote]にストアする。この後、図11のステップSE9にてポインタiNoteを歩進させてからステップSE3に処理を戻す。一方、条件式(7)を満たさず、安定期に該当しない場合には、ステップSE14の判断結果が「NO」となり、ステップSE16に進み、向上期段階にある旨を表す判定値「2」をレジスタiProgress[iNote]にストアした後、図11のステップSE9にてポインタiNoteを歩進させてからステップSE3に処理を戻す。
【0087】
以後、ポインタiNoteがノートデータ数NOTESに達するまでステップSE3以降を繰り返し、向上度算出処理にて得た線形近似パラメータ、一次近似関数の傾きa(レジスタgrad[iNote])および切片b(レジスタroot[iNote])をポインタiNoteに応じて読み出し、これにより課題曲の各ノートデータ毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定し、該当する段階を表す判定値を設定する。そして、ノートデータ数NOTESについて判定値を設定し終えると、ステップSE32の判断結果が「YES」となり、本処理を完了させる。
【0088】
さて、こうして課題曲の各音符毎の向上度が判定されると、CPU1はメインルーチンのステップSA4(図4参照)に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示すると共に、画面表示された楽譜の各音符の表示色を判定された向上度に応じて異ならせることによって、課題曲を形成する各音符毎に、どれだけ演奏技術が向上しているのかをユーザに教示することができる。
【0089】
(7)苦手箇所抽出処理の動作
次に、図14を参照して苦手箇所抽出処理の動作を説明する。前述したメインルーチンのステップSA12(図4参照)を介して本処理が実行されると、CPU1は図14のステップSF1に進み、図7に図示した完成度解析処理を行う。完成度解析処理では、前述したように、課題曲の各音符毎に、適正演奏回数と演奏練習回数との比で定まる演奏完成度を求める。
次いで、ステップSF2では、完成度解析処理によって得られた各音符毎の演奏完成度、すなわちレジスタiAnlRatio[0]〜[NOTES]を取得する。続いて、ステップSF3では、レジスタweakptCntおよびポインタiNoteをゼロリセットすると共に、フラグbFoundに「0」をセットする。このフラグbFoundは、苦手箇所を検出したか否かを表すフラグであり、「0」の時に未検出状態を表し、「1」の時に検出状態を表す。
【0090】
次いで、ステップSF4に進むと、ポインタiNoteがノートデータ数NOTESより小さいか否か、つまり苦手箇所抽出中であるかどうかを判断する。苦手箇所抽出中であると、判断結果は「YES」になり、次のステップSF5に進む。ステップSF5では、フラグbFoundが「0」であるか否か、すなわち苦手箇所を検出していない状態であるかどうかを判断する。未検出状態であると、判断結果は「YES」になり、ステップSF6に進む。ステップSF6では、レジスタiAnlRatio[iNote]に格納される演奏完成度がレジスタClearPointに格納される合格点より小さいか否か、つまり苦手箇所であるかどうかを判断する。苦手箇所でなければ、判断結果は「NO」となり、ステップSF8に進み、ポインタiNoteを歩進させた後、上述のステップSF4に処理を戻す。
【0091】
一方、苦手箇所であると、上記ステップSF6の判断結果が「YES」になり、ステップSF7に進む。ステップSF7では、フラグbFoundに「1」をセットして苦手箇所を検出した旨を表すと共に、苦手箇所検出回数をカウントするレジスタweakptCntをインクリメントして歩進させる。また、ステップSF7では、演奏記録データベースDBから苦手箇所とされたノートデータの発音タイミングTick(pract_db[0][Notes[iNote][0]])を読み出し、これを苦手箇所の始点として、苦手箇所抽出スタックST(図3参照)のweakpoint[weakptCnt][0]にストアする。この後、ステップSF8に進み、ポインタiNoteを歩進させた後、上述のステップSF4に処理を戻す。
【0092】
そして、苦手箇所抽出中であって、苦手箇所を検出した状態にあると、ステップSF4の判断結果が「YES」、ステップSF5の判断結果が「NO」となり、ステップSF9に進む。ステップSF9では、レジスタiAnlRatio[iNote]に格納される演奏完成度がレジスタClearPointに格納される合格点以下であるか、つまり苦手箇所の終点であるかどうかを判断する。苦手箇所の終点でなければ、判断結果は「NO」となり、ステップSF8にてポインタiNoteを歩進させた後、上述のステップSF4に処理を戻す。
【0093】
これに対し、苦手箇所の終点であると、上記ステップSF9の判断結果が「YES」になり、ステップSF10に進む。ステップSF10では、フラグbFoundに「0」をセットすると共に、演奏記録データベースDBから苦手箇所の終点とされたノートデータの発音タイミングTick(pract_db[0][Notes[iNote][0]])を読み出し、これを苦手箇所抽出スタックST(図3参照)のweakpoint[weakptCnt][1]にストアする。
これにより、課題曲中の苦手箇所の始点を表すStartMeas(weakpoint[weakptCnt][0])と、その終点を表すEndMeas(weakpoint[weakptCnt][1])とから構成される苦手箇所データweakpoint[weakptCnt]が苦手箇所抽出スタックSTに登録される。この後、ステップSF8に進み、ポインタiNoteを歩進させた後、上述のステップSF4に処理を戻す。
【0094】
以後、ポインタiNoteがノートデータ数NOTESを超える迄、ステップSF4〜SF10を繰り返し、ポインタiNoteがノートデータ数NOTESを超えると、ステップSF4の判断結果が「NO」となり、ステップSF11に進む。ステップSF11では、フラグbFoundが「1」であるか否か、すなわち苦手箇所を検出した状態であるかどうかを判断し、未検出状態であれば、判断結果が「NO」になり、本処理を完了させる。
一方、検出状態であると、判断結果は「YES」になり、ステップSF12に進み、曲終端Tickを苦手箇所抽出スタックSTのweakpoint[weakptCnt][1]にストアして本処理を完了させる。
【0095】
以上のように、苦手箇所抽出処理では、歩進されるポインタiNoteに応じて指定されるノートデータの演奏完成度が合格点を超えているかどうかを判断し、合格点に達していない演奏完成度が見つかると、そのノートデータの発音タイミングTickを苦手箇所の始点とし、以降、合格点に達する演奏完成度のノートデータを探し出し、その発音タイミングTickを苦手箇所の終点にして苦手箇所データを形成する。そうした処理をポインタiNoteがノートデータ数NOTESを超えるまで繰り返し行い、ポインタiNoteがノートデータ数NOTESを超えた時点で苦手箇所の終点が検出されない場合には課題曲の終端を表す曲終端Tickを苦手箇所の終点に設定するようになっている。
【0096】
さて、以上のようにして課題曲の各音符毎の演奏完成度に基づき苦手箇所が抽出されると、CPU1はメインルーチンのステップSA4(図4参照)に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、苦手箇所抽出スタックSTに格納される苦手箇所データに従って、例えば図15に図示する表示画面の一例のように、苦手箇所データに含まれる苦手箇所の始点および終点に対応した区間の楽譜部分の表示色を変化させたり、ブリンク表示する等、表示形態を変化させることによって、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【0097】
以上説明したように、第1実施例によれば、ユーザの鍵操作に応じて発生する演奏データと課題曲のノートデータと比較して演奏判定し、その演奏判定結果を課題曲のノートデータに付加した練習データを演奏記録データベースDBに記録しておき、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として楽譜表示すると共に、ノートデータに付加される演奏判定結果に基づき楽譜表示された各音符が正しく弾かれたかどうかを区別して表示するようにしたので、どの程度演奏操作を習得しているかをユーザに教示し得ることが可能になる。
【0098】
また、第1実施例では、演奏記録データベースDBに記録される同一課題曲の各練習データから課題曲を形成する各音符(ノートデータ)毎の演奏練習回数および適正演奏回数を集計し、集計された適正演奏回数と演奏練習回数との比から算出される各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する為、演奏技術の完成度をユーザに教示し得るようになっている。
【0099】
さらに、第1実施例では、演奏記録データベースDBに記録された各練習データに含まれるノートデータから課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを課題曲の各音符毎に算出し、算出した1次近似関数y=ax+bの傾きaおよび切片bに基づき、課題曲の各音符毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定して向上度(判定値)を設定する。そして、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として楽譜表示する際に、各音符の表示色を判定された向上度に応じて異ならせることによって、課題曲を形成する各音符毎に、どれだけ演奏技術が向上しているのかをユーザに教示することが可能になっている。
【0100】
加えて、第1実施例では、演奏記録データベースDBに記録される同一課題曲の各練習データから課題曲を形成する各音符(ノートデータ)毎の演奏練習回数および適正演奏回数を集計し、集計された適正演奏回数と演奏練習回数との比から算出される各音符毎の演奏完成度に基づき、合格点に達していない演奏完成度の音符から合格点に達した演奏完成度の音符までの区間を苦手箇所として抽出する。そして、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として楽譜表示する際に、苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になっている。
【0101】
C.第2実施例の動作
次に、図16を参照して第2実施例による苦手箇所抽出処理の動作を説明する。第1実施例による苦手箇所抽出処理では、完成度解析処理によって得られた課題曲の各音符毎の演奏完成度に基づき苦手箇所を抽出するのに対し、第2実施例による苦手箇所抽出処理は、前述した向上度算出/向上度判定処理にて得られた課題曲の各音符毎の向上度(判定値)に基づき苦手箇所を抽出する点で相違する。以下、こうした第2実施例の動作を述べる。
【0102】
第1実施例と同様に、メインルーチンのステップSA12(図4参照)を介して第2実施例による苦手箇所抽出処理が実行されると、CPU1は図16に示すステップSG1に進み、前述した向上度算出処理および向上度判定処理(図9〜図12参照)を行う。向上度算出/向上度判定処理では、前述したように、演奏記録データベースDBに記録された各練習データに含まれるノートデータから抽出した課題曲の各音符毎の演奏結果と練習回数とを線形近似し、これにより得られる1次近似関数y=ax+bの傾きaおよび切片bに基づき、課題曲の各音符毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定して向上度(判定値)を設定する。
【0103】
次いで、ステップSG2では、向上度算出/向上度判定処理によって得られた各音符毎の向上度(判定値)、すなわちレジスタiProgress[0]〜[NOTES]を取得する。続いて、ステップSG3では、レジスタweakptCntおよびポインタiNoteをゼロリセットすると共に、フラグbFoundに「0」をセットする。このフラグbFoundは、苦手箇所を検出したか否かを表すフラグであり、「0」の時に未検出状態を表し、「1」の時に検出状態を表す。
【0104】
次いで、ステップSG4に進むと、ポインタiNoteがノートデータ数NOTESより小さいか否か、つまり苦手箇所抽出中であるかどうかを判断する。苦手箇所抽出中であると、判断結果は「YES」になり、次のステップSG5に進む。ステップSG5では、フラグbFoundが「0」であるか否か、すなわち苦手箇所を検出していない状態であるかどうかを判断する。未検出状態であると、判断結果は「YES」になり、ステップSG6に進む。ステップSG6では、レジスタiProgress[iNote]に格納される向上度が「1(練習初期)」または「2(向上期)」であるか否かを判断する。向上度が「3(安定期)」、「4(完成期)」あるいは「5(完了期)」であると、苦手箇所と見做さず、判断結果は「NO」となり、ステップSG8に進み、ポインタiNoteを歩進させた後、上述のステップSG4に処理を戻す。
【0105】
一方、向上度が「1(練習初期)」または「2(向上期)」であると、苦手箇所と見做して、上記ステップSG6の判断結果が「YES」になり、ステップSG7に進む。ステップSG7では、フラグbFoundに「1」をセットして苦手箇所を検出した旨を表すと共に、苦手箇所の検出回数をカウントするレジスタweakptCntをインクリメントして歩進させる。また、ステップSG7では、演奏記録データベースDBから苦手箇所とされたノートデータの発音タイミングTick(pract_db[0][Notes[iNote][0]])を読み出し、これを苦手箇所の始点として、苦手箇所抽出スタックST(図3参照)のweakpoint[weakptCnt][0]にストアする。この後、ステップSG8に進み、ポインタiNoteを歩進させた後、上述のステップSG4に処理を戻す。
【0106】
そして、苦手箇所抽出中であって、苦手箇所を検出した状態であると、ステップSG4の判断結果が「YES」、ステップSG5の判断結果が「NO」となり、ステップSG9に進む。ステップSG9では、レジスタiProgress[iNote]に格納される向上度が「3(安定期)」以上であるか否か、つまり苦手箇所の終点であるかどうかを判断する。苦手箇所の終点でなければ、判断結果は「NO」となり、ステップSG8にてポインタiNoteを歩進させた後、上述のステップSG4に処理を戻す。
【0107】
これに対し、苦手箇所の終点であると、上記ステップSG9の判断結果が「YES」になり、ステップSG10に進む。ステップSG10では、フラグbFoundに「0」をセットすると共に、演奏記録データベースDBから苦手箇所の終点とされたノートデータの発音タイミングTick(pract_db[0][Notes[iNote][0]])を読み出し、これを苦手箇所抽出スタックSTのweakpoint[weakptCnt][1]にストアする。
【0108】
これにより、課題曲中の苦手箇所の始点を表すStartMeas(weakpoint[weakptCnt][0])と、その終点を表すEndMeas(weakpoint[weakptCnt][1])とから構成される苦手箇所データweakpoint[weakptCnt]が苦手箇所抽出スタックSTに登録される。この後、ステップSG8に進み、ポインタiNoteを歩進させた後、上述のステップSG4に処理を戻す。
【0109】
以後、ポインタiNoteがノートデータ数NOTESを超える迄、ステップSG4〜SG10を繰り返し、ポインタiNoteがノートデータ数NOTESを超えると、ステップSG4の判断結果が「NO」となり、ステップSG11に進む。ステップSG11では、フラグbFoundが「1」であるか否か、すなわち苦手箇所を検出した状態であるかどうかを判断し、未検出状態であれば、判断結果が「NO」になり、本処理を完了させる。
一方、検出状態であると、判断結果は「YES」になり、ステップSG12に進み、曲終端Tickを苦手箇所抽出スタックSTのweakpoint[weakptCnt][1]にストアして本処理を完了させる。
【0110】
以上のように、第2実施例による苦手箇所抽出処理では、歩進されるポインタiNoteに応じて指定されるノートデータの向上度が練習初期または向上期であるかどうかを判断し、練習初期または向上期のノートデータであると、その発音タイミングTickを苦手箇所の始点とし、以降、安定期以上の向上度のノートデータを探し出し、その発音タイミングTickを苦手箇所の終点にして苦手箇所データを形成する。こうした処理をポインタiNoteがノートデータ数NOTESを超えるまで繰り返し、ポインタiNoteがノートデータ数NOTESを超えた時点で苦手箇所の終点が検出されない場合には課題曲の終端を表す曲終端Tickを苦手箇所の終点に設定するようになっている。
【0111】
さて、このようにして課題曲の各音符毎の向上度に基づき苦手箇所が抽出されると、CPU1はメインルーチンのステップSA4(図4参照)に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、苦手箇所抽出スタックSTに格納される苦手箇所データに従って、例えば図15に図示する表示画面の一例のように、苦手箇所データに含まれる苦手箇所の始点および終点に対応した区間の楽譜部分の表示色を変化させたり、ブリンク表示する等、表示形態を変化させることによって演奏ミスを犯し易い苦手箇所をユーザに報知することが可能になる。
【0112】
D.第3実施例の動作
次に、図17〜図18を参照して第3実施例による完成度解析処理の動作について説明する。第1実施例による完成度解析処理では、演奏記録データベースDBに記録される練習データのパート選択状況(右手パート/左手パート)を区別せずに課題曲を形成する各音符毎の演奏完成度を算出したのに対し、第3実施例による完成度解析処理は、演奏記録データベースDBに記録される練習データのパート選択状況を区別して、各パート別に各音符毎の演奏完成度を算出する点で相違する。以下、そうした第3実施例の動作を述べる。
【0113】
第1実施例と同様に、メインルーチンのステップSA7(図4参照)を介して第3実施例による完成度解析処理が実行されると、CPU1は図17のステップSH1に進み、完成度解析に必要な条件を設定するGUI画面(不図示)を表示部7に表示する。GUI画面では、演奏記録データベースDBに記録される練習データの内、同一課題曲の練習データを検索するための検索開始位置iLUStatおよび検索数iLUTimeをユーザ操作により入力する。そして、入力されると、ステップSH2に進み、ポインタiDBに検索開始位置iLUStatをセットすると共に、各レジスタ(iAnlOrgCnt[NOTES,PARTS]、iAnlOKCnt[NOTES,PARTS]およびiAnlRatio[NOTES,PART])を初期化する。
【0114】
次いで、ステップSH3では、ポインタiDBから検索開始位置iLUStatを差し引いた値が検索数iLUTime−1より大きいか、すなわち同一課題曲の練習データを検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「YES」になり、次のステップSH4に進む。ステップSH4では、ポインタiDBに対応する演奏記録データベースDBのpract_db[iDB][0]が空き領域を表すデータNULLであるか否かを判断する。空き領域を表すデータNULLであると、検索対象となる練習データが無い為、判断結果は「YES」になり、後述するステップSH13に進む。一方、空き領域を表すデータNULLでなければ、検索対象となる練習データが存在するので、判断結果は「NO」となり、ステップSH5に進む。
【0115】
ステップSH5では、検索対象とされている練習データ中のノートデータNotes[0]〜[NOTES]を読み出すためのポインタiNoteをゼロリセットする。続いて、ステップSH6では、ポインタiNoteの値がノートデータ数NOTES以上に達したか否か、すなわち検索対象とされている練習データ中のノートデータNotes[0]〜[NOTES]を読み出し終えたかどうかを判断する。
【0116】
読み出し終えていなければ、判断結果は「NO」になり、ステップSH7に進む。ステップSH7では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][0]](発音タイミングTick)が、parct_db[iDB][1](開始Tickを表すStartMeas)からparct_db[iDB][2](終了Tickを表すEndMeas)の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「NO」となり、ステップSH11に進み、ポインタiNoteを歩進させた後、上記ステップSH6に処理を戻す。
【0117】
一方、演奏練習したノートデータであると、判断結果が「YES」になり、次のステップSH8に進み、ポインタiDBで指定される練習データの、選択パートでの演奏練習回数をポインタiNote毎にカウントするレジスタiAnlOrgCnt[iNote,pract_db[iDB][8]]をインクリメントして歩進させる。そして、ステップSH9では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][3]](比較結果Result)が「1」であるか否か、つまり正しく弾けたノートデータであるかどうかを判断する。
【0118】
正しく弾けたノートデータであると、判断結果は「YES」になり、次のステップSH10に進み、ポインタiDBで指定される練習データの、選択パートでの適正演奏回数をポインタiNote毎にカウントするレジスタiAnlOKCnt[iNotepract_db[iDB][8]]をインクリメントして歩進させる。これに対し、正しく弾けたノートデータでなければ、判断結果が「NO」になり、ステップSH11に進み、ポインタiNoteを歩進させた後、上記ステップSH6に処理を戻す。
【0119】
以後、ポインタiNoteがノートデータ数NOTES以上に達するまでステップSH6〜SH11を繰り返し、ポインタiDBで指定される練習データに含まれるノートデータについて演奏練習したものであるか否かを判別し、演奏練習したノートデータであれば、レジスタiAnlOrgCnt[iNote,pract_db[iDB][8]]を歩進させ、さらにそのノートデータが適正演奏されたものであると、レジスタiAnlOKCnt[iNotepract_db[iDB][8]]を歩進させる。そして、ポインタiNoteがノートデータ数NOTES以上に達すると、ステップSH6の判断結果が「YES」になり、ステップSH12に進み、ポインタiDBをインクリメントして歩進させた後、前述のステップSH3に処理を戻す。
【0120】
以後、同一課題曲の練習データを演奏記録データベースDBから検索し終えるまでステップSH3〜SH12を繰り返す。これにより、選択パート別に各音符毎の演奏練習回数および適正演奏回数が集計される。そして、検索し終えると、ステップSH3の判断結果が「NO」となり、図18に示すステップSH13に進む。ステップSH13以降では、上記ステップSH3〜SH12によって各選択パート別に集計された各ノートデータ毎の演奏練習回数および適正演奏回数に基づき演奏完成度を算出する。
【0121】
すなわち、ステップSH13では、ポインタiNoteをゼロリセットし、続くステップSH14では、ポインタiNoteの値がノートデータ数NOTES以上に達したか否か、すなわち読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、ステップSH15に進む。ステップSH15では、選択パートを指定するポインタiPartをゼロリセットする。続いて、ステップSH16では、ポインタiPartの値がパート数PARTS以上に達したか否か、つまりポインタiNoteに対応した音符の演奏完成度を全ての選択パートについて算出し終えたかどうかを判断する。
【0122】
全ての選択パートについて算出し終えていなければ、判断結果は「NO」になり、次のステップSH17に進む。ステップSH17では、ポインタiNoteおよびiPartに応じてレジスタiAnlOrgCnt[iNote,iPart]から読み出される値が「0」、つまりポインタiPartで指定される選択パートにおいてポインタiNoteに対応するノートデータが一回も演奏練習されていない状態であるかどうかを判断する。
一度も演奏練習されていない状態であると、判断結果は「YES」となり、この場合、演奏完成度を算出し得ない為、ステップSH19に進み、ポインタiPartをインクリメントして歩進させた後、上述のステップSH16に戻る。
【0123】
一方、そうでなければ、判断結果が「NO」となり、ステップSH18に進み、レジスタiAnlOKCnt[iNote,iPart]とレジスタiAnlOrgCnt[iNote,iPart]との比に「100」を乗じて演奏完成度(%)を算出してレジスタiAnlRatio[iNote,iPart]にストアする。この後、ステップSH19にてポインタiPartを歩進させてからステップSH16に戻る。
【0124】
以後、ポインタiPartの値がパート数PARTS以上に達するまでステップSH16〜SH19を繰り返し、ポインタiNoteで指定されるノートデータについて選択パート別の演奏完成度を算出する。そして、ポインタiPartの値がパート数PARTS以上に達すると、ステップSH16の判断結果が「YES」になり、ステップSH20に進み、ポインタiNoteをインクリメントして歩進させた後、上述のステップSH14に処理を戻す。
そして、ポインタiNoteの値がノートデータ数NOTES以上に達するまでステップSH14〜SH20を繰り返し、選択パート別の演奏完成度を各ノートデータ毎に求め、ポインタiNoteの値がノートデータ数NOTES以上に達すると、ステップSH14の判断結果が「YES」となり、本処理を完了する。これにより、課題曲の各パート別に各音符毎の演奏完成度が得られる。
【0125】
課題曲の各パート別に各音符毎の演奏完成度が算出されると、CPU1はメインルーチンのステップSA4(図4参照)に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、各パート別に得られた各音符毎の演奏完成度を楽譜上で区別表示することによって、どのパートがどの程度演奏操作を習得しているかをユーザに教示し得るようになる。
【0126】
E.第4実施例の動作
次に、図19を参照して第4実施例による完成度解析処理の動作について説明する。第1実施例による完成度解析処理では、演奏記録データベースDBに記録される練習データの練習属性の内、練習開始時点(開始Tick)を表すStartMeas(pract_db[i][1])と練習終了時点(終了Tick)を表すEndMeas(pract_db[i][2])とで定まる演奏範囲を考慮せずに課題曲を形成する各音符毎の演奏完成度を算出したのに対し、第4実施例による完成度解析処理は、演奏範囲を考慮して課題曲を形成する各音符毎の演奏完成度を算出する点で相違する。以下、そうした第4実施例の動作を述べる。
【0127】
第1実施例と同様に、メインルーチンのステップSA7(図4参照)を介して第4実施例による完成度解析処理が実行されると、CPU1は図19のステップSJ1に進み、完成度解析に必要な条件を設定するGUI画面(不図示)を表示部7に表示する。GUI画面では、演奏記録データベースDBに記録される練習データの内、同一課題曲の練習データを検索するための検索開始位置iLUStatおよび検索数iLUTimeをユーザ操作により入力する。そして、入力されると、ステップSJ2に進み、ポインタiDBに検索開始位置iLUStatをセットすると共に、各レジスタ(iAnlOrgCnt[NOTES]、iAnlOKCnt[NOTES]およびiAnlRatio[NOTES])を初期化する。
【0128】
次いで、ステップSJ3では、ポインタiDBから検索開始位置iLUStatを差し引いた値が検索数iLUTime−1より大きいか、すなわち同一課題曲の練習データを検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「YES」になり、次のステップSJ4に進む。ステップSJ4では、ポインタiDBに対応する演奏記録データベースDBのpract_db[iDB][0]が空き領域を表すデータNULLであるか否かを判断する。空き領域を表すデータNULLであると、検索対象となる練習データが無い為、判断結果は「YES」になり、後述するステップSJ14に進む。一方、空き領域を表すデータNULLでなければ、検索対象となる練習データが存在するので、判断結果は「NO」となり、ステップSJ5に進む。
【0129】
ステップSJ5では、ポインタiDBに対応する演奏記録データベースDBのpract_db[iDB][2]の練習終了時点(終了Tick)を表すEndMeasからpract_db[iDB][2]の練習開始時点(開始Tick)を表すStartMeasを減算した値を、曲終端を表すENDTICKで除算して課題曲全体に対する演奏範囲の割合を算出し、レジスタfPlayRatioにストアする。次いで、ステップSJ6に進み、検索対象とされている練習データ中のノートデータNotes[0]〜[NOTES]を読み出すためのポインタiNoteをゼロリセットする。
【0130】
続いて、ステップSJ7では、ポインタiNoteの値がノートデータ数NOTES以上に達したか否か、すなわち検索対象とされている練習データ中のノートデータNotes[0]〜[NOTES]を読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、ステップSJ8に進む。
ステップSJ8では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][0]](発音タイミングTick)が、parct_db[iDB][1](開始Tickを表すStartMeas)からparct_db[iDB][2](終了Tickを表すEndMeas)の範囲内にあるか、つまり演奏練習したノートデータであるかどうかを判断する。演奏練習したノートデータでなければ、判断結果は「NO」となり、ステップSJ12に進み、ポインタiNoteを歩進させた後、上記ステップSJ7に処理を戻す。
【0131】
一方、演奏練習したノートデータであると、判断結果が「YES」になり、次のステップSJ9に進み、演奏練習回数をポインタiNote毎にカウントするレジスタiAnlOrgCnt[iNote]をインクリメントして歩進させる。続いて、ステップSJ10では、ポインタiDBで指定される練習データに含まれ、ポインタiNoteに対応するノートデータparct_db[iDB][Notes[iNote][3]](比較結果Result)が「1」であるか否か、つまり正しく弾けたノートデータであるかどうかを判断する。
【0132】
正しく弾けたノートデータであると、判断結果は「YES」になり、次のステップSJ11に進み、レジスタfPlayRatioに格納される演奏範囲の割合をレジスタiAnlOKCnt[iNote]に加算する。したがって、レジスタiAnlOKCnt[iNote]には、演奏範囲の割合に応じた適正演奏回数がポインタiNote毎にカウントされる。これに対し、正しく弾けたノートデータでなければ、上記ステップSJ10の判断結果が「NO」になり、ステップSJ12に進み、ポインタiNoteを歩進させてからステップSJ7に処理を戻す。
【0133】
以後、ポインタiNoteがノートデータ数NOTES以上に達するまでステップSJ7〜SJ12を繰り返し行い、ポインタiDBで指定される練習データに含まれるノートデータについて演奏練習したものであるか否かを判別し、演奏練習したノートデータであれば、演奏練習回数をポインタiNote毎にカウントするレジスタiAnlOrgCnt[iNote]を歩進させ、さらにそのノートデータが適正演奏されたものであると、演奏範囲の割合に応じた適正演奏回数をポインタiNote毎にカウントするレジスタiAnlOKCnt[iNote]に加算する。
【0134】
そして、ポインタiNoteがノートデータ数NOTES以上に達すると、ステップSJ7の判断結果が「YES」になり、ステップSJ13に進み、ポインタiDBをインクリメントして歩進させた後、前述のステップSJ3に処理を戻す。
以後、同一課題曲の練習データを演奏記録データベースDBから検索し終えるまでステップSJ3〜SJ13を繰り返す。これにより、各ノートデータ毎に演奏練習回数と演奏範囲の割合に応じた適正演奏回数とが集計される。そして、同一課題曲の練習データを検索し終えると、ステップSJ3の判断結果が「NO」となり、ステップSJ14に進む。ステップSJ14以降では、上記ステップSJ3〜SJ13によって集計された各ノートデータ毎の、演奏練習回数と演奏範囲の割合に応じた適正演奏回数とに基づき、演奏範囲を考慮した各音符毎の演奏完成度を算出する。
【0135】
すなわち、ステップSJ14では、ポインタiNoteをゼロリセットし、続くステップSJ15では、ポインタiNoteの値がノートデータ数NOTES以上に達したか否か、すなわち読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、ステップSJ16に進む。ステップSJ16では、ポインタiNoteに応じてレジスタiAnlOrgCnt[iNote]から読み出される値が「0」、つまりポインタiNoteに対応するノートデータが一回も演奏練習されていない状態であるかどうかを判断する。一度も演奏練習されていない状態であると、判断結果は「YES」となり、この場合、演奏完成度を算出することが出来ないので、ステップSJ17に進み、ポインタiNoteを歩進させた後、ステップSJ15に戻る。
【0136】
一方、そうでなければ、判断結果が「NO」になり、ステップSJ18に進み、レジスタiAnlOKCnt[iNote]とレジスタiAnlOrgCnt[iNote]との比に「100」を乗じて演奏完成度(%表示)を算出してレジスタiAnlRatio[iNote]にストアする。この後、ステップSC17にてポインタiNoteを歩進させてからステップSJ15に戻る。
以後、ポインタiNoteの値がノートデータ数NOTES以上に達するまでステップSJ15〜SJ18を繰り返し、ポインタiNoteの値がノートデータ数NOTES以上に達すると、ステップSJ15の判断結果が「YES」となり、本処理を完了する。これにより、演奏範囲を考慮した各音符毎の演奏完成度が得られる。
【0137】
さて、こうして演奏範囲を考慮した各音符毎の演奏完成度が算出されると、CPU1はメインルーチンのステップSA4(図4参照)に進み、演奏記録データベースDBに記録された練習データに含まれる課題曲のノートデータを音符として表示部7に楽譜表示する一方、算出された音符毎の演奏完成度を区別表示するので、どの程度演奏操作を習得しているかをユーザに教示することが可能になる。
【0138】
なお、第4実施例による完成度解析処理では、演奏範囲を考慮して課題曲を形成する各音符毎の演奏完成度を算出したが、これに限らず、演奏記録データベースDBに記録される練習データのパート選択状況と演奏範囲とを考慮して各パート別に各音符毎の演奏完成度を算出する態様、すなわち第4実施例と第3実施例とを組合せる態様としても構わず、そのようにすれば演奏範囲を考慮したパート毎の演奏完成度をユーザに教示し得るようになる。
【0139】
【発明の効果】
請求項1,7に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、この演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて楽譜表示される各音符を区別表示するので、演奏技術の完成度をユーザに教示することができる。
請求項2,8に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計し、集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数をノートデータ毎に算出した後、算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する。そして、判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示するので、どれだけ演奏技術が向上しているのかをユーザに教示することができる。
請求項3,9に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。算出された各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することができる。
請求項4,10に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とをノートデータ毎に集計し、ノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数をノートデータ毎に算出する。算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定し、判定された各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する。そして、抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させるので、演奏ミスを犯し易い苦手箇所をユーザに報知することができる。
請求項5,11に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する。そして、演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、演奏パート別にどの程度演奏操作を習得しているかをユーザに教示することができる。
請求項6,12に記載の発明によれば、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベース手段に履歴記録しておき、演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照してノートデータ毎の演奏練習回数と、範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する。そして、算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示するので、どの程度演奏操作を習得しているかをユーザに教示することができる。
【図面の簡単な説明】
【図1】本発明による第1実施例の構成を示すブロック図である。
【図2】RAM3に設けられる演奏記録データベースDBの構成を示す図である。
【図3】RAM3に設けられる苦手箇所抽出スタックSTの構成を示す図である。
【図4】メインルーチンの動作を示すフローチャートである。
【図5】演奏判定処理の動作を示すフローチャートである。
【図6】演奏判定結果を表示する表示画面の一例を示す図である。
【図7】完成度解析処理の動作を示すフローチャートである。
【図8】完成度解析結果を表示する表示画面の一例を示す図である。
【図9】向上度算出処理の動作を示すフローチャートである。
【図10】向上度算出処理の動作を示すフローチャートである。
【図11】向上度判定処理の動作を示すフローチャートである。
【図12】向上度判定処理の動作を示すフローチャートである。
【図13】向上度判定処理の動作を説明するための図である。
【図14】苦手箇所抽出処理の動作を示すフローチャートである。
【図15】苦手箇所抽出結果を表示する表示画面の一例を示す図である。
【図16】第2実施例による苦手箇所抽出処理の動作を示すフローチャートである。
【図17】第3実施例による完成度解析処理の動作を示すフローチャートである。
【図18】第3実施例による完成度解析処理の動作を示すフローチャートである。
【図19】第4実施例による完成度解析処理の動作を示すフローチャートである。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 MIDIインタフェース
5 マウス
6 キーボード
7 表示部
10 DTM装置
20 電子楽器

Claims (12)

  1. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
    前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、
    前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
    を具備することを特徴とする演奏診断装置。
  2. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
    前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、
    前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出手段と、
    前記向上度算出手段によって算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、
    前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定手段にて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
    を具備することを特徴とする演奏診断装置。
  3. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
    前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、
    前記完成度解析手段によって算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、
    前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段と
    を具備することを特徴とする演奏診断装置。
  4. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
    前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、
    前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出手段と、
    前記向上度算出手段によって算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、
    前記向上度判定手段によって判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出手段と、
    前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出手段によって抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御手段と
    を具備することを特徴とする演奏診断装置。
  5. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
    前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析手段と、
    前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
    を具備することを特徴とする演奏診断装置。
  6. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを履歴記録する演奏記録データベース手段と、
    前記演奏記録データベース手段に履歴記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析手段と、
    前記演奏記録データベース手段に記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析手段によって算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御手段と
    を具備することを特徴とする演奏診断装置。
  7. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
    前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、
    前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
    をコンピュータで実行させることを特徴とする演奏診断プログラム。
  8. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
    前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、
    前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出ステップと、
    前記向上度算出ステップにて算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、
    前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記向上度判定ステップにて判定された各音符毎の向上度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
    をコンピュータで実行させることを特徴とする演奏診断プログラム。
  9. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
    前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、
    前記完成度解析ステップにて算出された課題曲を形成する各音符毎の演奏完成度を参照して、所定値未満の演奏完成度の音符から所定値以上の演奏完成度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、
    前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップと
    をコンピュータで実行させることを特徴とする演奏診断プログラム。
  10. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計ステップと、
    前記集計ステップにてノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出ステップと、
    前記向上度算出ステップにて算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定ステップと、
    前記向上度判定ステップにて判定された、課題曲を形成する各音符毎の向上度を参照して、所定段階未満の向上度の音符から所定段階以上の向上度の音符までの区間を苦手箇所として抽出する苦手箇所抽出ステップと、
    前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記苦手箇所抽出ステップにて抽出された苦手箇所に対応した区間の楽譜部分の表示形態を変化させる表示制御ステップと
    をコンピュータで実行させることを特徴とする演奏診断プログラム。
  11. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏パートを識別するパート情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録演奏記録データベースと、
    前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果およびパート情報を参照して前記ノートデータ毎の適正演奏回数および演奏練習回数を演奏パート別に集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を演奏パート別に算出する完成度解析ステップと、
    前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて演奏パート別に得られた各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
    をコンピュータで実行させることを特徴とする演奏診断プログラム。
  12. 演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表すノートデータとを比較して得た演奏判定結果を、演奏範囲を表す範囲情報と共に当該ノートデータ毎に付加した練習データを演奏記録データベースに記録する記録ステップと、
    前記演奏記録データベースに記録された各練習データに含まれる演奏判定結果を参照して前記ノートデータ毎の演奏練習回数と、前記範囲情報から導出される演奏範囲の割合を正しく演奏した回数に乗算して得た適正演奏回数とを集計し、集計された適正演奏回数と演奏練習回数との比から課題曲を形成する各音符毎の演奏完成度を算出する完成度解析ステップと、
    前記演奏記録データベースに記録されたノートデータを用いて課題曲の各音符を楽譜表示する際に、前記完成度解析ステップにて算出された各音符毎の演奏完成度に応じて、楽譜表示される各音符を区別表示する表示制御ステップと
    をコンピュータで実行させることを特徴とする演奏診断プログラム。
JP2003037966A 2003-02-17 2003-02-17 演奏診断装置および演奏診断プログラム Expired - Fee Related JP4482853B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003037966A JP4482853B2 (ja) 2003-02-17 2003-02-17 演奏診断装置および演奏診断プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003037966A JP4482853B2 (ja) 2003-02-17 2003-02-17 演奏診断装置および演奏診断プログラム

Publications (2)

Publication Number Publication Date
JP2004246237A true JP2004246237A (ja) 2004-09-02
JP4482853B2 JP4482853B2 (ja) 2010-06-16

Family

ID=33022615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003037966A Expired - Fee Related JP4482853B2 (ja) 2003-02-17 2003-02-17 演奏診断装置および演奏診断プログラム

Country Status (1)

Country Link
JP (1) JP4482853B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286087A (ja) * 2006-04-12 2007-11-01 Kawai Musical Instr Mfg Co Ltd 練習機能付き電子楽器
JP2009031483A (ja) * 2007-07-26 2009-02-12 Kawai Musical Instr Mfg Co Ltd 楽譜表示装置および楽譜表示用プログラム
JP2011039419A (ja) * 2009-08-18 2011-02-24 Casio Computer Co Ltd 演奏教習装置およびプログラム
JP2013236210A (ja) * 2012-05-08 2013-11-21 Yamaha Corp 表示装置およびプログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5983573B2 (ja) * 2013-09-20 2016-08-31 カシオ計算機株式会社 演奏練習装置、方法、およびプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286087A (ja) * 2006-04-12 2007-11-01 Kawai Musical Instr Mfg Co Ltd 練習機能付き電子楽器
JP4646140B2 (ja) * 2006-04-12 2011-03-09 株式会社河合楽器製作所 練習機能付き電子楽器
JP2009031483A (ja) * 2007-07-26 2009-02-12 Kawai Musical Instr Mfg Co Ltd 楽譜表示装置および楽譜表示用プログラム
JP2011039419A (ja) * 2009-08-18 2011-02-24 Casio Computer Co Ltd 演奏教習装置およびプログラム
JP2013236210A (ja) * 2012-05-08 2013-11-21 Yamaha Corp 表示装置およびプログラム

Also Published As

Publication number Publication date
JP4482853B2 (ja) 2010-06-16

Similar Documents

Publication Publication Date Title
JP5360510B2 (ja) 演奏評価装置およびプログラム
CN103035142B (zh) 演奏训练装置及演奏训练方法
JP4482853B2 (ja) 演奏診断装置および演奏診断プログラム
JP6340755B2 (ja) 演奏評価装置、演奏評価方法およびプログラム
JP2010276891A (ja) 楽曲難易度評価装置および楽曲難易度評価プログラム
JP2008129032A (ja) 練習手順生成装置および練習手順生成処理プログラム
JP5696435B2 (ja) コード検出装置及びプログラム
US9040799B2 (en) Techniques for analyzing parameters of a musical performance
JP3266934B2 (ja) 演奏練習装置
JP4228346B2 (ja) 演奏支援情報生成装置および演奏支援情報生成プログラム
JP5272899B2 (ja) 楽曲難易度算出装置および楽曲難易度算出プログラム
JP6252826B2 (ja) 演奏練習装置、楽譜表示装置、電子楽器、演奏練習方法、楽譜表示方法およびプログラム
JPH05297794A (ja) 演奏練習装置
Hastuti et al. Natural automatic musical note player using time-frequency analysis on human play
JP4877611B2 (ja) 演奏練習装置および演奏練習プログラム
JP4482889B2 (ja) 運指情報生成装置および運指情報生成処理プログラム
JP2014032244A (ja) 演奏難易度評価装置およびプログラム
JP2004184590A (ja) 演奏練習装置、演奏練習方法および演奏練習プログラム
JP7219559B2 (ja) 楽器演奏練習装置及び楽器演奏練習用プログラム
JP6217896B2 (ja) リズム表示装置、電子楽器、リズム表示方法およびプログラム
JP2005148269A (ja) 音楽教習装置および音楽教習プログラム
JPH1185145A (ja) 譜面作成装置
JP3252173B2 (ja) 演奏練習装置
JP5029770B2 (ja) 演奏支援情報生成装置および演奏支援情報生成プログラム
JP6451926B2 (ja) 楽音発生指示装置、楽音発生指示方法、プログラムおよび電子楽器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080328

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090205

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: 20100226

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100311

R150 Certificate of patent or registration of utility model

Ref document number: 4482853

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140402

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees