JP2004318019A - Apparatus and program for assisting musical performance - Google Patents

Apparatus and program for assisting musical performance Download PDF

Info

Publication number
JP2004318019A
JP2004318019A JP2003115441A JP2003115441A JP2004318019A JP 2004318019 A JP2004318019 A JP 2004318019A JP 2003115441 A JP2003115441 A JP 2003115441A JP 2003115441 A JP2003115441 A JP 2003115441A JP 2004318019 A JP2004318019 A JP 2004318019A
Authority
JP
Japan
Prior art keywords
performance
support
information
support information
practice result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003115441A
Other languages
Japanese (ja)
Other versions
JP4228346B2 (en
Inventor
Junichiro Soejima
淳一郎 副島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to 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)

Abstract

<P>PROBLEM TO BE SOLVED: To realize a musical performance assisting apparatus which assists a musical performance of a place where a musical performance miss is easy to make and a place where a user oneself wants to attract attention without any mistake. <P>SOLUTION: Each time musical performance data are MIDI-inputted from an electronic musical instrument 20, a DTM device 10 compares them with musical performance information playdat representive of respective notes of a test piece and history-records a decision result showing whether the musical performance is proper as practice result data in a practice result database pract_rec, and analyzes the history-recorded practice result data to generate analyzed assistance information analyzed_dat for assisting a musical performance of a part where a musical performance miss is easy to make and set assistance information sup_dat for assisting the user oneself not to make a musical performance miss where the user wants to attract attention. Then analyzed assistance information analyzed_dat and assistance information sup_dat for actual musical performance assistance are selected to assists a musical performance. <P>COPYRIGHT: (C)2005,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明は、苦手とする演奏操作を支援する演奏支援装置および演奏支援プログラムに関する。
【0002】
【従来の技術】
ユーザの演奏操作を支援する装置として、例えば特許文献1には、演奏入力された音高に応じて演奏曲中の演奏箇所を検出し、検出した演奏箇所に対応してディスプレイに表示される楽譜を更新したり、演奏入力された音高と演奏曲中の音符データとを比較した結果に基づいてユーザにテンポずれを指摘するようにした演奏支援装置が開示されている。
【0003】
【特許文献1】
特許公開2001−337675号公報
【0004】
【発明が解決しようとする課題】
ところで、上述した従来の演奏支援装置では、単に演奏入力された音高と演奏曲中の音符データとを比較した結果に基づいて演奏支援するだけなので、演奏ミスを犯し易い苦手箇所や、ユーザ自身が注意喚起したい箇所の演奏を間違えないように支援することができない、という問題がある。
本発明は、このような事情に鑑みてなされたもので、演奏ミスを犯し易い苦手箇所や、ユーザ自身が注意喚起したい箇所の演奏を間違えないように支援することができる演奏支援装置および演奏支援プログラムを提供することを目的としている。
【0005】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、前記練習結果データベース手段に履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生手段と、前記支援情報発生手段が発生した第1の支援情報を演奏進行に応じて再生して演奏支援する支援手段とを具備することを特徴とする。
【0006】
請求項2に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、前記練習結果データベース手段に履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生手段と、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定手段と、前記1および第2の支援情報のいずれかを選択し、選択した側の支援情報を演奏進行に応じて再生して演奏支援する支援手段とを具備することを特徴とする。
【0007】
請求項3に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、前記練習結果データベース手段に履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生手段と、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定手段と、前記第1および第2の支援情報のいずれかを選択し、選択した側の支援情報から実際の演奏に供する支援項目を取捨選択してなる支援情報を演奏進行に応じて再生して演奏支援する支援手段とを具備することを特徴とする。
【0008】
請求項4に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、この記録処理にて練習結果データベースに履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生処理と、前記支援情報発生処理にて生成した第1の支援情報を演奏進行に応じて再生して演奏支援する支援処理とをコンピュータで実行させることを特徴とする。
【0009】
請求項5に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、この記録処理にて練習結果データベースに履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生処理と、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定処理と、前記1および第2の支援情報のいずれかを選択し、選択した側の支援情報を演奏進行に応じて再生して演奏支援する支援処理とをコンピュータで実行させることを特徴とする。
【0010】
請求項6に記載の発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、この記録処理にて練習結果データベースに履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生処理と、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定処理と、前記第1および第2の支援情報のいずれかを選択し、選択した側の支援情報から実際の演奏に供する支援項目を取捨選択してなる支援情報を演奏進行に応じて再生して演奏支援する支援処理とをコンピュータで実行させることを特徴とする。
【0011】
本発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録し、履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する。そして、この第1の支援情報を演奏進行に応じて再生して演奏支援するので、演奏ミスを犯し易い苦手箇所の演奏を間違えないように支援することが可能になっている。
また、本発明では、演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録し、履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する一方、注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する。そして、前記1および第2の支援情報のいずれかを選択し、選択した側の支援情報を演奏進行に応じて再生して演奏支援するので、演奏ミスを犯し易い苦手箇所や、ユーザ自身が注意喚起したい箇所の演奏を間違えないよう支援することが可能になっている。
【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]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a performance support apparatus and a performance support program that support a performance operation that is difficult to perform.
[0002]
[Prior art]
As an apparatus for supporting a user's performance operation, for example, Patent Document 1 discloses a musical score displayed on a display in which a performance location in a performance music is detected in accordance with a pitch input for performance and a detected performance location is displayed. There is disclosed a performance support apparatus that updates the pitch of a musical note or compares a note inputted in a musical piece with a note data in a musical piece to indicate a tempo deviation to a user.
[0003]
[Patent Document 1]
Patent Publication 2001-337675
[0004]
[Problems to be solved by the invention]
By the way, in the above-mentioned conventional performance support device, performance is simply supported based on the result of comparing the input pitch and the note data in the performance music. However, there is a problem in that it is not possible to provide assistance so as not to make a mistake in the performance of the part that requires attention.
The present invention has been made in view of such circumstances, and provides a performance support device and a performance support device that can assist a user to make a mistake in a performance where a performance error is likely to occur and a location that the user himself wants to call attention to. It is intended to provide programs.
[0005]
[Means for Solving the Problems]
In order to achieve the above object, according to the first aspect of the present invention, a determination result obtained by comparing performance data generated in response to a performance operation with performance information representing each note forming a task piece is determined. A practice result database means for recording history as practice result data corresponding to performance information, and a first technique for analyzing the practice result data recorded in the practice result database means to support performance at a weak point where a performance error is likely to occur. And a support means for playing back the first support information generated by the support information generating means in accordance with the progress of the performance and supporting the performance.
[0006]
According to the second aspect of the present invention, the performance data generated in response to the performance operation and the performance information representing each note forming the task music are compared with each other, and the determination result obtained is compared with the performance information corresponding to the performance information. Practice result database means for recording the history as result data, and support for generating the first support information for assisting performance at a weak point where the practice result data recorded in the practice result database means is analyzed and which is likely to make a performance mistake. Information generation means, support information setting means for setting second support information for assisting a user to avoid a performance mistake at a place to be alerted, and selecting one of the first and second support information; Support means for reproducing the support information in accordance with the progress of the performance to support the performance.
[0007]
According to the third aspect of the present invention, the performance data generated in response to the performance operation and the performance information representing each note forming the task music are compared with each other, and a determination result obtained is compared with the performance information. Practice result database means for recording the history as result data, and support for generating the first support information for assisting performance at a weak point where the practice result data recorded in the practice result database means is analyzed and which is likely to make a performance mistake. An information generating means, a support information setting means for setting second support information for assisting a user to avoid a performance mistake at a place to be alerted, and selecting one of the first and second support information, And supporting means for playing back the support information obtained by selecting support items to be provided for the actual performance from the support information according to the progress of the performance.
[0008]
According to the fourth aspect of the present invention, a determination result obtained by comparing performance data generated in response to a performance operation with performance information representing each note forming a task piece is used as a practice result corresponding to the performance information. First support for recording a history record in the practice result database as result data, and analyzing the practice result data historically recorded in the practice result database in this recording process to support performance at a weak point where a performance error is likely to occur. A computer executes a support information generating process for generating information and a support process for playing back the first support information generated in the support information generating process in accordance with the progress of the performance and supporting the performance.
[0009]
According to the fifth aspect of the present invention, the performance data generated in response to the performance operation and the performance information representing each note forming the task music are compared with each other, and the determination result obtained is compared with the performance information. First support for recording a history record in the practice result database as result data, and analyzing the practice result data historically recorded in the practice result database in this recording process to support performance at a weak point where a performance error is likely to occur. A support information generating process for generating information, a support information setting process for setting second support information for supporting a performance mistake at a place to be alerted, and selecting one of the first and second support information. And a support process for playing back the support information of the selected side in accordance with the progress of the performance and supporting the performance by a computer.
[0010]
According to the present invention, the performance data generated in response to the performance operation and the performance information representing each note forming the task music are compared with each other, and the determination result obtained is compared with the performance information corresponding to the performance information. First support for recording a history record in the practice result database as result data, and analyzing the practice result data historically recorded in the practice result database in this recording process to support performance at a weak point where a performance error is likely to occur. Support information generating processing for generating information, support information setting processing for setting second support information for supporting a performance mistake at a place to be alerted, and selecting one of the first and second support information The support processing for playing back the support information obtained by selecting the support items to be used for the actual performance from the support information on the selected side in accordance with the progress of the performance and performing the performance support is executed by the computer. And wherein the Rukoto.
[0011]
According to the present invention, the judgment result obtained by comparing the performance data generated in response to the performance operation with the performance information representing each note forming the task music is recorded as practice result data corresponding to the performance information. Then, the training result data recorded in the history is analyzed to generate first support information for supporting the performance at the weak point where a performance error is likely to occur. Since the first support information is reproduced in accordance with the progress of the performance to support the performance, it is possible to support the performance at the weak point where a performance error is likely to be made without mistake.
Further, in the present invention, the judgment result obtained by comparing the performance data generated in response to the performance operation with the performance information representing each note forming the task music is defined as practice result data corresponding to the performance information. A history is recorded, and the history-recorded practice result data is analyzed to generate first support information for assisting performance at a weak point where a performance error is likely to occur. 2. Set the support information. Then, since either one of the first and second support information is selected, and the support information of the selected side is reproduced according to the progress of the performance and the performance is supported, the weak points that are likely to make a performance mistake, and It has become possible to support not to make a mistake in the performance of the part you want to evoke.
[0012]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, a DTM (Desktop Music) device equipped with a performance support device according to an embodiment of the present invention will be described as an example with reference to the drawings.
[0013]
A. Configuration of the embodiment
(1) Overall configuration
FIG. 1 is a block diagram showing a configuration of an embodiment according to the present invention. In this figure, reference numeral 10 denotes a DTM device including components 1 to 7, and reference numeral 20 denotes an electronic musical instrument which is connected to the DTM device 10 by MIDI. The electronic musical instrument 20 has a keyboard, and outputs MIDI performance data generated in response to a performance operation by a user using the keyboard. In the DTM device 10, each time performance data is inputted from the electronic musical instrument 20 to the MIDI, the performance is determined by comparing the performance data with performance information representing each note of the task music, and the determination result is made to correspond to the performance information. It is 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 for assisting the performance of a weak point where a performance error is likely to occur, or to perform a performance at a location that the user himself wants to call attention to. A support item is created to avoid mistakes, and performance support is provided based on the support item.
[0014]
(2) Configuration of DTM device 10
Next, the configuration of the DTM device 10 will be described with reference to FIG. In FIG. 1, reference numeral 1 denotes a CPU that controls each unit of the apparatus. The CPU 1 performs a performance determination each time performance data is input from the electronic musical instrument 20 through MIDI, and records the determination result in a practice result database. Further, the CPU 1 analyzes the practice result information recorded in the practice result database to create a support item for assisting the performance of a weak point where a performance error is likely to occur, or to make a mistake in the performance of a location that the user himself wants to call attention to. A support item is created to prevent the performance, and the performance is supported based on the support item. The processing operation of the CPU 1 according to the gist of the present invention will be described later in detail.
[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 to be described later, a performance start process, a standard support process, a special support process, a change process, and an analysis process are stored. In the data area of the ROM 2, performance information of a plurality of tunes to be used as examples is stored for a plurality of tunes, and the performance information of the tunes designated to be selected from among them is stored in the data area of the RAM 3. The data structure of the performance information will be described later.
Reference numeral 3 denotes a RAM having a work area and a data area. Various register / flag data used for the processing of the CPU 1 is temporarily stored in the work area of the RAM 3. The data area of the RAM 3 stores 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”. The data structure of these information will be described later.
[0016]
The MIDI interface 4 fetches performance data transmitted from the electronic musical instrument 20 under the control of the CPU 1, and outputs a note-on event generated on the DTM device 10 to the electronic musical instrument 20. The mouse 5 has a right button and a left button. For example, the mouse 5 generates a click event in response to a well-known click operation of pressing the left button in a state where the mouse cursor is pointed on an icon arranged on the display screen. The keyboard 6 generates an event corresponding to a key input operation. In the keyboard 6, a start switch for instructing the start of the process and a stop switch for instructing the stop of the process are assigned to predetermined key switches. The display unit 7 is constituted by an LCD panel or the like, and displays on the screen the degree of perfection or improvement of the performance technique or the weak point according to the display control signal supplied from the CPU 1.
[0017]
(3) Data structure
Next, with reference to FIGS. 2 to 6, the data structure of the performance information playdat, the practice result database practice_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.
[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] are addressed in the music progression order.
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 music, and a note number Note # (playdat [i] representing a pitch. [1]), sound generation timing Tick (playdat [i] [2]) expressed by the elapsed time from the beginning of the song, and mute timing EndTick (playdat [i] [3]) expressed by the elapsed time from the beginning of the music , Status (playdata [i] [4]) indicating the processing state, and a result Result (playdata [i] [5]) of comparison with performance data input.
[0019]
The status of the performance information playdat [i] [4] is “0” when sound is not generated, “1” during sound generation, and “2” when sound is muted. The comparison result Result of the performance information playdat [i] [5] is set to an integer value of any of “−1” to “3”.
The meaning of each value is as follows. "-1" indicates that the player has not played correctly. “0” indicates that the musical instrument is not in the performance range. "1" indicates that it was correctly played. "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 is depressed later than the sounding timing of the note data of the task music.
[0020]
Next, with reference to FIG. 3, the data structure of the practice result database “pract_rec” stored in the data area of the RAM 3 will be described. The practice result database “pract_rec” stores the history of the practice result data “pract_rec [0] to [n]” for each of the tunes for which the performance was practiced.
The practice result data “pract_rec [i]” is a comparison of the miss count number MissTouchCnt (pract_rec [i] [0]) obtained by accumulating the performance mistakes (key press mistakes) and the performance information playdat [0] to [n] of the task music. It is composed of practice results rslt_for_playdata0 to rslt_for_playdatan from which the result Result is extracted.
[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 played correctly, "0" when not in the performance range, "1" when played correctly, and the performance data is pressed earlier than the sounding timing of the note data of the task music. In this case, it becomes "2", and when the performance data is depressed later than the tone generation timing of the note data of the task music, it becomes "3".
[0022]
Next, the data structure of the process 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 contents of performance support performed in response to the reproduction of the task music, and is composed of processing information nowplay [0] to [n].
The processing information nowplay [i] (i = 0 to n) is a processing type playtype (nowplay [i] [0]) representing the supported processing content, and a support start time Tick expressed by an elapsed time from the beginning of the music piece. (Nowplay [i] [1]), the support end time EndTick (nowplay [i] [2]) expressed by the elapsed time from the beginning of the song, and a pointer OriginalIndex (nowplay [i]) indicating the performance information playdata to be supported. [3]) and a pointer NextPointer (nowplay [i] [4]) pointing to the next processing information.
When the processing type playtype (nowplay [i] [0]) is “0”, it indicates “note output”, when “1”, it indicates character output to the screen, and when “2”, it indicates screen output. Represents an image output, and "3" represents an audio output.
[0023]
Next, a 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 referred to in a standard support process described later, and includes support information sup_dat [0] to [n]. The support information sup_dat [i] (i = 0 to n) is an identifier sup_id (sup_dat [i] [0]) and a support start time Tick (sup_dat [i] [1]) represented by an elapsed time from the beginning of the music piece. , Support end time EndTick (sup_dat [i] [2]), support type SupType (sup_dat [i] [3]), support data data (sup_data [i] [4]) , A flag indicating support validity / invalidity (sup_dat [i] [5]), a support start position SupStart (sup_dat [i] [6]) represented on the score, and a support end position SupEnd represented on the score. (Sup_dat [i] [7]).
[0024]
The support type SupType (sup_dat [i] [3]) indicates a character string output to the screen when “1”, an image output to the screen when “2”, and a voice when “3”. Indicates output. A character string, a control command for image display, a file name, or the like is used as the support data data (sup_data [i] [4]). 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, a 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-mentioned practice result database “practic_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]
The analysis support information analyzed_dat [i] (i = 0 to n) includes the identifier sup_id (analyzed_dat [i] [0]) and the support start time Tick (analyzed_dat [i], similarly to the support information sup_dat [i] illustrated in FIG. ] [1]), support end time EndTick (analyzed_dat [i] [2]), support type SupType (analyzed_dat [i] [3]), support data data (analyzed_dat [i] [4]), flag flag (analyzed_dat). [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]) indicates a character string output to the screen when “1”, an image output to the screen when “2”, and a voice when “3”. Indicates output. A character string, a control command for image display, a file name, or the like is used as the support data data (sup_data [i] [4]). 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. Hereinafter, the operation of the main routine will be described first, and then the operations of the performance start process, the change process, the analysis process, the standard support process, and the special support process 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 unit of the device, and then proceeds to step S2. In step S2, it is determined whether there is a mode change event. The mode change event occurs, for example, in response to a click operation of a mode icon on a menu screen (not shown) displayed on the display unit 7.
That is, although not shown, the menu screen is provided with a performance mode icon, a standard support mode icon, a special support mode icon, a change mode icon, and an analysis mode icon, and the mouse cursor of the mouse 5 is pointed to these icons. A click operation causes a mode change event to occur.
[0030]
When a mode change event occurs, the result of the determination in step S2 becomes "YES", the process proceeds to the next step S3, and a mode change process for changing the processing mode according to the generated mode change event is executed. After step S3, it is determined whether the processing mode changed by the mode change processing is any of the "performance mode", the "standard support mode", the "special support mode", the "change mode", and the "analysis mode". Judge and transition to the corresponding processing mode.
[0031]
If the changed processing mode is the performance mode, the result of the determination in step S4 is "YES", and after performing a performance start process (described later) via step S5, 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 of step S6 becomes “YES”, and after executing the standard support processing (described later) via step S7, other processing (step S14) is 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 becomes “YES”, and after executing the special support processing (described later) via step S9, the other processing (step S14) is performed. Then, the process returns to step S2.
If the changed processing mode is the change mode, the result of the determination in step S10 becomes "YES", the change processing (described later) is performed via step S11, and the process proceeds through other processing (step S14). The process returns to S2.
If the changed processing mode is the analysis mode, the result of the determination in step S12 is “YES”, the analysis processing (described later) is performed via step S13, and then the processing is performed via other processing (step S14). The process returns to S2.
If the mode change event does not occur, the determination results in steps S2, S4, S6, S8, S10, and S12 are all "NO", and the process returns to step S2 via other processes (step S14). .
[0033]
(2) Operation of performance start processing
Next, the operation of the performance starting process will be described with reference to FIGS. When the performance start processing 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 processing.
Then, a start switch event occurs, the result of determination in step SA1 becomes "YES", the flow proceeds to step SA2, and the stop flag is reset to zero to indicate the start of processing. Next, the flow advances to step SA3 to store the current time 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", and the process proceeds to Step SA6 to determine whether the stop flag is "0", that is, whether the stop flag is set to the start state. In the start state, the stop flag is "0", so that 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 at which the performance practice started. Next, in step SA8, it is determined whether or not a MIDI event has occurred. That is, it is determined whether or not the performance data is MIDI-inputted 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 described above.
[0035]
On the other hand, when the performance data is MIDI-inputted from the electronic musical instrument 20, the determination result is "YES", the process proceeds to step SA9, and the performance determination storage process is executed. In the performance determination storage process, as described later, each time performance data is input from the electronic musical instrument 20 to the MIDI, the performance is compared with performance information playdat representing each note of the task music, and the suitability of the performance is determined. The result is recorded in the practice result database “pract_rec” (see FIG. 3) as practice result information corresponding to the performance information playdat.
Upon completion of the performance determination storage process, the process returns to step SA4 described above. Thereafter, in response to the ON operation of the stop switch, steps SA4 to SA9 are repeated until a stop event occurs, and the performance determination save processing 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 end the performance practice after playing the task music. Then, in response to the occurrence of the stop event, the result of the determination at step SA4 becomes "YES", the process proceeds to step SA5, and the stop flag is set to "1". Thus, when the vehicle enters the stop state, the determination result of step SA6 becomes “NO”, and the process proceeds to step SA10 shown in FIG.
[0037]
When the performance practice is completed and the process proceeds to step SA10, the CPU 1 searches for a free area of the practice result database “pract_rec” stored in the data area of the RAM 3 and acquires a pointer ipDB indicating the free area. Next, in step SA11, the number of miss counts stored in the register iMissTouchCnt is registered in the database as practice result data “pract_rec [ipDB] [0]”. The number of miss counts stored in the register iMissTouchCnt is extracted in a performance determination storage process described later.
Then, the process proceeds to Step SA12, where the pointer i is reset to zero. In the subsequent Step SA13, it is determined whether or not there is performance information playdat [i] corresponding to the pointer i. If there is no performance information playdat [i], the determination result is “NO”, and this processing is completed.
[0038]
On the other hand, if the performance information playdat [i] exists, the result of the determination in step SA14 is "YES", and the flow proceeds to step SA14. In step SA14, the comparison result Result stored in the performance information playdat [i] [5] corresponding to the pointer i is stored in the practice result data tract_rec [ipDB] [i + 1]. Thereafter, the process proceeds to step SA15, in which the pointer i is incremented so as to advance, 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, and if there is data, the comparison result Result stored in the performance information playdat [i] [5] is replaced with the practice result data pract_rec. Store sequentially in [ipDB] [i + 1].
[0039]
(3) Operation of performance judgment storage processing
Next, the operation of the performance determination storage processing will be described with reference to FIGS. When this processing is executed through step SA9 (see FIG. 8) of the performance start processing 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. I do. In the case of an event other than the note-on event, the determination result is “NO”, and this processing is completed.
[0040]
If the event is a note-on event, the determination result is "YES", and the flow advances 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. Then, 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 obtained pointer iPD has reached the end of the music. If the end of the music has been reached, the judgment result is "YES", the process proceeds to the next step SB6, the stop flag is reset to zero, and the present process is ended.
On the other hand, if the acquired pointer iPD has not reached the end of the music, the result of the determination in step SB5 is "NO", and the flow proceeds to step SB7. In step SB7, the result obtained by subtracting the 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. Then, in step SB8, it is determined whether or not the search pointer tmpPD has exceeded the sum of the pointer iPD and the search range iLookUp, that is, whether or not the search pointer has exceeded the search range.
[0042]
If the search pointer tmpPD exceeds the search range, that is, if there is no performance information playdata matching the MIDI-inputted performance data (note-on event) in the search range (iPD ± iLookUp), the determination in step SB8 is made. The result is "YES", and the process proceeds to Step SB9 to complete the process after incrementing the register iMissTouchCnt for counting the number of key press mistakes.
[0043]
On the other hand, if the search pointer tmpPD does not exceed the search range, the result of the determination 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) specified by the search pointer tmpPD is "0", that is, no sound is generated. If it has not sounded, the result of the determination is "NO", the process proceeds to step SB11, where 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 has not been sounded, the result of the determination in step SB10 becomes "YES", and the flow 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", and the process returns to step SB8 in FIG. 10 after incrementing the search pointer tmpPD in step SB11.
[0045]
On the other hand, when 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 process proceeds to Step SB13. In step SB13, the key depression timing obtained by subtracting the tone 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 longer than a predetermined allowable range IOKOffset. If it is an appropriate key pressing timing that falls 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 player has played correctly. After storing the value “1”, this processing is completed.
On the other hand, if the key pressing timing exceeds the allowable range IOKOffset, the result of the determination in step SB14 is “YES”, and the flow advances to step SB16 to determine whether the key pressing timing is equal to or smaller than the allowable range ITMOffset. If the allowable range ITMOOffset is exceeded, the determination result is “NO”, and the process proceeds to Step SB17 to store the value “0” indicating that the musical piece is not within the performance range in the performance information playdat [tmpPD] [5] (comparison result Result). After that, this processing is completed.
[0047]
On the other hand, when the value falls within the allowable range ITMOffset, the result of the determination in step SB16 is “YES”, and the flow proceeds to step SB18. In step SB18, it is determined whether or not the key depression timing stored in the register ITickDist is greater than "0", that is, whether or not the performance data is depressed later than the tone generation timing of the note data of the task music. If the key is depressed late, the determination result is "YES" and the process proceeds to step SB19, where the performance information playdat [tmpPD] [5] (comparison result) is later than the sounding timing of the note data of the task music. The 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 early, the result of the determination in step SB18 is "NO", the process proceeds to step SB20, and the performance information playdat [tmpPD] [5] (comparison result Result) includes The value "2" indicating that the key has been pressed earlier than the note data generation timing is stored, and this processing is completed.
[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 via MIDI in response to a performance operation, the performance data is compared with the performance information playdat representing each note of the task music. The performance is judged as appropriate, and the result of the judgment 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 processing will be described with reference to FIG. When this processing is executed via 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, the change screen is provided with an end icon, a selection icon, and an edit icon, and a corresponding process is executed according to an ON operation (click operation with the mouse 5) of each of these icons. Has become.
[0050]
That is, when the end icon is turned on, the result of determination in step SC2 is "YES", the flow proceeds to step SC3, the change screen is erased, and this processing is completed. When the selection icon is turned on, the result of the determination at step SC4 is "YES", the process proceeds to step SC5, and after performing a selection process (described later) for selecting the content of the performance support, the present process is completed. When the edit icon is turned on, the result of the determination at step SC6 is "YES", the process proceeds to step SC7, and an edit process (to be described later) for editing the content of the performance support is executed, followed by terminating the present process.
[0051]
(5) Operation of selection processing
Next, the operation of the selection process will be described with reference to FIGS. When this processing is executed via step SC5 (see FIG. 12) of the change processing, the CPU 1 proceeds to step SD1 in FIG. 13, and displays a selection screen frame on the display unit 7. The selection screen frame indicates the support item list display column LIST in the example selection screen SEG shown in FIG.
[0052]
Next, in steps SD2 to SD5, while incrementing 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. The screen is displayed as the corresponding item in the i-th frame in the support item list display column LIST to form the selection screen SEG.
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 the “end position”, the support type SupType (sup_dat [i] [3]) is “type”, the support data data (sup_dat [i] [4]) is “content”, and the flag flag (sup_dat [i] [5]). ) Is displayed in “Presence or absence of playback”.
[0053]
In this manner, on the selection screen SEG in which the contents of the support information sup_dat are displayed in a list, the support item can be selected by the user performing a click operation on a click frame of “reproduction”. That is, when the click frame of the "playback presence / absence" is clicked, the result of the determination in step SD6 becomes "YES", the process proceeds to step SD7, and the pointer i of the clicked click frame is set. Then, 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, in response to the flag inversion, the display of the click frame of “presence / absence of reproduction” corresponding to the pointer i is changed, and then the process returns to step SD6.
[0054]
As a result, as in the example of the selection screen SEG shown in FIG. 14, the selected support content is displayed in a state where the click frame of “presence or absence of reproduction” is filled in black, and the support content that is not selected is displayed as “reproduction”. Is displayed in a white frame. When the user clicks the “OK” icon on the selection screen SEG and clicks the “OK” icon after completing the selection of the support items, the result of the determination in step SD10 becomes “YES” and the step SD11 is performed. Then, the display of the selection screen SEG is deleted to complete the present processing.
[0055]
(6) Operation of editing process
Next, the operation of the editing process will be described with reference to FIGS. When this processing is executed via step SC7 (see FIG. 12) of the above-described change processing, the CPU 1 proceeds to step SE1 in FIG. 15, and displays the editing screen EDG on the display unit 7. The editing screen EDG is a GUI screen used when editing the content of the support information sup_dat, as shown in an example in FIG. 16, and includes a field for inputting a support point and a field for selecting the support content.
[0056]
Next, in step SE2, it is determined whether data has been input to the edit screen EDG. If there is no data input, the determination result is "NO", and the flow advances to step SE4 described later. On the other hand, when data is input, the determination result is "YES", and the flow advances to next Step SE3 to display the input data in a field.
If the cancel icon is turned on (clicked) to cancel the input data, the result of the determination in step SE8 becomes "YES", and the flow advances to step SE9 to delete the input data and to edit the edit screen EDG. Is deleted to complete this processing.
[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 result of the determination in step SE4 is "YES", and the flow proceeds to step SE5. In step SE5, an insertion position in the support information sup_dat is detected based on the input support position data (Tick), and is 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 flow advances to step SE7 to delete the input data, and then 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 existing support information sup_dat is set, and among the support information sup_dat edited in this manner, The support information sup_dat to be provided for actual performance support is selected by a selection process.
[0059]
(7) Operation of analysis processing
Next, the operation of the analysis process will be described with reference to FIG. When this processing is executed via step S13 of the main routine (see FIG. 7), the CPU 1 proceeds to step SF1 of FIG. In step SF1, it is determined whether or not the practice result data prac_rec has been registered in the practice result database prct_rec (see FIG. 3). If the training result data prac_rec has been registered, the determination result is “YES”, and the linear approximation processing, the determination processing, and the 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 processing will be described with reference to FIGS. When this processing is executed via step SF2 of the above-described analysis processing (see FIG. 17), the CPU 1 advances the processing to step SG1 of FIG. 18 and initializes the pointer iDB. The pointer iDB is a pointer for searching the practice result data prac_rec [0] to [n] in the practice result database prct_rec. Subsequently, in step SG2, various registers used for linear approximation are initialized.
[0061]
Next, in step SG3, it is determined whether or not all the search in the practice result database “pract_rec” has been completed. If the search has been completed, the determination result is “YES”, and the process proceeds to step SG4 and later described later. If all the search in the practice result database “product_rec” has not been completed, the determination result is “NO”, and the process proceeds 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 search for the practice result data designated by the pointer iDB has been completed. When the search is completed, the determination result is "YES", the process proceeds to Step SG11, and the pointer iDB is advanced, and then the process returns to Step SG3 in FIG.
On the other hand, if the search for the practice result data specified by the pointer iDB has not been completed, the result of the determination in step SG10 is “NO”, and the flow proceeds to step SG12. In step SG12, it is determined whether or not the practice result data prac_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 prac_rec [iDB] specified by the pointer iDB, the practice result data prac_rec [iDB] cannot be sufficient for linear approximation. The result of the determination is "YES", the process proceeds to step SG22, in which the pointer iNote is advanced, 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 result of the determination in step SG12 is “NO”, and the step Proceed to SG13.
[0064]
In step SG13, a register iAnlCnt [iNote] that counts the number of times of performance practice for each pointer iNote is incremented to advance. Subsequently, in step SG14, the value of the pointer iDB is added to the 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 the value is "-1" indicating that the player has not played correctly, the process proceeds to step SG16, where "0" is stored in the register sum_tmp. If the value is “1” indicating that the player has succeeded in playing, the process proceeds to step SG17, where “1” is stored in the register sum_tmp. If it is “2 or 3” indicating that the key was pressed earlier or later than the appropriate timing, the process proceeds to step SG18, where “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 following 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, a description will be given of the intended values of the registers sum_Rslt [iNote], register sum_Time [iNote], register sum_RT [iNote], and register sum_Rsq [iNote] which are treated as linear approximation parameters.
The performance result stored in the register sum_tmp is “0” when the key is not correctly played, “0.5” when the key is pressed early or late, and “1” when the key is played correctly. . The performance result of such a value is assigned to the x-axis, and the number of times of practice corresponding to the 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 the key is not correctly played, the number of exercises corresponding to the value “0.5” when the key is pressed early or late, and the case where the key is played correctly The number of times of practice corresponding to the value “1” is expressed in a form of sequentially accumulating. In order to obtain the correlation between the respective frequency distributions expressed in such a manner, each frequency distribution is linearly approximated by the least square method. According to the method of least squares, 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Σxiyi-ΣxiΣyi / nΣxi2- (Σxi) 2 (1)
b = Σxi2Σyi-ΣxiΣxiyi / 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 times of practice. Then, the number of data n in the above equations (1) and (2) is in the register iAnlCnt [iNote], Σxiyi 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 each of the registers sum_Rsq [iNote].
[0069]
When such linear approximation parameters are updated in steps SG19 to SG21, the process proceeds to step SG22, in which 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 out, and the linear approximation parameters are sequentially updated. I do. When the reading of the practice result data specified by the pointer iDB is completed, the determination result of step SG10 becomes "YES", and the process proceeds to step SG11, where the pointer iDB is incremented and moved forward. Thereafter, the process returns to step SG3 shown in FIG. 18 to determine whether or not all the practice result data stored in the practice result database “pract_rec” has been read out. When all the practice result data has been read out, the determination result becomes “YES” and step SG4 is performed. Processing proceeds.
[0070]
In steps SG4 to SG8 shown in FIG. 18, based on the linear approximation parameter updated in accordance with the performance result of each note of the task music and the number of times of practice, the gradient a of the linear approximation function y = ax + b by the least squares method and The intercept b is calculated by the above-described equations (1) and (2).
That is, in step SG4, first, the pointer iNote is reset to zero, and in subsequent step SG5, it is determined whether the reading of the linear approximation parameters has been completed. If the reading has not been completed, the determination result is “NO”, and the flow advances to the next Step SSG6. In step SG6, it is determined whether or not the value (the number of times of practice) of the register iAnlCnt [iNote] corresponding to the pointer iNote is “0”, that is, whether or not the note of the task music designated by the pointer iNote is practiced. If no practice has been performed and the number of exercises is “0”, the determination result is “YES”, and the flow proceeds to Step SG8 described later.
[0071]
On the other hand, if the user is practicing, the determination result is “NO”, and the process proceeds to Step SG7 to execute a calculation process. When the calculation process is executed, the CPU 1 substitutes the linear approximation parameter corresponding to the pointer iNote into the above equations (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, and 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, increments the pointer iNote by one, and returns the process to the above-described step SG5.
[0072]
Thereafter, steps SG5 to SG8 are repeated until all the linear approximation parameters have been read out, and based on the linear approximation parameters corresponding to the stepped pointer iNote, the gradient a and the intercept b of the primary approximation function for each note of the task music Is calculated and stored in the register grad [iNote] and the register root [iNote]. When all the linear approximation parameters have been read, the determination result of step SG5 becomes “YES”, and this processing is completed.
As described above, in the linear approximation processing, based on each practice result data recorded in the practice result database “pract_rec”, the performance result and the number of exercises for each note of the task music are extracted, and the linearity updated accordingly. The slope a and the intercept b of the first-order approximation function y = ax + b by the least squares method are calculated for each note of the subject music in accordance with the approximation parameters.
[0073]
(9) Operation of judgment processing
Next, the operation of the determination process will be described with reference to FIGS. When this processing is executed via step SF3 of the above-described analysis processing (see FIG. 17), the CPU 1 advances the processing to step SH1 of FIG. 22, and stores a register for holding the improvement degree determination result for each note of the task music. Reset iProgress [] to zero. Next, in step SH2, the pointer iNote is reset to zero, and in the following step SH3, it is determined whether or not the degree of improvement for the number of note data has been determined.
[0074]
If the judgment has not been completed, the judgment result is "NO", and the routine proceeds to step SH4. In step SH4, it is determined whether or not the value of the register iAnlCnt [iNote] (the number of times of practice) obtained by the above-described linear approximation processing is not “0”, that is, whether or not the note data specified by the pointer iNote is practiced. I do. If the note data specified by the pointer iNote has not been practiced, the determination result is "NO", the pointer iNote is advanced by step SH9, and the process returns to step SH3 again.
[0075]
On the other hand, if the note data specified by the pointer iNote is practiced, the result of the determination in step SH4 is "YES", and the flow proceeds to step SH5. In step SH5, it is determined whether or not the value obtained when the linear approximation parameter obtained by the above-described linear approximation processing is substituted into the conditional expression (3) of nΣxi2- (Σxi) 2 is “0”. This conditional expression (3) corresponds to the denominator of the expression (1) for calculating the gradient a of the linear approximation function y = ax + b. Therefore, in step SH5, it is determined whether linear approximation is possible. Hereinafter, the operation will be described separately for a case where linear approximation cannot be performed and a case where linear approximation cannot be performed.
[0076]
a. When linear approximation cannot be performed
In this case, since the value of the conditional expression (3) becomes “0”, the result of the determination in step SH5 becomes “YES”, and the flow proceeds to the next step SH6. In step SH6, it is determined whether or not the value when the linear approximation parameter obtained by the above-described linear approximation processing is substituted into the conditional expression (4) of Σxi / n is “1”. Conditional expression (4) represents the average value of the performance results. A case where the average value is "1" indicates that all of the performances have been correctly played without a performance error.
Therefore, if the note data (notes) are all correctly played without any mistakes in performance, the result of the determination in step SH6 is "YES", and the flow advances to step SH7, where the determination value indicating the completion period in which all pieces were correctly played without any performance mistakes After storing "5" in the register iProgress, the process proceeds to step SH9, in which the pointer iNote is advanced, and the process returns to step SH3.
[0077]
On the other hand, when the value of the conditional expression (4) is not “1”, that is, as shown in FIG. If there is only the frequency distribution, the result of the determination in step SH6 is "NO", and the flow advances to step SH8 to store a determination value "1" indicating that it is in the early stage of training in the register iProgress [iNote]. Thereafter, the pointer iNote is incremented in step SH9, and the process returns to step SH3.
[0078]
b. When linear approximation is possible
In this case, the determination result of step SH5 described above is “NO”, and the process proceeds to step SH10 shown in FIG. 23, where the linear approximation parameter obtained by the above-described linear approximation processing, the gradient a of the linear approximation function a (register grad [iNote ]) And the intercept b (register root [iNote]) to determine the degree of improvement. First, in step SE10, it is determined whether 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 an allowable error, iAnlCnt [iNote] represents the number of times of practice (denoted as Npract), and root [iNote] represents the intercept b.
[0079]
Therefore, the conditional expression (5) determines whether the gradient a of the first-order approximation function obtained for the note data specified by the pointer iNote is larger than 2 × Nprac / 3 + ParamErr, and the intercept b of the first-order approximation function is larger than Nprac / 6 + ParamErr. That is, it is determined whether it corresponds to the improvement period shown in FIG. If the period corresponds to the improvement period, the determination result is “YES”, and the process proceeds to step SH11 to store the determination value “2” indicating that the vehicle is in the improvement period stage in the register iProgress [iNote]. Thereafter, the pointer iNote is advanced by step SH9 in FIG. 22, and then the process returns to step SH3.
[0080]
On the other hand, when the conditional expression (5) is not satisfied and the period does not correspond to the improvement period, the determination result of step SH10 is “NO”, and the process 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]
Accordingly, in the conditional expression (6), the gradient a of the first-order approximation function obtained for the note data specified by the pointer iNote is larger than 2 × Nprac / 3-ParamErr, and the intercept b of the first-order approximation function is Nprac / 6-ParamErr. It is determined whether or not it is larger, that is, whether or not it corresponds to the completion period shown in FIG. If the completion period is reached, the determination result is “YES”, and the process proceeds to step SE13 where the determination value “4” indicating that the stage is the completion stage is stored in the register iProgress [iNote]. Thereafter, the pointer iNote is advanced by step SH9 in FIG. 22, and then the process returns to step SH3.
[0082]
On the other hand, when the conditional expression (6) is not satisfied and does not correspond to the completion period, the determination result of step SE12 is “NO”, and the process proceeds to step SE14. In step SE14, it is determined whether the following conditional expression (7) is satisfied.
sum_Rslt [iNote] / iAnlCnt [iNote]> 0.5 (7)
Conditional expression (7) represents the average value (Σxi / n) of the performance results, and it is determined whether or not this is greater than “0.5”, that is, whether or not the performance period corresponds to the stable period shown in FIG. to decide. If the period corresponds to the stable period, the determination result is “YES”, and the process proceeds to step SH15 to store the determination value “3” indicating that the stage is in the stable period in the register iProgress [iNote]. Thereafter, the pointer iNote is advanced by step SH9 in FIG. 22, and then the process returns to step SH3. On the other hand, when the conditional expression (7) is not satisfied and the period does not correspond to the stable period, the result of the determination in step SH14 is “NO”, the process proceeds to step SH16, and the determination value “2” indicating that the vehicle is in the improvement period stage is set. After storing in the register iProgress [iNote], the pointer iNote is advanced by 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 processing, the gradient a of the linear approximation function (register grad [iNote]) and the intercept b (register root [iNote] ]) In accordance with the pointer iNote, whereby each note data of the subject music is in any of the “early training phase”, “improvement phase”, “stability phase”, “completion phase” and “completion phase”. Is determined, and a determination value representing the corresponding stage is set. Then, when the determination is completed for all, the determination result of step SH3 (FIG. 22) becomes “YES”, and the present process is completed.
[0084]
(10) Operation of area classification and support item setting processing
Next, the operation of the area classification / support item setting process will be described with reference to FIGS. When this processing is executed via step SF4 of the above-described analysis processing (see FIG. 17), the CPU 1 advances the processing to step SJ1 of FIG. 24, resets the pointer iCnt to zero, and sets the pointer iNote to the next step SJ2. At the same time, the detection flag iFound is set to “0”. Next, in step SJ3, it is determined whether or not a determination value for each note data is being read from the register iProgress [iNote] according to the pointer iNote. If reading is being performed, the determination result is “YES”, and the flow advances 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 yet been read. If the determination value has not been read yet, the determination result is “NO”, and the process proceeds to step SJ12 and the subsequent steps shown in FIG. In step SJ12 and thereafter, a process corresponding to the determination value read from the register iProgress [iNote] is executed in accordance with the pointer iNote. Hereinafter, the 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 early stage of practice)
If the determination value read from the register iProgress [iNote] is “1”, the determination result of step SJ12 shown in FIG. 25 becomes “YES”, the process proceeds to step SJ13, and the detection flag iFound is set to “1”. 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 analized_dat [iCnt] [6] (support start position SupStart). That is, the support start position SupStart for “early training” is set. Subsequently, in step SJ15, the performance information playdat [iNote] [2] (sound generation timing Tick) is stored in the analysis support information analized_dat [iCnt] [7] (support end position SupEnd), and the support for “early training” is ended. Set the position SupEnd.
[0087]
Next, in step SJ16, DATA_NG_TYPE representing the output form for “early training” is stored in the analysis support information analyzed_dat [iCnt] [3] (support type SupType). Then, the process proceeds to step SJ17 to store DATA_DEFAULT_NG representing the support content for “early training” in the analysis support information “analyzed_dat [iCnt] [4]” (support data “data”).
Next, in step SJ18, “1” is set to 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] (mute timing EndTick) is stored in the analysis support information analized_dat [iCnt] [2] (support end time EndTick).
[0088]
When the analysis support information “analyzed_dat [iCnt] [1] to [7]” corresponding to “early training” is thus 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 moving the pointer iSup. Search).
[0089]
When the corresponding support information sup_dat [iSup] [2] (support end time EndTick) is retrieved, the support information sup_dat [iSup] [1] (support start time Tick) and the performance information playdat [iNote] [2] ( Judgment is made as to 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 analized_dat [iCnt] [5] (flag flag). I do.
Thereby, when the support information sup_dat and the analysis support information analyzed_dat conflict, the support information sup_dat is prioritized. When the search for the conflicting part is completed, the determination result of step SJ22 becomes “YES”, and the process returns to step SJ3 of FIG.
[0090]
b. When the judgment value is "2 or 3" (in the improvement period or the stable period)
If the determination value read from the register iProgress [iNote] is “2 or 3”, the determination result of step SJ26 shown in FIG. 26 becomes “YES”, the process proceeds to step SJ27, and the detection flag iFound is set to “2”. I 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 analized_dat [iCnt] [6] (support start position SupStart). That is, the support start position SupStart for the “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 analized_dat [iCnt] [7] (support end position SupEnd) and used for the "improvement period or stable period". The support end position SupEnd is set. Next, in step SJ30, DATA_CAUT_TYPE representing the output form for the “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 to store DATA_DEFAULT_CAUT representing the support content for the “improvement period or stable period” in the analysis support information analyzed_dat [iCnt] [4] (support data).
[0092]
Next, in step SJ32, “1” is set to 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 analized_dat [iCnt] [1] (support start time Tick). In step SJ34, the performance information playdat [iNote] [3] (mute timing EndTick) is stored in the analysis support information analyzed_dat [iCnt] [2] (support end time EndTick). When the analysis support information “analyzed_dat [iCnt] [1] to [7]” corresponding to the “improvement period or stable period” is thus generated, the CPU 1 returns the process to step SJ3 in FIG.
[0093]
In the early stage of the training described above, when the support information sup_dat and the analysis support information analyzed_dat conflict with each other, the support information sup_dat is prioritized. In the improvement period or the stable period, the analysis support information analized_dat is prioritized. It is supposed to. Further, even in the improvement period or the stable period, when the support information sup_dat and the analysis support information analyzed_dat compete with each other, the support information sup_dat side may be prioritized.
[0094]
c. When the judgment value is "4" (in the case of completion)
If the determination value read from the register iProgress [iNote] is “4”, the determination result in the step SJ35 shown in FIG. 27 becomes “YES”, the process proceeds to the step SJ36, and the detection flag iFound is set to “4”. Next, in step SJ37, the 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 analized_dat [iCnt] [6] (support start position SupStart). That is, the support start position SupStart for the “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 for the “completion period” ends. Set the position SupEnd. Next, in step SJ39, DATA_OK_TYPE representing the output form for the “completion period” is stored in the analysis support information analyzed_dat [iCnt] [3] (support type SupType). Then, the process proceeds to step SJ40 to store DATA_DEFAULT_OK representing the support content for the “completion period” in the analysis support information “analyzed_dat [iCnt] [4] (support data“ data ”).
[0096]
Next, in step SJ41, “1” is set to 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 analized_dat [iCnt] [1] (support start time Tick). In step SJ43, the performance information playdat [iNote] [3] (mute 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 processing to step SJ3 in FIG.
[0097]
In the early stage of the training described above, when the support information sup_dat and the analysis support information analyzed_dat conflict with each other, the support information sup_dat is prioritized. In the completion period, the analysis support information analized_dat is prioritized. Has become. Also, in the completion period, when the support information sup_dat and the analysis support information analyzed_dat compete with each other, 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 of FIG. 24, the determination value corresponding to the pointer iNote is read. Is determined, the determination result of step SJ3 is “YES”, and the process proceeds to step SJ4 and subsequent steps. In step SJ4, it is determined whether 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 process proceeds to Step SJ5. In step SJ5, it is determined whether the determination value of the register iProgress [iNote] does not match 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. In step SJ7, the immediately preceding performance information playdat [iNote-1] [3] (silence timing EndTick) is converted into analysis support information analized_dat [iCnt] [2] ( (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.
Then, in step SJ3, when the reading of the determination value corresponding to the pointer iNote is completed, the determination result is “NO”, and the process proceeds to step SJ10 to determine whether the detection flag iFound is not “0”. . If the detection flag iFound is “0”, the determination result is “NO”, and the process is completed. On the other hand, if the detection flag iFound is not “0”, the determination result is “YES”, and the flow advances to step SJ11 to store the last time of the music piece in the analysis support information analyzed_dat [iCnt] [2] (support end time EndTick). To end this processing.
[0100]
As described above, in the analysis processing including the linear approximation processing, the determination processing, and the area classification / support item setting processing, 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 a performance mistake are analyzed. Support items for supporting the performance are created.
[0101]
(11) Operation of standard support processing
Next, the operation of the standard support processing will be described with reference to FIGS. When the standard support processing 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 has turned on the start switch to start the special support processing.
Then, a start switch event occurs, the result of the determination in step SK1 becomes "YES", and the routine proceeds to step SK2, where the stop flag is reset to zero to indicate the start of the special support processing. 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 the 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", and the process proceeds to Step SK7 to determine whether the stop flag is "1", that is, whether the stop flag is set. In the start state, the stop flag is "0", so that the determination result is "NO" and the process proceeds to step SK7.
On the other hand, if a stop event occurs in response to the ON operation of the stop switch, the result of the determination in step SK5 is "YES", the flow proceeds to step SK6, and the stop flag is set to "1". When the stop flag is set to "1", the result of the determination in step SK7 becomes "YES", and this processing is completed.
[0103]
When the stop flag becomes "0" in response to the ON operation of the start switch, the result of the determination 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, in step SK9, the value of the pointer iFirst is set to the pointer i. Then, in a step SK10, 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 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 has not passed the support end time EndTick, the determination result is “NO”, and the process proceeds to Step SK16 described later.
[0104]
On the other hand, if the current time has passed the support end time EndTick, the result of the determination in step SK11 is "YES", the process proceeds to step SK12, and a 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. It is determined whether or not. If the playback is not being performed, the determination result is “NO”, and the support stop processing is completed without performing anything. If the playback is being performed, the determination result is “YES”, and the process proceeds to step SK12-2. After stopping the reproduction of the support data data, the support stop processing is completed.
[0105]
When the support stop processing is completed, the CPU 1 proceeds to step SK13 in FIG. 29, and sets a pointer OriginalIndex (nowplay [i] [3]) indicating the performance information playdat to be supported to 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 the outside of the performance range, the determination result is "NO" and the process proceeds to step SK16 described later. If it is "0", the determination result is "YES" and the process proceeds to step SK15. In the performance information playdat [tmpPD] [5] (comparison result Result), a determination value “−1” indicating that the player cannot play correctly is set. Then, the process proceeds to step SK16, where a pointer (nowplay [i] [4]) indicating the next processing information is set in the pointer i, and the process returns to step SK10.
[0106]
When the determination result of step SK10 becomes “NO” in accordance with the advance 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 tone 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. If the current time NowTick has passed the sound generation timing Tick, the determination result is “YES”, and the process proceeds to step SK22. Proceed to SK18.
In step SK18, note-on processing is performed to instruct the electronic musical instrument 20 to generate a tone having a pitch specified by the performance information playdat [iPD] [1] (note number Note #). As a result, performance support for reproducing the performance information playdat [ipD] that is not performed even after the sounding timing Tick is performed.
[0107]
Then, the process proceeds to a step SK19, where 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 processing information nowplay [iSet] is updated and registered with the execution of the note-on processing in step SK18. That is, the processing type playtype (nowplay [iSet] [0]) has the value “0” representing the note output, and the support start time Tick (nowplay [iSet] [1]) has the sound generation timing Tick (playdat [iPD] [2]). Store).
[0108]
Also, at the support end time EndTick (nowplay [iSet] [2]), the mute timing EndTick (playdat [iPD] [3]) is set, and a pointer OriginalIndex (nowplay [iSet] [3]) indicating the performance information playdat to be supported. To store the pointer iPD. Further, after storing the pointer iSet 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, where the pointer iPD is advanced, 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]). It is determined whether or not there is. 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 is "NO" and the step SK1 shown in FIG. Return to 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", 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. If the support type SupType is “1”, the process proceeds to step SK23-2, where the support data data of the support information sup_dat [iSD] [4] is output as a character string on the display screen of the display unit 7. When 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 as an image on the display screen of the display unit 7. If 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 a voice.
[0111]
In this way, when the performance support by the support data data of the support information sup_dat [iSD] [4] is performed, the CPU 1 proceeds to step SK24 of FIG. 31 to search for an empty area in the processing information nowplay and to set a pointer value indicating the empty area. Is set in 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 playdat to be supported. After storing the pointer iSet 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 a step SK26, in which the pointer iSD is advanced, and the process returns to the step SK1 in FIG. Thereafter, the above operation is repeated until the stop switch is turned on.
[0113]
(12) Operation of special support processing
Next, the operation of the special support processing will be described with reference to FIGS. When the special support processing 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 or not there is a start switch event. Here, it is assumed that the user has turned on the start switch to start the special support processing.
Then, a start switch event occurs, the result of the determination 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 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", and the process proceeds to Step SL7 to determine whether the stop flag is "1", that is, whether the stop flag is set. In the start state, the stop flag is "0", so that the determination result is "NO", and the process proceeds to Step SL7.
On the other hand, if a stop event has occurred in response to the ON operation of the stop switch, the result of the determination in step SL5 is "YES", the flow proceeds to step SL6, and the stop flag is set to "1". When the stop flag is set to "1", the result of the determination at step SL7 becomes "YES", and this processing is completed.
[0115]
When the stop flag becomes "0" in response to the ON operation of the start switch, the result of the determination in step SL7 becomes "NO", and the flow 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. Then, in a 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 has not passed the support end time EndTick, the determination result is “NO”, and the process proceeds to Step SK16 described later.
[0116]
On the other hand, if the current time has passed the support end time EndTick, the result of the determination in step SL11 is "YES", the flow proceeds to step SL12, and the support stop processing is executed. In the support stop processing executed in the special support processing, 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 reproduced. In this case, the reproduction of the support data data is stopped.
[0117]
When the support stop processing is completed, the CPU 1 proceeds to step SL13 in FIG. 35, and sets a pointer OriginalIndex (nowplay [i] [3]) indicating the performance information playdat to be supported to the pointer tmpPD. Next, in step SL14, it is determined whether or not the value of the performance information playdat [tmpPD] [5] (comparison result) corresponding to the pointer tmpPD is “0”.
If it is not "0" representing the outside of the performance range, the judgment result is "NO" and the process proceeds to step SL16 described later. If it is "0", the judgment result is "YES" and the process proceeds to step SL15. In the performance information playdat [tmpPD] [5] (comparison result Result), a determination value “−1” indicating that the player cannot play correctly is set. Then, the process proceeds to step SL16, where a pointer (nowplay [i] [4]) indicating the next processing information is set to the pointer i, and the process returns to step SL10.
[0118]
If the decision result in the step SL10 becomes "NO" in accordance with the advance of the pointer i, the CPU 1 advances the process to a step SL17 shown in FIG. In step SL17, it is determined whether or not the current time NowTick has passed the tone 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 SL22 shown in FIG. 37. If the current time NowTick is after the sound generation timing Tick, the determination result is “YES”, and the process proceeds to step SL22. 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 #). As a result, performance support for reproducing the performance information playdat [ipD] that is not performed even after the sounding timing Tick is performed.
[0119]
Then, the process proceeds to a step SL19, where 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 tone 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 the original index (nowplay [iSet] [3]) indicating the performance information playdat to be supported. After storing the pointer iSet 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 to advance the pointer iPD, and then 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]). It is determined 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 is "NO" and the process proceeds to step SL1 in FIG. Reverse 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 processing 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”. If the support type SupType is “1”, the support data “data” of the analysis support information “analyzed_dat [iAD] [4]” is output as a character string on the display screen of the display unit 7. When the SupType is "2", the support data "data" of the analysis support information "analyzed_dat [iAD] [4]" is output as an image on the display screen of the display unit 7. When the support type "SupType" is "3", the analysis support information is displayed. The support data data of "analyzed_data [iAD] [4]" is output as voice.
[0123]
In this way, when the performance support is performed by the support data data of the analysis support information analyzed_data [iAD] [4], the CPU 1 proceeds to step SL24 in FIG. 37, searches for an empty area in the processing information nowplay, and a pointer indicating the empty 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 analized_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 a pointer OriginalIndex (nowplay [iSet] [3]) indicating the performance information playdat to be supported. After storing the pointer iSet 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, in which the pointer iAD is advanced, and the process returns to step SL1 in FIG. Thereafter, the above operation is repeated until the stop switch is turned on.
[0125]
As described above, in the present embodiment, each time performance data is input from the electronic musical instrument 20 via the MIDI, the DTM device 10 compares the performance data with the performance information playdat representing each note of the task music to determine whether the performance is appropriate. To record the history of the judgment result as practice result data corresponding to the performance information playdat in the practice result database part_rec, and to analyze the practice result data recorded in the history so as to support the performance of a weak point where a performance error is likely to occur. The analysis support information "analyzed_dat" is created, and the support information "sup_dat" is set to support the user himself / herself so as not to make a performance mistake at a place to be alerted.
Then, the analysis support information analized_dat and the support information sup_dat to be provided for actual performance support are selected and the performance is supported, so that the performance is assisted so as not to make a performance mistake at a weak point extracted from the practice history or a place where the user himself wants to call attention. The support item can be presented at the time of the performance.
[0126]
【The invention's effect】
According to the first and fourth aspects of the present invention, the judgment result obtained by comparing the performance data generated in response to the performance operation with the performance information representing each note forming the task music is made to correspond to the performance information. The history is recorded as practice result data, and the history record of the practice result data is analyzed to generate first support information for assisting performance at a weak point where a performance error is likely to occur. Then, since the first support information is reproduced in accordance with the progress of the performance to support the performance, it is possible to provide support so as not to make a mistake in the performance at a weak point where a performance error is likely to occur.
According to the second and fifth aspects of the present invention, the determination result obtained by comparing the performance data generated in response to the performance operation with the performance information representing the notes forming the task music is made to correspond to the performance information. History data is recorded as practice result data, and the history record is analyzed to analyze the practice result data to generate first support information for assisting performance at a weak point where a performance error is likely to occur. Is set as the second support information to support. Then, since either one of the first and second support information is selected, and the support information of the selected side is reproduced according to the progress of the performance and the performance is supported, the weak points that are likely to make a performance mistake, and 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 response to the performance operation with the performance information representing each note forming the task music is made to correspond to the performance information. History data is recorded as practice result data, and the history record is analyzed to analyze the practice result data to generate first support information for assisting performance at a weak point where a performance error is likely to occur. Is set as the second support information to support. Then, one of the first and second support information is selected, and the support information obtained by selecting the support items to be provided for the actual performance from the support information on the selected side is reproduced according to the progress of the performance. As a result of the support, performance support using the support information of the support items required by the user can be performed.
[Brief description of the drawings]
FIG. 1 is a block diagram showing the configuration of an embodiment according to the present invention.
FIG. 2 is a diagram showing 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;
FIG. 4 is a diagram showing a data structure of processing information nowplay provided in a RAM 3;
FIG. 5 is a diagram showing a data structure of support information sup_dat provided in a RAM 3;
FIG. 6 is a diagram showing a data structure of analysis support information analyzed_dat provided in a RAM 3;
FIG. 7 is a flowchart showing an operation of a main routine.
FIG. 8 is a flowchart showing an operation of a performance start process.
FIG. 9 is a flowchart showing an operation of a performance start process.
FIG. 10 is a flowchart illustrating an operation of a performance determination storage process.
FIG. 11 is a flowchart illustrating an operation of a performance determination storage process.
FIG. 12 is a flowchart illustrating an operation of a change process.
FIG. 13 is a diagram for explaining an operation of a selection process.
FIG. 14 is a diagram illustrating an example of a selection screen SEG.
FIG. 15 is a flowchart illustrating an operation of an editing process.
FIG. 16 is a diagram showing an example of an edit screen EDG.
FIG. 17 is a flowchart illustrating an operation of an analysis process.
FIG. 18 is a flowchart illustrating an operation of a linear approximation process.
FIG. 19 is a flowchart illustrating an operation of a linear approximation process.
FIG. 20 is a flowchart illustrating an operation of a calculation process.
FIG. 21 is a diagram showing an example in which a frequency distribution for each performance result is linearly approximated.
FIG. 22 is a flowchart illustrating an operation of a determination process.
FIG. 23 is a flowchart illustrating an operation of a determination process.
FIG. 24 is a flowchart showing an operation of an area classification / support item setting process.
FIG. 25 is a flowchart showing an operation of an area classification / support item setting process.
FIG. 26 is a flowchart showing an operation of an area classification / support item setting process.
FIG. 27 is a flowchart showing an operation of an area classification / support item setting process.
FIG. 28 is a flowchart illustrating an operation of a standard support process.
FIG. 29 is a flowchart illustrating an operation of a standard support process.
FIG. 30 is a flowchart illustrating an operation of a standard support process.
FIG. 31 is a flowchart illustrating an operation of a standard support process.
FIG. 32 is a flowchart illustrating an operation of a support start process.
FIG. 33 is a flowchart illustrating an operation of support stop processing.
FIG. 34 is a flowchart showing an operation of a special support process.
FIG. 35 is a flowchart showing an operation of a special support process.
FIG. 36 is a flowchart showing an operation of a special support process.
FIG. 37 is a flowchart showing an operation of a special support process.
[Explanation of symbols]
1 CPU
2 ROM
3 RAM
4 MIDI interface
5 mice
6 Keyboard
7 Display
10 DTM device
20 electronic musical instruments

Claims (6)

演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、
前記練習結果データベース手段に履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生手段と、
前記支援情報発生手段が発生した第1の支援情報を演奏進行に応じて再生して演奏支援する支援手段と
を具備することを特徴とする演奏支援装置。
A practice result database that records a determination result obtained by comparing performance data generated in response to a performance operation with performance information representing each note forming a task piece as practice result data corresponding to the performance information. Means,
A support information generating means for analyzing the practice result data recorded in the history of the practice result database means and generating first support information for supporting a performance at a weak point where a performance error is likely to occur;
And a support means for playing back the first support information generated by the support information generating means in accordance with the progress of the performance and supporting the performance.
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、
前記練習結果データベース手段に履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生手段と、
注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定手段と、
前記1および第2の支援情報のいずれかを選択し、選択した側の支援情報を演奏進行に応じて再生して演奏支援する支援手段と
を具備することを特徴とする演奏支援装置。
A practice result database that records a determination result obtained by comparing performance data generated in response to a performance operation with performance information representing each note forming a task piece as practice result data corresponding to the performance information. Means,
A support information generating means for analyzing the practice result data recorded in the history of the practice result database means and generating first support information for supporting a performance at a weak point where a performance error is likely to occur;
Support information setting means for setting second support information for assisting the user not to make a performance mistake at a place to be alerted;
A performance support device for selecting one of the first and second support information, and supporting the performance by playing back the support information of the selected side in accordance with the progress of the performance.
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして履歴記録する練習結果データベース手段と、
前記練習結果データベース手段に履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生手段と、
注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定手段と、
前記第1および第2の支援情報のいずれかを選択し、選択した側の支援情報から実際の演奏に供する支援項目を取捨選択してなる支援情報を演奏進行に応じて再生して演奏支援する支援手段と
を具備することを特徴とする演奏支援装置。
A practice result database that records a determination result obtained by comparing performance data generated in response to a performance operation with performance information representing each note forming a task piece as practice result data corresponding to the performance information. Means,
A support information generating means for analyzing the practice result data recorded in the history of the practice result database means and generating first support information for supporting a performance at a weak point where a performance error is likely to occur;
Support information setting means for setting second support information for assisting the user not to make a performance mistake at a place to be alerted;
One of the first and second support information is selected, and the support information obtained by selecting the support items to be used for the actual performance from the support information of the selected side is reproduced according to the progress of the performance to support the performance. A performance support apparatus comprising: support means.
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、
この記録処理にて練習結果データベースに履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生処理と、
前記支援情報発生処理にて生成した第1の支援情報を演奏進行に応じて再生して演奏支援する支援処理と
をコンピュータで実行させることを特徴とする演奏支援プログラム。
The judgment result obtained by comparing the performance data generated in response to the performance operation with the performance information representing each note forming the task music is recorded in the practice result database as practice result data corresponding to the performance information. Recording process,
A support information generation process for analyzing the practice result data recorded in the practice result database in the practice result database in this recording process and generating first support information for assisting the performance of a weak point where a performance error is likely to occur;
A performance support program for causing a computer to execute a support process for playing back the first support information generated in the support information generation process in accordance with the progress of the performance and supporting the performance.
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、
この記録処理にて練習結果データベースに履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生処理と、
注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定処理と、
前記1および第2の支援情報のいずれかを選択し、選択した側の支援情報を演奏進行に応じて再生して演奏支援する支援処理と
をコンピュータで実行させることを特徴とする演奏支援プログラム。
The judgment result obtained by comparing the performance data generated in response to the performance operation with the performance information representing each note forming the task music is recorded in the practice result database as practice result data corresponding to the performance information. Recording process,
A support information generation process for analyzing the practice result data recorded in the practice result database in the practice result database in this recording process and generating first support information for assisting the performance of a weak point where a performance error is likely to occur;
A support information setting process for setting second support information for supporting not to make a mistake in a place where attention is required;
A performance support program, wherein the computer executes a support process of selecting one of the first and second support information, reproducing the support information of the selected side in accordance with the progress of the performance, and supporting the performance.
演奏操作に応じて発生する演奏データと、課題曲を形成する各音符を表す演奏情報とを比較して得た判定結果を、当該演奏情報に対応させた練習結果データとして練習結果データベースに履歴記録する記録処理と、
この記録処理にて練習結果データベースに履歴記録された練習結果データを分析して演奏ミスを犯し易い苦手箇所の演奏を支援する第1の支援情報を発生する支援情報発生処理と、
注意喚起したい箇所で演奏ミスしないように支援する第2の支援情報を設定する支援情報設定処理と、
前記第1および第2の支援情報のいずれかを選択し、選択した側の支援情報から実際の演奏に供する支援項目を取捨選択してなる支援情報を演奏進行に応じて再生して演奏支援する支援処理と
をコンピュータで実行させることを特徴とする演奏支援プログラム。
The judgment result obtained by comparing the performance data generated in response to the performance operation with the performance information representing each note forming the task music is recorded in the practice result database as practice result data corresponding to the performance information. Recording process,
A support information generation process for analyzing the practice result data recorded in the practice result database in the practice result database in this recording process and generating first support information for assisting the performance of a weak point where a performance error is likely to occur;
A support information setting process for setting second support information for supporting not to make a mistake in a place where attention is required;
One of the first and second support information is selected, and the support information obtained by selecting the support items to be used for the actual performance from the support information of the selected side is reproduced according to the progress of the performance to support the performance. A performance support program for causing a computer to execute the support process.
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 true JP2004318019A (en) 2004-11-11
JP4228346B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039419A (en) * 2009-08-18 2011-02-24 Casio Computer Co Ltd Performance teaching apparatus and program
JP2013068808A (en) * 2011-09-22 2013-04-18 Casio Comput Co Ltd Performance evaluation device and program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039419A (en) * 2009-08-18 2011-02-24 Casio Computer Co Ltd Performance teaching apparatus and program
JP2013068808A (en) * 2011-09-22 2013-04-18 Casio Comput Co Ltd Performance evaluation device and program

Also Published As

Publication number Publication date
JP4228346B2 (en) 2009-02-25

Similar Documents

Publication Publication Date Title
CN103035142B (en) Musical performance training device and musical performance training method
JP6485185B2 (en) Singing sound synthesizer
JP3358292B2 (en) Electronic musical instrument
JP4742288B2 (en) Practice procedure generation device and practice procedure generation processing program
JP3484719B2 (en) Performance guide device with voice input function and performance guide method
JP4228346B2 (en) Performance support information generation apparatus and performance support information generation program
JP6835247B2 (en) Data generator and program
JP2013024967A (en) Display device, method for controlling the device, and program
JP4221567B2 (en) Performance practice device, performance practice method and performance practice program
JP2002258845A (en) Playing information retrieving device
JP6950180B2 (en) Musical tone data processing method and musical tone data processing device
JP4882980B2 (en) Music search apparatus and program
JP6528752B2 (en) Tone reproduction apparatus, tone reproduction method, program and electronic musical instrument
EP2626781A1 (en) Electronic apparatus and audio guide program
JP4301126B2 (en) Fingering information generation device and program
JP2004246237A (en) Performance diagnostic device and performance diagnostic program
JP4442144B2 (en) Performance support apparatus and performance support program
JP5454771B2 (en) Performance learning apparatus and program
JP4239937B2 (en) Composition support apparatus and program
JP2009086084A (en) Device for supporting performance practice, and program of processing performance practice support
JP2007316416A (en) Karaoke machine and karaoke processing program
JP2005049628A (en) Music learning device and music learning program
JP2738217B2 (en) Electronic musical instrument
JP5825449B2 (en) Code detection device
JP2006215167A (en) Performance practice device and performance practice 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