JP3915452B2 - 演奏教習装置及び演奏教習処理のプログラム - Google Patents
演奏教習装置及び演奏教習処理のプログラム Download PDFInfo
- Publication number
- JP3915452B2 JP3915452B2 JP2001245403A JP2001245403A JP3915452B2 JP 3915452 B2 JP3915452 B2 JP 3915452B2 JP 2001245403 A JP2001245403 A JP 2001245403A JP 2001245403 A JP2001245403 A JP 2001245403A JP 3915452 B2 JP3915452 B2 JP 3915452B2
- Authority
- JP
- Japan
- Prior art keywords
- performance
- value
- note
- event
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、演奏教習装置及び演奏教習処理のプログラムに関する。
【0002】
【従来の技術】
従来の演奏教習装置及び演奏教習処理のプログラムにおいては、ユーザが与えられる課題曲に対して鍵盤装置等の電子楽器を演奏すると、その曲全体を演奏した後にその演奏を評価し、その評価結果をユーザに通知して演奏教習を行う構成になっていた。
【0003】
【発明が解決しようとする課題】
しかしながら、上記従来の技術においては、ユーザの演奏技量は演奏した課題曲について全体的な評価しか知ることができないので、例えば、演奏技量が課題曲のどの区間で低くどの区間で高いのか、あるいは右手パート、左手パート、さらには両手による演奏のいずれの技量が高いのか低いのかを具体的に把握することができなかった。このため、全体的な評価が低い場合には、たとえ部分的に合格基準に達している区間又はパートがあったとしても、演奏技量の低い区間又はパートを集中的に練習するのではなく常に曲全体を練習することになり、極めて効率の悪い演奏教習を受けざるを得ないという問題があった。
【0004】
本発明の課題は、ユーザが課題曲の演奏を行う場合に、演奏後に演奏の全体的な評価だけでなく、曲の所定の区間あるいはパートなど部分的なきめ細かい評価を受けることで、演奏技量の低い部分の集中的な練習を行うことにより、効率的な演奏教習ができるようにすることである。
【0005】
【課題を解決するための手段】
請求項1に記載の演奏教習装置は、曲を構成する各パートの各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの再生に伴って行われるユーザの演奏操作に応じて発生する演奏データと再生中の曲データとを比較して演奏操作の合否を判定する判定手段と、曲データを再生し終えた後に、レッスン範囲を選択する選択手段と、前記判定手段により判定された演奏操作の合否判定結果の内、前記選択手段により選択されたレッスン範囲で指定される曲データの区間およびパートに対応する合否判定結果から演奏練習の進度を評価する評価手段とを具備することを特徴とする。
請求項2に記載の演奏教習処理のプログラムは、曲を構成する各パートの各音を表す曲データの再生に伴って行われるユーザの演奏操作に応じて発生する演奏データと再生中の曲データとを比較して演奏操作の合否を判定する判定処理と、曲データを再生し終えた後に、レッスン範囲を選択する選択処理と、前記判定処理により判定された演奏操作の合否判定結果の内、前記選択処理により選択されたレッスン範囲で指定される曲データの区間およびパートに対応する合否判定結果から演奏練習の進度を評価する評価処理とをコンピュータで実行させることを特徴とする。
【0009】
本発明では、曲を構成する各パートの各音を表す曲データの再生に伴って行われるユーザの演奏操作に応じて発生する演奏データと再生中の曲データとを比較して演奏操作の合否を判定し、曲データを再生し終えた後にレッスン範囲を選択すると、判定された演奏操作の合否判定結果の内、選択されたレッスン範囲で指定される曲データの区間およびパートに対応する合否判定結果から演奏練習の進度を評価するので、曲の所定の区間あるいはパートなど部分的なきめ細かい評価を受けることで効率的な演奏教習ができる。
【0010】
【発明の実施の形態】
以下、本発明による実施形態について、図を参照して説明する。
図1は、本発明による演奏教習装置の実施形態の構成を示し、(1)は演奏教習装置としてのパソコン1に接続された鍵盤装置等の電子楽器2からなるシステム図であり、(2)はパソコン1の内部構成を示すブロック図である。
図1(1)において、パソコン1は、OS(オペレーションシステム)上でアプリケーション(この実施形態においては、演奏教習処理のプログラム)を起動させて、電子楽器2の演奏操作を検出し、その演奏操作の状態を判定するとともに演奏後の評価を行う。
【0011】
図1(2)において、CPU11はシステムバス12を介して、プログラムROM13、ワークRAM14、曲ROM15、マウス等からなる操作部16、表示部17、及びI/Oインターフェース18に接続されている。
プログラムROM13には、ファイル(データ)の管理、メモリの管理、入出力の管理、ユーザインターフェースの提供等を行うOSのソフトウェアが格納されている。ワークRAM14は、演奏教習処理やその他の処理に必要なデータを一時的に記憶するCPU11のワークエリアであり、各種のレジスタやフラグが設けられている。このレジスタ等においては後述する。
曲ROM15には、演奏教習に必要な複数の曲データが記憶されている。この曲ROM15は、例えばフラッシュROM等の書き換え可能な不揮発性メモリで構成され、ユーザの希望に応じて記憶する曲データを書き変えることもできる。また、図には示していないが、インターネット等の通信回線を介して所定のサーバからMIDI形式等からなる曲データを受信して、この曲ROM15に記憶することも可能である。
【0012】
操作部16はキーボードやマウスで構成され、操作に応じて曲の選択、レッスンの選択等を行うことができる。表示部17には、CPU11の表示コマンド及び画像データに応じて、図2に示す演奏教習の曲リスト及び演奏教習の内容や、図3に示すように、楽音データのノートイベントを表す楽譜が表示される。また、マウスのクリックによってオン・オフするアイコンスイッチが表示される。
I/Oインターフェース18は、電子楽器2で演奏された演奏データを入力してCPU11に受け渡す。
なお、図2の表示は、曲リストの中から「グリーンスリーブス」の曲が選択され、そのレッスン範囲「1」〜「8」及び練習の進度を示している。また、図3の表示は、選択された曲の選択されたレッスン範囲における再生中の状態を示している。
【0013】
図4は、メインフローチャートである。まず、ワークRAM14のレジスタ等の変数を初期化する(ステップA1)。そして、以下のループを繰り返し実行する。
ループの最初は操作部16のキー入力待ち(ステップA2)となる。このキー入力待ちでは、キーボード又はマウスの指定に応じた処理を実行する。再生が指定された否かを判別し(ステップA3)、再生が指定されたときは再生フラグSTFを「1(再生)」にセットして再生開始を設定する(ステップA4)。再生状態において再生停止が指定されたか否かを判別し(ステップA5)、再生停止が指定されたときは、STFを「0(再生停止)」にセットして再生を停止する(ステップA6)。
【0014】
再生タイプとしては、通常の再生モード、たとえ間違った演奏であっても曲を進めるモード、正しい演奏のときに曲を進めるステップレッスンのモードを選択することができる。したがって、再生タイプ切り替えが指定されたか否かを判別し(ステップA7)、これが指定されたときは、モードフラグを反転して再生タイプ変数を更新する(ステップA8)。なお、この実施形態においては、正しい演奏のときに曲を進めるステップレッスンで、且つ両手モードが選択されている場合である。当然、右手パートあるいは左手パートが選択された場合は、その選択されたパートに含まれるイベントデータのみが再生の対象となり、イベントを指定するポインタも再生対象のイベントのみを指定するようになる。
また、その他の処理が指定されたか否かを判別し(ステップA9)、指定されたときはその他の処理を実行する(ステップA10)。
【0015】
図5は、ワークRAM14のエリアにおける各種のレジスタやフラグからなる変数を示している。各レジスタ及びフラグについては、以下に示すアプリケーションすなわち演奏教習処理の動作においてその都度説明する。
図6は再生処理のフローチャートである。最初に変数初期化を行い(ステップB1)、次に開始位置用のポインタを初期化する(ステップB2)。この後、再生フラグSTFの値を判定して、再生を続けるか否かを判別する(ステップB3)。再生を続ける場合には時間計算を行う(ステップB4)。すなわち、時間経過によって次のノートイベントの発音開始時間に達したか否かを計算する。次のノートイベントの発音開始時間に達したときは、ノートイベントを指定するポインタを移動する(ステップB5)。
【0016】
図5のCNPは、現在指定中のノートイベントのノートポインタであり、時間経過によって次のノートイベントの発音開始時間に達したときはインクリメントされる。このインクリメントに応じて、図3に示すように、ノートポインタのマーク(矢印)CNPが現在指定している音符の位置から次の音符の位置に移動する。このマークによってユーザは演奏すべき音符すなわちノートイベントを認識できる。次に、図5におけるフラグWFの値が「1」であるか否かを判別する(ステップB6)。WFは押鍵待ちフラグであり、CNPによって現在指定されているノートオンイベント(すなわちマークCNPによって指定されている音符)の発音開始時間に達しても押鍵がない場合に「1」にセットされる。
【0017】
WFの値が「1」でない場合には、テンポの変更のイベントがあるか否かを判別する(ステップB7)。テンポの変更がある場合にはテンポ変更イベント処理を行う(ステップB8)。次に、曲の部分再生を行っている場合で指定区間の再生が終了した場合時の自動停止処理を行う(ステップB9)。この後、発音時間が終了したノートオフイベントに対するノートオフ処理(ステップB10)、発音開始時間に達したノートオンイベントに対するノートオン処理(ステップB11)を実行する。
【0018】
ステップB6においてWFの値が「1」である場合、又はステップB11におけるノートオン処理が終了した後は、押鍵ありか否かを判別する(ステップB12)。押鍵操作があったときは、操作された鍵(KEY)の音高を図5のPITCH(KEY)にストアし、同時に図5の押鍵フラグKFを「1(押鍵あり)」にセットする(ステップB13)。そして、イベントノートのMIDI出力を行う(ステップB14)。次にステップレッスン処理(ステップB15)、リアルタイムチェック処理(ステップB16)を実行する。
ステップB12において押鍵がない場合、又はステップB16のリアルタイムチェック処理の後は、ステップB3に移行して、STFの値を見て再生を続けるか否かを判別する。STFの値が「1」で再生を続ける場合には、上記各ステップを実行する。
一方、STFの値が「0(再生停止)」の場合は、再生音のオールノートオフ処理を実行し(ステップB17)、演奏結果に対する評価処理を実行する(ステップB18)。そして、メインフローに戻る。
【0019】
図7は、図6の再生処理におけるステップB11のノートオン処理のフローチャートである。ポインタCNTの位置がノートオンイベントか否かを判別し(ステップC1)、ノートオンイベントの位置である場合には、後述する再生フラグの状態を見て、ノートオン処理を続けるか否かを判別する(ステップC2)。ノートオン処理を続ける場合には、通常の再生モードであるか否かを判別する(ステップC3)。
【0020】
通常の再生モードではなく、ステップレッスンのモードである場合には、WFの値が「0」であるか否かを判別する(ステップC4)。この値が「0」である場合には、押鍵フラグKFの値が「1」であるか否かを判別する(ステップC5)。この値が「1(押鍵)」である場合には、CNTで指定されたノートオンイベントに対して速やかに押鍵操作されたので、KFの値を「0」に戻す(ステップC6)。一方、KFの値が「0」で押鍵がない場合には、WFの値を「1(押鍵待ち)」にセットする(ステップC7)。
ステップC4においてWFの値が「1」である場合、ステップC6においてKFの値を「0」に戻した場合、又はステップC7においてWFの値を「1」にセットした場合には、次のノートオンイベントを指定する(ステップC8)。そして、もし次のノートがなければ前述のステップC2で判断される再生フラグを再生終了状態にする。そして、ステップC2に移行してノートオン処理を続けるか否かを判別する。
【0021】
ステップC3において再生モードが通常再生モードである場合には、MIDI出力の発音処理を行う(ステップC9)。この発音処理の後、又は、ステップC1においてポインタCNPの位置がノートオンイベントでない場合、若しくはステップC2においてノートオン処理を続けない場合には、このフローを終了して図6の再生処理のフローに戻る。
【0022】
図8は、図6の再生処理におけるステップレッスン処理のフローチャートである。このフローではユーザの演奏操作すなわち押鍵に応じた処理を行う。ポインタCNPで指定するイベントがノートオンイベントであるか否かを判別し(ステップD1)、指定がノートオンイベントである場合には、KFの値が「1」か否か、すなわち押鍵がされたか否かを判別する(ステップD2)。この値が「1」である場合には、さらにWFの値が「1」であるか否かを判別する(ステップD3)。この値が「1」すなわち押鍵待ちのポーズ状態である場合には、押鍵によってそのポーズを解除してWFの値を「0」に戻す(ステップD4)。次に、時間調整値を算出する(ステップD5)。すなわち、ポーズ状態の間に曲データの時間が経過しているので、時間戻しの調整のための時間差を算出する。
【0023】
ステップD3において、WFの値が「0」である場合、すなわちノートオンイベントの発音開始時間に対して押鍵操作が早過ぎる場合には、ポインタCNPを早送りする(ステップD6)。また、時間調整値を算出する(ステップD7)。すなわち、早送りした分だけ時間進め処理のための時間差を算出する。
ステップD5若しくはステップD7における時間調整値算出の後、又は、ステップD1においてCNPで指定するイベントがノートオンイベントでない場合、若しくはステップD2においてKFの値が「0」すなわち押鍵がない場合には、このフローを終了して図6の再生処理に戻る。
【0024】
図9及び図10は、図6の再生処理におけるステップB16のリアルタイムチェック処理のアルゴリズムを示すフローチャートである。このフローでは、ユーザの演奏操作の進行に伴って、リアルタイムで押鍵操作の良否をチェックする。図3に示した画面のマークCNPによってユーザが演奏操作をしても、その演奏操作がマークで指定した音符であるとは限らない。したがって、マーク位置の前方向及び後方向をサーチして演奏操作に対応する音符を検索する必要がある。図5のFSP及びBSPは、それぞれ、前方向サーチ用ポインタ及び後方向サーチ用ポインタである。
【0025】
図9において、FSPにCNPで現在指定しているノートオンイベントの次のノートオンイベントをセットする(ステップE1)。また、BSPにCNPで現在指定しているノートオンイベントをセットする(ステップE2)。すなわち、押鍵タイミングの時間の直前及び直後のノートオンイベントを指定する。次に、図5に示す3つのフラグFMF、BMF、及びLAGFを全て「0」にセットする(ステップE3)。FMFは、前方向のノートオンイベントと押鍵による音高とが一致したときに「1」にセットするフラグである。BMFは、後方向のノートオンイベントと押鍵による音高とが一致したときに「1」にセットするフラグである。LAGFは、指定しているノートオンイベントの発音開始時間よりも押鍵操作のタイミングが遅れたときに「1」にセットするフラグである。
次に、レジスタFMINに「−1000」をセットし、レジスタBMINに「1000」をセットする(ステップE4)。
図5に示すように、FMINは前方向最小時間をストアするレジスタであり、BMINは前方向最小時間をストアするレジスタである。ステップE4においては、FMINに負の最大値をストアし、BMINに正の最大値をストアする。なお、FMIN及び後述するBMINにストアする数値は、4分音符のテンポを100としたときの値である。したがって、FMINには4分音符の10個分だけ後方向の時間がストアされる。
【0026】
図5に示すように、NOWは曲再生の現在時間をストアするレジスタであり、POSはNOWの現在時間を保持する時間保持のレジスタである。図9のステップE5において、NOWの現在時間をPOSにストアする。すなわち、押鍵操作がされた時間である押鍵タイミングをPOSに保持する。そして、ポインタCNTに「0」をセットしてクリアし(ステップE6)、CNTの値をインクリメントしながら以下のループを繰り返す。
CNTの値が「3」未満であるか否かを判別し(ステップE7)、この値が「3」未満である場合には、図5の2つのレジスタPITCH(FSP)の値とPITCH(KEY)の値とが等しいか否かを判別する(ステップE8)。PITCH(FSP)は、FSPのノートの音高をストアするレジスタであり、PITCH(KEY)はすでに記載したように、押鍵された鍵の音高をストアするレジスタである。PITCH(FSP)の値とPITCH(KEY)の値とが等しい場合、すなわち、前方向にサーチしたノートオンイベントの音高と押鍵操作の音高とが一致した場合には、さらに、MAT(FSP)の値が「1」より小さいか否かを判別する(ステップE9)。
【0027】
図5に示すレジスタMAT(FSP)は、FSPのノートオンイベントの判定値をストアするレジスタであり、その初期値は「−1」である。ノートオンイベントに対して押鍵操作がされて、その押鍵操作の良否が判定された場合には、MAT(FSP)には「1」、「2」又は「3」の値がストアされる。したがって、MAT(FSP)の値が「1」より小さい場合には、そのノートオンイベントがまだ判定されていないデータである。この場合には、POSの値からTIME(FSP)の値が減算され、その減算結果の値がFDIFにストアされる(ステップE10)。
【0028】
図5のレジスタTIME(FSP)には、FSPで指定したノートオンイベントの発音開始時間がストアされる。したがって、図5のレジスタFDIFには、ステップE10の演算によって押鍵時間と前方向のノートオンイベントの発音開始時間との時間差がストアされる。この場合、POSにストアされた押鍵時間から前方向のノートオンイベントの発音開始時間を減算するので、その時間差は負の値となる。次に、FMINのデータとFDIFのデータとを比較して、FMINのデータの値がFDIFのデータの値よりも小さいか否かを判別する(ステップE11)。
【0029】
いま、FMINには「−1000」の値がストアされている。すなわち、押鍵タイミングの時間から4分音符10個分だけ後方向の時間がストアされているので、FMINの時間のほうがFDIFの負の時間差よりも小さい。したがって、ステップE12において、FMINの値「−1000」をFDIFの時間差の値に置き換え、図5のレジスタFNOMIにFSPの値をストアする。FNOMIは、押鍵に対応する前方向の候補対象となるノートオンイベントをストアするレジスタである。
例えば、FDIFの時間差が4分音符1個分である場合には、FMINには「−100」の値がストアされる。そして、FSPで指定したノートオンイベントを前方向における押鍵操作の候補ノートオンイベントとして、FNOMIにストアする。次に、フラグFMFに「1」をセットする(ステップE13)。すなわち、前方向に押鍵操作の音高と一致する音高のノートオンイベントが存在することを示すフラグを「1」にセットする。
【0030】
ステップE13の後、又は、ステップE8においてPITCH(FSP)の値とPITCH(KEY)の値とが異なり、前方向にサーチしたノートオンイベントの音高と押鍵操作の音高とが一致しない場合、若しくはステップE9においてMAT(FSP)の値が「1」以上で、すでにFSPで指定するノートオンイベントが判定済みになっている場合には、ステップE14においてFSPの値をインクリメントする。すなわち、さらに前方向のノートオンイベントを指定する。なお、前方向に押鍵操作の候補対象となるノートオンイベントが検出された後は、さらに前方向のノートオンイベントを指定する必要はないが、処理の高速化及びフローの単純化を図るために、さらに前方向のノートオンイベントを指定する。したがって、ステップE11においてFMINの値がFDIFの値よりも大きい場合でも、ステップE14においてFSPの値をインクリメントする。
【0031】
この後は、図10のフローにおいて、図5の2つのレジスタPITCH(BSP)の値とPITCH(KEY)の値とが等しいか否かを判別する(ステップE15)。PITCH(BSP)は、BSPのノートの音高をストアするレジスタであり、PITCH(KEY)はすでに記載したように、押鍵された鍵の音高をストアするレジスタである。PITCH(BSP)の値とPITCH(KEY)の値とが等しい場合、すなわち、後向にサーチしたノートオンイベントの音高と押鍵操作の音高とが一致した場合には、さらに、MAT(BSP)の値が「1」より小さいか否かを判別する(ステップE9)。
【0032】
図5に示すレジスタMAT(BSP)は、BSPのノートオンイベントの判定値をストアするレジスタであり、その初期値は「−1」である。ノートオンイベントに対して押鍵操作がされて、その押鍵操作の良否が判定された場合には、MAT(BSP)には「1」、「2」又は「3」の値がストアされる。したがって、MAT(BSP)の値が「1」より小さい場合には、そのノートオンイベントがまだ判定されていないデータである。この場合には、POSの値からTIME(BSP)の値が減算され、その減算結果の値がBDIFにストアされる(ステップE10)。
【0033】
図5のレジスタTIME(BSP)には、BSPで指定したノートオンイベントの発音開始時間がストアされる。したがって、図5のレジスタBDIFには、ステップE17の演算によって押鍵時間と後方向のノートオンイベントの発音開始時間との時間差がストアされる。この場合、POSにストアされた押鍵タイミングの時間から後方向のノートオンイベントの発音開始時間を減算するので、その時間差は正の値となる。次に、BMINのデータとBDIFのデータとを比較して、BMINのデータの値がBDIFのデータの値よりも大きいか否かを判別する(ステップE18)。
【0034】
いま、BMINには「1000」の値がストアされている。すなわち、押鍵タイミングの時間から4分音符10個分だけ前方向の時間がストアされているので、BMINの時間のほうがBDIFの時間差よりも大きい。したがって、ステップE19において、BMINの値「1000」をBDIFの時間差の値に置き換え、図5のレジスタBNOMIにBSPの値をストアする。BNOMIは、押鍵に対応する後方向の候補対象のノートオンイベントをストアするレジスタである。
例えば、BDIFの時間差が4分音符2個分である場合には、BMINには「200」の値がストアされる。そして、BSPで指定したノートオンイベントを後方向における押鍵操作の候補ノートオンイベントとして、BNOMIにストアする。次に、フラグBMFに「1」をセットし(ステップE20)、フラグLAGFに「1」をセットする(ステップE21)。すなわち、後方向に押鍵操作の音高と一致する音高のノートオンイベントが存在することを示すフラグを「1」にセットし、そのノートオンイベントの発音開始時間から押鍵タイミングが遅れていることを示すフラグを「1」にセットする。
この後、BSPの値をデクリメントする(ステップE22)。すなわち、さらに後方向のノートオンイベントを指定する。
【0035】
ステップE21の後、又は、ステップE15においてPITCH(BSP)の値とPITCH(KEY)の値とが異なり、後方向にサーチしたノートオンイベントの音高と押鍵操作の音高とが一致しない場合、若しくはステップE16においてMAT(BSP)の値が「1」以上で、すでにBSPで指定するノートオンイベントが判定済みになっている場合には、ステップE22においてBSPの値をデクリメントする。すなわち、さらに後方向のノートオンイベントを指定する。
【0036】
なお、前方向サーチの場合と同様に、後方向に押鍵操作の候補対象となるノートオンイベントが検出された後は、さらに後方向のノートオンイベントを指定する必要はないが、処理の高速化及びフローの単純化を図るために、さらに後方向のノートオンイベントを指定する。したがって、ステップE18においてBMINの値がBFDIFの値よりも大きい場合でも、ステップE22においてBFSPの値をデクリメントする。
【0037】
次に、CNTの値をインクリメントする(ステップE23)。そして、図9のステップE9のステップE7に移行し、CNTの値が「3」未満であるか否かを判別する。CNTの値が「3」未満である場合には、ステップE8〜ステップ23までのループを繰り返す。ステップE7において、CNTの値が「3」以上になった場合には、ステップE24に移行して判定処理を実行し、図6の再生処理に戻る。すなわち、押鍵操作があったときは、その押鍵操作タイミングの時間を基準として、前方向及び後方向にそれぞれ3つのノートオンイベントをサーチして、押鍵操作の候補対象を検出する。
【0038】
図11及び図12は、図9のステップE24の判定処理のフローチャートである。このフローでは、ユーザの押鍵操作の良否すなわち演奏操作の状態を判定する。図11において、FMF又はBMFの少なくとも一方の値が「1」であるか否かを判別する(ステップF1)。FMF又はBMFのいずれも「1」でない場合には、押鍵操作タイミングの時間を基準として、その前方向及び後方向の所定範囲において、押鍵操作の候補対象が検出されなかった場合である。この場合には、MAT(CNP)に「−1」をセットする(ステップF2)。
【0039】
FMF又はBMFの少なくとも一方が「1」である場合には、FMF及びBMFの値が共に「1」であるか否かを判別する(ステップF3)。共に「1」である場合には、押鍵操作タイミングの時間を基準として、その前方向及び後方向の両方において、押鍵操作の2つの候補対象が検出された場合である。この場合には、より押鍵操作タイミングの時間に近い方を確定候補とする。このため、FMINの負の値とBMINの正の値を加算した結果が「0」より大きい(加算結果が正である)か否かを判別する(ステップF4)。
【0040】
加算した結果が「0」より大きい場合には、BMINの値の方がFMINの絶対値より大きい場合であるので、FSPで指定したノートオンイベントの方が、BSPで指定したノートオンイベントよりも押鍵操作タイミングの時間に近い。したがってこの場合には、FMINの時間データを図5のレジスタDIFにストアする(ステップF5)。DIFは確定時間差をストアするレジスタである。また、FNOMIにストアされている候補対象のノートオンイベントを図5のレジスタNOMIにストアする(ステップF6)。NOMIは確定候補のノートオンイベントを記憶するレジスタである。
【0041】
ステップF4において、加算した結果が「0」より小さい場合には、FMINの絶対値の方がBMINの値より大きい場合であるので、BSPで指定したノートオンイベントの方が、FSPで指定したノートオンイベントよりも押鍵操作タイミングの時間に近い。したがってこの場合には、BMINの時間データを図5のレジスタDIFにストアする(ステップF7)。また、BNOMIにストアされている候補対象のノートオンイベントを確定候補としてレジスタNOMIにストアする(ステップF8)。
【0042】
ステップF3において、FMF及びBMFの値が共に「1」ではなく、いずれか一方のみが「1」である場合には、押鍵操作タイミングの時間を基準として、その前方向又は後方向の一方のみにおいて、押鍵操作の候補対象が検出された場合である。この場合には、FMFの値が「1」であるか否かを判別し(ステップF9)、この値が「1」である場合には、FMINの時間データをレジスタDIFにストアし(ステップF10)、FNOMIにストアされている候補ノートオンイベントを確定候補としてレジスタNOMIにストアする(ステップF11)。
ステップF9において、FMFの値が「0」である場合、すなわちBMFの値が「1」である場合には、BMINの時間データをレジスタDIFにストアし(ステップF12)、BNOMIにストアされている候補ノートオンイベントを確定候補としてレジスタNOMIにストアする(ステップF13)。
【0043】
ステップF6、ステップF8、ステップF11、又はステップF13において、レジスタNOMIに確定候補のノートオンイベントをストアした後は、DIFの値をREFの値で除算してその除算値に「100」を乗算した値を算出し、その算出値の絶対値をレジスタGAPにストアする(ステップF14)。図5に示すREFは基準時間がストアされたレジスタであり、この場合の基準時間は4分音符の拍数値「100」である。また、図5に示すGAPはタイミング差がストアされるレジスタである。すなわち、ステップF14の演算によれば、DIFにストアされた押鍵タイミングと確定候補のノートオンイベントの発音開始時間との確定時間差が基準時間に比べてどの程度であるかをパーセンテージで算出し、その算出結果をGAPにストアする。
【0044】
次に、図12のフローにおいて、GAPの値が「50」より大きいか否かを判別する(ステップF15)。すなわち、押鍵タイミングと確定候補のノートオンイベントの発音開始時間との確定時間差が、8分音符の拍数値「50」よりも大きいか否かを判別する。GAPの値が「50」より大きい場合には、その確定時間差を許容できないものとし、押鍵操作タイミングが遅過ぎるか又は早過ぎるとして演奏ミスと判定する。この場合には、図5のカウンタMISSの値をインクリメントする(ステップF21)。MISSは演奏ミスの回数を累算するカウンタであり、その初期値は「0」である。
次に、LAGFの値が「1」であるか否かを判別する(ステップF17)。この値が「1」である場合には、ノートオンイベントの発音開始時間に比べて押鍵操作タイミングが遅過ぎる場合であるので、MAT(CNP)に「3」をストアする(ステップF18)。一方、LAGFの値が「0」である場合には、ノートオンイベントの発音開始時間に比べて押鍵操作タイミングが早過ぎる場合であるので、MAT(CNP)に「2」をストアする(ステップF19)。
【0045】
ステップF15において、GAPの値が「50」以下である場合には、WFの値が「1」であるか否かを判別する(ステップF20)。この値が「1」である場合には、押鍵待ちでポーズ状態の後に押鍵操作がされた場合であるので、実際の押鍵遅れ時間はGAPの値「50」よりも大きい。したがってこの場合には、ノートオンイベントの発音開始時間に比べて押鍵操作タイミングが遅過ぎる場合であるので、MISSの値をインクリメントして(ステップF21)、MAT(CNP)に「3」をストアする(ステップF22)。
ステップF20において、WFの値が「0」で押鍵待ちの状態でない場合には、ノートオンイベントの発音開始時間に対して許容できる押鍵操作タイミングであるとして、図5のレジスタOKの値をインクリメントする(ステップF23)。OKは演奏合格回数を累算するレジスタであり、その初期値は「0」である。そして、レジスタMAT(CNP)に「1」すなわち演奏合格を示す値をストアする(ステップF24)。
【0046】
図11のステップF2、図12のステップF18、ステップF19、ステップF22、又はステップF24において、MAT(CNP)に値をストアした後は、そのMAT(CNP)の値に応じた評価画像を表す画像データを表示部17に送出して表示する(ステップF25)。
例えば、図3に示すように、音符の画像の下に「○」、「×」、「→」、「←」からなる評価画像を表示する。「○」、「×」、「→」、「←」の評価画像は、それぞれ、MAT(CNP)に値「1」、「−1」、「2」、「3」に対応している。
なお、この評価画像は「○」、「×」、「→」、「←」に限らず、他の形状でもよい。他の実施形態として、対応する音符の画像そのものを判定結果に応じてアレンジしてもよい。例えば、音符の符頭に人間の顔を表示させて、顔の表情(笑い顔、泣き顔)で判定を表示するようにしてもよい。要は、ユーザが自分の演奏結果を容易に認識できるような評価画像を表示部17に表示できる形状であればよい。
ステップF25において画像データを送出した後は、図6の再生処理に戻る。
【0047】
図13は、図6の再生処理におけるステップB18の評価処理のフローチャートである。このフローでは、ユーザが演奏教習曲の演奏練習が終了した後に、その練習の進度を評価する。
まず、演奏すべきノートオンイベントを指定するポインタCNTを「0」にセットし(ステップG1)、曲のノートオンイベントを指定するポインタCNPを「0」すなわち先頭のノートオンイベントにセット(ステップG2)した後、CNTの値をインクリメントしながら以下のループ処理を繰り返す。ステップG3において、後述する継続フラグの状態を見てループ処理を続けるか否かを判別する。このフラグの状態が終了を示す状態にある場合にはループ処理は終了する。
【0048】
評価処理を続ける場合には、CNPで指定するノートオンイベントの発音開始時間をストアしているTIME(CNP)の値からSTART(LNO)の値を減算し、その減算結果をレジスタaにストアする(ステップG4)。ここでLNOはレッスン範囲(曲の区間及び再生パート)を指定するレジスタである。図2の表示画面において、手順のレッスン「1」〜「8」のうちいずれか1つをマウスによって選択すると、図5に示すLNOに選択されたレッスン範囲の番号がストアされる。また、レッスン範囲が選択されたときに、図5のSTART(LNO)及びEND(LNO)に、そのレッスン範囲であるLNOの開始時間及び終了時間がストアされる。
【0049】
したがって、ステップG4においては、CNPで指定するノートオンイベントの発音開始時間から選択されたレッスン範囲の開始時間を差し引いた時間差がレジスタaにストアされる。次のステップG5においては、END(LNO)の値からTIME(CNP)の値を減算した減算結果をレジスタbにストアする。すなわち、選択されたレッスン範囲の終了時間からCNPで指定するノートオンイベントの発音開始時間を差し引いた時間差がレジスタbにストアされる。
次に、a及びbの値が共に「0」より大きいか否かを判別する(ステップG6)。すなわち、CNPで指定したノートオンイベントが選択されたレッスン範囲内のノートオンイベントであるか否かを判別する。a及びbの値が共に「0」より大きい場合、すなわち、指定したノートオンイベントがレッスン範囲内にある場合には、そのノートオンイベントは演奏すべきイベントであるので、CNTの値をインクリメントする(ステップG7)。しかし、a又はbのいずれかの値が「1」以上である場合には、指定したノートオンイベントがレッスン範囲の外にあるので、CNTの値はインクリメントしない。
【0050】
ステップG7においてCNTの値をインクリメントした後、又は、ステップG6においてa又はbの少なくとも一方の値が「1」以上である場合には、次のノートオンイベントを指定する(ステップG8)。もし次のデータがない場合は、継続フラグの状態を終了を示す状態にする。そして、ステップG3に移行して、このフラグの状態をもとにループ処理を続けるか否かを判別する。続ける場合には、ステップG8までの処理を繰り返す。次のノートオンイベントがない場合には、CNTの値をレジスタORGにストアする(ステップG9)。図5に示すように、ORGはノートオンイベント数を累算するカウンタであり、ステップG9においてレッスン範囲内にあるノートオンイベントの数がストアされる。
【0051】
次に、OKの値をORGの値で除算し、その除算結果に「100」を乗算した結果をレジスタLEVにストアする(ステップG10)。図5に示すように、LEVは演奏レベル(ユーザの演奏結果のレベル)をストアするレジスタである。すなわち、ステップG10においては、レッスン範囲内にあるノートオンイベントの数の中で、演奏合格回数がどれだけあるかのパーセンテージのデータをLEVにストアする。次に、LEVの値をEVE(LNO)にストアする(ステップG11)。図5に示すように、EVE(LNO)はLNOすなわちレッスン範囲における進度をストアするレジスタである。
ステップG11の処理は、LEVにストアされた演奏合格回数がどれだけあるかのパーセンテージのデータを、数値データや画像データに変換するテーブルを参照して、変換された数値データや画像データをEVE(LNO)にストアする処理である。この実施形態においては、EVE(LNO)にストアする数値データ及び画像データは、進度を示すパーセンテージの値及び進度を色の濃さ(色の彩度)で表す色指定データである。そして、ステップG12において、EVE(LNO)にストアした進度を表すデータを表示部17に送出して表示する。
【0052】
この結果、図2に示すように、レッスン範囲ごとに進度を示すパーセンテージの値が表示される。また、図3に示すように、レッスン範囲ごとに進度を表す画像(図ではハッチングであるが、実際は色の濃さ)が表示される。なお、現在練習中のレッスン範囲については、進度を表す画像とは異なる画像(進度を表す色とは異なる色)が表示される。
なお、進度を表す画像としては色や数値に限定されない。例えば、円グラフや棒グラフの画像で表してもよい。
【0053】
以上のように、上記実施形態によれば、演奏データと選択された範囲における曲データの演奏指示データとを比較して、選択された範囲における演奏操作の結果を評価し、評価結果に対応する評価画像の画像データを表示する。したがって、ユーザが課題曲の演奏を行う場合に、演奏後に演奏の全体的な評価だけでなく部分的なきめ細かい評価を受けることで、演奏技量の低い部分の集中的な練習を行うことにより、効率的な演奏教習ができる。
【0054】
なお、上記実施形態においては、電子楽器として鍵盤装置を例に採ったが、電子管楽器や電子打楽器に対する演奏教習においても、本発明を適用できることは明らかである。
【0055】
また、上記実施形態においては、物の発明としての演奏教習装置について説明したが、上記実施形態におけるフローチャートに示すように、演奏教習処理を実行するプログラムの発明を実現できる。
すなわち、そのプログラムは、所定の表示手段に表示された曲データに対して所定の演奏手段で演奏された演奏操作を検出して演奏データを入力する第1のステップと、曲データの任意の範囲を所定の操作手段の操作に応じて選択する第2のステップと、第1のステップによって入力された演奏データと第2のステップによって選択された範囲における曲データの演奏指示データとを比較して選択された範囲における演奏操作の結果を評価する第3のステップと、第3のステップによって評価された結果に対応する評価画像の画像データを表示手段に出力して評価画像を表示させる第4のステップとを実行するものである。
また、上記演奏教習処理のプログラムをインターネット等の通信手段を介して、外部のサーバ等から受信する構成も可能である。
【0056】
【発明の効果】
本発明によれば、曲を構成する各パートの各音を表す曲データの再生に伴って行われるユーザの演奏操作に応じて発生する演奏データと再生中の曲データとを比較して演奏操作の合否を判定し、曲データを再生し終えた後にレッスン範囲を選択すると、判定された演奏操作の合否判定結果の内、選択されたレッスン範囲で指定される曲データの区間およびパートに対応する合否判定結果から演奏練習の進度を評価するので、曲の所定の区間あるいはパートなど部分的なきめ細かい評価を受けることで効率的な演奏教習ができる。
【図面の簡単な説明】
【図1】本発明の演奏教習装置の構成を示し、(1)はそのシステム図、(2)は図1(1)のパソコンの内部構成を示すブロック図。
【図2】図1(1)の表示部の画面に表示された演奏教習の曲リスト等を示す図。
【図3】図1(1)の表示部の画面に表示された演奏教習の楽譜並びに評価画像及び進度を示す図。
【図4】図1(1)のCPUによって実行されるメインフローチャート。
【図5】図1(1)のワークRAMにおける各種のレジスタ等を示す図。
【図6】図4における再生処理のフローチャート。
【図7】図6におけるノートオン処理のフローチャート。
【図8】図6におけるステップレッスン処理のフローチャート。
【図9】図6におけるリアルタイムチェックのフローチャート。
【図10】図9に続くリアルタイムチェックのフローチャート。
【図11】図9における判定処理のフローチャート。
【図12】図11に続く判定処理のフローチャート。
【図13】図6における評価処理のフローチャート。
【符号の説明】
1 パソコン
2 電子楽器
11 CPU
13 プログラムROM
14 ワークRAM
15 曲ROM
16 操作部
17 表示部
18 I/Oインターフェース
Claims (2)
- 曲を構成する各パートの各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの再生に伴って行われるユーザの演奏操作に応じて発生する演奏データと再生中の曲データとを比較して演奏操作の合否を判定する判定手段と、
曲データを再生し終えた後に、レッスン範囲を選択する選択手段と、
前記判定手段により判定された演奏操作の合否判定結果の内、前記選択手段により選択されたレッスン範囲で指定される曲データの区間およびパートに対応する合否判定結果から演奏練習の進度を評価する評価手段と
を具備することを特徴とする演奏教習装置。 - 曲を構成する各パートの各音を表す曲データの再生に伴って行われるユーザの演奏操作に応じて発生する演奏データと再生中の曲データとを比較して演奏操作の合否を判定する判定処理と、
曲データを再生し終えた後に、レッスン範囲を選択する選択処理と、
前記判定処理により判定された演奏操作の合否判定結果の内、前記選択処理により選択されたレッスン範囲で指定される曲データの区間およびパートに対応する合否判定結果から演奏練習の進度を評価する評価処理と
をコンピュータで実行させることを特徴とする演奏教習処理のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001245403A JP3915452B2 (ja) | 2001-08-13 | 2001-08-13 | 演奏教習装置及び演奏教習処理のプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001245403A JP3915452B2 (ja) | 2001-08-13 | 2001-08-13 | 演奏教習装置及び演奏教習処理のプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003058153A JP2003058153A (ja) | 2003-02-28 |
JP3915452B2 true JP3915452B2 (ja) | 2007-05-16 |
Family
ID=19075157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001245403A Expired - Fee Related JP3915452B2 (ja) | 2001-08-13 | 2001-08-13 | 演奏教習装置及び演奏教習処理のプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3915452B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2688063A2 (en) | 2012-07-18 | 2014-01-22 | Yamaha Corporation | Note sequence analysis method |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4655455B2 (ja) * | 2003-06-30 | 2011-03-23 | カシオ計算機株式会社 | 演奏記録再生装置、及びプログラム |
US7332664B2 (en) * | 2005-03-04 | 2008-02-19 | Ricamy Technology Ltd. | System and method for musical instrument education |
JP5345809B2 (ja) * | 2008-07-25 | 2013-11-20 | 株式会社タイトー | 楽器型演奏装置及び楽器演奏システム |
JP5083225B2 (ja) | 2009-01-13 | 2012-11-28 | ヤマハ株式会社 | 演奏練習装置及びプログラム |
US20160104469A1 (en) * | 2013-05-23 | 2016-04-14 | Yamaha Corporation | Musical-performance analysis method and musical-performance analysis device |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6026229B2 (ja) * | 1979-12-27 | 1985-06-22 | ヤマハ株式会社 | 鍵盤楽器の自動練習装置 |
JPS63197483A (ja) * | 1987-02-10 | 1988-08-16 | ヤマハ株式会社 | 音楽教育用玩具 |
JP3275362B2 (ja) * | 1992-04-10 | 2002-04-15 | カシオ計算機株式会社 | 演奏練習装置 |
JPH0619388A (ja) * | 1992-06-29 | 1994-01-28 | Casio Comput Co Ltd | 演奏練習装置 |
JPH06118867A (ja) * | 1992-09-30 | 1994-04-28 | Yamaha Corp | 鍵盤楽器教習用記憶媒体および楽譜 |
JP2611624B2 (ja) * | 1993-06-21 | 1997-05-21 | カシオ計算機株式会社 | 楽譜表示装置 |
CN1106949A (zh) * | 1993-07-08 | 1995-08-16 | 株式会社金星社 | 用于电子乐器演奏练习的装置及其控制方法 |
JP3204014B2 (ja) * | 1995-01-10 | 2001-09-04 | ヤマハ株式会社 | 演奏指示装置および電子楽器 |
JP3290918B2 (ja) * | 1997-05-01 | 2002-06-10 | 株式会社第一興商 | 歌唱採点機能付きカラオケ装置 |
JP2922509B2 (ja) * | 1997-09-17 | 1999-07-26 | コナミ株式会社 | 音楽演出ゲーム機、音楽演出ゲーム用の演出操作指示システムおよびゲーム用のプログラムが記録されたコンピュータ読み取り可能な記憶媒体 |
JP2001100746A (ja) * | 1999-09-30 | 2001-04-13 | Casio Comput Co Ltd | 自動演奏装置及び自動演奏処理のプログラムを記録した記録媒体 |
JP3678135B2 (ja) * | 1999-12-24 | 2005-08-03 | ヤマハ株式会社 | 演奏評価装置および演奏評価システム |
-
2001
- 2001-08-13 JP JP2001245403A patent/JP3915452B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2688063A2 (en) | 2012-07-18 | 2014-01-22 | Yamaha Corporation | Note sequence analysis method |
US9087500B2 (en) | 2012-07-18 | 2015-07-21 | Yamaha Corporation | Note sequence analysis apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP2003058153A (ja) | 2003-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2705568B2 (ja) | 自動演奏装置 | |
US6486388B2 (en) | Apparatus and method for creating fingering guidance in playing musical instrument from performance data | |
WO1996024422A1 (en) | System for enhancing a multimedia presentation by composing music according to a user's perception | |
JP2006276333A (ja) | 電子楽器及びベロシティ表示プログラム | |
EP0945849B1 (en) | Tone and picture generator device | |
JP3915452B2 (ja) | 演奏教習装置及び演奏教習処理のプログラム | |
CN104036764B (zh) | 乐音信息处理设备和方法 | |
JP3931603B2 (ja) | 演奏教習装置及び演奏教習処理のプログラム | |
JP3286683B2 (ja) | 旋律合成装置及び旋律合成方法 | |
JP3588387B2 (ja) | 演奏表示装置 | |
CN110959172B (zh) | 演奏解析方法、演奏解析装置以及存储介质 | |
JP3622275B2 (ja) | 自動演奏の制御データ入力方法および自動演奏装置 | |
JP4525591B2 (ja) | 演奏評価装置、及びプログラム | |
JP2002175071A (ja) | 演奏ガイド方法、演奏ガイド装置および記録媒体 | |
JP3623557B2 (ja) | 自動作曲システムおよび自動作曲方法 | |
JP6627350B2 (ja) | コンテンツ制御装置及びコンテンツ制御プログラム | |
JP4019932B2 (ja) | スペクトル設定装置およびスペクトル設定処理のプログラム | |
JP4453233B2 (ja) | 楽譜表示制御装置及び楽譜表示処理のプログラム | |
JP2003066957A (ja) | 演奏教習装置及び演奏教習処理のプログラム | |
JPH0619388A (ja) | 演奏練習装置 | |
JP4214845B2 (ja) | 自動アルペジオ装置および同装置に適用されるコンピュータプログラム | |
JP4337288B2 (ja) | 演奏動作表示装置、及びプログラム | |
JP2526751B2 (ja) | 電子楽器 | |
JP4172335B2 (ja) | 自動伴奏生成装置及びプログラム | |
JP2560485B2 (ja) | 電子楽器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040823 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060206 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060413 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061011 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061031 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061218 |
|
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: 20070116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070129 |
|
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: 20110216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140216 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |