説明

演奏評価装置およびプログラム

【課題】ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価する演奏評価装置を実現する。
【解決手段】CPU13は、演奏入力された演奏データが、曲データ中のどの音符データに該当し、かつその該当音符データを右手、左手および両手の何れで弾いたのかを特定し、特定された音符データと演奏データとの両音高が一致した場合に、その特定された音符データのクリアフラグiClearを「1」として正しく弾かれた音を表す。曲データ中の全ての音符データに含まれる演奏技術タイプiTechから演奏技術の種別毎の発生回数およびクリア回数(正しく弾かれた回数)を抽出し、抽出した発生回数およびクリア回数から得られる演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子楽器に用いて好適な演奏評価装置およびプログラムに関する。
【背景技術】
【0002】
手本となる練習曲の音符データと、その練習曲の演奏操作に応じて発生する演奏データとを比較してユーザ(演奏者)の演奏技量を評価する装置が知られている。この種の技術として、例えば特許文献1には、演奏入力された演奏データと模範演奏に相当する出題データとの比較から正しく弾けた音符の数に応じた正解率を算出したり、算出した正解率からユーザの演奏技量を評価する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−242131号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、上記特許文献1に開示の技術では、単に正しく弾けた音符の数に応じた正解率を算出し、算出した正解率でユーザの演奏技量を評価するだけなので、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することが出来ないという問題がある。
【0005】
本発明は、このような事情に鑑みてなされたもので、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することができる演奏評価装置およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の演奏評価装置は、曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データを記憶する記憶手段と、前記記憶手段に記憶される複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定手段と、前記特定手段により特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定手段と、前記記憶手段に記憶される複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出手段と、前記正解率算出手段により算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得手段とを具備することを特徴とする。
【発明の効果】
【0007】
本発明では、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することができる。
【図面の簡単な説明】
【0008】
【図1】実施の一形態による演奏評価装置100の全体構成を示すブロック図である。
【図2】メインルーチンの動作を示すフローチャートである。
【図3】該当箇所特定処理の動作を示すフローチャートである。
【図4】距離算出処理の動作を示すフローチャートである。
【図5】DPマッチング処理の動作を示すフローチャートである。
【図6】図5に続くDPマッチング処理の動作を示すフローチャートである。
【図7】演奏判定処理の動作を示すフローチャートである。
【図8】達成度算出処理の動作を示すフローチャートである。
【図9】図8に続く達成度算出処理の動作を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施形態について説明する。
A.構成
図1は、実施の一形態による演奏評価装置100の全体構成を示すブロック図である。この図において、鍵盤10は、演奏入力(曲演奏)の押離鍵操作に応じたキーオン/キーオフイベント、鍵番号およびベロシティ等を含む演奏情報を発生する。スイッチ部11は、装置パネルに配設される各種操作スイッチを有し、ユーザ操作されるスイッチ種に対応したスイッチイベントを発生する。スイッチ部11に配設される主要なスイッチとしては、例えばパワーオンオフする電源スイッチの他、手本(模範演奏)となる曲データを選択する曲選択スイッチや、動作の終了を指示する終了スイッチ等がある。
【0010】
表示部12は、LCDパネル等から構成され、CPU13から供給される表示制御信号に応じて、演奏入力する際に曲データを楽譜表示したり、演奏終了後に演奏評価結果を表示したりする他、装置の動作状態や設定状態を表示する。CPU13は、演奏入力に応じて鍵盤10が発生する演奏情報をMIDI形式の演奏データ(ノートオン/ノートオフ等)に変換し、変換した演奏データを音源16に供給して楽音発生を指示する一方、当該演奏データと手本(模範演奏)となる曲データを構成する音符データとの比較に基づきユーザの演奏技量を評価する。本発明に係わるCPU13の特徴的な処理動作については追って詳述する。
【0011】
ROM14には、CPU13にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述するメインルーチンを構成する該当箇所特定処理、距離算出処理、DPマッチング処理、演奏判定処理および達成度算出処理を含む。RAM15は、ワークエリア、演奏データエリアおよび曲データエリアを備える。RAM15のワークエリアには、CPU13の処理に使用される各種レジスタ・フラグデータが一時記憶される他、演奏技術の種別に対応する難易度が登録される難易度テーブルiFTCostを備える。この難易度テーブルiFTCostが意図するところについては追って述べる。
【0012】
RAM15の演奏データエリアには、演奏入力に応じてCPU10が生成する複数の演奏音の演奏データがストアされる。RAM15の曲データエリアには、手本(模範演奏)となる曲データが複数曲分格納される。曲データは、曲を形成する複数の音符を表す音符データから構成される。曲データを構成する音符データは、右手で弾く右手パート、左手で弾く左手パートおよび両手で弾く左右両パートに区分される。
【0013】
1つの音符データは、iTime、iGate、iPit、iVel、iTechおよびiClearから構成される。iTimeは発音時刻、iGateは音長、iPitはピッチ(音高)、iVelはベロシティ(音量)を表す。iTechは演奏技術の種別を表す値である。演奏技術の種別とは、「指潜り」や「指跨ぎ」等の指の動かし方の種類を指す。負の値の場合には、演奏技術を要しない音符であることを表し、0以上の値が演奏技術の種別を表す。以下、iTechを演奏技術タイプと称す。iClearは対応する音符が手本通りに正しく弾けたかどうかを表すフラグであり、「1」の場合に手本通りに正しく弾けたことを表し、「0」の場合に弾けていないことを表す。以下、iClearをクリアフラグiClearと称す。
【0014】
音源16は、周知の波形メモリ読み出し方式によって構成され、CPU13から供給される演奏データに応じた楽音データを発生して出力する。サウンドシステム17は、音源16から出力される楽音データをアナログ形式の楽音信号に変換した後、その楽音信号から不要ノイズを除去する等のフィルタリングを施してからレベル増幅してスピーカより発音させる。
【0015】
B.動作
次に、図2〜図9を参照して上記構成による演奏評価装置100の動作を説明する。以下では、CPU13が実行するメインルーチン、該当箇所特定処理、演奏判定処理および達成度算出処理の各動作について述べる。なお、該当箇所特定処理は、距離算出処理およびDPマッチング処理を含む。
【0016】
(1)メインルーチンの動作
図2は、メインルーチンの動作を示すフローチャートである。演奏評価装置100がパワーオンされると、CPU13は図2に図示するメインルーチンを実行してステップSA1に処理を進め、装置各部を初期化するイニシャライズを行う。イニシャライズが完了すると、CPU13はステップSA2に進み、終了操作が為された否かを判断する。終了操作が為された場合には、判断結果が「YES」になり、本メインルーチンを終えるが、終了操作が為されなければ、判断結果は「NO」になり、ステップSA3に進む。
【0017】
ステップSA3では、演奏入力に応じてCPU10が生成する演奏データをRAM15の演奏データエリアに保存する演奏入力処理を実行する。なお、演奏入力処理では、曲選択スイッチ操作により選択された曲データを練習課題とし、当該曲データを表示部12に楽譜表示させ、その楽譜を見てユーザが演奏入力するようになっている。
【0018】
次いで、ステップSA4では、ユーザの演奏入力で発生した演奏データが、手本(模範演奏)となる曲データ中のどの音符データに該当し、かつその該当音符データを右手パート、左手パートおよび左右両パートの何れで弾いたのかを特定する該当箇所特定処理を実行する。
【0019】
続いて、ステップSA5では、上記ステップSA4において特定した音符データのピッチiPitと演奏データの音高とを比較して当該音符データの音が正しく弾かれたかどうかを判定し、正しく弾かれた音符データのクリアフラグiClearを「1」にセットする演奏判定処理を実行する。
【0020】
そして、ステップSA6では、達成度算出処理を実行する。達成度算出処理では、後述するように、曲データ中の全ての音符データに含まれる演奏技術タイプiTechから演奏技術の種別毎の発生回数およびクリア回数(正しく弾かれた回数)を抽出し、抽出した発生回数およびクリア回数から得られる演奏技術の種別毎の正解率(クリア回数/発生回数)に、演奏技術の種別に応じた難易度を乗算して演奏技術の種別毎の達成度を算出し、算出された各達成度を累算することで曲の難易度に応じた達成度aを取得する。この後、上述のステップSA2に処理を戻し、以後、終了操作が為されるまで上述したステップSA2〜SA6を繰り返し実行する。
【0021】
(2)該当箇所特定処理の動作
次に、図3を参照して該当箇所特定処理の動作を説明する。上述したメインルーチンのステップSA4(図2参照)を介して本処理が実行されると、CPU13は図3に図示するステップSB1に処理を進め、レジスタdoDistMinに初期値となる所定値をストアする。レジスタdoDistMinに格納される初期値が意図するところについては追って述べる。
【0022】
続いて、ステップSB2では、ポインタmeorgtar0およびポインタmeorgtar1をゼロリセットする。ポインタmeorgtar0とは、曲データ中の右手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタである。同様に、ポインタmeorgtar1とは、曲データ中の左手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタである。
【0023】
次いで、ステップSB3〜SB4では、曲データ中の右手パートの音符データの内、先頭ノート(先頭の音符)を指定するアドレス値をポインタmeorg[0]にストアし、曲データ中の左手パートの音符データの内、先頭ノート(先頭の音符)を指定するアドレス値をポインタmeorg[1]にストアする。そして、ステップSB5に進むと、ポインタmeorg[0]、meorg[1]が共に終端でないか否か、つまり曲の終わりに達するまで該当箇所を検索したかどうかを判断する。
【0024】
曲の終わりに達するまで該当箇所を検索していなければ、判断結果は「YES」になり、ステップSB6に進む。ステップSB6〜SB8では、ポインタmeorg[0]およびポインタmeorg[1]を曲の終わりに達するまで歩進させる毎に、ステップSB6の距離算出処理を繰り返し実行する。そして、曲の終わりに達するまで該当箇所を検索し終えると、上記ステップSB5の判断結果が「NO」となり、本処理を終える。
【0025】
なお、ステップSB6の距離算出処理では、後述するように、ユーザの演奏入力で発生した演奏データに対し、曲データ中の全ての音符データ(右手パート、左手パートおよび左右両パート)について公知のDPマッチングを施して類似度に相当する距離(右手パート時の距離、左手パート時の距離および左右両パート時の距離)を算出し、算出した距離の中で最も類似度の大きい最小距離となるパートの音符データを、演奏データに該当する箇所と特定する。
【0026】
(3)距離算出処理の動作
次に、図4を参照して距離算出処理の動作を説明する。上述した該当箇所特定処理のステップSB6(図3参照)を介して本処理が実行されると、CPU13は図4に図示するステップSC1に処理を進め、レジスタiHandに「0」をストアする。レジスタiHandの値は、曲データ中のパートを指定する。具体的には、「0」の場合に曲データ中の右手パートを指定し、、「1」の場合に曲データ中の左手パートを指定し、「2」の場合に曲データ中の左右両パートを指定する。以下、レジスタiHandの値をパート指定データiHandと称す。
【0027】
続いて、ステップSC2では、パート指定データiHandが「3」より小さいか否か、すなわち全てのパートについて距離算出し終えたかどうかを判断する。パート指定データiHandが「3」より小さく、全てのパートについて距離算出し終えていなければ、判断結果は「YES」となり、ステップSC3を介してDPマッチング処理を実行する。DPマッチング処理では、後述するように、ユーザの演奏入力で発生した演奏データに対し、曲データ中の全ての音符データ(右手パート、左手パートおよび左右両パート)について類似度に相当する距離doDistを取得する。
【0028】
次いで、ステップSC4では、上記ステップSC3のDPマッチング処理にて今回取得した距離doDistが、前回取得した距離doDistMin(初回時はステップSB1にてストアした所定値を用いる)の95%値より小さいか否かを判断する。つまり最小距離を更新したかどうかを判断する。最小距離を更新していなければ、判断結果は「NO」になり、後述のステップSC10に進む。
【0029】
一方、今回取得した距離doDistが、前回取得した距離doDistMinの95%値より小さく、最小距離を更新すると、上記ステップSC4の判断結果は「YES」になり、ステップSC5に進む。ステップSC5では、距離doDistを距離doDistMinに更新する。また、ステップSC5では、ポインタmeorg[0]の値をポインタmeorgtar0に、ポインタmeorg[1]の値をポインタmeorgtar1にセットする。
【0030】
そして、ステップSC6に進むと、パート指定データiHandが「0」であるか否か、つまり距離算出対象が右手パートであるかどうかを判断する。右手パートならば、判断結果は「YES」になり、ステップSC8に進み、ポインタmeorgtar1をゼロリセットし、続くステップSC10では、パート指定データiHandをインクリメントして歩進させた後、上述のステップSC2に処理を戻す。
【0031】
これに対し、パート指定データiHandが「0」でない場合、つまり距離算出対象が右手パートでなければ、上記ステップSC6の判断結果は「NO」になり、ステップSC7に進み、パート指定データiHandが「1」であるか否か、つまり距離算出対象が左手パートであるかどうかを判断する。左手パートならば、判断結果は「YES」になり、ステップSC9に進み、ポインタmeorgtar0をゼロリセットし、続くステップSC10では、パート指定データiHandをインクリメントして歩進させた後、上述のステップSC2に処理を戻す。
【0032】
一方、距離算出対象が左手パートでない場合、つまり左右両パートであると、上記ステップSC7の判断結果は「NO」になり、ステップSC10に進み、パート指定データiHandをインクリメントして歩進させた後、上述のステップSC2に処理を戻す。そして、歩進されたパート指定データiHandが「3」より大きくなると、上記ステップSC2の判断結果は「NO」になり、本処理を終える。
【0033】
(4)DPマッチング処理の動作
次に、図5〜図6を参照してDPマッチング処理の動作を説明する。上述した距離算出処理のステップSC3(図4参照)を介して本処理が実行されると、CPU13は図5に図示するステップSD1に処理を進め、音符データを指定するポインタIに初期値「0」をセットする。
【0034】
次いで、ステップSD2では、ポインタmeorg[0]の値をポインタme0org(I)に、ポインタmeorg[1]の値をポインタme1org(I)にセットする。なお、ポインタmeorg[0]は曲データ中の右手パートの先頭の音符データを指定するポインタ値であり、ポインタmeorg[1]は、曲データ中の左手パートの先頭の音符データを指定するポインタ値である。
【0035】
続いて、ステップSD3では、ポインタIの歩進に応じて、全ての音符データを指定し終えたか否かを判断する。全ての音符データを指定し終えていなければ、判断結果は「NO」になり、ステップSD4に進み、パート指定データiHandが「0」、つまりDPマッチングの対象が右手パートであるかどうかを判断する。右手パートならば、判断結果は「YES」になり、ステップSD5に進み、ポインタme0org(I)をポインタmeAorg(I)にセットした後、図6に図示するステップSD9(後述する)に処理を進める。
【0036】
DPマッチングの対象が右手パートでなければ、上記ステップSD4の判断結果は「NO」になり、ステップSD6に進む。ステップSD6では、パート指定データiHandが「1」、つまりDPマッチングの対象が左手パートであるかどうかを判断する。左手パートならば、判断結果は「YES」になり、ステップSD7に進み、ポインタme1org(I)をポインタmeAorg(I)にセットした後、図6に図示するステップSD9(後述する)に処理を進める。
【0037】
DPマッチングの対象が左右両パートであると、上記ステップSD6の判断結果は「NO」になり、ステップSD8に進む。ステップSD8では、ポインタme0org(I)で指定される音符データの発音時刻iTimeと、ポインタme1org(I)で指定される音符データの発音時刻iTimeとを比較し、発音時刻の早い音符データを指定する方のポインタをポインタmeAorg(I)にセットした後、図6に図示するステップSD9(後述する)に処理を進める。
【0038】
そして、図9に図示するステップSD9に進むと、演奏データを指定するポインタJに初期値「0」をセットする。次いで、ステップSD10では、ポインタJの歩進に応じて、全ての演奏データを指定し終えたか否かを判断する。全ての演奏データを指定し終えていなければ、判断結果は「NO」になり、ステップSD11に進む。
【0039】
ステップSD11では、ポインタmeAorg(I)で指定される音符データのピッチiPitと、ポインタmeBusr(J)で指定される演奏データのピッチとを比較する。両データのピッチが一致すると、ステップSD12に進み、レジスタdoMissMatch[I][J]に一致値「0.0」をセットし、一方、両データのピッチが不一致ならば、ステップSD13に進み、レジスタdoMissMatch[I][J]に不一致値「1.0」をセットする。
【0040】
次いで、ステップSD14では、ポインタJをインクリメントして歩進させた後、上述のステップSD10に処理を戻す。以後、ポインタJを歩進させながら、上述したステップSD10〜SD14を繰り返すことによって、ポインタmeAorg(I)で指定される音符データのピッチiPitに対し、全ての演奏データのピッチについて一致・不一致を判別し、その判別結果を一致・不一致マトリクスに相当する2次元のレジスタdoMissMatch[I][J]に保存する。ポインタJの歩進に応じて、全ての演奏データを指定し終えると、上記ステップSD10の判断結果が「YES」になり、ステップSD15に進み、ポインタIをインクリメントして歩進させた後、前述したステップSD3(図5参照)に処理を戻す。
【0041】
そして、ポインタIの歩進に応じて、全ての音符データを指定し終えると、前述したステップSD3の判断結果が「YES」になり、ステップSD16に進む。ステップSD16では、パート指定データiHandが「0」であるか否か、つまりDPマッチングの対象が右手パートであるかどうかを判断する。右手パートならば、判断結果は「YES」になり、ステップSD17に進み、ポインタme1orgをゼロリセットした後、ステップSD20に進む。
【0042】
一方、パート指定データiHandが「0」でない場合、つまりDPマッチングの対象が右手パートでなければ、上記ステップSD16の判断結果は「NO」になり、ステップSD18に進み、パート指定データiHandが「1」であるか否か、つまりDPマッチングが左手パートであるかどうかを判断する。左手パートならば、判断結果は「YES」になり、ステップSD19に進み、ポインタme0orgをゼロリセットした後、ステップSD20に進む。
【0043】
DPマッチングの対象が左右両パートの場合には、上記ステップSD16、SD18の各判断結果が何れも「NO」になり、ステップSD20に進む。そして、ステップSD20では、2次元のレジスタdoMissMatch[I][J]に保存された一致・不一致マトリクスに基づく公知のDPマッチングによって、ユーザの演奏入力で発生した演奏データに対し、曲データ中の全ての音符データ(右手パート、左手パートおよび左右両パート)について類似度に相当する距離doDistを取得して本処理を終える。
【0044】
(5)演奏判定処理の動作
次に、図7を参照して演奏判定処理の動作を説明する。前述したメインルーチンのステップSA5(図2参照)を介して本処理が実行されると、CPU13は図7に図示するステップSE1に処理を進め、音符データを指定するポインタIに初期値「0」をセットする。
【0045】
次いで、ステップSE2では、曲データ中の右手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタmeorgtar0の値を、ポインタme0org(I)にセットすると共に、曲データ中の左手パートの音符データの内、ユーザの演奏入力で発生した演奏データに一致した音符データを指定するポインタmeorgtar1の値を、ポインタme1org(I)にセットする。
【0046】
続いて、ステップSE3では、ポインタIの歩進に応じて、全ての音符データを指定し終えたか否かを判断する。全ての音符データを指定し終えていなければ、判断結果は「NO」になり、ステップSE4に進む。ステップSE4では、ポインタme0org(I)で指定される音符データの発音時刻iTimeと、ポインタme1org(I)で指定される音符データの発音時刻iTimeとを比較し、発音時刻の早い音符データを指定する方のポインタをポインタmeAorg(I)にセットする。
【0047】
次いで、ステップSE5では、演奏データを指定するポインタJに初期値「0」をセットし、続くステップSE6では、ポインタJの歩進に応じて、全ての演奏データを指定し終えたか否かを判断する。全ての演奏データを指定し終えていなければ、判断結果は「NO」になり、次のステップSE7に進む。ステップSE7では、ポインタmeAorg(I)で指定される音符データのピッチiPitと、ポインタmeBusr(J)で指定される演奏データのピッチとを比較する。
【0048】
音符データのピッチと演奏データのピッチとが一致すると、ステップSE8に進み、ポインタmeAorg(I)で指定される音符データのクリアフラグiClearに「1」をセットし、正しく弾かれた音であること表す。そして、ステップSE9に進み、ポインタJをインクリメントして歩進させた後、上述のステップSE6に処理を戻す。以後、ポインタJを歩進させながら、上述したステップSE6〜SE9を繰り返す。
【0049】
そして、ポインタJの歩進に応じて、全ての演奏データを指定し終えると、上記ステップSE6の判断結果が「YES」になり、ステップSE10に進み、ポインタIをインクリメントして歩進させた後、上述のステップSE3に処理を戻す。ポインタIの歩進に応じて、全ての音符データを指定し終えると、このステップSD3の判断結果が「YES」になり、本処理を終える。
【0050】
(6)達成度算出処理の動作
次に、図8〜図9を参照して達成度算出処理の動作を説明する。前述したメインルーチンのステップSA6(図2参照)を介して本処理が実行されると、CPU13は図8に図示するステップSF1に処理を進め、レジスタmeに先頭ノート(曲頭の音)の音符データをストアする。続いて、ステップSF2では、曲データ中の全ての音符データを読み出し終えたかどうかを判断する。全ての音符データを読み出し終えていなければ、判断結果は「NO」になり、ステップSF3に進む。
【0051】
ステップSF3では、レジスタmeにストアした音符データに含まれる演奏技術タイプiTechが「0」以上であるか否か、つまり演奏技術を要する音符であるかどうかを判断する。演奏技術タイプiTechが負の値の場合には、演奏技術を要しない音符なので、判断結果は「NO」になり、ステップSF7に進み、レジスタmeに次の音符データをストアして上述のステップSF2に処理を戻す。
【0052】
一方、レジスタmeにストアした音符データに含まれる演奏技術タイプiTechが「0」以上であり、演奏技術の種別を表す場合には、上記ステップSF3の判断結果が「YES」になり、ステップSF4に進む。ステップSF4では、演奏技術タイプiTech別に発生回数を計数するカウンタiFTTypeCnt[iTech]をインクリメントして歩進させる。
【0053】
次いで、ステップSF5では、レジスタmeにストアした音符データに含まれるクリアフラグiClearが「1」、すなわち正しく弾かれた音であるか否かを判断する。正しく弾かれていない音(クリアフラグiClearが「0」)であれば、判断結果は「NO」になり、ステップSF7に進み、レジスタmeに次の音符データをストアして上述のステップSF2に処理を戻す。
【0054】
これに対し、正しく弾かれた音ならば、上記ステップSF5の判断結果は「YES」になり、ステップSF6に進む。ステップSF6では、演奏技術タイプiTech別にクリア回数を計数するカウンタiFTTypeClear[iTech]をインクリメントして歩進させる。そして、この後、ステップSF7に進み、レジスタmeに次の音符データをストアして上述のステップSF2に処理を戻す。
【0055】
以後、全ての音符データを読み出し終えるまで、上述したステップSF2〜SF7を繰り返すことによって、演奏技術タイプiTech別の発生回数がカウンタiFTTypeCnt[iTech]にて計数されると共に、演奏技術タイプiTech別のクリア回数がカウンタiFTTypeClear[iTech]にて計数される。
【0056】
そして、全ての音符データについて読み出し終えると、上記ステップSF2の判断結果が「YES」になり、図9に図示するステップSF8に進む。ステップSF8では、演奏技術の種別を指定するポインタIおよびレジスタaをゼロクリアする。なお、レジスタaには、後述するように演奏技量の向上具合を表す達成度がストアされる。以下、レジスタaを達成度aと称す。
【0057】
次いで、ステップSF9に進むと、全ての演奏技術の種別毎の達成度aを算出し終えたかどうかを判断する。算出し終えていなければ、判断結果は「NO」になり、ステップSF10に進む。ステップSF10〜SF11では、クリア回数(カウンタiFTTypeClear[I])を発生回数(カウンタiFTTypeCnt[I]で除して得られる正解率に、ポインタIに応じて難易度テーブルiFTCost[I]から読み出される難易度を乗算することによって、ポインタIで指定される演奏技術の種別における達成度aを算出し、それをポインタIの歩進に応じて累算する。
【0058】
こうして、全ての演奏技術の種別毎の達成度aを算出し終えると、上記ステップSF10では、各演奏技術の種別毎に算出した達成度aが累算され、この結果、ユーザが演奏入力した曲について難易度を加味した達成度aが得られる。また、全ての演奏技術の種別について達成度aを算出し終えると、上記ステップSF9の判断結果が「YES」になり、ステップSF12に進む。
【0059】
ステップSF12では、パート指定データiHandが「0」であるか否か、つまり右手パートの演奏入力であるかどうかを判断する。右手パートの演奏入力であると、判断結果は「YES」になり、ステップSF17に進み、上記ステップSF10で得た達成度aに補正値「0.5」を乗算して右手パートの演奏入力の達成度aを算出して本処理を終える。
【0060】
一方、右手パートの演奏入力でなければ、上記ステップSF12の判断結果は「NO」になり、ステップSF14に進み、パート指定データiHandが「1」であるか否か、つまり左手パートの演奏入力であるかであるかどうかを判断する。左手パートの演奏入力であると、判断結果は「YES」になり、ステップSF15に進み、上記ステップSF10で得た達成度aに補正値「0.4」を乗算して左手パートの演奏入力の達成度aを算出して本処理を終える。なお、左右両パートの演奏入力であると、上記ステップSF12、SF14の各判断結果が何れも「NO」になり、この場合には上記ステップSF10で得た達成度aがそのまま左右両パートの演奏入力の達成度aとして本処理を終える。
【0061】
以上説明したように、本実施形態では、ユーザの演奏入力に応じて発生する演奏データが、手本(模範演奏)となる曲データ中のどの音符データに該当し、かつその該当音符データを右手、左手および両手の何れで弾いたのかを特定し、特定された音符データのピッチiPitと演奏データのピッチとを比較して当該音符データの音が正しく弾かれたかどうかを判定し、正しく弾かれた音符データのクリアフラグiClearを「1」にセットする。
【0062】
そして、曲データ中の全ての音符データに含まれる演奏技術タイプiTechから演奏技術の種別毎の発生回数およびクリア回数(正しく弾かれた回数)を抽出し、抽出した発生回数およびクリア回数から得られる演奏技術の種別毎の正解率(クリア回数/発生回数)に、演奏技術の種別に応じた難易度を乗算して演奏技術の種別毎の達成度を算出し、算出された各達成度を累算することで曲の難易度に応じた達成度aを取得するので、ユーザの演奏技量がどの程度に達したのかを表す達成度を、曲の難易度を考慮して評価することが可能になる。
【0063】
また、上述した実施形態では、ユーザの演奏入力に応じて発生する演奏データが、手本(模範演奏)となる曲データ中のどの音符データに該当し、かつその該当音符データを右手、左手および両手の何れで弾いたのかをDPマッチングを用いて特定するようにしたので、曲データ中のどの音から弾いたとしても、演奏データに該当する音符データを特定することが出来る。
【0064】
なお、本実施形態では、演奏技術の種別毎の達成度を累算して得られる、曲の難易度に応じた達成度aに固定的な補正係数を乗じて右手パート、左手パートの各演奏入力における達成度を取得するようにしたが、これに限定されず、演奏入力した曲区間(例えば小節単位など)の難易度に応じて補正係数を可変させる態様とすることも可能であるし、ユーザの利き手が右手であるか左手であるかに応じてパート毎の補正係数を異ならせる態様としても良い。
【0065】
以上、本発明の実施の一形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
【0066】
(付記)
[請求項1]
曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データを記憶する記憶手段と、
前記記憶手段に記憶される複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定手段と、
前記特定手段により特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定手段と、
前記記憶手段に記憶される複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出手段と、
前記正解率算出手段により算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得手段と
を具備することを特徴とする演奏評価装置。
【0067】
[請求項2]
前記特定手段は、演奏入力された演奏データに対し、前記記憶手段に記憶される複数の音符データの全てにDPマッチングを施して類似度に相当する距離を算出し、算出した距離の中で最も類似度の大きい最小距離となる音符データを演奏データに該当する音と特定することを特徴とする請求項1記載の演奏評価装置。
【0068】
[請求項3]
前記特定手段は、前記記憶手段に記憶される複数の音符データが右手パート、左手パートおよび左右両パートに区分されている場合、演奏入力された演奏データに該当する音の音符データが右手パート、左手パートおよび左右両パートの何れで弾かれたかを特定することを特徴とする請求項1記載の演奏評価装置。
【0069】
[請求項4]
前記達成度取得手段は、曲の難易度に応じた達成度に、それぞれ異なる補正係数を乗じて右手パートおよび左手パートにおける達成度を算出する達成度補正手段を更に備えることを特徴とする請求項1記載の演奏評価装置。
【0070】
[請求項5]
演奏評価装置に搭載されるコンピュータに、
曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定ステップと、
前記特定ステップにて特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定ステップと、
前記複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出ステップと、
前記正解率算出ステップにて算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得ステップと
を実行させることを特徴とするプログラム。
【符号の説明】
【0071】
10 鍵盤
11 スイッチ部
12 表示部
13 CPU
14 ROM
15 RAM
16 音源
17 サウンドシステム
100 演奏評価装置

【特許請求の範囲】
【請求項1】
曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データを記憶する記憶手段と、
前記記憶手段に記憶される複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定手段と、
前記特定手段により特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定手段と、
前記記憶手段に記憶される複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出手段と、
前記正解率算出手段により算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得手段と
を具備することを特徴とする演奏評価装置。
【請求項2】
前記特定手段は、演奏入力された演奏データに対し、前記記憶手段に記憶される複数の音符データの全てにDPマッチングを施して類似度に相当する距離を算出し、算出した距離の中で最も類似度の大きい最小距離となる音符データを演奏データに該当する音と特定することを特徴とする請求項1記載の演奏評価装置。
【請求項3】
前記特定手段は、前記記憶手段に記憶される複数の音符データが右手パート、左手パートおよび左右両パートに区分されている場合、演奏入力された演奏データに該当する音の音符データが右手パート、左手パートおよび左右両パートの何れで弾かれたかを特定することを特徴とする請求項1記載の演奏評価装置。
【請求項4】
前記達成度取得手段は、曲の難易度に応じた達成度に、それぞれ異なる補正係数を乗じて右手パートおよび左手パートにおける達成度を算出する達成度補正手段を更に備えることを特徴とする請求項1記載の演奏評価装置。
【請求項5】
演奏評価装置に搭載されるコンピュータに、
曲を構成する各音を表すと共に、演奏技術の種別および識別フラグを備えた複数の音符データの中から演奏入力された演奏データに該当する音の音符データを特定する特定ステップと、
前記特定ステップにて特定された音の音符データと演奏データとの音高が一致した場合に、当該音符データの識別フラグを正しく弾かれたことを表すフラグ値に設定するフラグ設定ステップと、
前記複数の音符データがそれぞれ備える演奏技術の種別および識別フラグに基づき抽出される演奏技術の種別毎の発生回数および正しく弾かれた回数から演奏技術の種別毎の正解率を算出する正解率算出ステップと、
前記正解率算出ステップにて算出された演奏技術の種別毎の正解率に、演奏技術の種別に応じた難易度を乗算して得られる演奏技術の種別毎の達成度を累算して曲の難易度に応じた達成度を取得する達成度取得ステップと
を実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−68808(P2013−68808A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2011−207494(P2011−207494)
【出願日】平成23年9月22日(2011.9.22)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】