JP4228346B2 - Performance support information generation apparatus and performance support information generation program - Google Patents

Performance support information generation apparatus and performance support information generation program Download PDF

Info

Publication number
JP4228346B2
JP4228346B2 JP2003115441A JP2003115441A JP4228346B2 JP 4228346 B2 JP4228346 B2 JP 4228346B2 JP 2003115441 A JP2003115441 A JP 2003115441A JP 2003115441 A JP2003115441 A JP 2003115441A JP 4228346 B2 JP4228346 B2 JP 4228346B2
Authority
JP
Japan
Prior art keywords
performance
support
note
data
improvement
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
Application number
JP2003115441A
Other languages
Japanese (ja)
Other versions
JP2004318019A (en
Inventor
淳一郎 副島
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 JP2003115441A priority Critical patent/JP4228346B2/en
Publication of JP2004318019A publication Critical patent/JP2004318019A/en
Application granted granted Critical
Publication of JP4228346B2 publication Critical patent/JP4228346B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、苦手とする演奏操作を支援する演奏支援情報生成装置および演奏支援情報生成プログラムに関する。
【0002】
【従来の技術】
ユーザの演奏操作を支援する装置として、例えば特許文献1には、演奏入力された音高に応じて演奏曲中の演奏箇所を検出し、検出した演奏箇所に対応してディスプレイに表示される楽譜を更新したり、演奏入力された音高と演奏曲中の音符データとを比較した結果に基づいてユーザにテンポずれを指摘するようにした演奏支援装置が開示されている。
【0003】
【特許文献1】
特許公開2001−337675号公報
【0004】
【発明が解決しようとする課題】
ところで、上述した従来の演奏支援装置では、単に演奏入力された音高と演奏曲中の音符データとを比較した結果に基づいて演奏支援するだけなので、演奏ミスを犯し易い苦手箇所や、ユーザ自身が注意喚起したい箇所の演奏を間違えないように支援することができない、という問題がある。
本発明は、このような事情に鑑みてなされたもので、演奏ミスを犯し易い苦手箇所や、ユーザ自身が注意喚起したい箇所の演奏を間違えないように支援することができる演奏支援情報生成装置および演奏支援情報生成プログラムを提供することを目的としている。
【0005】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、前記練習結果データベース手段に履歴記録された各練習結果データに含まれる判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出手段と、前記向上度算出手段によって算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、前記向上度判定手段によって判定された、課題曲を形成する各音符毎の向上度を当該課題曲の最初から順次読み出すとともに、当該読み出された向上度がその直前に読み出された向上度と異なるか否かを判別する判別手段と、この判別手段により異なると判別された向上度の音符から開始して次に異なると判別された向上度の音符の直前の音符を終了とする区間を抽出する区間抽出手段と、この区間抽出手段により抽出された区間毎に、当該区間の開始時の音符の向上度に対応する支援情報を生成する支援情報生成手段と、を具備することを特徴とする。
【0008】
請求項2に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、前記練習結果データベースに履歴記録された各練習結果データに含まれる判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計処理と、前記ノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出処理と、前記算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定処理と、前記判定された、課題曲を形成する各音符毎の向上度を当該課題曲の最初から順次読み出すとともに、当該読み出された向上度がその直前に読み出された向上度と異なるか否かを判別する判別処理と、この異なると判別された向上度の音符から開始して次に異なると判別された向上度の音符の直前の音符を終了とする区間を抽出する区間抽出処理と、この抽出された区間毎に、当該区間の開始時の音符の向上度に対応する支援情報を生成する支援情報生成処理と、をコンピュータで実行させることを特徴とする。
【0011】
本発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録し、履歴記録された各練習結果データに含まれる判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する。そしてこの集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出し、この算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する。そしてこの判定された、課題曲を形成する各音符毎の向上度を当該課題曲の最初から順次読み出すとともに、当該読み出された向上度がその直前に読み出された向上度と異なるか否かを判別し、異なると判別された向上度の音符から開始して次に異なると判別された向上度の音符の直前の音符を終了とする区間を抽出し、この抽出された区間毎に、当該区間の開始時の音符の向上度に対応する支援情報を生成するので、演奏ミスを犯し易い苦手箇所の演奏を間違えないように支援することが可能になっている。
【0012】
【発明の実施の形態】
以下、本発明の実施の一形態による演奏支援装置が搭載されたDTM(デスクトップミュージック)装置を実施例とし、これについて図面を参照して説明する。
【0013】
A.実施例の構成
(1)全体構成
図1は、本発明による実施例の構成を示すブロック図である。この図において、10は構成要素1〜7からなるDTM装置、20はDTM装置10とMIDI接続される電子楽器である。電子楽器20は鍵盤を備え、この鍵盤を用いたユーザの演奏操作に応じて発生する演奏データをMIDI出力する。DTM装置10では、電子楽器20側から演奏データがMIDI入力される毎に、課題曲の各音符を表す演奏情報と比較して演奏の適否を判定すると共に、その判定結果を演奏情報に対応させた練習結果情報として練習結果データベース(後述する)に記録する。また、DTM装置10では、練習結果データベースに記録された練習結果情報を分析して、演奏ミスを犯し易い苦手箇所の演奏を支援する支援項目を作成したり、ユーザ自身が注意喚起したい箇所の演奏をミスしないようする支援項目を作成し、これに基づき演奏支援する。
【0014】
(2)DTM装置10の構成
次に、図1を参照してDTM装置10の構成を説明する。図1において、1は装置各部を制御するCPUである。CPU1は、電子楽器20側から演奏データがMIDI入力される毎に演奏判定を行い、その判定結果を練習結果データベースに記録する。また、CPU1では、練習結果データベースに記録された練習結果情報を分析して、演奏ミスを犯し易い苦手箇所の演奏を支援する支援項目を作成したり、ユーザ自身が注意喚起したい箇所の演奏をミスしないようする支援項目を作成し、これに基づき演奏支援する。こうした本発明の要旨に係わるCPU1の処理動作は追って詳述する。
【0015】
2はプログラムエリアおよびデータエリアを有するROMである。ROM2のプログラムエリアには、後述するメインルーチン、演奏開始処理、標準支援処理、特別支援処理、変更処理および分析処理を実行する各種制御プログラムが記憶される。ROM2のデータエリアには、手本となる課題曲の演奏情報が複数曲分記憶されており、これら内から選曲指定される課題曲の演奏情報がRAM3のデータエリアに格納される。演奏情報のデータ構造については追って述べる。
3はワークエリアおよびデータエリアを備えるRAMである。RAM3のワークエリアには、CPU1の処理に用いられる各種レジスタ・フラグデータが一時記憶される。RAM3のデータエリアには、演奏情報playdat、練習結果データベースpract_rec、処理情報nowplay、支援情報sup_datおよび分析支援情報analized_datが格納される。これら情報のデータ構造については追って述べる。
【0016】
MIDIインタフェース4は、CPU1の制御の下に、電子楽器20側から送出される演奏データを取り込む一方、DTM装置10側で発生したノートオンイベントを電子楽器20にMIDI出力する。マウス5は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生する。キーボード6はキー入力操作に応じたイベントを発生する。キーボード6では、処理の開始を指示するスタートスイッチおよび処理の停止を指示するストップスイッチが所定のキースイッチに割り当てられている。表示部7はLCDパネル等から構成され、CPU1から供給される表示制御信号に応じて、演奏技術の完成度や向上度あるいは苦手箇所を画面表示する。
【0017】
(3)データ構造
次に、図2〜図6を参照して、RAM3のデータエリアに格納される演奏情報playdat、練習結果データベースpract_rec、処理情報nowplay、支援情報sup_datおよび分析支援情報analized_datのデータ構造を説明する。
【0018】
図2は演奏情報playdatのデータ構造を示すメモリマップである。RAM3のデータエリアに格納される演奏情報playdatは、課題曲を形成する各音符に対応した演奏情報playdat[0]〜[n]から構成される。演奏情報playdat[0]〜[n]は、曲進行順にアドレッシングされる。
演奏情報playdat[i](i=0〜n)は、課題曲中の音符を識別するノート識別番号note_id(playdat[i][0])、音高を表すノート番号Note#(playdat[i][1])、曲頭からの経過時間で表現される発音タイミングTick(playdat[i][2])、曲頭からの経過時間で表現される消音タイミングEndTick(playdat[i][3])、処理状態を表すステイタスstatus(playdat[i][4])および演奏入力される演奏データとの比較結果Result(playdat[i][5])から構成される。
【0019】
演奏情報playdat[i][4]のステイタスstatusは、未発音の時に「0」、発音中に「1」、消音済みの時に「2」となる。また、演奏情報playdat[i][5]の比較結果Resultは、「−1」〜「3」のいずれかの整数値に設定される。
各値が意味するところは次の通りである。「−1」は正しく弾けていないことを表す。「0」は演奏範囲に無いことを表す。「1」は正しく弾かれたことを表す。「2」は演奏データが課題曲のノートデータの発音タイミングより早く押鍵されたことを表す。「3」は演奏データが課題曲のノートデータの発音タイミングより遅く押鍵されたことを表す。
【0020】
次に、図3を参照して、RAM3のデータエリアに格納される練習結果データベースpract_recのデータ構造を説明する。練習結果データベースpract_recは、演奏練習した課題曲毎の練習結果データpract_rec[0]〜[n]を履歴記憶する。
練習結果データpract_rec[i]は、演奏ミス(押鍵ミス)を累積したミスカウント数MissTouchCnt(pract_rec[i][0])と、課題曲の演奏情報playdat[0]〜[n]の各比較結果Resultを抽出した練習結果rslt_for_playdat0〜rslt_for_playdatnとから構成される。
【0021】
練習結果rslt_for_playdatは、上述した演奏情報playdat[i][5]の比較結果Resultに相当する。つまり、正しく弾けていない場合に「−1」、演奏範囲に無い場合に「0」、正しく弾かれた場合に「1」、演奏データが課題曲のノートデータの発音タイミングより早く押鍵された場合に「2」、演奏データが課題曲のノートデータの発音タイミングより遅く押鍵された場合に「3」となる。
【0022】
次に、図4を参照して、RAM3のデータエリアに格納される処理情報nowplayのデータ構造を説明する。処理情報nowplayは、課題曲の再生に応じて行われる演奏支援の内容を表すデータであり、処理情報nowplay[0]〜[n]から構成される。
処理情報nowplay[i](i=0〜n)は、支援されている処理内容を表す処理タイプplaytype(nowplay[i][0])、曲頭からの経過時間で表現される支援開始時刻Tick(nowplay[i][1])、曲頭からの経過時間で表現される支援終了時刻EndTick(nowplay[i][2])、支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[i][3])および次の処理情報を指し示すポインタNextPointer(nowplay[i][4])から構成される。
なお、処理タイプplaytype(nowplay[i][0])は「0」の場合に「ノート出力」を表し、「1」の場合に画面への文字出力を表し、「2」の場合に画面への画像出力を表し、「3」の場合に音声出力を表す。
【0023】
次に、図5を参照して、RAM3のデータエリアに格納される支援情報sup_datのデータ構造を説明する。支援情報sup_datは、後述する標準支援処理にて参照されるデータであり、支援情報sup_dat[0]〜[n]から構成される。支援情報sup_dat[i](i=0〜n)は、識別子sup_id(sup_dat[i][0])、曲頭からの経過時間で表現される支援開始時刻Tick(sup_dat[i][1])、曲頭からの経過時間で表現される支援終了時刻EndTick(sup_dat[i][2])、支援タイプSupType(sup_dat[i][3])、支援データdata(sup_dat[i][4])、支援の有効/無効を表すフラグflug(sup_dat[i][5])、楽譜上で表現される支援開始位置SupStart(sup_dat[i][6])および楽譜上で表現される支援終了位置SupEnd(sup_dat[i][7])から構成される。
【0024】
支援タイプSupType(sup_dat[i][3])は、「1」の場合に画面への文字列出力を表し、「2」の場合に画面への画像出力を表し、「3」の場合に音声出力を表す。支援データdata(sup_dat[i][4])には、文字列、画像表示用の制御コマンドあるいはファイル名等が用いられる。この支援データdataにて定義される支援内容が、支援タイプSupTypeに従って文字列出力、画像出力あるいは音声出力される。フラグflug(sup_dat[i][5])は、有効の場合に「1」、無効の場合に「0」となる。
【0025】
次に、図6を参照して、RAM3のデータエリアに格納される分析支援情報analized_datのデータ構造を説明する。分析支援情報analized_datは、前述した練習結果データベースpract_rec(図3参照)から派生するデータであって、分析支援情報analized_dat[0]〜[n]から構成される。分析支援情報analized_dat[0]〜[n]は、後述の特別支援処理にて参照される。
【0026】
分析支援情報analized_dat[i](i=0〜n)は、図5に図示した支援情報sup_dat[i]と同様、識別子sup_id(analized_dat[i][0])、支援開始時刻Tick(analized_dat[i][1])、支援終了時刻EndTick(analized_dat[i][2])、支援タイプSupType(analized_dat[i][3])、支援データdata(analized_dat[i][4])、フラグflug(analized_dat[i][5])、支援開始位置SupStart(analized_dat[i][6])および支援終了位置SupEnd(analized_dat[i][7])から構成される。
【0027】
支援タイプSupType(sup_dat[i][3])は、「1」の場合に画面への文字列出力を表し、「2」の場合に画面への画像出力を表し、「3」の場合に音声出力を表す。支援データdata(sup_dat[i][4])には、文字列、画像表示用の制御コマンドあるいはファイル名等が用いられる。この支援データdataにて定義される支援内容が、支援タイプSupTypeに従って文字列出力、画像出力あるいは音声出力される。
【0028】
B.実施例の動作
次に、図7〜図37を参照して実施例の動作について説明する。以下では、最初にメインルーチンの動作について説明し、続いてメインルーチンからコールされる演奏開始処理、変更処理、分析処理、標準支援処理および特別支援処理の各動作を順番に説明して行く。
【0029】
(1)メインルーチンの動作
DTM装置10において、メインルーチンが実行されると、CPU1は図7に示すステップS1に進み、装置各部を初期化するイニシャライズを行った後、ステップS2に進む。ステップS2では、モード変更イベントの有無を判断する。モード変更イベントとは、例えば表示部7に画面表示されるメニュー画面(不図示)におけるモードアイコンのクリック操作に応じて発生するものである。
すなわち、図示していないが、メニュー画面には演奏モードアイコン、標準支援モードアイコン、特別支援モードアイコン、変更モードアイコンおよび分析モードアイコンが設けられており、これらアイコンにマウス5のマウスカーソルをポインティングさせてクリック操作することでモード変更イベントが発生する。
【0030】
モード変更イベントが発生すると、ステップS2の判断結果が「YES」になり、次のステップS3に進み、発生したモード変更イベントに応じて処理モードを変更するモード変更処理を実行する。そして、ステップS3以降では、モード変更処理にて変更された処理モードが「演奏モード」、「標準支援モード」、「特別支援モード」、「変更モード」および「分析モード」のいずれであるかを判断し、該当する処理モードに遷移する。
【0031】
変更された処理モードが演奏モードであると、ステップS4の判断結果が「YES」になり、ステップS5を介して演奏開始処理(後述する)を実行した後、その他の処理(ステップS14)を経てステップS2に処理を戻す。
変更された処理モードが標準支援モードであると、ステップS6の判断結果が「YES」になり、ステップS7を介して標準支援処理(後述する)を実行した後、その他の処理(ステップS14)を経てステップS2に処理を戻す。
【0032】
変更された処理モードが特別支援モードであると、ステップS8の判断結果が「YES」になり、ステップS9を介して特別支援処理(後述する)を実行した後、その他の処理(ステップS14)を経てステップS2に処理を戻す。
変更された処理モードが変更モードであると、ステップS10の判断結果が「YES」になり、ステップS11を介して変更処理(後述する)を実行した後、その他の処理(ステップS14)を経てステップS2に処理を戻す。
変更された処理モードが分析モードであると、ステップS12の判断結果が「YES」になり、ステップS13を介して分析処理(後述する)を実行した後、その他の処理(ステップS14)を経てステップS2に処理を戻す。
なお、モード変更イベントが発生しなければ、ステップS2、S4、S6、S8、S10およびS12の各判断結果がいずれも「NO」となり、その他の処理(ステップS14)を経てステップS2に処理を戻す。
【0033】
(2)演奏開始処理の動作
次に、図8〜図9を参照して演奏開始処理の動作を説明する。上述したメインルーチンのステップS5(図7参照)を介して演奏開始処理が実行されると、CPU1は図8に示すステップSA1に進み、スタートスイッチイベントの有無を判断する。ここで、ユーザが演奏開始処理をスタートさせるべくスタートスイッチをオン操作したとする。
そうすると、スタートスイッチイベントが発生して、ステップSA1の判断結果が「YES」になり、ステップSA2に進み、停止フラグをゼロリセットして処理スタートを表す。次いで、ステップSA3に進み、現時刻をレジスタStartTickにストアする。続いて、ステップSA4では、ストップイベントの有無を判断する。
【0034】
ストップイベントが無ければ、判断結果は「NO」になり、ステップSA6に進み、停止フラグが「0」、つまりスタート状態に設定されているかどうかを判断する。スタート状態にあると、停止フラグは「0」なので、判断結果は「YES」になり、ステップSA7に進む。ステップSA7では現時刻からレジスタStartTickに格納される時刻を差し引いた時刻を、演奏練習を開始し始めた時刻としてレジスタNowTickにストアする。次いで、ステップSA8では、MIDIイベント発生の有無を判断する。すなわち、電子楽器20側から演奏データがMIDI入力されたかどうかを判断する。MIDI入力が無いと、判断結果は「NO」になり、上述のステップSA4に処理を戻す。
【0035】
一方、電子楽器20側から演奏データがMIDI入力されると、判断結果が「YES」になり、ステップSA9に進み、演奏判定保存処理を実行する。演奏判定保存処理では、後述するように、電子楽器20側から演奏データがMIDI入力される毎に、課題曲の各音符を表す演奏情報playdatと比較して演奏の適否を判定すると共に、その判定結果を演奏情報playdatに対応させた練習結果情報として練習結果データベースpract_rec(図3参照)に記録する。
演奏判定保存処理が完了すると、上述したステップSA4に処理を戻す。以後、ストップスイッチのオン操作に応じて、ストップイベントが発生する迄、ステップSA4〜SA9を繰り返し、演奏練習の進行に従ってレジスタNowTickの時刻を更新させつつ、MIDI入力毎に演奏判定保存処理を実行して行く。
【0036】
そして、課題曲を弾き終えて演奏練習を終了させるべく、ユーザがストップスイッチをオン操作したとする。そうすると、ストップイベントの発生に応じて、前述したステップSA4の判断結果が「YES」になり、ステップSA5に進み、停止フラグを「1」にセットする。こうして、ストップ状態になると、ステップSA6の判断結果が「NO」になり、図9に示すステップSA10に処理を進める。
【0037】
演奏練習の終了により、ステップSA10に進むと、CPU1はRAM3のデータエリアに格納される練習結果データベースpract_recの空きエリアを検索し、その空きエリアを示すポインタipDBを取得する。次いで、ステップSA11では、レジスタiMissTouchCntに格納されるミスカウント数を、練習結果データpract_rec[ipDB][0]としてデータベース登録する。なお、レジスタiMissTouchCntに格納されるミスカウント数は、後述の演奏判定保存処理にて抽出されるようになっている。
そして、ステップSA12に進み、ポインタiをゼロリセットし、続くステップSA13では、ポインタiに対応する演奏情報playdat[i]の有無を判断する。演奏情報playdat[i]が無ければ、判断結果は「NO」となり、本処理を完了させる。
【0038】
これに対し、演奏情報playdat[i]が存在する場合には、上記ステップSA14の判断結果が「YES」になり、ステップSA14に進む。ステップSA14では、ポインタiに対応した演奏情報playdat[i][5]に格納される比較結果Resultを、練習結果データpract_rec[ipDB][i+1]にストアする。この後、ステップSA15に進み、ポインタiをインクリメントして歩進させた後、ステップSA13に処理を戻す。
以後、歩進されたポインタiに対応する演奏情報playdat[i]の有無を判断し、データが有れば、演奏情報playdat[i][5]に格納される比較結果Resultを練習結果データpract_rec[ipDB][i+1]に順次ストアして行く。
【0039】
(3)演奏判定保存処理の動作
次に、図10〜図11を参照して演奏判定保存処理の動作を説明する。上述した演奏開始処理のステップSA9(図8参照)を介して本処理が実行されると、CPU1は図10のステップSB1に進み、MIDI入力されたイベントがノートオンイベントであるか否かを判断する。ノートオンイベント以外のイベントの場合には、判断結果が「NO」になり、本処理を完了させる。
【0040】
ノートオンイベントであると、判断結果は「YES」になり、次のステップSB2に進む。ステップSB2では、ノートオンイベントに含まれるノート番号をレジスタtmpPitchにストアする。続いて、ステップSB3では現時刻をレジスタNowTickにストアする。そして、ステップSB4では、現在、MIDI入力されている演奏データ(ノートオンイベント)に対応した演奏情報playdatを指し示すポインタiPDを取得する。
【0041】
次いで、ステップSB5では、取得したポインタiPDが曲終端に達しているか否かを判断する。曲終端に達した場合には、判断結果が「YES」になり、次のステップSB6に進み、停止フラグをゼロリセットして本処理を終える。
これに対し、取得したポインタiPDが曲終端に達していなければ、上記ステップSB5の判断結果は「NO」となり、ステップSB7に進む。ステップSB7では、現時点の演奏情報を指し示すポインタiPDから所定の検索範囲iLookUpを減算した結果をレジスタtmpPDにストアする。以後、レジスタtmpPDをサーチポインタtmpPDと記す。そして、ステップSB8に進むと、サーチポインタtmpPDがポインタiPDと検索範囲iLookUpとの和を超えたか否か、つまり検索範囲を超えたかどうかを判断する。
【0042】
サーチポインタtmpPDが検索範囲を超えた場合、すなわちMIDI入力された演奏データ(ノートオンイベント)と一致する演奏情報playdatが検索範囲(iPD±iLookUp)に存在しない状況であると、上記ステップSB8の判断結果は「YES」となり、ステップSB9に進み、押鍵ミスの回数をカウントするレジスタiMissTouchCntを歩進させてから本処理を完了させる。
【0043】
一方、サーチポインタtmpPDが検索範囲を超えていない場合には、上記ステップSB8の判断結果が「NO」になり、図11のステップSB10に進む。ステップSB10では、サーチポインタtmpPDにて指定される演奏情報playdat[tmpPD][4](ステイタスstatus)が「0」、つまり未発音であるかどうかを判断する。未発音でなければ、判断結果は「NO」となり、ステップSB11に進み、サーチポインタtmpPDをインクリメントして歩進させた後、図10のステップSB8に処理を戻す。
【0044】
これに対し、サーチポインタtmpPDにて指定される演奏情報playdat[tmpPD]が未発音であると、上記ステップSB10の判断結果が「YES」になり、ステップSB12に進む。ステップSB12では、サーチポインタtmpPDにて指定される演奏情報playdat[tmpPD][1]のノート番号Note#と、レジスタtmpPitchに格納された演奏データのノート番号とが一致するか否かを判断する。一致しなければ、判断結果は「NO」となり、ステップSB11にてサーチポインタtmpPDを歩進させた後、図10のステップSB8に処理を戻す。
【0045】
一方、演奏情報playdat[tmpPD]のノート番号Note#と演奏データのノート番号とが一致すると、判断結果が「YES」になり、ステップSB13に進む。ステップSB13では、レジスタNowTickに格納される時刻から演奏情報playdat[tmpPD][2]の発音タイミングTickを減算して得た押鍵タイミングをレジスタITickDistにストアする。
【0046】
次いで、ステップSB14では、レジスタITickDistに格納される押鍵タイミングが所定の許容範囲IOKOffset以上であるかどうかを判断する。許容範囲IOKOffsetに収まる適正な押鍵タイミングであると、判断結果は「NO」になり、ステップSB15に進み、演奏情報playdat[tmpPD][5](比較結果Result)に、正しく弾けた旨を表す値「1」をストアした後、本処理を完了させる。
これに対し、許容範囲IOKOffsetを超えた押鍵タイミングであると、上記ステップSB14の判断結果は「YES」になり、ステップSB16に進み、許容範囲ITMOffset以下であるかどうかを判断する。許容範囲ITMOffsetを超えると、判断結果は「NO」になり、ステップSB17に進み、演奏情報playdat[tmpPD][5](比較結果Result)に、演奏範囲に無いことを表す値「0」をストアした後、本処理を完了させる。
【0047】
一方、許容範囲ITMOffsetに収まると、上記ステップSB16の判断結果は「YES」になり、ステップSB18に進む。ステップSB18では、レジスタITickDistに格納される押鍵タイミングが「0」より大であるか否か、つまり演奏データが課題曲のノートデータの発音タイミングより遅く押鍵されたかどうかを判断する。そして、遅く押鍵された場合には、判断結果が「YES」となり、ステップSB19に進み、演奏情報playdat[tmpPD][5](比較結果Result)に、課題曲のノートデータの発音タイミングより遅く押鍵された旨を表す値「3」をストアして本処理を完了させる。
これに対し、早く押鍵された場合には、上記ステップSB18の判断結果が「NO」になり、ステップSB20に進み、演奏情報playdat[tmpPD][5](比較結果Result)に、課題曲のノートデータの発音タイミングより早く押鍵された旨を表す値「2」をストアして本処理を完了させる。
【0048】
以上のように、演奏開始処理および演奏判定保存処理によれば、演奏操作に応じて電子楽器20側から演奏データがMIDI入力される毎に、課題曲の各音符を表す演奏情報playdatと比較して演奏の適否を判定し、その判定結果を演奏情報playdatに対応させた練習結果データとして練習結果データベースparct_recに履歴記録するようになっている。
【0049】
(4)変更処理の動作
次に、図12を参照して変更処理の動作を説明する。前述したメインルーチンのステップS11(図7参照)を介して本処理が実行されると、CPU1は図12のステップSC1に進み、表示部7に変更画面を表示する。図示していないが、この変更画面には、終了アイコン、選択アイコンおよび編集アイコンが設けられており、これら各アイコンのオン操作(マウス5によるクリック操作)に応じて対応する処理を実行させるようになっている。
【0050】
すなわち、終了アイコンがオン操作されると、ステップSC2の判断結果が「YES」になり、ステップSC3に進み、変更画面を消去して本処理を完了させる。選択アイコンがオン操作されると、ステップSC4の判断結果が「YES」になり、ステップSC5に進み、演奏支援の内容を選択する選択処理(後述する)を実行した後、本処理を完了させる。編集アイコンがオン操作されると、ステップSC6の判断結果が「YES」になり、ステップSC7に進み、演奏支援の内容を編集する編集処理(後述する)を実行した後、本処理を完了させる。
【0051】
(5)選択処理の動作
次に、図13〜図14を参照して選択処理の動作を説明する。上記変更処理のステップSC5(図12参照)を介して本処理が実行されると、CPU1は図13のステップSD1に進み、選択画面枠を表示部7に画面表示する。選択画面枠とは、図14に図示する一例の選択画面SEGにおける支援項目リスト表示欄LISTを指す。
【0052】
次いで、ステップSD2〜SD5では、ポインタiを歩進させながら、そのポインタiに対応した支援情報sup_dat[i][0]〜[5](図5参照)をRAM3のデータエリアから読み出し、それらを支援項目リスト表示欄LIST中のi番目の枠内の対応するアイテムとして画面表示して選択画面SEGを形成する。
すなわち、識別子sup_id(sup_dat[i][0])を「番号」、支援開始時刻Tick(sup_dat[i][1])を「開始位置」、支援終了時刻EndTick(sup_dat[i][2])を「終了位置」、支援タイプSupType(sup_dat[i][3])を「タイプ」、支援データdata(sup_dat[i][4])を「内容」、フラグflug(sup_dat[i][5])を「再生の有無」に表示する。
【0053】
こうして支援情報sup_datの内容がリスト表示される選択画面SEGでは、「再生の有無」のクリック枠をユーザがクリック操作することで支援項目を取捨選択し得るようになっている。すなわち、「再生の有無」のクリック枠がクリック操作されると、ステップSD6の判断結果が「YES」になり、ステップSD7に進み、クリック操作されたクリック枠のポインタiをセットする。そして、ステップSD8では、そのポインタiに対応したsup_dat[i][5]のフラグflugの値を反転する。続いて、ステップSD9では、そのフラグ反転に応じて、ポインタiに対応する「再生の有無」のクリック枠の表示を変更した後、ステップSD6に処理を戻す。
【0054】
これにより、図14に図示する一例の選択画面SEGのように、選択された支援内容については「再生の有無」のクリック枠が黒く塗り潰された状態で表示され、選択されない支援内容については「再生の有無」のクリック枠が白抜きで表示される。そして、選択画面SEGにおける「再生の有無」のクリック枠をクリック操作して支援項目を取捨選択し終えた後、OKアイコンをクリック操作すると、ステップSD10の判断結果が「YES」になり、ステップSD11に進み、選択画面SEGの表示を消去して本処理を完了させる。
【0055】
(6)編集処理の動作
次に、図15〜図16を参照して編集処理の動作を説明する。上述した変更処理のステップSC7(図12参照)を介して本処理が実行されると、CPU1は図15のステップSE1に進み、編集画面EDGを表示部7に画面表示する。編集画面EDGとは、図16に示す一例のように、支援情報sup_datの内容を編集する際に用いられるGUI画面であり、支援箇所を入力するフィールドおよび支援内容を選択するフィールドを備える。
【0056】
次いで、ステップSE2では、編集画面EDGにデータ入力されたか否かを判断する。データ入力が無ければ、判断結果は「NO」になり、後述するステップSE4に進む。一方、データ入力されると、判断結果が「YES」となり、次のステップSE3に進み、入力されたデータをフィールド中に表示する。
そして、入力したデータを取り消すべくキャンセルアイコンがオン操作(クリック操作)された場合には、ステップSE8の判断結果が「YES」になり、ステップSE9に進み、入力データを消去すると共に、編集画面EDGを消去して本処理を完了させる。
【0057】
一方、入力したデータを支援情報sup_datとして更新登録すべく、OKアイコンがオン操作された場合には、ステップSE4の判断結果が「YES」になり、ステップSE5に進む。ステップSE5では、入力された支援位置データ(Tick)に基づき、支援情報sup_dat内の挿入位置を検出し、それをポインタiに設定する。次いで、ステップSE6では、ポインタiに対応した支援情報sup_dat[i]に、入力されたデータsup_dat[i][]を挿入する。この後、ステップSE7に進み、入力データを消去した後、ステップSE2に処理を戻す。
【0058】
以上のように、選択処理および編集処理を備える変更処理では、編集処理にて新たな支援情報sup_datを設定したり、既存の支援情報sup_datを設定し、そうして編集された支援情報sup_datの内、実際の演奏支援に供する支援情報sup_datを選択処理にて選ぶようになっている。
【0059】
(7)分析処理の動作
次に、図17を参照して分析処理の動作を説明する。前述したメインルーチンのステップS13(図7参照)を介して本処理が実行されると、CPU1は図17のステップSF1に進む。ステップSF1では、練習結果データベースpract_rec(図3参照)に練習結果データprac_recが登録されたか否かを判断する。練習結果データprac_recが登録されていれば、判断結果は「YES」になり、ステップSF2〜SF4を経て、線形近似処理、判定処理およびエリア分類・支援項目設定処理を実行する。
【0060】
(8)線形近似処理の動作
次に、図18〜図21を参照して線形近似処理の動作を説明する。上述した分析処理(図17参照)のステップSF2を介して本処理が実行されると、CPU1は図18のステップSG1に処理を進め、ポインタiDBを初期化する。ポインタiDBは、練習結果データベースpract_rec中の練習結果データprac_rec[0]〜[n]を検索するためのポインタである。続いて、ステップSG2では、線形近似に用いる各種レジスタを初期化する。
【0061】
次いで、ステップSG3では、練習結果データベースpract_rec中を全て検索し終えたかどうかを判断する。検索し終えた場合には、判断結果が「YES」になり、後述するステップSG4以降に処理を進める。練習結果データベースpract_rec中を全て検索し終えていなければ、判断結果は「NO」となり、図19に示すステップSG9に進む。
【0062】
ステップSG9では、ポインタiNoteをゼロリセットする。次いで、ステップSG10では、ポインタiDBで指定される練習結果データを検索し終えたか否かを判断する。検索し終えた場合には、判断結果が「YES」となり、ステップSG11に進み、ポインタiDBを歩進させた後、図18のステップSG3に処理を戻す。
一方、ポインタiDBで指定される練習結果データを検索し終えていなければ、上記ステップSG10の判断結果は「NO」になり、ステップSG12に進む。ステップSG12では、練習結果データprac_rec[iDB][iNote]、つまりミスカウント数MissTouchCntが「0」でないか否かを判断する。
【0063】
ミスカウント数MissTouchCntが「0」、すなわちポインタiDBで指定される練習結果データprac_rec[iDB]に演奏ミスが存在しない場合には、その練習結果データprac_rec[iDB]は線形近似の対象足り得ないので、判断結果が「YES」となり、ステップSG22に進み、ポインタiNoteを歩進させた後、ステップSG10に処理を戻す。
これに対し、ミスカウント数MissTouchCntが「0」でなく、ポインタiDBで指定される練習結果データprac_rec[iDB]に演奏ミスが存在する場合には、ステップSG12の判断結果が「NO」となり、ステップSG13に進む。
【0064】
ステップSG13では、演奏練習回数をポインタiNote毎にカウントするレジスタiAnlCnt[iNote]をインクリメントして歩進させる。続いて、ステップSG14では、練習結果データ数をポインタiNote毎にカウントするレジスタsum_Time[iNote]にポインタiDBの値を加算する。次に、ステップSG15では、練習結果データparct_rec[iDB][iNote+1]の値、つまり練習結果rslt_for_playdatの値が「−1」、「1」、「2または3」のいずれであるかを判定する。
【0065】
そして、正しく弾けていない旨を表す「−1」であると、ステップSG16に進み、レジスタsum_tmpに「0」をストアする。正しく弾けた旨を表す「1」であると、ステップSG17に進み、レジスタsum_tmpに「1」をストアする。適正タイミングより早い押鍵又は遅い押鍵であったことを表す「2または3」であると、ステップSG18に進み、レジスタsum_tmpに「0.5」をストアする。
【0066】
次いで、ステップSG19に進むと、レジスタsum_tmpの値をレジスタsum_Rslt[iNote]に加算し、続くステップSG20では、レジスタsum_tmpの自乗値をレジスタsum_Rsq[iNote]にストアする。さらに、ステップSG21では、レジスタsum_tmpの値にポインタiDBを乗算した値をレジスタsum_RT[iNote]にストアする。
【0067】
ここで、線形近似パラメータとして扱われる、レジスタsum_Rslt[iNote]、レジスタsum_Time[iNote]、レジスタsum_RT[iNote]およびレジスタsum_Rsq[iNote]の各値が意図するところを説明する。
上記レジスタsum_tmpに格納される演奏結果は、正しく弾かれていない場合に「0」、早く押鍵もしくは遅く押鍵された場合に「0.5」、正しく弾かれた場合に「1」となる。そうした値の演奏結果をx軸に、この演奏結果に対応する練習回数をy軸に割り当て、例えば図21(ロ)に図示するように演奏結果毎の度数分布を得る。
【0068】
この度数分布では、正しく弾かれていない場合の値「0」に対応する練習回数、早く押鍵もしくは遅く押鍵された場合の値「0.5」に対応する練習回数および正しく弾かれた場合の値「1」に対応する練習回数を、順次積み上げる形で表現する。そのように表現された各度数分布間の相関を得るため、最小自乗法にて各度数分布を一次近似する。最小自乗法によれば、1次近似関数y=ax+bの傾きaおよび切片bは、次式(1)および(2)で表現される。
a=nΣxiyi−ΣxiΣyi/nΣxi2−(Σxi)2 …(1)
b=Σxi2Σyi−ΣxiΣxiyi/nΣxi2−(Σxi)2 …(2)
ここで、nはデータ数、xiおよびyiはi番目の演奏結果、練習回数を表す。そして、上記(1),(2)式におけるデータ数nがレジスタiAnlCnt[iNote]に、Σxiyiがレジスタsum_RT[iNote]に、Σxiがレジスタsum_Rslt[iNote]に、Σyiがレジスタsum_Time[iNote]に、Σxi2がレジスタsum_Rsq[iNote]にそれぞれ対応している。
【0069】
こうした線形近似パラメータが上記ステップSG19〜SG21にて更新されると、ステップSG22に処理を進め、ポインタiNoteをインクリメントして歩進させた後、上述のステップSG10に処理を戻す。
以後、ポインタiDBで指定される練習結果データを読み出し終えるまでステップSG10〜SG22を繰り返して線形近似パラメータを順次更新して行く。する。そして、ポインタiDBで指定される練習結果データを読み出し終えると、ステップSG10の判断結果が「YES」となり、ステップSG11に進み、ポインタiDBをインクリメントして歩進させる。この後、図18に示すステップSG3に処理を戻し、練習結果データベースpract_recに記憶される練習結果データを全て読み出したかどうかを判断し、全て読み出し終えると、判断結果が「YES」になり、ステップSG4に処理を進める。
【0070】
図18に示すステップSG4〜SG8では、課題曲の各音符毎の演奏結果と練習回数とに応じて更新された線形近似パラメータに基づき、最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを、上述の式(1),(2)により算出する。
すなわち、ステップSG4では、先ずポインタiNoteをゼロリセットし、続くステップSG5では、線形近似パラメータを読み出し終えたかどうかを判断する。読み出し終えていなければ、判断結果は「NO」になり、次のステップSSG6に進む。ステップSG6では、ポインタiNoteに対応したレジスタiAnlCnt[iNote]の値(練習回数)が「0」、つまりポインタiNoteで指定される課題曲の音符が練習されているかどうかを判断する。練習されておらず、練習回数が「0」であると、判断結果は「YES」となり、後述するステップSG8に進む。
【0071】
一方、練習されている場合には、判断結果が「NO」になり、ステップSG7に進み、算出処理を実行する。算出処理が実行されると、CPU1は図20のステップSG7−1、SG7−2において、ポインタiNoteに対応した線形近似パラメータを前述の式(1),(2)に代入して最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを算出し、算出した傾きaをレジスタgrad[iNote]に、算出した切片bをレジスタroot[iNote]にストアする。この後、図18のステップSG8に進み、ポインタiNoteをインクリメントして歩進させた後、上述のステップSG5に処理を戻す。
【0072】
以後、全ての線形近似パラメータを読み出し終えるまでステップSG5〜SG8を繰り返し、歩進されるポインタiNoteに対応した線形近似パラメータに基づき、課題曲の各音符毎の1次近似関数の傾きaおよび切片bを算出してレジスタgrad[iNote]、レジスタroot[iNote]にストアする。そして、全ての線形近似パラメータを読み出し終えると、ステップSG5の判断結果が「YES」となり、本処理を完了させる。
このように、線形近似処理では、練習結果データベースpract_recに履歴記録された各練習結果データに基づき、課題曲の各音符毎の演奏結果と練習回数とを抽出し、これに応じて更新された線形近似パラメータに従って最小自乗法による1次近似関数y=ax+bの傾きaおよび切片bを、課題曲の各音符毎に算出している。
【0073】
(9)判定処理の動作
次に、図22〜図23を参照して判定処理の動作を説明する。前述した分析処理(図17参照)のステップSF3を介して本処理が実行されると、CPU1は図22のステップSH1に処理を進め、課題曲の各音符毎の向上度判定結果を保持するレジスタiProgress[]をゼロリセットする。次に、ステップSH2では、ポインタiNoteをゼロリセットし、続くステップSH3では、ノートデータ数分の向上度を判定し終えたかどうかを判断する。
【0074】
判定し終えていなければ、判断結果は「NO」になり、ステップSH4に進む。ステップSH4では、上述の線形近似処理にて得たレジスタiAnlCnt[iNote]の値(練習回数)が「0」でないか否か、つまりポインタiNoteで指定されるノートデータが練習されているかどうかを判断する。ポインタiNoteで指定されるノートデータが練習されていない場合には、判断結果が「NO」になり、ステップSH9にてポインタiNoteを歩進させてから再びステップSH3に処理を戻す。
【0075】
一方、ポインタiNoteで指定されるノートデータが練習されていると、上記ステップSH4の判断結果が「YES」になり、ステップSH5に進む。ステップSH5では、上述の線形近似処理で求めた線形近似パラメータを、nΣxi2−(Σxi)2なる条件式(3)に代入したときの値が「0」か否かを判断する。この条件式(3)は、1次近似関数y=ax+bの傾きaを算出する式(1)の分母に相当するものである。したがって、このステップSH5では線形近似の可否を判断することになる。以下、線形近似することが出来ない場合と出来る場合とに分けて動作説明を進める。
【0076】
a.線形近似することが出来ない場合
この場合、条件式(3)の値が「0」になるので、ステップSH5の判断結果は「YES」になり、次のステップSH6に進む。ステップSH6では、上述の線形近似処理で求めた線形近似パラメータを、Σxi/nなる条件式(4)に代入したときの値が「1」か否かを判断する。条件式(4)は演奏結果の平均値を表しており、これが「1」になるケースは演奏ミスがなく全て正しく弾けたことを表す。
従って、演奏ミスがなく全て正しく弾けたノートデータ(音符)であると、ステップSH6の判断結果は「YES」になり、ステップSH7に進み、演奏ミスがなく全て正しく弾けた完了期を表す判定値「5」をレジスタiProgressにストアした後、ステップSH9に進み、ポインタiNoteを歩進させてから前述のステップSH3に処理を戻す。
【0077】
一方、条件式(4)の値が「1」でない場合、つまり図21(イ)に図示するように、適正タイミングより早く押鍵したり遅く押鍵した場合の演奏結果「0.5」の頻度分布しか存在しない場合には、ステップSH6の判断結果が「NO」になり、ステップSH8に進み、練習初期段階にある旨を表す判定値「1」をレジスタiProgress[iNote]にストアする。この後、ステップSH9にてポインタiNoteを歩進させてから前述のステップSH3に処理を戻す。
【0078】
b.線形近似することが出来る場合
この場合、上述したステップSH5の判断結果が「NO」になり、図23に示すステップSH10以降に進み、前述した線形近似処理で求めた線形近似パラメータ、一次近似関数の傾き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を表す。
【0079】
したがって、条件式(5)はポインタiNoteで指定されるノートデータについて得られた一次近似関数の傾きaが2×Nprac/3+ParamErrより大きく、かつ一次近似関数の切片bがNprac/6+ParamErrより大きいか否か、つまり図21(ロ)に図示する向上期に該当するかどうかを判断する。そして、向上期に該当する場合には、判断結果が「YES」になり、ステップSH11に進み、向上期段階にある旨を表す判定値「2」をレジスタiProgress[iNote]にストアする。この後、図22のステップSH9にてポインタiNoteを歩進させてからステップSH3に処理を戻す。
【0080】
一方、条件式(5)を満たさず、向上期に該当しない場合には、ステップSH10の判断結果が「NO」となり、ステップSH12に進む。ステップSH12では、下記条件式(6)を満たすか否かを判断する。
grad[iNote]<iAnlCnt[iNote]×2/3−ParamErr and root[iNote]<iAnlCnt[iNote]/6−ParamErr …(6)
【0081】
したがって、条件式(6)はポインタiNoteで指定されるノートデータについて得られた一次近似関数の傾きaが2×Nprac/3−ParamErrより小さく、かつ一次近似関数の切片bがNprac/6−ParamErrより小さいか否か、つまり図21(ニ)に図示する完成期に該当するかどうかを判断する。そして、完成期に該当する場合には、判断結果が「YES」になり、ステップSE13に進み、完成期段階にある旨を表す判定値「4」をレジスタiProgress[iNote]にストアする。この後、図22のステップSH9にてポインタiNoteを歩進させてからステップSH3に処理を戻す。
【0082】
これに対し、条件式(6)を満たさず、完成期に該当しない場合には、ステップSE12の判断結果が「NO」となり、ステップSE14に進む。ステップSE14では、下記条件式(7)を満たすか否かを判断する。
sum_Rslt[iNote]/iAnlCnt[iNote]>0.5 …(7)
条件式(7)は演奏結果の平均値(Σxi/n)を表しており、これが「0.5」より大きいか否か、つまり図21(ハ)に図示する安定期に該当するかどうかを判断する。そして、安定期に該当する場合には、判断結果が「YES」になり、ステップSH15に進み、安定期段階にある旨を表す判定値「3」をレジスタiProgress[iNote]にストアする。この後、図22のステップSH9にてポインタiNoteを歩進させてからステップSH3に処理を戻す。
一方、条件式(7)を満たさず、安定期に該当しない場合には、ステップSH14の判断結果が「NO」となり、ステップSH16に進み、向上期段階にある旨を表す判定値「2」をレジスタiProgress[iNote]にストアした後、図22のステップSH9にてポインタiNoteを歩進させてからステップSH3に処理を戻す。
【0083】
以後、ポインタiNoteがノートデータ数NOTESに達するまでステップSH3以降を繰り返し、線形近似処理にて得た線形近似パラメータ、一次近似関数の傾きa(レジスタgrad[iNote])および切片b(レジスタroot[iNote])をポインタiNoteに応じて読み出し、これにより課題曲の各ノートデータ毎に「練習初期」、「向上期」、「安定期」、「完成期」および「完了期」のいずれの段階にあるのかを判定し、該当する段階を表す判定値を設定する。そして、全てについて判定し終えると、ステップSH3(図22)の判断結果が「YES」となり、本処理を完了させる。
【0084】
(10)エリア分類・支援項目設定処理の動作
次に、図24〜図27を参照してエリア分類・支援項目設定処理の動作を説明する。前述した分析処理(図17参照)のステップSF4を介して本処理が実行されると、CPU1は図24のステップSJ1に処理を進め、ポインタiCntをゼロリセットし、続くステップSJ2では、ポインタiNoteをゼロリセットすると共に、検出フラグiFoundを「0」にセットする。次いで、ステップSJ3では、ポインタiNoteに応じて、各ノートデータ毎の判定値をレジスタiProgress[iNote]から読み出し中か否かを判断する。読み出し中であると、判断結果は「YES」になり、ステップSJ4に進む。
【0085】
ステップSJ4では、検出フラグiFoundが「0」でないか否か、未だ判定値を読み出していない状態であるかどうかを判断する。未だ判定値を読み出していない状態であると、判断結果は「NO」になり、図25に示すステップSJ12以降に進む。ステップSJ12以降では、ポインタiNoteに応じてレジスタiProgress[iNote]から読み出される判定値に対応した処理を実行する。以下、レジスタiProgress[iNote]から読み出される判定値が「1」、「2まはた3」および「4」の各場合の動作を述べる。
【0086】
a.判定値が「1」の場合(練習初期の場合)
レジスタiProgress[iNote]から読み出される判定値が「1」であると、図25に示すステップSJ12の判断結果が「YES」になり、ステップSJ13に進み、検出フラグiFoundに「1」をセットする。次いで、ステップSJ14では、演奏情報playdat[iNote][2](発音タイミングTick)から定数DATA_NG_GATEを減算した値を、分析支援情報analized_dat[iCnt][6](支援開始位置SupStart)に格納する。つまり、「練習初期」用の支援開始位置SupStartを設定する。続いて、ステップSJ15では、演奏情報playdat[iNote][2](発音タイミングTick)を分析支援情報analized_dat[iCnt][7](支援終了位置SupEnd)に格納して「練習初期」用の支援終了位置SupEndを設定する。
【0087】
次いで、ステップSJ16では、「練習初期」用の出力形態を表すDATA_NG_TYPEを、分析支援情報analized_dat[iCnt][3](支援タイプSupType)に格納する。そして、ステップSJ17に進み、「練習初期」用の支援内容を表すDATA_DEFAULT_NGを、分析支援情報analized_dat[iCnt][4](支援データdata)に格納する。
次に、ステップSJ18では、分析支援情報analized_dat[iCnt][5](フラグflug)に「1」をセットする。ステップSJ19では、演奏情報playdat[iNote][2](発音タイミングTick)を、分析支援情報analized_dat[iCnt][1](支援開始時刻Tick)に格納する。ステップSJ20では、演奏情報playdat[iNote][3](消音タイミングEndTick)を、分析支援情報analized_dat[iCnt][2](支援終了時刻EndTick)に格納する。
【0088】
こうして、「練習初期」に対応した分析支援情報analized_dat[iCnt][1]〜[7]が生成されると、CPU1はステップSJ21〜SJ25を実行する。ステップSJ21〜SJ25では、ポインタiSupを歩進させながら、演奏情報playdat[iNote][2](発音タイミングTick)より遅いタイミングに設定されている支援情報sup_dat[iSup][2](支援終了時刻EndTick)を検索する。
【0089】
そして、該当する支援情報sup_dat[iSup][2](支援終了時刻EndTick)が検索されたら、支援情報sup_dat[iSup][1](支援開始時刻Tick)と演奏情報playdat[iNote][2](発音タイミングTick)とが一致するかどうかを判断し、一致する場合には支援情報sup_dat[iSup][5](フラグflug)を、分析支援情報analized_dat[iCnt][5](フラグflug)にセットする。これにより、支援情報sup_datと分析支援情報analized_datとが競合する場合、支援情報sup_datを優先させる。そして、以上の競合箇所の検索が完了すると、ステップSJ22の判断結果が「YES」になり、図24のステップSJ3に処理を戻す。
【0090】
b.判定値が「2または3」の場合(向上期もしくは安定期の場合)
レジスタiProgress[iNote]から読み出される判定値が「2または3」であると、図26に示すステップSJ26の判断結果が「YES」になり、ステップSJ27に進み、検出フラグiFoundに「2」をセットする。次いで、ステップSJ28では、演奏情報playdat[iNote][2](発音タイミングTick)から定数DATA_CAUT_GATEを減算した値を、分析支援情報analized_dat[iCnt][6](支援開始位置SupStart)に格納する。つまり、「向上期もしくは安定期」用の支援開始位置SupStartを設定する。
【0091】
続いて、ステップSJ29では、演奏情報playdat[iNote][2](発音タイミングTick)を分析支援情報analized_dat[iCnt][7](支援終了位置SupEnd)に格納して「向上期もしくは安定期」用の支援終了位置SupEndを設定する。次いで、ステップSJ30では、「向上期もしくは安定期」用の出力形態を表すDATA_CAUT_TYPEを、分析支援情報analized_dat[iCnt][3](支援タイプSupType)に格納する。そして、ステップSJ31に進み、「向上期もしくは安定期」用の支援内容を表すDATA_DEFAULT_CAUTを、分析支援情報analized_dat[iCnt][4](支援データdata)に格納する。
【0092】
次に、ステップSJ32では、分析支援情報analized_dat[iCnt][5](フラグflug)に「1」をセットする。ステップSJ33では、演奏情報playdat[iNote][2](発音タイミングTick)を、分析支援情報analized_dat[iCnt][1](支援開始時刻Tick)に格納する。ステップSJ34では、演奏情報playdat[iNote][3](消音タイミングEndTick)を、分析支援情報analized_dat[iCnt][2](支援終了時刻EndTick)に格納する。こうして、「向上期もしくは安定期」に対応した分析支援情報analized_dat[iCnt][1]〜[7]が生成されると、CPU1は図24のステップSJ3に処理を戻す。
【0093】
なお、上述した練習初期の場合には、支援情報sup_datと分析支援情報analized_datとが競合すると、支援情報sup_dat側を優先するようにしたが、向上期もしくは安定期の場合、分析支援情報analized_datを優先するようになっている。また、向上期もしくは安定期においても支援情報sup_datと分析支援情報analized_datとが競合した時、支援情報sup_dat側を優先させる態様としても構わない。
【0094】
c.判定値が「4」の場合(完成期の場合)
レジスタiProgress[iNote]から読み出される判定値が「4」であると、図27に示すステップSJ35の判断結果が「YES」になり、ステップSJ36に進み、検出フラグiFoundに「4」をセットする。次いで、ステップSJ37では、演奏情報playdat[iNote][2](発音タイミングTick)から定数DATA_OK_GATEを減算した値を、分析支援情報analized_dat[iCnt][6](支援開始位置SupStart)に格納する。つまり、「完成期」用の支援開始位置SupStartを設定する。
【0095】
続いて、ステップSJ38では、演奏情報playdat[iNote][2](発音タイミングTick)を分析支援情報analized_dat[iCnt][7](支援終了位置SupEnd)に格納して「完成期」用の支援終了位置SupEndを設定する。次いで、ステップSJ39では、「完成期」用の出力形態を表すDATA_OK_TYPEを、分析支援情報analized_dat[iCnt][3](支援タイプSupType)に格納する。そして、ステップSJ40に進み、「完成期」用の支援内容を表すDATA_DEFAULT_OKを、分析支援情報analized_dat[iCnt][4](支援データdata)に格納する。
【0096】
次に、ステップSJ41では、分析支援情報analized_dat[iCnt][5](フラグflug)に「1」をセットする。ステップSJ42では、演奏情報playdat[iNote][2](発音タイミングTick)を、分析支援情報analized_dat[iCnt][1](支援開始時刻Tick)に格納する。ステップSJ43では、演奏情報playdat[iNote][3](消音タイミングEndTick)を、分析支援情報analized_dat[iCnt][2](支援終了時刻EndTick)に格納する。こうして、「完成期」に対応した分析支援情報analized_dat[iCnt][1]〜[7]が生成されると、CPU1は図24のステップSJ3に処理を戻す。
【0097】
なお、前述した練習初期の場合には、支援情報sup_datと分析支援情報analized_datとが競合すると、支援情報sup_dat側を優先するようにしたが、完成期の場合、分析支援情報analized_datを優先するようになっている。また、完成期においても支援情報sup_datと分析支援情報analized_datとが競合した時、支援情報sup_dat側を優先する態様としても構わない。
【0098】
以上のようにして、判定値に応じた分析支援情報analized_dat[iCnt][1]〜[7]が生成されて図24のステップSJ3に処理を戻した時、ポインタiNoteに応じた判定値の読み出しの最中であると、ステップSJ3の判断結果が「YES」になり、ステップSJ4以降に処理を進める。ステップSJ4では、検出フラグiFoundは「0」でないか否かを判断する。この場合、検出フラグiFoundは「0」でないので、判断結果が「YES」となり、ステップSJ5に進む。ステップSJ5では、レジスタiProgress[iNote]の判定値と検出フラグiFoundとが一致していないかどうかを判断する。一致していると、判断結果は「NO」になり、後述するステップSJ9に進むが、不一致ならば、判断結果が「YES」になり、ステップSJ6に進む。
【0099】
ステップSJ6では、検出フラグiFoundをゼロリセットし、続くステップSJ7では、1つ前の演奏情報playdat[iNote−1][3](消音タイミングEndTick)を、分析支援情報analized_dat[iCnt][2](支援終了時刻EndTick)に格納する。次いで、ステップSJ8では、ポインタiCntを歩進させ、続くステップSJ9ではポインタiNoteを歩進させてステップSJ3に処理を戻す。
そして、ステップSJ3において、ポインタiNoteに応じた判定値の読み出しが完了すると、ここでの判断結果が「NO」になり、ステップSJ10に進み、検出フラグiFoundが「0」でないか否かを判断する。検出フラグiFoundが「0」であれば、判断結果は「NO」になり、本処理を完了させる。一方、検出フラグiFoundが「0」でなければ、判断結果が「YES」となり、ステップSJ11に進み、分析支援情報analized_dat[iCnt][2](支援終了時刻EndTick)に曲最後の時刻を格納して本処理を終える。
【0100】
以上のように、線形近似処理、判定処理およびエリア分類・支援項目設定処理を含む分析処理では、練習結果データベースpract_recに履歴記録された練習結果データを分析して、演奏ミスを犯し易い苦手箇所の演奏を支援する支援項目を作成するようになっている。
【0101】
(11)標準支援処理の動作
次に、図28〜図33を参照して標準支援処理の動作を説明する。前述したメインルーチンのステップS7(図7参照)を介して標準支援処理が実行されると、CPU1は図28に示すステップSK1に進み、スタートスイッチイベントの有無を判断する。ここで、ユーザが特別支援処理をスタートさせるべくスタートスイッチをオン操作したとする。
そうすると、スタートスイッチイベントが発生して、ステップSK1の判断結果が「YES」になり、ステップSK2に進み、特別支援処理のスタートを表す為、停止フラグをゼロリセットする。次いで、ステップSK3に進み、現時刻をレジスタStartTickにストアする。続いて、ステップSK4では、ポインタiPD、iSD、iFirstおよびポインタiLastを各々ゼロリセットする。
【0102】
次に、ステップSK5では、ストップイベントの有無を判断する。ストップイベントが無ければ、判断結果は「NO」になり、ステップSK7に進み、停止フラグが「1」、つまりストップ状態に設定されているかどうかを判断する。スタート状態にあると、停止フラグは「0」なので、判断結果は「NO」になり、ステップSK7に進む。
一方、ストップスイッチのオン操作に応じてストップイベントが発生した場合には、上記ステップSK5の判断結果が「YES」になり、ステップSK6に進み、停止フラグを「1」にセットする。停止フラグが「1」にセットされると、ステップSK7の判断結果が「YES」になり、本処理を完了させる。
【0103】
さて、スタートスイッチのオン操作に応じて停止フラグが「0」になると、上記ステップSK7の判断結果が「NO」になり、図29に示すステップSK8に処理を進める。ステップSK8では、現時刻をレジスタNowTickにストアする。続いて、ステップSK9では、ポインタiFirstの値をポインタiにセットする。そして、ステップSK10では、ポインタiとポインタiLastが一致するか否かを判断する。
初期化された時点では、両ポインタは一致するので、判断結果は「YES」になり、ステップSK11に処理を進める。ステップSK11では、現時刻が支援終了時刻EndTick(nowplay[i][2])を過ぎているか否かを判断する。現時刻が支援終了時刻EndTickを過ぎていなければ、判断結果は「NO」になり、後述するステップSK16に進む。
【0104】
一方、現時刻が支援終了時刻EndTickを過ぎていると、ステップSK11の判断結果は「YES」になり、ステップSK12に進み、支援停止処理を実行する。支援停止処理が実行されると、CPU1は図33のステップSK12−1に処理を進め、支援情報sup_dat(図5参照)中の支援データdata(sup_dat[i][4])が再生中であるか否かを判断する。再生していなければ、判断結果は「NO」になり、何も行わずに支援停止処理を完了させるが、再生中であると、判断結果が「YES」になり、ステップSK12−2に進み、支援データdataの再生を停止してから支援停止処理を完了させる。
【0105】
支援停止処理が完了すると、CPU1は図29のステップSK13に進み、支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[i][3])を、ポインタtmpPDにセットする。次いで、ステップSK14では、このポインタtmpPDに対応した演奏情報playdat[tmpPD][5](比較結果Result)の値が「0」であるか否かを判断する。
演奏範囲外を表す「0」でなければ、判断結果は「NO」になり、後述のステップSK16に進むが、「0」であると、判断結果が「YES」になり、ステップSK15に進み、演奏情報playdat[tmpPD][5](比較結果Result)に、正しく弾けなかった旨を表す判定値「−1」をセットする。そして、ステップSK16に進み、次の処理情報を指し示すポインタ(nowplay[i][4])をポインタiにセットして上述のステップSK10に処理を戻す。
【0106】
ポインタiの歩進に応じて、ステップSK10の判断結果が「NO」になると、CPU1は図30に示すステップSK17に処理を進める。ステップSK17では、現時刻NowTickが演奏情報playdatの発音タイミングTick(playdat[iPD][2])を過ぎているか否かを判断する。現時刻NowTickが発音タイミングTick以前であると、判断結果は「NO」になり、図31に示すステップSK22に進むが、発音タイミングTickを過ぎていると、判断結果が「YES」になり、ステップSK18に進む。
ステップSK18では、演奏情報playdat[iPD][1](ノート番号Note#)にて指定される音高の楽音を発音するよう電子楽器20側に指示するノートオン処理を実行する。これにより、発音タイミングTickを過ぎても演奏されない演奏情報playdat[iPD]を再生する演奏支援が行われる。
【0107】
そして、ステップSK19に進み、処理情報nowplayにおける空きエリアを検索し、その空きエリアを指し示すポインタ値をポインタiSetにセットする。次いで、ステップSK20では、上記ステップSK18にてノートオン処理を実行したのに伴い、処理情報nowplay[iSet]を更新登録する。すなわち、処理タイプplaytype(nowplay[iSet][0])にノート出力を表す値「0」を、支援開始時刻Tick(nowplay[iSet][1])に発音タイミングTick(playdat[iPD] [2])をストアする。
【0108】
また、支援終了時刻EndTick(nowplay[iSet][2])に消音タイミングEndTick(playdat[iPD] [3])を、支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[iSet][3])にポインタiPDをストアする。さらに、一つ前の処理情報nowplay[iLast][4]のポインタNextPointerにポインタiSetをストアした後、ポインタiLastをポインタiSetに更新する。そして、ステップSK21に進み、ポインタiPDを歩進させた後、図31のステップSK22に進む。
【0109】
ステップSK22では、ポインタiPDに対応した支援情報sup_dat[iPD][5]のフラグflugが「1」であって、かつ現時刻NowTickが支援開始時刻Tick(sup_dat[iPD][1])を過ぎているか否かを判断する。フラグflugが「0」に設定されて演奏支援の無効を表す場合、もしくは現時刻NowTickが支援開始時刻Tick以前であると、ここでの判断結果は「NO」になり、図28に示すステップSK1に処理を戻す。
一方、フラグflugが「1」に設定されて演奏支援の有効を表し、しかも支援開始時刻Tickを過ぎていると、判断結果が「YES」になり、ステップSK23に進み、支援開始処理を実行する。
【0110】
支援開始処理が実行されると、CPU1は図32のステップSK32−1に処理を進め、支援情報sup_dat[iSD][3]の支援タイプSupTypeが「1」〜「3」のいずれであるかを判断する。支援タイプSupTypeが「1」の場合には、ステップSK23−2に進み、支援情報sup_dat[iSD][4]の支援データdataを、表示部7の表示画面に文字列出力する。支援タイプSupTypeが「2」の場合には、ステップSK23−3に進み、支援情報sup_dat[iSD][4]の支援データdataを、表示部7の表示画面に画像出力する。支援タイプSupTypeが「3」の場合には、ステップSK23−4に進み、支援情報sup_dat[iSD][4]の支援データdataを音声出力する。
【0111】
こうして、支援情報sup_dat[iSD][4]の支援データdataによる演奏支援が行われると、CPU1は図31のステップSK24に進み、処理情報nowplayにおける空きエリアを検索し、その空きエリアを指し示すポインタ値をポインタiSetにセットする。続いて、ステップSK25では、上記支援開始処理の実行に伴い、処理情報nowplay[iSet]を更新登録する。
【0112】
すなわち、処理タイプplaytype(nowplay[iSet][0])に支援情報sup_dat[iSD][3]の支援タイプSupTypeをストアする。支援開始時刻Tick(nowplay[iSet][1])に支援情報sup_dat[iSD][1]の支援開始時刻Tickをストアする。支援終了時刻EndTick(nowplay[iSet][2])に支援情報sup_dat[iSD][2]の支援終了時刻EndTickをストアする。支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[iSet][3])にポインタiSDをストアする。一つ前の処理情報nowplay[iLast][4]のポインタNextPointerにポインタiSetをストアした後、ポインタiLastをポインタiSetに更新する。そして、ステップSK26に進み、ポインタiSDを歩進させてから図28のステップSK1に処理を戻す。以後、ストップスイッチがオン操作されるまで上述した動作を繰り返す。
【0113】
(12)特別支援処理の動作
次に、図34〜図37を参照して特別支援処理の動作を説明する。前述したメインルーチンのステップS9(図7参照)を介して特別支援処理が実行されると、CPU1は図34に示すステップSL1に進み、スタートスイッチイベントの有無を判断する。ここで、ユーザが特別支援処理をスタートさせるべくスタートスイッチをオン操作したとする。
そうすると、スタートスイッチイベントが発生して、ステップSL1の判断結果が「YES」になり、ステップSL2に進み、特別支援処理のスタートを表す為、停止フラグをゼロリセットする。次いで、ステップSL3に進み、現時刻をレジスタStartTickにストアする。続いて、ステップSL4では、ポインタiPD、iAD、iFirstおよびiLastを各々ゼロリセットする。
【0114】
次に、ステップSL5では、ストップイベントの有無を判断する。ストップイベントが無ければ、判断結果は「NO」になり、ステップSL7に進み、停止フラグが「1」、つまりストップ状態に設定されているかどうかを判断する。スタート状態にあると、停止フラグは「0」なので、判断結果は「NO」になり、ステップSL7に進む。
一方、ストップスイッチのオン操作に応じてストップイベントが発生した場合には、上記ステップSL5の判断結果が「YES」になり、ステップSL6に進み、停止フラグを「1」にセットする。停止フラグが「1」にセットされると、ステップSL7の判断結果が「YES」になり、本処理を完了させる。
【0115】
さて、スタートスイッチのオン操作に応じて停止フラグが「0」になると、上記ステップSL7の判断結果が「NO」になり、図35に示すステップSL8に進む。ステップSL8では、現時刻をレジスタNowTickにストアする。続いて、ステップSL9では、ポインタiFirstの値をポインタiにセットする。そして、ステップSL10では、ポインタiとポインタiLastが一致するか否かを判断する。
初期化された時点では、両ポインタは一致するので、判断結果は「YES」になり、ステップSL11に処理を進める。ステップSL11では、現時刻が支援終了時刻EndTick(nowplay[i][2])を過ぎているか否かを判断する。現時刻が支援終了時刻EndTickを過ぎていなければ、判断結果は「NO」になり、後述するステップSK16に進む。
【0116】
一方、現時刻が支援終了時刻EndTickを過ぎていると、ステップSL11の判断結果は「YES」になり、ステップSL12に進み、支援停止処理を実行する。特別支援処理にて実行される支援停止処理では、分析支援情報analized_dat(図6参照)中の支援データdata(analized_dat[i][4])が再生中であるか否かを判断し、再生中の場合に支援データdataの再生を停止させるようになっている。
【0117】
支援停止処理が完了すると、CPU1は図35のステップSL13に進み、支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[i][3])を、ポインタtmpPDにセットする。次いで、ステップSL14では、このポインタtmpPDに対応した演奏情報playdat[tmpPD][5](比較結果Result)の値が「0」であるか否かを判断する。
演奏範囲外を表す「0」でなければ、判断結果は「NO」になり、後述のステップSL16に進むが、「0」であると、判断結果が「YES」になり、ステップSL15に進み、演奏情報playdat[tmpPD][5](比較結果Result)に、正しく弾けなかった旨を表す判定値「−1」をセットする。そして、ステップSL16に進み、次の処理情報を指し示すポインタ(nowplay[i][4])をポインタiにセットして上述のステップSL10に処理を戻す。
【0118】
ポインタiの歩進に応じて、ステップSL10の判断結果が「NO」になると、CPU1は図36に示すステップSL17に処理を進める。ステップSL17では、現時刻NowTickが演奏情報playdatの発音タイミングTick(playdat[iPD][2])を過ぎているか否かを判断する。現時刻NowTickが発音タイミングTick以前であると、判断結果は「NO」になり、図37に示すステップSL22に進むが、発音タイミングTickを過ぎていると、判断結果が「YES」になり、ステップSL18に進む。ステップSL18では、演奏情報playdat[iPD][1](ノート番号Note#)にて指定される音高の楽音を発音するよう電子楽器20側に指示するノートオン処理を実行する。これにより、発音タイミングTickを過ぎても演奏されない演奏情報playdat[iPD]を再生する演奏支援が行われる。
【0119】
そして、ステップSL19に進み、処理情報nowplayにおける空きエリアを検索し、その空きエリアを指し示すポインタ値をポインタiSetにセットする。次いで、ステップSL20では、上記ノートオン処理の実行に伴い、処理情報nowplay[iSet]を更新登録する。
【0120】
すなわち、処理タイプplaytype(nowplay[iSet][0])にノート出力を表す値「0」をストアする。支援開始時刻Tick(nowplay[iSet][1])に発音タイミングTick(playdat[iPD] [2])をストアする。支援終了時刻EndTick(nowplay[iSet][2])に消音タイミングEndTick(playdat[iPD] [3])をストアする。支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[iSet][3])にポインタiPDをストアする。一つ前の処理情報nowplay[iLast][4]のポインタNextPointerにポインタiSetをストアした後、ポインタiLastをポインタiSetに更新する。そして、ステップSK21に進み、ポインタiPDを歩進させた後、図37のステップSL22に進む。
【0121】
ステップSL22では、ポインタiPDに対応した分析支援情報analized_dat[iAD][5]のフラグflugが「1」であって、かつ現時刻NowTickが支援開始時刻Tick(analized_dat[iPD][1])を過ぎているか否かを判断する。フラグflugが「0」に設定されて演奏支援の無効を表す場合、もしくは現時刻NowTickが支援開始時刻Tick以前であると、ここでの判断結果は「NO」になり、図34のステップSL1に処理を戻す。
一方、フラグflugが「1」に設定されて演奏支援の有効を表し、かつ支援開始時刻Tickを過ぎていると、判断結果は「YES」になり、ステップSL23を介して支援開始処理を実行する。
【0122】
特別支援処理に対応する支援開始処理は、標準支援処理に対応した、図32の支援開始処理と同様に、分析支援情報analized_dat[iAD][3]の支援タイプSupTypeが「1」〜「3」のいずれであるかを判断し、支援タイプSupTypeが「1」の場合には分析支援情報analized_dat[iAD][4]の支援データdataを、表示部7の表示画面に文字列出力し、支援タイプSupTypeが「2」の場合には分析支援情報analized_dat[iAD][4]の支援データdataを、表示部7の表示画面に画像出力し、支援タイプSupTypeが「3」の場合には分析支援情報analized_dat[iAD][4]の支援データdataを音声出力する。
【0123】
こうして、分析支援情報analized_dat[iAD][4]の支援データdataによる演奏支援が行われると、CPU1は図37のステップSL24に進み、処理情報nowplayにおける空きエリアを検索し、その空きエリアを指し示すポインタ値をポインタiSetにセットする。続いて、ステップSL25では、上記支援開始処理の実行に伴い、処理情報nowplay[iSet]を更新登録する。
【0124】
すなわち、処理タイプplaytype(nowplay[iSet][0])に分析支援情報analized_dat[iAD][3]の支援タイプSupTypeをストアする。支援開始時刻Tick(nowplay[iSet][1])に分析支援情報analized_dat[iAD][1]の支援開始時刻Tickをストアする。支援終了時刻EndTick(nowplay[iSet][2])に分析支援情報analized_dat[iAD][2]の支援終了時刻EndTickをストアする。支援対象となる演奏情報playdatを指し示すポインタOriginalIndex(nowplay[iSet][3])にポインタiADをストアする。一つ前の処理情報nowplay[iLast][4]のポインタNextPointerにポインタiSetをストアした後、ポインタiLastをポインタiSetに更新する。そして、ステップSL26に進み、ポインタiADを歩進させてから図34のステップSL1に処理を戻す。以後、ストップスイッチがオン操作されるまで上述した動作を繰り返す。
【0125】
以上説明したように、本実施例では、電子楽器20側から演奏データがMIDI入力される毎に、DTM装置10が課題曲の各音符を表す演奏情報playdatと比較して演奏の適否を判定し、その判定結果を演奏情報playdatに対応させた練習結果データとして練習結果データベースparct_recに履歴記録し、その履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援するための分析支援情報analized_datを作成したり、ユーザ自身が注意喚起したい箇所で演奏ミスしないように支援するための支援情報sup_datを設定する。
そして、実際の演奏支援に供する分析支援情報analized_datや支援情報sup_datを選定して演奏支援させるので、練習履歴から抽出される苦手箇所や、ユーザ自身が注意喚起したい箇所で演奏ミスしないように支援する支援項目を演奏時に提示することが可能になっている。
【0126】
【発明の効果】
請求項1,4に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録し、履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する。そして、この第1の支援情報を演奏進行に応じて再生して演奏支援するので、演奏ミスを犯し易い苦手箇所の演奏を間違えないように支援することができる。
請求項2,5に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録し、履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する一方、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する。そして、前記1および第2の支援情報のいずれかを選択し、選択した側の支援情報を演奏進行に応じて再生して演奏支援するので、演奏ミスを犯し易い苦手箇所や、ユーザ自身が注意喚起したい箇所の演奏を間違えないよう支援することができる。
請求項3,6に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録し、履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する一方、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する。そして、前記第1および第2の支援情報のいずれかを選択し、選択した側の支援情報から実際の演奏に供する支援項目を取捨選択してなる支援情報を演奏進行に応じて再生して演奏支援する結果、ユーザ自身が必要とする支援項目の支援情報を用いた演奏支援を行うことができる。
【図面の簡単な説明】
【図1】本発明による実施例の構成を示すブロック図である。
【図2】RAM3に設けられる演奏情報play_datのデータ構造を示す図である。
【図3】RAM3に設けられる練習結果データベースparct_recのデータ構造を示す図である。
【図4】RAM3に設けられる処理情報nowplayのデータ構造を示す図である。
【図5】RAM3に設けられる支援情報sup_datのデータ構造を示す図である。
【図6】RAM3に設けられる分析支援情報analized_datのデータ構造を示す図である。
【図7】メインルーチンの動作を示すフローチャートである。
【図8】演奏開始処理の動作を示すフローチャートである。
【図9】演奏開始処理の動作を示すフローチャートである。
【図10】演奏判定保存処理の動作を示すフローチャートである。
【図11】演奏判定保存処理の動作を示すフローチャートである。
【図12】変更処理の動作を示すフローチャートである。
【図13】選択処理の動作を説明するための図である。
【図14】選択画面SEGの一例を示す図である。
【図15】編集処理の動作を示すフローチャートである。
【図16】編集画面EDGの一例を示す図である。
【図17】分析処理の動作を示すフローチャートである。
【図18】線形近似処理の動作を示すフローチャートである。
【図19】線形近似処理の動作を示すフローチャートである。
【図20】算出処理の動作を示すフローチャートである。
【図21】演奏結果毎の度数分布を一次近似した一例を示す図である。
【図22】判定処理の動作を示すフローチャートである。
【図23】判定処理の動作を示すフローチャートである。
【図24】エリア分類・支援項目設定処理の動作を示すフローチャートである。
【図25】エリア分類・支援項目設定処理の動作を示すフローチャートである。
【図26】エリア分類・支援項目設定処理の動作を示すフローチャートである。
【図27】エリア分類・支援項目設定処理の動作を示すフローチャートである。
【図28】標準支援処理の動作を示すフローチャートである。
【図29】標準支援処理の動作を示すフローチャートである。
【図30】標準支援処理の動作を示すフローチャートである。
【図31】標準支援処理の動作を示すフローチャートである。
【図32】支援開始処理の動作を示すフローチャートである。
【図33】支援停止処理の動作を示すフローチャートである。
【図34】特別支援処理の動作を示すフローチャートである。
【図35】特別支援処理の動作を示すフローチャートである。
【図36】特別支援処理の動作を示すフローチャートである。
【図37】特別支援処理の動作を示すフローチャートである。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 MIDIインタフェース
5 マウス
6 キーボード
7 表示部
10 DTM装置
20 電子楽器
[0001]
BACKGROUND OF THE INVENTION
The present invention supports performance operations that are difficult to perform. Performance support information generation apparatus and performance support information generation program About.
[0002]
[Prior art]
As an apparatus that supports a user's performance operation, for example, Patent Document 1 discloses a musical score that is detected on a performance piece in a musical composition according to a pitch input to the performance and that is displayed on a display corresponding to the detected performance position. A performance support apparatus is disclosed in which the tempo deviation is pointed out to the user based on the result of comparing the pitches inputted by performance or the note data in the performance music.
[0003]
[Patent Document 1]
Japanese Patent Publication 2001-337675
[0004]
[Problems to be solved by the invention]
By the way, in the conventional performance support device described above, performance support is simply based on the result of comparing the pitch input to the performance and the note data in the performance music. However, there is a problem that it is not possible to support so as not to make a mistake in the performance of the part that wants to call attention.
The present invention has been made in view of such circumstances, and can assist in making mistakes in performances at places where it is difficult to make performance mistakes or where the user himself wants to be alerted. Performance support information generation apparatus and performance support information generation program The purpose is to provide.
[0005]
[Means for Solving the Problems]
In order to achieve the above object, according to the first aspect of the present invention, the determination result obtained by comparing the performance data generated in accordance with the performance operation and the performance information representing each note forming the task music is Practice result database means for recording history as practice result data corresponding to performance information; Practice results Each practice recorded in the database means result Included in the data Size The totaling means for counting the performance results and the frequency distribution for each performance result for each note data, the performance results totaled for each note data by the totaling means, and the frequency distribution for each performance result. An improvement degree calculating means for calculating a primary approximation function representing a correlation between the frequency distributions for each note data, and each of the subject music pieces formed from the primary approximation function for each note data calculated by the improvement degree calculation means. The degree-of-improvement judging means for judging the degree of improvement for each note, and the degree of improvement for each note forming the subject music determined by the degree-of-improvement judging means are sequentially read out from the beginning of the subject music and the read out A discriminating means for discriminating whether or not the improved degree of improvement is different from the degree of improvement read immediately before, and a discriminating difference from the next starting from the note of the degree of improvement judged to be different by the discriminating means. Section extraction means for extracting a section that ends the note immediately before the note of improvement degree, and for each section extracted by the section extraction means, support information corresponding to the improvement degree of the note at the start of the section is generated And supporting information generating means.
[0008]
According to the second aspect of the present invention, the practice data corresponding to the performance information is obtained by comparing the performance data generated in accordance with the performance operation and the performance information representing each note forming the task music. A recording process for recording history in the practice result database as result data; and Practice results Each practice recorded in the database history result Included in the data Size Each frequency distribution from the tabulation process for totalizing the performance results and the frequency distribution for each performance result for each note data, and the performance results for each note data and the frequency distribution for each performance result. The degree-of-improvement calculation process for calculating a primary approximation function representing the correlation between the notes and the degree-of-improvement for each note forming the musical composition is determined from the calculated primary approximation function for each piece of note data. The degree-of-improvement determination process and the determined degree of improvement for each note forming the subject song are sequentially read from the beginning of the subject song, and the read degree of improvement is read immediately before And a section for extracting a section starting with a note with an improvement degree determined to be different and ending with a note immediately before the note with an improvement degree determined to be different Extraction processing and this extraction Each has been section, characterized in that to execute the support information generating process of generating support information corresponding to the degree of enhancement of the note at the beginning of the section, with a computer.
[0011]
In the present invention, the result of practice obtained as practice result data corresponding to the performance information is obtained by comparing performance data generated in accordance with the performance operation and performance information representing each note forming the musical composition. Record history in the database and record each practice result Included in the data Size The performance results obtained by digitizing the fixed results and the frequency distribution for each performance result are totalized for each note data. Then, a primary approximation function representing a correlation between the frequency distributions is calculated for each note data from the totaled performance results and the frequency distribution for each performance result, and from the calculated primary approximation function for each note data. The degree of improvement for each note forming the task song is determined. Then, the determined degree of improvement for each note forming the problem music is read sequentially from the beginning of the problem music, and whether or not the read degree of improvement is different from the degree of improvement read immediately before Is extracted, and a section starting from a note with an improvement degree determined to be different and ending with a note immediately before the note with an improvement degree determined to be different next is extracted, and for each extracted section, Since the support information corresponding to the degree of improvement of the notes at the start of the section is generated, it is possible to support not to make a mistake in the performance at the weak point where the performance mistake is likely to be made.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, a DTM (desktop music) apparatus equipped with a performance support apparatus according to an embodiment of the present invention will be described as an example, and this will be described with reference to the drawings.
[0013]
A. Example configuration
(1) Overall configuration
FIG. 1 is a block diagram showing the configuration of an embodiment according to the present invention. In this figure, 10 is a DTM device comprising components 1 to 7, and 20 is an electronic musical instrument that is MIDI-connected to the DTM device 10. The electronic musical instrument 20 includes a keyboard, and outputs performance data generated in response to a user's performance operation using the keyboard. In the DTM device 10, each time performance data is input from the electronic musical instrument 20, the performance is compared with performance information representing each note of the task music, and the determination result is associated with the performance information. Recorded in a practice result database (described later) as practice result information. Further, the DTM device 10 analyzes the practice result information recorded in the practice result database to create a support item that supports the performance of the weak point that is liable to make a performance mistake, or the performance of the part that the user wants to call attention. Create support items to prevent mistakes and perform performance support based on this.
[0014]
(2) Configuration of DTM device 10
Next, the configuration of the DTM apparatus 10 will be described with reference to FIG. In FIG. 1, reference numeral 1 denotes a CPU that controls each part of the apparatus. The CPU 1 performs a performance determination every time performance data is input from the electronic musical instrument 20 side, and records the determination result in the practice result database. In addition, the CPU 1 analyzes the practice result information recorded in the practice result database to create a support item that supports the performance of a weak point that is liable to make a performance mistake, or makes a mistake in the performance that the user wants to call attention. Create a support item to prevent the performance, and support performance based on this. The processing operation of the CPU 1 relating to the gist of the present invention will be described in detail later.
[0015]
Reference numeral 2 denotes a ROM having a program area and a data area. In the program area of the ROM 2, various control programs for executing a main routine, performance start processing, standard support processing, special support processing, change processing, and analysis processing described later are stored. In the data area of the ROM 2, performance information of a subject music piece as a model is stored for a plurality of music pieces, and the performance information of the subject music piece designated for music selection is stored in the data area of the RAM 3. The data structure of performance information will be described later.
Reference numeral 3 denotes a RAM having a work area and a data area. In the work area of the RAM 3, various register / flag data used for the processing of the CPU 1 are temporarily stored. In the data area of the RAM 3, performance information “playdat”, practice result database “pract_rec”, processing information “nowplay”, support information “sup_dat” and analysis support information “analyzed_dat” are stored. The data structure of these information will be described later.
[0016]
The MIDI interface 4 captures performance data transmitted from the electronic musical instrument 20 side under the control of the CPU 1, and outputs the note-on event generated on the DTM device 10 side to the electronic musical instrument 20 as MIDI. The mouse 5 includes a right button and a left button. For example, a click event is generated in response to a known click operation in which the left button is pressed while the mouse cursor is pointed on an icon arranged on the display screen. The keyboard 6 generates an event corresponding to the key input operation. In the keyboard 6, a start switch for instructing start of processing and a stop switch for instructing stop of processing are assigned to predetermined key switches. The display unit 7 is composed of an LCD panel or the like, and displays on the screen the degree of completion or improvement of the performance technique or a weak point in accordance with a display control signal supplied from the CPU 1.
[0017]
(3) Data structure
Next, the data structure of the performance information “playdat”, the practice result database “pract_rec”, the processing information “nowplay”, the support information “sup_dat”, and the analysis support information “analyzed_dat” stored in the data area of the RAM 3 will be described with reference to FIGS.
[0018]
FIG. 2 is a memory map showing the data structure of the performance information playdat. The performance information “playdat” stored in the data area of the RAM 3 is composed of performance information “playdat [0] to [n]” corresponding to each note forming the task music. The performance information playdat [0] to [n] is addressed in the order of music progression.
The performance information playdat [i] (i = 0 to n) includes a note identification number note_id (playdat [i] [0]) for identifying a note in the task song, and a note number Note # (playdat [i] for indicating the pitch. [1]), sound generation timing Tick (playdat [i] [2]) expressed by the elapsed time from the beginning of the song, mute timing EndTick (playdat [i] [3]) expressed by the elapsed time from the beginning of the song , Status status (playdata [i] [4]) representing the processing state, and comparison result Result (playdata [i] [5]) with performance data inputted.
[0019]
The status status of the performance information “playdat [i] [4]” is “0” when no sound is generated, “1” during sound generation, and “2” when the sound is muted. In addition, the comparison result Result of the performance information playdat [i] [5] is set to an integer value of “−1” to “3”.
The meaning of each value is as follows. “−1” indicates that it is not correctly played. “0” indicates that there is no performance range. “1” indicates that it was played correctly. “2” indicates that the performance data is pressed earlier than the sounding timing of the note data of the task music. “3” indicates that the performance data was pressed later than the sounding timing of the note data of the task music.
[0020]
Next, the data structure of the practice result database pract_rec stored in the data area of the RAM 3 will be described with reference to FIG. The practice result database pract_rec stores the history of practice result data pract_rec [0] to [n] for each task music practiced.
The practice result data pract_rec [i] is a comparison between each miss count number MissTouchCnt (pract_rec [i] [0]) accumulating performance mistakes (key press mistakes) and performance information playdata [0] to [n] of the task music. It consists of practice results rslt_for_playdat0 to rslt_for_playdatn that extract the result Result.
[0021]
The practice result rslt_for_playdat corresponds to the comparison result Result of the performance information playdat [i] [5] described above. In other words, “-1” when not playing correctly, “0” when not playing, and “1” when playing correctly, the performance data was pressed earlier than the timing of the note data of the task song. “2” in this case, and “3” when the performance data is pressed later than the sound generation timing of the note data of the task music.
[0022]
Next, the data structure of the processing information nowplay stored in the data area of the RAM 3 will be described with reference to FIG. The processing information nowplay is data representing the content of performance support performed in response to the reproduction of the task music, and is composed of processing information nowplay [0] to [n].
The process information nowplay [i] (i = 0 to n) includes a process type playtype (nowplay [i] [0]) representing the supported process content, and a support start time Tick expressed by the elapsed time from the beginning of the song. (Nowplay [i] [1]), support end time EndTick (nowplay [i] [2]) expressed by the elapsed time from the beginning of the song, pointer OriginalIndex (nowplay [i]) indicating performance information playdata to be supported [3]) and a pointer NextPointer (nowplay [i] [4]) pointing to the next processing information.
The processing type playtype (nowplay [i] [0]) represents “note output” when “0”, represents character output to the screen when “1”, and returns to the screen when “2”. In the case of “3”, the sound output is represented.
[0023]
Next, the data structure of the support information sup_dat stored in the data area of the RAM 3 will be described with reference to FIG. The support information sup_dat is data that is referred to in standard support processing described later, and includes support information sup_dat [0] to [n]. The support information sup_dat [i] (i = 0 to n) includes an identifier sup_id (sup_dat [i] [0]), and a support start time Tick (sup_dat [i] [1]) expressed by the elapsed time from the beginning of the song. , Support end time EndTick (sup_dat [i] [2]), support type SupType (sup_dat [i] [3]), support data data (sup_dat [i] [4]) , A flag flag indicating whether the support is valid / invalid (sup_dat [i] [5]), a support start position SupStart (sup_dat [i] [6]) expressed on the score, and a support end position SupEnd expressed on the score (Sup_dat [i] [7]).
[0024]
The support type SupType (sup_dat [i] [3]) represents character string output to the screen when “1”, represents image output to the screen when “2”, and audio when “3”. Represents the output. For the support data data (sup_dat [i] [4]), a character string, a control command for image display, a file name, or the like is used. The support content defined by the support data data is output as a character string, an image, or a sound according to the support type SupType. The flag flag (sup_dat [i] [5]) is “1” when valid and “0” when invalid.
[0025]
Next, the data structure of the analysis support information analyzed_dat stored in the data area of the RAM 3 will be described with reference to FIG. The analysis support information “analyzed_dat” is data derived from the above-described practice result database “pract_rec” (see FIG. 3), and includes analysis support information “analyzed_dat [0] to [n]”. The analysis support information analyzed_dat [0] to [n] is referred to in a special support process described later.
[0026]
Similar to the support information sup_dat [i] illustrated in FIG. 5, the analysis support information analyzed_dat [i] (i = 0 to n) includes an identifier sup_id (analyzed_dat [i] [0]) and a support start time Tick (analyzed_dat [i] ] [1]), support end time EndTick (analyzed_dat [i] [2]), support type SupType (analyzed_dat [i] [3]), support data data (analyzed_data [i] [4]), flag flag (analyzed_data) [I] [5]), a support start position SupStart (analyzed_dat [i] [6]) and a support end position SupEnd (analyzed_dat [i] [7]).
[0027]
The support type SupType (sup_dat [i] [3]) represents character string output to the screen when “1”, represents image output to the screen when “2”, and audio when “3”. Represents the output. For the support data data (sup_dat [i] [4]), a character string, a control command for image display, a file name, or the like is used. The support content defined by the support data data is output as a character string, an image, or a sound according to the support type SupType.
[0028]
B. Operation of the embodiment
Next, the operation of the embodiment will be described with reference to FIGS. In the following, the operation of the main routine will be described first, and then each operation of performance start processing, change processing, analysis processing, standard support processing, and special support processing called from the main routine will be described in order.
[0029]
(1) Main routine operation
In the DTM device 10, when the main routine is executed, the CPU 1 proceeds to step S1 shown in FIG. 7, performs initialization for initializing each part of the device, and then proceeds to step S2. In step S2, it is determined whether or not there is a mode change event. The mode change event is generated in response to a click operation of a mode icon on a menu screen (not shown) displayed on the display unit 7, for example.
That is, although not shown in the figure, a performance mode icon, a standard support mode icon, a special support mode icon, a change mode icon, and an analysis mode icon are provided on the menu screen, and the mouse cursor of the mouse 5 is pointed to these icons. A mode change event occurs when a click operation is performed.
[0030]
When the mode change event occurs, the determination result in step S2 is “YES”, and the process proceeds to the next step S3, where the mode change process is executed to change the processing mode in accordance with the generated mode change event. In step S3 and subsequent steps, it is determined whether the processing mode changed in the mode changing process is “performance mode”, “standard support mode”, “special support mode”, “change mode”, or “analysis mode”. Judgment is made and a transition is made to the corresponding processing mode.
[0031]
If the changed processing mode is the performance mode, the determination result in step S4 is “YES”, a performance start process (described later) is executed via step S5, and then the other processes (step S14) are performed. The process returns to step S2.
If the changed processing mode is the standard support mode, the determination result in step S6 is “YES”. After the standard support process (described later) is executed via step S7, other processes (step S14) are performed. Then, the process returns to step S2.
[0032]
If the changed processing mode is the special support mode, the determination result in step S8 is “YES”, and after executing the special support process (described later) through step S9, other processes (step S14) are performed. Then, the process returns to step S2.
If the changed processing mode is the change mode, the determination result in step S10 is “YES”, the change process (to be described later) is executed via step S11, and then the process goes through other processes (step S14). The process returns to S2.
If the changed processing mode is the analysis mode, the determination result in step S12 is “YES”, and after performing the analysis process (described later) via step S13, the process goes through other processes (step S14). The process returns to S2.
If no mode change event occurs, the determination results in steps S2, S4, S6, S8, S10, and S12 are all “NO”, and the process returns to step S2 through other processes (step S14). .
[0033]
(2) Performance start processing operation
Next, the performance start process will be described with reference to FIGS. When the performance start process is executed through step S5 (see FIG. 7) of the main routine described above, the CPU 1 proceeds to step SA1 shown in FIG. 8 and determines whether there is a start switch event. Here, it is assumed that the user has turned on the start switch to start the performance start process.
Then, a start switch event occurs, the determination result in step SA1 is “YES”, the process proceeds to step SA2, and the stop flag is reset to zero to indicate the process start. Next, the process proceeds to step SA3, where the current time is stored in the register StartTick. Subsequently, in step SA4, it is determined whether or not there is a stop event.
[0034]
If there is no stop event, the determination result is “NO”, the process proceeds to step SA6, and it is determined whether or not the stop flag is “0”, that is, the start state is set. In the start state, since the stop flag is “0”, the determination result is “YES”, and the process proceeds to Step SA7. In step SA7, the time obtained by subtracting the time stored in the register StartTick from the current time is stored in the register NowTick as the time when the performance practice starts. Next, in step SA8, it is determined whether or not a MIDI event has occurred. That is, it is determined whether or not performance data is input from the electronic musical instrument 20 side. If there is no MIDI input, the determination result is “NO”, and the process returns to step SA4.
[0035]
On the other hand, when performance data is input from the electronic musical instrument 20 as MIDI, the determination result is “YES”, and the process proceeds to Step SA9 to execute performance determination storage processing. In the performance determination saving process, as described later, each time performance data is input from the electronic musical instrument 20 side, MIDI performance is compared with performance information “playdat” representing each note of the subject music, and the determination is made. The result is recorded in the practice result database pract_rec (see FIG. 3) as practice result information corresponding to the performance information playdat.
When the performance determination storage process is completed, the process returns to step SA4. Thereafter, in response to the stop switch being turned on, steps SA4 to SA9 are repeated until a stop event occurs, and the performance judgment saving process is executed for each MIDI input while updating the time of the register NowTick as the performance practice progresses. Go.
[0036]
Then, it is assumed that the user turns on the stop switch in order to finish playing the task piece and end the performance practice. Then, in response to the occurrence of the stop event, the determination result in step SA4 described above becomes “YES”, the process proceeds to step SA5, and the stop flag is set to “1”. Thus, when the stop state is entered, the determination result in step SA6 is “NO”, and the process proceeds to step SA10 shown in FIG.
[0037]
When the performance practice ends and the process proceeds to step SA10, the CPU 1 searches for an empty area in the practice result database pract_rec stored in the data area of the RAM 3, and obtains a pointer ipDB indicating the empty area. Next, in step SA11, the miscount number stored in the register iMissTouchCnt is registered in the database as practice result data pract_rec [ipDB] [0]. Note that the number of miscounts stored in the register iMissTouchCnt is extracted in a performance determination storage process described later.
In step SA12, the pointer i is reset to zero. In the subsequent step SA13, the presence / absence of performance information playdat [i] corresponding to the pointer i is determined. If there is no performance information playdat [i], the determination result is “NO”, and this process is completed.
[0038]
On the other hand, if the performance information “playdat [i]” exists, the determination result in step SA14 is “YES”, and the process proceeds to step SA14. In step SA14, the comparison result Result stored in the performance information playdata [i] [5] corresponding to the pointer i is stored in the practice result data pract_rec [ipDB] [i + 1]. Thereafter, the process proceeds to step SA15, the pointer i is incremented and incremented, and then the process returns to step SA13.
Thereafter, the presence / absence of performance information playdat [i] corresponding to the stepped pointer i is determined. If there is data, the comparison result Result stored in the performance information playdat [i] [5] is used as the practice result data pract_rec. Store sequentially in [ipDB] [i + 1].
[0039]
(3) Performance judgment saving process operation
Next, the performance determination storing operation will be described with reference to FIGS. When this process is executed through step SA9 (see FIG. 8) of the performance start process described above, the CPU 1 proceeds to step SB1 in FIG. 10 and determines whether or not the MIDI input event is a note-on event. To do. In the case of an event other than a note-on event, the determination result is “NO”, and this process is completed.
[0040]
If it is a note-on event, the determination result is “YES”, and the process proceeds to the next step SB2. In step SB2, the note number included in the note-on event is stored in the register tmpPitch. Subsequently, in step SB3, the current time is stored in the register NowTick. In step SB4, a pointer iPD indicating the performance information “playdat” corresponding to the performance data (note-on event) currently input by MIDI is acquired.
[0041]
Next, in step SB5, it is determined whether or not the acquired pointer iPD has reached the end of the song. If the end of the song has been reached, the determination result is “YES”, the process proceeds to the next step SB6, the stop flag is reset to zero, and this process ends.
On the other hand, if the acquired pointer iPD has not reached the end of the song, the determination result in step SB5 is “NO”, and the flow proceeds to step SB7. In step SB7, the result of subtracting a predetermined search range iLookUp from the pointer iPD indicating the current performance information is stored in the register tmpPD. Hereinafter, the register tmpPD is referred to as a search pointer tmpPD. In step SB8, it is determined whether or not the search pointer tmpPD exceeds the sum of the pointer iPD and the search range iLookUp, that is, whether or not the search range is exceeded.
[0042]
If the search pointer tmpPD exceeds the search range, that is, if the performance information playdat that matches the performance data (note-on event) input by MIDI does not exist in the search range (iPD ± iLookUp), the determination in step SB8 is made. The result is “YES”, the process proceeds to step SB9, the register iMissTouchCnt that counts the number of times of key depression is incremented, and this process is completed.
[0043]
On the other hand, if the search pointer tmpPD does not exceed the search range, the determination result in step SB8 is “NO”, and the flow proceeds to step SB10 in FIG. In step SB10, it is determined whether or not the performance information playdat [tmpPD] [4] (status status) designated by the search pointer tmpPD is “0”, that is, no sound is generated. If not sounded, the determination result is “NO”, the process proceeds to step SB11, the search pointer tmpPD is incremented and stepped, and then the process returns to step SB8 in FIG.
[0044]
On the other hand, if the performance information “playdat [tmpPD]” specified by the search pointer tmpPD is not sounded, the determination result in step SB10 is “YES”, and the process proceeds to step SB12. In step SB12, it is determined whether or not the note number Note # of the performance information playdat [tmpPD] [1] specified by the search pointer tmpPD matches the note number of the performance data stored in the register tmpPitch. If they do not match, the determination result is “NO”, the search pointer tmpPD is incremented in step SB11, and the process returns to step SB8 in FIG.
[0045]
On the other hand, if the note number Note # of the performance information playdat [tmpPD] matches the note number of the performance data, the determination result is “YES”, and the flow proceeds to step SB13. In step SB13, the key pressing timing obtained by subtracting the sound generation timing Tick of the performance information playdat [tmpPD] [2] from the time stored in the register NowTick is stored in the register ITickDist.
[0046]
Next, in step SB14, it is determined whether or not the key pressing timing stored in the register ITickDist is equal to or greater than a predetermined allowable range IOKOffset. If the key pressing timing is within the allowable range IOKOffset, the determination result is “NO”, the process proceeds to step SB15, and the performance information playdat [tmpPD] [5] (comparison result Result) indicates that the key has been correctly played. After storing the value “1”, this process is completed.
On the other hand, if the key pressing timing exceeds the allowable range IOKOffset, the determination result in step SB14 is “YES”, and the process proceeds to step SB16 to determine whether the allowable range is ITMOffset or less. If the allowable range ITMOffset is exceeded, the determination result is “NO”, the process proceeds to step SB17, and a value “0” indicating that the performance range is not within the performance range is stored in the performance information playdat [tmpPD] [5] (comparison result Result). After that, this processing is completed.
[0047]
On the other hand, if it falls within the allowable range ITMOffset, the determination result in Step SB16 is “YES”, and the flow proceeds to Step SB18. In step SB18, it is determined whether or not the key pressing timing stored in the register ITickDist is greater than “0”, that is, whether or not the performance data has been pressed later than the sound generation timing of the note data of the task music. If the key is depressed later, the determination result is “YES”, the process proceeds to step SB19, and the performance information playdat [tmpPD] [5] (comparison result Result) is later than the sounding timing of the note data of the task song. A value “3” indicating that the key has been pressed is stored, and this processing is completed.
On the other hand, if the key is pressed quickly, the determination result in step SB18 is “NO”, the process proceeds to step SB20, and the performance information playdat [tmpPD] [5] (comparison result Result) A value “2” indicating that the key is pressed earlier than the sound generation timing of the note data is stored to complete this processing.
[0048]
As described above, according to the performance start process and the performance determination storage process, each time performance data is input from the electronic musical instrument 20 according to the performance operation, the performance data is compared with the performance information “playdat” representing each note of the subject music. Then, the suitability of the performance is determined, and the determination result is recorded in the practice result database part_rec as practice result data corresponding to the performance information playdat.
[0049]
(4) Change processing operation
Next, the operation of the change process will be described with reference to FIG. When this process is executed through step S11 (see FIG. 7) of the main routine described above, the CPU 1 proceeds to step SC1 in FIG. 12 and displays a change screen on the display unit 7. Although not shown, this change screen is provided with an end icon, a selection icon, and an edit icon, and a corresponding process is executed in response to an ON operation (click operation with the mouse 5) of these icons. It has become.
[0050]
That is, when the end icon is turned on, the determination result in step SC2 is “YES”, the process proceeds to step SC3, the change screen is deleted, and this process is completed. When the selection icon is turned on, the determination result in step SC4 is “YES”, the process proceeds to step SC5, and after performing a selection process (described later) for selecting the contents of performance support, this process is completed. When the edit icon is turned on, the determination result in step SC6 is “YES”, and the process proceeds to step SC7 to execute an editing process (described later) for editing the contents of performance support, and then this process is completed.
[0051]
(5) Selection processing operation
Next, the operation of the selection process will be described with reference to FIGS. When this process is executed via step SC5 (see FIG. 12) of the change process, the CPU 1 proceeds to step SD1 in FIG. 13 and displays the selection screen frame on the display unit 7. The selection screen frame indicates the support item list display field LIST in the selection screen SEG of the example illustrated in FIG.
[0052]
Next, in steps SD2 to SD5, while stepping the pointer i, the support information sup_dat [i] [0] to [5] (see FIG. 5) corresponding to the pointer i is read from the data area of the RAM 3, and these are read out. A selection screen SEG is formed by displaying the screen as a corresponding item in the i-th frame in the support item list display field LIST.
That is, the identifier sup_id (sup_dat [i] [0]) is “number”, the support start time Tick (sup_dat [i] [1]) is “start position”, and the support end time EndTick (sup_dat [i] [2]). Is “end position”, support type SupType (sup_dat [i] [3]) is “type”, support data data (sup_dat [i] [4]) is “content”, and flag flag (sup_dat [i] [5] ) Is displayed in “Presence / absence of playback”.
[0053]
In this way, on the selection screen SEG in which the contents of the support information sup_dat are displayed in a list, the support items can be selected by the user clicking the click frame of “presence / absence of reproduction”. That is, when the click frame of “presence / absence of reproduction” is clicked, the determination result in step SD6 is “YES”, and the process proceeds to step SD7 to set the pointer i of the click frame that has been clicked. In step SD8, the value of the flag flag of sup_dat [i] [5] corresponding to the pointer i is inverted. Subsequently, in step SD9, the display of the “reproduction presence / absence” click frame corresponding to the pointer i is changed according to the flag inversion, and then the process returns to step SD6.
[0054]
As a result, as shown in the example selection screen SEG illustrated in FIG. 14, the selected support content is displayed in a state where the click frame of “presence / absence of reproduction” is blacked out. Click frame of “Presence / absence of” is displayed in white. When the user clicks on the OK icon after selecting the support item by clicking on the “playback presence / absence” click frame on the selection screen SEG, the determination result in step SD10 is “YES”, and step SD11 is performed. Then, the display of the selection screen SEG is erased and this processing is completed.
[0055]
(6) Editing process operation
Next, the editing process will be described with reference to FIGS. When this process is executed through step SC7 (see FIG. 12) of the change process described above, the CPU 1 proceeds to step SE1 in FIG. 15 and displays the edit screen EDG on the display unit 7. The edit screen EDG is a GUI screen used when editing the content of support information sup_dat, as shown in an example shown in FIG. 16, and includes a field for inputting a support location and a field for selecting support content.
[0056]
Next, in step SE2, it is determined whether or not data is input to the edit screen EDG. If there is no data input, the determination result is “NO”, and the flow proceeds to Step SE4 described later. On the other hand, when data is input, the determination result is “YES”, and the process proceeds to the next step SE3, where the input data is displayed in the field.
If the cancel icon is turned on (clicked) to cancel the input data, the determination result in step SE8 is “YES”, and the process proceeds to step SE9 to delete the input data and edit screen EDG. To complete this process.
[0057]
On the other hand, if the OK icon is turned on to update and register the input data as support information sup_dat, the determination result in step SE4 is “YES”, and the flow proceeds to step SE5. In step SE5, based on the input support position data (Tick), the insertion position in the support information sup_dat is detected and set to the pointer i. Next, in step SE6, the input data sup_dat [i] [] is inserted into the support information sup_dat [i] corresponding to the pointer i. Thereafter, the process proceeds to step SE7, after the input data is erased, the process returns to step SE2.
[0058]
As described above, in the change process including the selection process and the edit process, new support information sup_dat is set in the edit process, or the existing support information sup_dat is set, and the support information sup_dat thus edited is set. The support information sup_dat for actual performance support is selected in the selection process.
[0059]
(7) Analysis processing operations
Next, the operation of the analysis process will be described with reference to FIG. When this process is executed through step S13 (see FIG. 7) of the main routine described above, the CPU 1 proceeds to step SF1 in FIG. In step SF1, it is determined whether or not practice result data prac_rec is registered in the practice result database pract_rec (see FIG. 3). If the practice result data rac_rec is registered, the determination result is “YES”, and linear approximation processing, determination processing, and area classification / support item setting processing are executed through steps SF2 to SF4.
[0060]
(8) Operation of linear approximation processing
Next, the operation of the linear approximation process will be described with reference to FIGS. When this process is executed via step SF2 of the analysis process described above (see FIG. 17), the CPU 1 advances the process to step SG1 of FIG. 18 and initializes the pointer iDB. The pointer iDB is a pointer for searching practice result data proc_rec [0] to [n] in the practice result database pract_rec. Subsequently, in step SG2, various registers used for linear approximation are initialized.
[0061]
Next, in step SG3, it is determined whether or not the entire search result database pract_rec has been searched. When the search is completed, the determination result is “YES”, and the process proceeds to step SG4 and later. If the search is not completed in the practice result database pract_rec, the determination result is “NO”, and the flow advances to step SG9 shown in FIG.
[0062]
In step SG9, the pointer iNote is reset to zero. Next, in step SG10, it is determined whether or not the practice result data designated by the pointer iDB has been searched. When the search is completed, the determination result is “YES”, the process proceeds to step SG11, the pointer iDB is incremented, and the process returns to step SG3 in FIG.
On the other hand, if the search of the practice result data designated by the pointer iDB has not been completed, the judgment result at Step SG10 is “NO”, and the process proceeds to Step SG12. In step SG12, it is determined whether or not the practice result data proc_rec [iDB] [iNote], that is, the miss count number MissTouchCnt is not “0”.
[0063]
If the miss count number MissTouchCnt is “0”, that is, if there is no performance error in the practice result data rac_rec [iDB] specified by the pointer iDB, the practice result data rac_rec [iDB] cannot be sufficient for linear approximation. The determination result is “YES”, the process proceeds to step SG22, the pointer iNote is incremented, and the process returns to step SG10.
On the other hand, if the miss count number MissTouchCnt is not “0” and there is a performance error in the practice result data rac_rec [iDB] specified by the pointer iDB, the determination result in step SG12 is “NO”. Proceed to SG13.
[0064]
In step SG13, the register iAnlCnt [iNote] that counts the number of performance exercises for each pointer iNote is incremented and advanced. Subsequently, in step SG14, the value of the pointer iDB is added to a register sum_Time [iNote] that counts the number of practice result data for each pointer iNote. Next, in step SG15, it is determined whether the value of the practice result data part_rec [iDB] [iNote + 1], that is, the value of the practice result rslt_for_playdat is “−1”, “1”, “2 or 3”.
[0065]
If it is “−1” indicating that it is not correctly played, the process proceeds to step SG16, and “0” is stored in the register sum_tmp. If it is “1” indicating that it has been played correctly, the process proceeds to step SG17, and “1” is stored in the register sum_tmp. If it is “2 or 3” indicating that the key has been pressed earlier or later than the appropriate timing, the process proceeds to step SG18, and “0.5” is stored in the register sum_tmp.
[0066]
Next, in step SG19, the value of the register sum_tmp is added to the register sum_Rslt [iNote], and in the subsequent step SG20, the square value of the register sum_tmp is stored in the register sum_Rsq [iNote]. Further, in step SG21, a value obtained by multiplying the value of the register sum_tmp by the pointer iDB is stored in the register sum_RT [iNote].
[0067]
Here, the intended values of the register sum_Rslt [iNote], the register sum_Time [iNote], the register sum_RT [iNote], and the register sum_Rsq [iNote], which are handled as linear approximation parameters, will be described.
The performance result stored in the register sum_tmp is “0” when not played correctly, “0.5” when pressed early or late, and “1” when played correctly. . The performance result of such a value is assigned to the x-axis, and the number of exercises corresponding to this performance result is assigned to the y-axis. For example, a frequency distribution for each performance result is obtained as shown in FIG.
[0068]
In this frequency distribution, the number of exercises corresponding to the value “0” when not played correctly, the number of exercises corresponding to the value “0.5” when pressed early or late, and when played correctly The number of times of practice corresponding to the value of “1” is expressed in the form of being piled up sequentially. In order to obtain a correlation between the frequency distributions expressed as described above, the frequency distributions are linearly approximated by the least square method. According to the least square method, the slope a and the intercept b of the linear approximation function y = ax + b are expressed by the following equations (1) and (2).
a = n [Sigma] xiii- [Sigma] xi [Sigma] yi / n [Sigma] xi2-([Sigma] xi) 2 (1)
b = Σxi2Σyi−ΣxiΣxii / nΣxi2− (Σxi) 2 (2)
Here, n represents the number of data, and xi and yi represent the i-th performance result and the number of exercises. The number of data n in the above equations (1) and (2) is in the register iAnlCnt [iNote], Σxiii is in the register sum_RT [iNote], Σxi is in the register sum_Rslt [iNote], Σyi is in the register sum_Time [iNote], Σxi2 corresponds to the register sum_Rsq [iNote], respectively.
[0069]
When such linear approximation parameters are updated in steps SG19 to SG21, the process proceeds to step SG22, the pointer iNote is incremented and stepped, and then the process returns to step SG10.
Thereafter, steps SG10 to SG22 are repeated until the practice result data designated by the pointer iDB is read, and the linear approximation parameters are sequentially updated. To do. When the practice result data designated by the pointer iDB has been read, the determination result in step SG10 is “YES”, the process proceeds to step SG11, and the pointer iDB is incremented and stepped. Thereafter, the process is returned to step SG3 shown in FIG. 18, and it is determined whether or not all the practice result data stored in the practice result database pract_rec has been read out. Proceed with the process.
[0070]
In steps SG4 to SG8 shown in FIG. 18, the slope a of the linear approximation function y = ax + b by the least square method based on the linear approximation parameter updated in accordance with the performance result and the number of exercises for each note of the task music and The intercept b is calculated by the above formulas (1) and (2).
That is, in step SG4, the pointer iNote is first reset to zero, and in the subsequent step SG5, it is determined whether or not the linear approximation parameter has been read. If the reading has not been completed, the determination result is “NO”, and the flow proceeds to the next Step SSG6. In step SG6, it is determined whether the value (practice number) of the register iAnlCnt [iNote] corresponding to the pointer iNote is “0”, that is, whether or not the note of the task music specified by the pointer iNote is being practiced. If it is not practiced and the number of times of practice is “0”, the determination result is “YES”, and the process proceeds to Step SG8 described later.
[0071]
On the other hand, if it is practiced, the determination result is “NO”, the process proceeds to step SG7, and the calculation process is executed. When the calculation process is executed, the CPU 1 substitutes the linear approximation parameter corresponding to the pointer iNote in the above formulas (1) and (2) in steps SG7-1 and SG7-2 in FIG. The slope a and the intercept b of the linear approximation function y = ax + b are calculated, the calculated slope a is stored in the register grad [iNote], and the calculated intercept b is stored in the register root [iNote]. Thereafter, the process proceeds to step SG8 in FIG. 18, the pointer iNote is incremented and incremented, and then the process returns to step SG5 described above.
[0072]
Thereafter, steps SG5 to SG8 are repeated until all linear approximation parameters have been read out, and the slope a and intercept b of the primary approximation function for each note of the task music are based on the linear approximation parameters corresponding to the incremented pointer iNote. Is stored in the register grad [iNote] and the register root [iNote]. When all the linear approximation parameters have been read, the determination result in step SG5 is “YES”, and this process is completed.
As described above, in the linear approximation process, the performance result and the number of times of practice for each note of the task music are extracted based on the practice result data recorded in the history in the practice result database pract_rec, and the linearity updated according to this is extracted. The slope a and the intercept b of the linear approximation function y = ax + b by the least square method are calculated for each note of the task music according to the approximate parameter.
[0073]
(9) Operation of judgment processing
Next, the operation of the determination process will be described with reference to FIGS. When this process is executed through step SF3 of the analysis process (see FIG. 17) described above, the CPU 1 advances the process to step SH1 in FIG. 22, and stores the improvement degree determination result for each note of the task song. iProgress [] is reset to zero. Next, in step SH2, the pointer iNote is reset to zero, and in the subsequent step SH3, it is determined whether or not the degree of improvement for the number of note data has been determined.
[0074]
If the determination has not been completed, the determination result is “NO”, and the flow proceeds to step SH4. In step SH4, it is determined whether or not the value (practice count) of the register iAnlCnt [iNote] obtained by the linear approximation process is not “0”, that is, whether or not the note data specified by the pointer iNote is practiced. To do. If the note data specified by the pointer iNote is not practiced, the determination result is “NO”, the pointer iNote is incremented in Step SH9, and the process is returned to Step SH3 again.
[0075]
On the other hand, if the note data specified by the pointer iNote is practiced, the determination result in step SH4 is “YES”, and the process proceeds to step SH5. In step SH5, it is determined whether or not the value obtained by substituting the linear approximation parameter obtained by the above linear approximation processing into the conditional expression (3) of nΣxi2− (Σxi) 2 is “0”. Conditional expression (3) corresponds to the denominator of expression (1) for calculating the slope a of the linear approximation function y = ax + b. Therefore, in this step SH5, it is determined whether linear approximation is possible. Hereinafter, the description of the operation will be made separately for cases where linear approximation cannot be performed and cases where linear approximation cannot be performed.
[0076]
a. When linear approximation cannot be performed
In this case, since the value of conditional expression (3) is “0”, the determination result in step SH5 is “YES”, and the flow proceeds to the next step SH6. In step SH6, it is determined whether or not the value obtained when the linear approximation parameter obtained by the above-described linear approximation process is substituted into the conditional expression (4) Σxi / n is “1”. Conditional expression (4) represents the average value of the performance results, and a case where this is “1” indicates that there was no performance error and that all were played correctly.
Therefore, if the note data (notes) are played correctly without any performance mistakes, the judgment result at step SH6 is “YES”, and the process proceeds to step SH7, where a judgment value indicating the completion period when all the notes are played correctly without any performance mistakes. After “5” is stored in the register iProgress, the process proceeds to step SH9, the pointer iNote is incremented, and the process returns to the above-described step SH3.
[0077]
On the other hand, when the value of the conditional expression (4) is not “1”, that is, as shown in FIG. 21A, the performance result “0.5” when the key is pressed earlier or later than the appropriate timing. When only the frequency distribution exists, the determination result in step SH6 is “NO”, the process proceeds to step SH8, and the determination value “1” indicating that the practice is in the initial stage is stored in the register iProgress [iNote]. Thereafter, the pointer iNote is incremented in step SH9, and then the process returns to step SH3 described above.
[0078]
b. When linear approximation is possible
In this case, the determination result in step SH5 described above is “NO”, the process proceeds to step SH10 and subsequent steps shown in FIG. 23, and the linear approximation parameter obtained by the linear approximation processing described above, the slope a of the linear approximation function (register grad [iNote). ]) And the intercept b (register root [iNote]). First, in step SE10, it is determined whether or not the following conditional expression (5) is satisfied.
grad [iNote]> ParamErr + iAnlCnt [iNote] × 2/3 and root [iNote]> ParamErr + iAnlCnt [iNote] / 6 (5)
Here, grad [iNote] represents the slope a, ParamErr represents the allowable error, iAnlCnt [iNote] represents the number of exercises (denoted as Npract), and root [iNote] represents the intercept b.
[0079]
Therefore, conditional expression (5) indicates whether the slope a of the linear approximation function obtained for the note data specified by the pointer iNote is greater than 2 × Nprac / 3 + ParamErr and whether the intercept b of the linear approximation function is greater than Nprac / 6 + ParamErr. That is, it is determined whether the improvement period shown in FIG. When the improvement period falls, the determination result is “YES”, the process proceeds to step SH11, and the determination value “2” indicating that it is in the improvement period is stored in the register iProgress [iNote]. Thereafter, the pointer iNote is incremented in step SH9 in FIG. 22, and then the process returns to step SH3.
[0080]
On the other hand, if the conditional expression (5) is not satisfied and the improvement period is not met, the determination result in step SH10 is “NO”, and the flow proceeds to step SH12. In step SH12, it is determined whether the following conditional expression (6) is satisfied.
grad [iNote] <iAnlCnt [iNote] × 2 / 3-ParamErr and root [iNote] <iAnlCnt [iNote] / 6-ParamErr (6)
[0081]
Therefore, conditional expression (6) indicates that the slope a of the linear approximation function obtained for the note data designated by the pointer iNote is 2 × Nprac / 3−ParamErr. small And the intercept b of the linear approximation function is from Nprac / 6-ParamErr small It is determined whether or not, that is, whether or not the completion period shown in FIG. When the completion period is satisfied, the determination result is “YES”, the process proceeds to step SE13, and the determination value “4” indicating the completion period is stored in the register iProgress [iNote]. Thereafter, the pointer iNote is incremented in step SH9 in FIG. 22, and then the process returns to step SH3.
[0082]
On the other hand, if the conditional expression (6) is not satisfied and it does not fall into the completion period, the determination result in step SE12 is “NO”, and the flow proceeds to step SE14. In step SE14, it is determined whether or not the following conditional expression (7) is satisfied.
sum_Rslt [iNote] / iAnlCnt [iNote]> 0.5 (7)
Conditional expression (7) represents an average value (Σxi / n) of performance results, and whether or not this is larger than “0.5”, that is, whether or not it corresponds to the stable period shown in FIG. to decide. If the stable period is satisfied, the determination result is “YES”, the process proceeds to step SH15, and the determination value “3” indicating that the stable period is reached is stored in the register iProgress [iNote]. Thereafter, the pointer iNote is incremented in step SH9 in FIG. 22, and then the process returns to step SH3.
On the other hand, if the conditional expression (7) is not satisfied and the stable period is not satisfied, the determination result in step SH14 is “NO”, the process proceeds to step SH16, and the determination value “2” indicating that it is in the improvement period is set. After storing in the register iProgress [iNote], the pointer iNote is incremented in step SH9 in FIG. 22, and then the process returns to step SH3.
[0083]
Thereafter, step SH3 and subsequent steps are repeated until the pointer iNote reaches the note data number NOTES, and the linear approximation parameter obtained by the linear approximation process, the slope a of the linear approximation function (register grad [iNote]) and the intercept b (register root [iNote] ]) Is read out in accordance with the pointer iNote, and each note data of the assignment music is in any of the stages of “early practice”, “improvement period”, “stable period”, “completion period”, and “completion period”. And a determination value representing the corresponding stage is set. When all the determinations are completed, the determination result in step SH3 (FIG. 22) is “YES”, and this process is completed.
[0084]
(10) Area classification / support item setting processing operation
Next, the operation of the area classification / support item setting process will be described with reference to FIGS. When this process is executed through step SF4 of the analysis process (see FIG. 17) described above, CPU 1 proceeds to step SJ1 in FIG. 24, resets pointer iCnt to zero, and in subsequent step SJ2, sets pointer iNote. While resetting to zero, the detection flag iFound is set to “0”. Next, in step SJ3, it is determined whether or not the determination value for each note data is being read from the register iProgress [iNote] in accordance with the pointer iNote. If it is being read, the determination result is “YES”, and the flow proceeds to step SJ4.
[0085]
In step SJ4, it is determined whether or not the detection flag iFound is not “0” and whether or not the determination value has not been read yet. If the determination value is not yet read, the determination result is “NO”, and the process proceeds to step SJ12 and subsequent steps shown in FIG. In step SJ12 and subsequent steps, processing corresponding to the determination value read from the register iProgress [iNote] is executed according to the pointer iNote. Hereinafter, an operation in each case where the determination value read from the register iProgress [iNote] is “1”, “2 or 3” and “4” will be described.
[0086]
a. When the judgment value is “1” (in the initial practice)
If the determination value read from the register iProgress [iNote] is “1”, the determination result in step SJ12 shown in FIG. 25 is “YES”, the process proceeds to step SJ13, and “1” is set to the detection flag iFound. Next, in step SJ14, a value obtained by subtracting the constant DATA_NG_GATE from the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analyzed_dat [iCnt] [6] (support start position SupStart). That is, the support start position SupStart for “early practice” is set. Subsequently, in step SJ15, the performance information “playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information“ analyzed_dat [iCnt] [7] ”(support end position SupEnd) and the support end for“ early practice ”ends The position SupEnd is set.
[0087]
Next, in step SJ16, DATA_NG_TYPE representing the output form for “early practice” is stored in the analysis support information analyzed_dat [iCnt] [3] (support type SupType). Then, the process proceeds to step SJ17, and DATA_DEFAULT_NG representing the support content for “early practice” is stored in the analysis support information analyzed_data [iCnt] [4] (support data data).
Next, in step SJ18, “1” is set in the analysis support information analyzed_dat [iCnt] [5] (flag flag). In step SJ19, the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analyzed_dat [iCnt] [1] (support start time Tick). In step SJ20, the performance information playdat [iNote] [3] (silence timing EndTick) is stored in the analysis support information analyzed_dat [iCnt] [2] (support end time EndTick).
[0088]
Thus, when the analysis support information analyzed_dat [iCnt] [1] to [7] corresponding to “early practice” is generated, the CPU 1 executes steps SJ21 to SJ25. In steps SJ21 to SJ25, the support information sup_dat [iSup] [2] (support end time EndTick) set at a timing later than the performance information playdat [iNote] [2] (sound generation timing Tick) while the pointer iSup is stepped up. )
[0089]
When the corresponding support information sup_dat [iSup] [2] (support end time EndTick) is searched, the support information sup_dat [iSup] [1] (support start time Tick) and the performance information playdata [iNote] [2] ( It is determined whether or not the sound generation timing Tick) matches, and if they match, the support information sup_dat [iSup] [5] (flag flag) is set in the analysis support information analyzed_dat [iCnt] [5] (flag flag). To do. Thus, when the support information sup_dat and the analysis support information analyzed_dat compete, the support information sup_dat is given priority. When the search for the competing portion is completed, the determination result in step SJ22 is “YES”, and the process returns to step SJ3 in FIG.
[0090]
b. When the judgment value is “2 or 3” (in the improvement period or stable period)
If the determination value read from the register iProgress [iNote] is “2 or 3”, the determination result in step SJ26 shown in FIG. 26 is “YES”, the process proceeds to step SJ27, and “2” is set to the detection flag iFound. To do. Next, in step SJ28, the value obtained by subtracting the constant DATA_CAUT_GATE from the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analyzed_dat [iCnt] [6] (support start position SupStart). That is, the support start position SupStart for “improvement period or stable period” is set.
[0091]
Subsequently, in step SJ29, the performance information “playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information“ analyzed_dat [iCnt] [7] ”(support end position SupEnd) for“ improvement period or stable period ”. The support end position SupEnd is set. Next, in step SJ30, DATA_CAUT_TYPE representing the output form for “improvement period or stable period” is stored in the analysis support information “analyzed_dat [iCnt] [3]” (support type SupType). Then, the process proceeds to step SJ31, and DATA_DEFAULT_CAUT representing the support content for “improvement period or stable period” is stored in the analysis support information analyzed_data [iCnt] [4] (support data data).
[0092]
Next, in step SJ32, “1” is set in the analysis support information analyzed_dat [iCnt] [5] (flag flag). In step SJ33, the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analyzed_dat [iCnt] [1] (support start time Tick). In step SJ34, the performance information playdat [iNote] [3] (silence timing EndTick) is stored in the analysis support information analyzed_dat [iCnt] [2] (support end time EndTick). Thus, when the analysis support information analyzed_dat [iCnt] [1] to [7] corresponding to the “improvement period or stable period” is generated, the CPU 1 returns the process to step SJ3 in FIG.
[0093]
In the case of the above-described initial practice, if the support information sup_dat and the analysis support information analyzed_dat compete, the support information sup_dat side is given priority. However, in the improvement period or the stable period, the analysis support information analyzed_dat has priority. It is supposed to be. Further, when the support information sup_dat and the analysis support information analyzed_dat compete in the improvement period or the stable period, the support information sup_dat side may be prioritized.
[0094]
c. When the judgment value is “4” (when completed)
If the determination value read from the register iProgress [iNote] is “4”, the determination result in step SJ35 shown in FIG. 27 is “YES”, the process proceeds to step SJ36, and “4” is set to the detection flag iFound. Next, in step SJ37, a value obtained by subtracting the constant DATA_OK_GATE from the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analyzed_dat [iCnt] [6] (support start position SupStart). That is, the support start position SupStart for “completion period” is set.
[0095]
Subsequently, in step SJ38, the performance information “playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information“ analyzed_dat [iCnt] [7] ”(support end position SupEnd) and the support completion for“ completion period ”is completed. The position SupEnd is set. Next, in step SJ39, DATA_OK_TYPE representing an output form for “completion period” is stored in analysis support information analyzed_dat [iCnt] [3] (support type SupType). Then, the process proceeds to step SJ40, and DATA_DEFAULT_OK representing the support content for “completion period” is stored in the analysis support information analyzed_data [iCnt] [4] (support data data).
[0096]
Next, in step SJ41, “1” is set in the analysis support information analyzed_dat [iCnt] [5] (flag flag). In step SJ42, the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analyzed_dat [iCnt] [1] (support start time Tick). In step SJ43, the performance information playdat [iNote] [3] (silence timing EndTick) is stored in the analysis support information analyzed_dat [iCnt] [2] (support end time EndTick). Thus, when the analysis support information analyzed_dat [iCnt] [1] to [7] corresponding to the “completion period” is generated, the CPU 1 returns the process to step SJ3 in FIG.
[0097]
In the case of the above-described initial practice, when the support information sup_dat and the analysis support information analyzed_dat compete, the support information sup_dat side is given priority. However, in the completion period, the analysis support information analyzed_dat is given priority. It has become. Further, even when the support information sup_dat and the analysis support information analyzed_dat compete in the completion period, the support information sup_dat side may be prioritized.
[0098]
As described above, when the analysis support information analyzed_dat [iCnt] [1] to [7] corresponding to the determination value is generated and the process returns to step SJ3 in FIG. 24, the determination value corresponding to the pointer iNote is read. In the middle of step SJ3, the determination result in step SJ3 is “YES”, and the process proceeds from step SJ4 onward. In step SJ4, it is determined whether or not the detection flag iFound is not “0”. In this case, since the detection flag iFound is not “0”, the determination result is “YES”, and the flow proceeds to Step SJ5. In step SJ5, it is determined whether or not the determination value of the register iProgress [iNote] matches the detection flag iFound. If they match, the determination result is “NO” and the process proceeds to step SJ9 described later. If they do not match, the determination result is “YES” and the process proceeds to step SJ6.
[0099]
In step SJ6, the detection flag iFound is reset to zero, and in the subsequent step SJ7, the previous performance information playdat [iNote-1] [3] (silence timing EndTick) is converted to analysis support information analyzed_dat [iCnt] [2] ( It is stored in the support end time (EndTick). Next, in step SJ8, the pointer iCnt is incremented, and in step SJ9, the pointer iNote is incremented, and the process returns to step SJ3.
In step SJ3, when the reading of the determination value corresponding to the pointer iNote is completed, the determination result here is “NO”, and the process proceeds to step SJ10 to determine whether or not the detection flag iFound is not “0”. . If the detection flag iFound is “0”, the determination result is “NO”, and this processing is completed. On the other hand, if the detection flag iFound is not “0”, the determination result is “YES”, the process proceeds to step SJ11, and the last time of the song is stored in the analysis support information “analyzed_dat [iCnt] [2]” (support end time EndTick). To finish this process.
[0100]
As described above, in the analysis process including the linear approximation process, the determination process, and the area classification / support item setting process, the practice result data recorded in the history of the practice result database pract_rec is analyzed, and the weak points that are likely to make performance mistakes are analyzed. Support items to support performance are created.
[0101]
(11) Standard support processing operation
Next, the operation of the standard support process will be described with reference to FIGS. When the standard support process is executed through step S7 (see FIG. 7) of the main routine described above, the CPU 1 proceeds to step SK1 shown in FIG. 28 and determines whether there is a start switch event. Here, it is assumed that the user turns on the start switch to start the special support process.
Then, a start switch event occurs, the determination result in step SK1 becomes “YES”, the process proceeds to step SK2, and the stop flag is reset to zero to indicate the start of the special support process. Next, the process proceeds to step SK3, where the current time is stored in the register StartTick. Subsequently, in step SK4, the pointers iPD, iSD, iFirst and pointer iLast are each reset to zero.
[0102]
Next, in step SK5, it is determined whether or not there is a stop event. If there is no stop event, the determination result is “NO”, the process proceeds to step SK7, and it is determined whether or not the stop flag is “1”, that is, the stop state is set. In the start state, since the stop flag is “0”, the determination result is “NO”, and the process proceeds to Step SK7.
On the other hand, if a stop event occurs in response to an operation of turning on the stop switch, the determination result in step SK5 is “YES”, the process proceeds to step SK6, and the stop flag is set to “1”. When the stop flag is set to “1”, the determination result in step SK7 is “YES”, and this process is completed.
[0103]
Now, when the stop flag becomes “0” in response to the ON operation of the start switch, the determination result in step SK7 becomes “NO”, and the process proceeds to step SK8 shown in FIG. In step SK8, the current time is stored in the register NowTick. Subsequently, at step SK9, the value of the pointer iFirst is set to the pointer i. In step SK10, it is determined whether the pointer i matches the pointer iLast.
At the time of initialization, both pointers match, so the determination result is “YES”, and the process proceeds to step SK11. In step SK11, it is determined whether or not the current time has passed the support end time EndTick (nowplay [i] [2]). If the current time does not exceed the support end time EndTick, the determination result is “NO”, and the flow proceeds to step SK16 described later.
[0104]
On the other hand, if the current time has passed the support end time EndTick, the determination result in step SK11 is “YES”, the process proceeds to step SK12, and the support stop process is executed. When the support stop process is executed, the CPU 1 advances the process to step SK12-1 in FIG. 33, and the support data data (sup_dat [i] [4]) in the support information sup_dat (see FIG. 5) is being reproduced. Determine whether or not. If it is not played back, the determination result is “NO”, and the support stop process is completed without performing anything. If it is being played back, the determination result is “YES”, and the process proceeds to step SK12-2. After the reproduction of the support data data is stopped, the support stop process is completed.
[0105]
When the support stop process is completed, the CPU 1 proceeds to step SK13 in FIG. 29, and sets a pointer OriginalIndex (nowplay [i] [3]) indicating the performance information playdata to be supported in the pointer tmpPD. Next, in step SK14, it is determined whether or not the value of the performance information playdat [tmpPD] [5] (comparison result Result) corresponding to the pointer tmpPD is “0”.
If it is not “0” representing outside the performance range, the determination result is “NO”, and the process proceeds to step SK16 described later. If “0”, the determination result is “YES”, and the process proceeds to step SK15. A determination value “−1” is set in the performance information “playdat [tmpPD] [5]” (comparison result Result) to indicate that the performance information is not correctly played. In step SK16, a pointer (nowplay [i] [4]) indicating next processing information is set to the pointer i, and the process returns to step SK10.
[0106]
If the determination result in step SK10 is “NO” in accordance with the increment of the pointer i, the CPU 1 advances the process to step SK17 shown in FIG. In step SK17, it is determined whether or not the current time NowTick has passed the sound generation timing Tick (playdat [iPD] [2]) of the performance information playdat. If the current time NowTick is before the sound generation timing Tick, the determination result is “NO”, and the process proceeds to step SK22 shown in FIG. 31, but if the sound generation timing Tick has passed, the determination result is “YES”, and the step Proceed to SK18.
In step SK18, note-on processing is executed to instruct the electronic musical instrument 20 to generate a musical tone having a pitch specified by the performance information playdat [iPD] [1] (note number Note #). Thus, performance support for reproducing performance information playdat [iPD] that is not performed even after the sound generation timing Tick is performed is performed.
[0107]
In step SK19, an empty area in the processing information nowplay is searched, and a pointer value indicating the empty area is set in the pointer iSet. Next, in step SK20, the process information nowplay [iSet] is updated and registered as the note-on process is executed in step SK18. That is, the processing type playtype (nowplay [iSet] [0]) has a value “0” representing the note output, and the support start time Tick (nowplay [iSet] [1]) has the sound generation timing Tick (playdata [iPD] [2]). ).
[0108]
Also, the mute timing EndTick (playdat [iPD] [3]) at the support end time EndTick (nowplay [iSet] [2]) and the pointer OriginalIndex (nowplay [iSet] [3]) indicating the performance information playdat to be supported. To store the pointer iPD. Furthermore, after the pointer iSet is stored in the pointer NextPointer of the previous processing information nowplay [iLast] [4], the pointer iLast is updated to the pointer iSet. Then, the process proceeds to step SK21, the pointer iPD is incremented, and then the process proceeds to step SK22 in FIG.
[0109]
In step SK22, the flag flag of the support information sup_dat [iPD] [5] corresponding to the pointer iPD is “1”, and the current time NowTick has passed the support start time Tick (sup_dat [iPD] [1]). Determine whether or not. If the flag flag is set to “0” to indicate that the performance support is invalid, or if the current time NowTick is before the support start time Tick, the determination result here is “NO”, and step SK1 shown in FIG. Return processing to.
On the other hand, if the flag flag is set to “1” to indicate that the performance support is valid and the support start time Tick has passed, the determination result is “YES”, the process proceeds to step SK23, and the support start process is executed. .
[0110]
When the support start process is executed, the CPU 1 advances the process to step SK32-1 in FIG. 32, and determines whether the support type SupType of the support information sup_dat [iSD] [3] is “1” to “3”. to decide. When the support type SupType is “1”, the process proceeds to step SK23-2, and the support data “support_data [iSD] [4]” is output to the display screen of the display unit 7 as a character string. If the support type SupType is “2”, the process proceeds to step SK23-3, and the support data data of the support information sup_dat [iSD] [4] is output to the display screen of the display unit 7. When the support type SupType is “3”, the process proceeds to step SK23-4, and the support data data of the support information sup_dat [iSD] [4] is output as voice.
[0111]
When performance support is performed using the support data data of the support information sup_dat [iSD] [4] in this way, the CPU 1 proceeds to step SK24 in FIG. 31 to search for a free area in the processing information nowplay and to indicate a pointer value indicating the free area. Is set to the pointer iSet. Subsequently, in step SK25, the process information nowplay [iSet] is updated and registered with the execution of the support start process.
[0112]
That is, the support type SupType of the support information sup_dat [iSD] [3] is stored in the processing type playtype (nowplay [iSet] [0]). The support start time Tick of the support information sup_dat [iSD] [1] is stored in the support start time Tick (nowplay [iSet] [1]). The support end time EndTick of the support information sup_dat [iSD] [2] is stored in the support end time EndTick (nowplay [iSet] [2]). The pointer iSD is stored in the pointer OriginalIndex (nowplay [iSet] [3]) indicating the performance information playdata to be supported. After the pointer iSet is stored in the pointer NextPointer of the previous processing information nowplay [iLast] [4], the pointer iLast is updated to the pointer iSet. Then, the process proceeds to step SK26, the pointer iSD is incremented, and the process returns to step SK1 in FIG. Thereafter, the above-described operation is repeated until the stop switch is turned on.
[0113]
(12) Special support processing operations
Next, the operation of the special support process will be described with reference to FIGS. When the special support process is executed through step S9 (see FIG. 7) of the main routine described above, the CPU 1 proceeds to step SL1 shown in FIG. 34 and determines whether there is a start switch event. Here, it is assumed that the user turns on the start switch to start the special support process.
Then, a start switch event occurs, the determination result in step SL1 becomes “YES”, the process proceeds to step SL2, and the stop flag is reset to zero to indicate the start of the special support process. Next, the process proceeds to step SL3, where the current time is stored in the register StartTick. Subsequently, in step SL4, the pointers iPD, iAD, iFirst, and iLast are each reset to zero.
[0114]
Next, in step SL5, it is determined whether or not there is a stop event. If there is no stop event, the determination result is “NO”, the process proceeds to step SL7, and it is determined whether or not the stop flag is “1”, that is, the stop state is set. In the start state, since the stop flag is “0”, the determination result is “NO”, and the process proceeds to step SL7.
On the other hand, when a stop event occurs in response to an operation of turning on the stop switch, the determination result in step SL5 is “YES”, the process proceeds to step SL6, and the stop flag is set to “1”. When the stop flag is set to “1”, the determination result in step SL7 is “YES”, and this process is completed.
[0115]
Now, when the stop flag becomes “0” in response to the ON operation of the start switch, the determination result in step SL7 becomes “NO”, and the process proceeds to step SL8 shown in FIG. In step SL8, the current time is stored in the register NowTick. Subsequently, at step SL9, the value of the pointer iFirst is set to the pointer i. In step SL10, it is determined whether or not the pointer i matches the pointer iLast.
At the time of initialization, both pointers match, so the determination result is “YES”, and the process proceeds to step SL11. In step SL11, it is determined whether or not the current time has passed the support end time EndTick (nowplay [i] [2]). If the current time does not exceed the support end time EndTick, the determination result is “NO”, and the flow proceeds to step SK16 described later.
[0116]
On the other hand, if the current time has passed the support end time EndTick, the determination result in step SL11 is “YES”, the process proceeds to step SL12, and the support stop process is executed. In the support stop process executed in the special support process, it is determined whether or not the support data data (analyzed_dat [i] [4]) in the analysis support information analyzed_dat (see FIG. 6) is being played back. In this case, the reproduction of the support data data is stopped.
[0117]
When the support stop process is completed, the CPU 1 proceeds to step SL13 in FIG. 35, and sets a pointer OriginalIndex (nowplay [i] [3]) indicating the performance information playdata to be supported in the pointer tmpPD. Next, in step SL14, it is determined whether or not the value of the performance information playdat [tmpPD] [5] (comparison result Result) corresponding to the pointer tmpPD is “0”.
If it is not “0” representing outside the performance range, the determination result is “NO”, and the process proceeds to Step SL16 described later. If “0”, the determination result is “YES”, and the process proceeds to Step SL15. A determination value “−1” is set in the performance information “playdat [tmpPD] [5]” (comparison result Result) to indicate that the performance information is not correctly played. In step SL16, a pointer (nowplay [i] [4]) indicating next processing information is set to the pointer i, and the process returns to step SL10.
[0118]
If the determination result in step SL10 is “NO” in accordance with the increment of the pointer i, the CPU 1 advances the process to step SL17 shown in FIG. In step SL17, it is determined whether or not the current time NowTick has passed the sound generation timing Tick (playdat [iPD] [2]) of the performance information playdat. If the current time NowTick is before the sounding timing Tick, the determination result is “NO”, and the process proceeds to step SL22 shown in FIG. 37. If the sounding time Tick has passed, the determination result is “YES”, and the step Proceed to SL18. In step SL18, note-on processing is performed to instruct the electronic musical instrument 20 to generate a musical tone having a pitch specified by the performance information playdat [iPD] [1] (note number Note #). Thus, performance support for reproducing performance information playdat [iPD] that is not performed even after the sound generation timing Tick is performed is performed.
[0119]
In step SL19, an empty area in the processing information nowplay is searched, and a pointer value indicating the empty area is set in the pointer iSet. Next, in step SL20, the process information nowplay [iSet] is updated and registered with the execution of the note-on process.
[0120]
That is, the value “0” representing the note output is stored in the processing type playtype (nowplay [iSet] [0]). The sound generation timing Tick (playdat [iPD] [2]) is stored at the support start time Tick (nowplay [iSet] [1]). The mute timing EndTick (playdat [iPD] [3]) is stored at the support end time EndTick (nowplay [iSet] [2]). The pointer iPD is stored in a pointer OriginalIndex (nowplay [iSet] [3]) that points to performance information playdata to be supported. After the pointer iSet is stored in the pointer NextPointer of the previous processing information nowplay [iLast] [4], the pointer iLast is updated to the pointer iSet. Then, the process proceeds to step SK21, the pointer iPD is incremented, and then the process proceeds to step SL22 in FIG.
[0121]
In step SL22, the flag flag of the analysis support information “analyzed_dat [iAD] [5]” corresponding to the pointer iPD is “1”, and the current time NowTick has passed the support start time Tick (analyzed_dat [iPD] [1]). Judge whether or not. If the flag flag is set to “0” to indicate that the performance support is invalid, or if the current time NowTick is before the support start time Tick, the determination result here is “NO”, and step SL1 in FIG. Return processing.
On the other hand, if the flag flag is set to “1” to indicate that the performance support is valid and the support start time Tick has passed, the determination result is “YES”, and the support start process is executed via step SL23. .
[0122]
The support start process corresponding to the special support process is similar to the support start process of FIG. 32 corresponding to the standard support process, and the support type SupType of the analysis support information “analyzed_dat [iAD] [3]” is “1” to “3”. When the support type SupType is “1”, the support data “data” of the analysis support information “analyzed_dat [iAD] [4]” is output to the display screen of the display unit 7 as a character string. When the SupType is “2”, the support data “data” of the analysis support information “analyzed_dat [iAD] [4]” is output to the display screen of the display unit 7. When the support type “SupType” is “3”, the analysis support information is output. The support data data of analyzed_data [iAD] [4] is output by voice.
[0123]
Thus, when performance support is performed using the support data “data” of the analysis support information “analyzed_dat [iAD] [4]”, the CPU 1 proceeds to step SL24 in FIG. 37, searches for a free area in the processing information “nowplay”, and points to the free area. Set the value to the pointer iSet. Subsequently, in step SL25, the process information nowplay [iSet] is updated and registered with the execution of the support start process.
[0124]
That is, the support type SupType of the analysis support information analyzed_dat [iAD] [3] is stored in the processing type playtype (nowplay [iSet] [0]). The support start time Tick of the analysis support information “analyzed_dat [iAD] [1]” is stored in the support start time Tick (nowplay [iSet] [1]). The support end time EndTick of the analysis support information “analyzed_dat [iAD] [2]” is stored in the support end time EndTick (nowplay [iSet] [2]). The pointer iAD is stored in the pointer OriginalIndex (nowplay [iSet] [3]) indicating the performance information playdata to be supported. After the pointer iSet is stored in the pointer NextPointer of the previous processing information nowplay [iLast] [4], the pointer iLast is updated to the pointer iSet. Then, the process proceeds to step SL26, the pointer iAD is incremented, and the process returns to step SL1 in FIG. Thereafter, the above-described operation is repeated until the stop switch is turned on.
[0125]
As described above, in this embodiment, every time performance data is input from the electronic musical instrument 20 side, the DTM device 10 determines whether or not the performance is appropriate by comparing with the performance information “playdat” representing each note of the subject music. In order to support the performance of weak points that are likely to make performance mistakes by recording the history in the practice result database part_rec as practice result data corresponding to the performance information playdat, and analyzing the practice result data recorded in the history. Analysis support information analyzed_dat is created, or support information sup_dat is set to support the user so as not to make a performance mistake at a location he / she wants to call attention.
Since analysis support information analyzed_dat and support information sup_dat for actual performance support are selected and performance support is provided, it is supported not to make a performance mistake at a weak point extracted from the practice history or a point where the user himself wants to be alerted. Support items can be presented during performance.
[0126]
【The invention's effect】
In the first and fourth aspects of the invention, the determination result obtained by comparing the performance data generated in response to the performance operation and the performance information representing each note forming the task music is associated with the performance information. A history record is recorded as practice result data, and the practice result data recorded in the history is analyzed to generate first support information for assisting performance at a place where it is easy to make a performance mistake. Then, since the first support information is played back according to the progress of the performance, performance support is provided, so that it is possible to support not to make a mistake in the performance at a weak point that is liable to make a performance mistake.
In the second and fifth aspects of the invention, the determination result obtained by comparing the performance data generated in response to the performance operation and the performance information representing each note forming the task music is associated with the performance information. Record history as practice result data, and analyze the history recorded practice result data to generate first support information that assists performance in areas where it is easy to make mistakes. The second support information to be supported is set. Since either the first support information or the second support information is selected, and the support information on the selected side is played back according to the progress of the performance, performance support is provided. It is possible to support not to make a mistake in the performance of the part you want to evoke.
According to the third and sixth aspects of the present invention, the determination result obtained by comparing the performance data generated in accordance with the performance operation and the performance information representing each note forming the task music is associated with the performance information. Record history as practice result data, and analyze the history recorded practice result data to generate first support information that assists performance in areas where it is easy to make mistakes. The second support information to be supported is set. Then, one of the first and second support information is selected, and support information obtained by selecting support items to be used for actual performance from the selected support information is reproduced and played according to the progress of the performance. As a result of the support, performance support using support information of support items required by the user himself / herself can be performed.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of an embodiment according to the present invention.
FIG. 2 is a diagram illustrating a data structure of performance information play_dat provided in a RAM 3;
FIG. 3 is a diagram showing a data structure of a practice result database part_rec provided in a RAM 3;
4 is a diagram showing a data structure of processing information nowplay provided in RAM 3. FIG.
FIG. 5 is a diagram illustrating a data structure of support information sup_dat provided in a RAM 3;
6 is a diagram illustrating a data structure of analysis support information analyzed_dat provided in a RAM 3. FIG.
FIG. 7 is a flowchart showing an operation of a main routine.
FIG. 8 is a flowchart showing an operation of performance start processing.
FIG. 9 is a flowchart showing an operation of performance start processing.
FIG. 10 is a flowchart showing an operation of a performance determination storage process.
FIG. 11 is a flowchart showing an operation of a performance determination storage process.
FIG. 12 is a flowchart illustrating an operation of change processing.
FIG. 13 is a diagram for explaining an operation of selection processing;
FIG. 14 is a diagram showing an example of a selection screen SEG.
FIG. 15 is a flowchart illustrating an editing process operation;
FIG. 16 is a diagram showing an example of an edit screen EDG.
FIG. 17 is a flowchart showing an analysis processing operation;
FIG. 18 is a flowchart showing an operation of linear approximation processing.
FIG. 19 is a flowchart showing the operation of linear approximation processing.
FIG. 20 is a flowchart illustrating an operation of calculation processing.
FIG. 21 is a diagram showing an example of first-order approximation of a frequency distribution for each performance result.
FIG. 22 is a flowchart illustrating an operation of determination processing.
FIG. 23 is a flowchart illustrating an operation of determination processing.
FIG. 24 is a flowchart showing an operation of area classification / support item setting processing;
FIG. 25 is a flowchart showing an operation of area classification / support item setting processing;
FIG. 26 is a flowchart showing an operation of area classification / support item setting processing;
FIG. 27 is a flowchart showing the operation of area classification / support item setting processing;
FIG. 28 is a flowchart showing an operation of a standard support process.
FIG. 29 is a flowchart showing an operation of a standard support process.
FIG. 30 is a flowchart showing an operation of a standard support process.
FIG. 31 is a flowchart showing an operation of a standard support process.
FIG. 32 is a flowchart showing the operation of support start processing.
FIG. 33 is a flowchart showing the operation of support stop processing.
FIG. 34 is a flowchart showing the operation of special support processing.
FIG. 35 is a flowchart showing the operation of special support processing.
FIG. 36 is a flowchart showing the operation of special support processing.
FIG. 37 is a flowchart showing the operation of special support processing.
[Explanation of symbols]
1 CPU
2 ROM
3 RAM
4 MIDI interface
5 mouse
6 Keyboard
7 Display section
10 DTM equipment
20 Electronic musical instruments

Claims (2)

演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、
前記練習結果データベース手段に履歴記録された各練習結果データに含まれる判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計手段と、
前記集計手段によってノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出手段と、
前記向上度算出手段によって算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定手段と、
前記向上度判定手段によって判定された、課題曲を形成する各音符毎の向上度を当該課題曲の最初から順次読み出すとともに、当該読み出された向上度がその直前に読み出された向上度と異なるか否かを判別する判別手段と、
この判別手段により異なると判別された向上度の音符から開始して次に異なると判別された向上度の音符の直前の音符を終了とする区間を抽出する区間抽出手段と、
この区間抽出手段により抽出された区間毎に、当該区間の開始時の音符の向上度に対応する支援情報を生成する支援情報生成手段と、
を具備することを特徴とする演奏支援情報生成装置。
A practice result database that records the judgment results obtained by comparing performance data generated according to the performance operation and performance information representing each note forming the musical piece as practice result data corresponding to the performance information. Means,
A collecting unit that aggregates the history recorded performance results obtained by digitizing each training results are Ru determine constant results contained in data and the frequency distribution for each play results in the practice result database means for each of the note data,
An improvement degree calculating means for calculating, for each note data, a primary approximation function representing a correlation between the frequency distributions from the performance results totaled for each note data by the counting means and the frequency distribution for each performance result;
Improvement degree determination means for determining the improvement degree for each note forming the task music from the primary approximation function for each note data calculated by the improvement degree calculation means;
The degree of improvement for each note forming the subject song, which is determined by the improvement degree determination means, is read sequentially from the beginning of the subject song, and the read degree of improvement is read immediately before that A discriminating means for discriminating whether or not they are different;
Section extracting means for extracting a section starting from a note of improvement determined to be different by the determination means and ending with a note immediately preceding the note of improvement determined to be different;
For each section extracted by the section extracting means, support information generating means for generating support information corresponding to the degree of improvement of the note at the start of the section;
A performance support information generating apparatus comprising:
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、
前記練習結果データベースに履歴記録された各練習結果データに含まれる判定結果を数値化した演奏結果と演奏結果毎の度数分布とを前記ノートデータ毎に集計する集計処理と、
前記ノートデータ毎に集計された演奏結果と演奏結果毎の度数分布とから各度数分布間の相関を表す1次近似関数を、ノートデータ毎に算出する向上度算出処理と、
前記算出されたノートデータ毎の1次近似関数から課題曲を形成する各音符毎の向上度を判定する向上度判定処理と、
前記判定された、課題曲を形成する各音符毎の向上度を当該課題曲の最初から順次読み出すとともに、当該読み出された向上度がその直前に読み出された向上度と異なるか否かを判別する判別処理と、
この異なると判別された向上度の音符から開始して次に異なると判別された向上度の音符の直前の音符を終了とする区間を抽出する区間抽出処理と、
この抽出された区間毎に、当該区間の開始時の音符の向上度に対応する支援情報を生成する支援情報生成処理と、
をコンピュータで実行させることを特徴とする演奏支援情報生成プログラム。
Record judgment results obtained by comparing performance data generated in response to performance operations and performance information representing each note forming a task song in the practice result database as practice result data corresponding to the performance information. Recording process to
A counting processing for aggregating the frequency distribution of each of the training results performance results and the performance of the stamp constant results history Ru contained in the recording each training result data into a database by digitizing results for each of the note data,
A degree-of-improvement calculation process for calculating, for each note data, a primary approximation function representing a correlation between the frequency distributions from the performance results aggregated for each note data and the frequency distribution for each performance result;
An improvement degree determination process for determining an improvement degree for each note forming the task music from the calculated linear approximation function for each note data;
The degree of improvement for each note forming the task music is sequentially read from the beginning of the task music, and whether or not the read degree of improvement is different from the degree of improvement read immediately before is determined. Discriminating process for discriminating;
A section extraction process for extracting a section starting from a note of improvement determined to be different and ending with a note immediately before the note of improvement determined to be different;
For each extracted section, support information generation processing for generating support information corresponding to the degree of improvement of the note at the start of the section;
A program for generating performance support information, which is executed by a computer.
JP2003115441A 2003-04-21 2003-04-21 Performance support information generation apparatus and performance support information generation program Expired - Fee Related JP4228346B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003115441A JP4228346B2 (en) 2003-04-21 2003-04-21 Performance support information generation apparatus and performance support information generation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003115441A JP4228346B2 (en) 2003-04-21 2003-04-21 Performance support information generation apparatus and performance support information generation program

Publications (2)

Publication Number Publication Date
JP2004318019A JP2004318019A (en) 2004-11-11
JP4228346B2 true JP4228346B2 (en) 2009-02-25

Family

ID=33474644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003115441A Expired - Fee Related JP4228346B2 (en) 2003-04-21 2003-04-21 Performance support information generation apparatus and performance support information generation program

Country Status (1)

Country Link
JP (1) JP4228346B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5344373B2 (en) * 2009-08-18 2013-11-20 カシオ計算機株式会社 Performance learning apparatus and program
JP5360510B2 (en) * 2011-09-22 2013-12-04 カシオ計算機株式会社 Performance evaluation apparatus and program

Also Published As

Publication number Publication date
JP2004318019A (en) 2004-11-11

Similar Documents

Publication Publication Date Title
CN103035142B (en) Musical performance training device and musical performance training method
JP5799977B2 (en) Note string analyzer
CN110246472B (en) Music style conversion method and device and terminal equipment
JP2007256617A (en) Musical piece practice device and musical piece practice system
JP4228346B2 (en) Performance support information generation apparatus and performance support information generation program
JP4742288B2 (en) Practice procedure generation device and practice procedure generation processing program
JP4399958B2 (en) Performance support apparatus and performance support method
JP5696435B2 (en) Code detection apparatus and program
JP4482853B2 (en) Performance diagnosis apparatus and performance diagnosis program
JPH09237088A (en) Playing analyzer, playing analysis method and memory medium
CN111542874B (en) Data generating device and recording medium
JP4221567B2 (en) Performance practice device, performance practice method and performance practice program
JP4178549B2 (en) Music learning device and music learning program
EP0367191A2 (en) Automatic music transcription method and system
EP2626781A1 (en) Electronic apparatus and audio guide program
JP4697666B2 (en) Music score display device and music score display program
JP6168117B2 (en) Musical score information generating apparatus, musical score information generating method, and program
JP2005049628A (en) Music learning device and music learning program
KR100789588B1 (en) Method for mixing music file and terminal using the same
JP7107720B2 (en) fingering display program
JP7219559B2 (en) Musical instrument performance practice device and musical instrument performance practice program
JP5825449B2 (en) Code detection device
JP4626851B2 (en) Song data editing device and song data editing program
WO2019092793A1 (en) Data generating device and program
JP2005031458A (en) Performance support device and performance support program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080326

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

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081015

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

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

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131212

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees