JP6069841B2 - 演奏動作表示装置、方法及びプログラム - Google Patents

演奏動作表示装置、方法及びプログラム Download PDF

Info

Publication number
JP6069841B2
JP6069841B2 JP2012023404A JP2012023404A JP6069841B2 JP 6069841 B2 JP6069841 B2 JP 6069841B2 JP 2012023404 A JP2012023404 A JP 2012023404A JP 2012023404 A JP2012023404 A JP 2012023404A JP 6069841 B2 JP6069841 B2 JP 6069841B2
Authority
JP
Japan
Prior art keywords
performance
information
keyboard
cpu
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.)
Active
Application number
JP2012023404A
Other languages
English (en)
Other versions
JP2013160948A (ja
JP2013160948A5 (ja
Inventor
淳一郎 副島
淳一郎 副島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2012023404A priority Critical patent/JP6069841B2/ja
Publication of JP2013160948A publication Critical patent/JP2013160948A/ja
Publication of JP2013160948A5 publication Critical patent/JP2013160948A5/ja
Application granted granted Critical
Publication of JP6069841B2 publication Critical patent/JP6069841B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、電子楽器の演奏動作を表示する演奏動作表示装置、方法及びプログラムに関する。
従来、演奏の進行に応じて押鍵(操作)すべき鍵に対して、押鍵に使用する指をユーザに通知するナビゲーション機能を備えた演奏動作表示装置が提案されている。例えば、特許文献1には、演奏時に演奏動作として鍵盤に対する手指の位置を表示部に表示させることにより、押鍵に使用する指をユーザに通知するナビゲーション機能を備えた演奏動作表示装置が提案されている。また、特許文献1で提案される演奏動作表示装置では、演奏の各パートにおいて、演奏動作の表示方式の変更操作を受け付けたことに応じて、手指のサイズの拡大及び縮小、手指の透過表示、手指をワイヤーフレームとした表示、視点(表示角度)の変更等を実行することが提案されている。
特許第3528051号公報
しかしながら、特許文献1で提案される演奏動作表示装置では、演奏情報を遂行するための機能として、各パートにおける鍵盤に対する手指の位置を表示部に表示させる機能を備えているに過ぎない。このため、演奏者は、次のパートに対応するためにどのように手指を動かせばよいかについて確認しながら、効率よく練習することができなかった。
本発明は、このような状況に鑑みてなされたものであり、演奏者にとって練習しやすい演奏動作の表示をすることができる演奏動作表示装置、方法及びプログラムを提供することを目的とする。
上記目的を達成するため、本発明の一態様の演奏動作表示装置は
演奏すべき楽曲において、前記楽曲上で各楽音の発音開始時刻、音高、及び使用する指を示すデータを格納する演奏情報と、鍵盤の押鍵状態を格納する鍵盤データと、手指の構造を示す構造データと前記楽曲上の複数の位置それぞれにおける手指の動作を表わす動作情報と、を記憶する記憶手段と、
前記演奏情報、前記動作情報、前記鍵盤データ及び前記構造データに基づいて、前記楽曲の演奏を遂行する際の前記鍵盤の押鍵位置を示す演奏動作画像を連続して表示手段に描画する描画手段と、を備え、
前記描画手段は、
前記鍵盤データに基づき鍵盤を描画する鍵盤描画手段と、
前記演奏を遂行する際の各時刻における前記動作情報を取得する動作情報取得手段と、
前記動作情報取得手段により取得された前記動作情報及び前記構造データに基づき手指の描画処理を行う手指描画処理手段と、
前記楽曲の再生位置を表わす時刻を順次更新するとともに、前記演奏情報を検索し、更新された現在時刻に前記演奏情報の発音がされているかを判断し、発音されていない場合、発音されるまで前記判断を繰り返す判断手段と、
各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成する先行動作情報生成手段と、
前記鍵盤データの押鍵状態、前記手指描画処理手段における前記手指の描画処理及び前記先行動作情報生成手段で生成された前記先行動作情報に基づいて、鍵盤及び手指の動作画像、並びに先行動作画像を前記表示手段に表示する演奏表示手段と、
前記判断手段において発音されていると判断されるまで、前記鍵盤データの押鍵状態を更新しない更新手段と、
を有することを特徴とする。
本発明によれば、演奏者にとって練習しやすい演奏動作の表示をすることができる。
演奏動作表示装置及び電子楽器のハードウェアの構成を示すブロック図である。 演奏動作表示の例を説明する図である。 表示部に演奏動作表示を行う場合における、それぞれの用語を説明する図である。 制御変数の構造を示す図である。 演奏情報の構造を示す図である。 構造データの構造を示す図である。 鍵盤データの構造を示す図である。 動作情報の構造を示す図である。 演奏動作表示のメイン処理の流れを示すフローチャートである。 再生処理の流れを示すフローチャートである。 演奏情報検索処理の流れを示すフローチャートである。 離鍵チェック処理の流れを示すフローチャートである。 演奏情報先読検索処理の流れを示すフローチャートである。 描画処理の流れを示すフローチャートである。 鍵盤描画処理の流れを示すフローチャートである。 腕描画処理の流れを示すフローチャートである。 対象動作情報取得処理の流れを示すフローチャートである。 手指描画処理の流れを示すフローチャートである。 先読描画処理の流れを示すフローチャートである。 演奏動作表示装置における拡大演奏動作の表示例である。 第2実施形態の演奏動作表示装置における先読描画処理の流れを示すフローチャートである。 第3実施形態の演奏動作表示装置における先読描画処理の流れを示すフローチャートである。
以下、本発明の実施形態について、図面を用いて説明する。
[第1実施形態]
図1は、本発明の一実施形態に係る第1実施形態としての演奏動作表示装置及び電子楽器のハードウェアの構成を示すブロック図である。
演奏動作表示装置1は、例えば、表示部を備えて構成される。
演奏動作表示装置1は、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、バス14と、入力部15と、表示部16と、MIDI(Musical Instrument Digital Interface)インターフェース17と、を備えている。
CPU11は、演奏動作表示装置1の全体を制御し、ROM12に記憶されているプログラム、又は、ROM12からRAM13に読み出されたプログラムに従って各種の処理を実行する。
ROM12は、CPU11が実行する各種処理の処理プログラムを格納する。
RAM13は、ROM12から読み出されたプログラム等を格納する。
バス14は、接続される各機能部から出力された各種情報を伝送する。バス14には、CPU11、ROM12、RAM13、入力部15、表示部16及びMIDIインターフェース17が接続されている。
これにより、CPU11、ROM12及びRAM13は、バス14を介して相互に接続されている。
入力部15は、例えばボタン等により構成されており、ユーザからの操作指示に応じて各種情報の入力を受け付ける。
表示部16は、CPU11の制御に従って各種設定情報や演奏動作に係る情報等を表示する。
MIDIインターフェース17は、電子楽器2に接続されている。MIDIインターフェース17は、電子楽器2に対して模範演奏等に係る演奏データを送信する。
電子楽器2は、MIDIインターフェース21と、鍵盤22と、音源・サウンドシステム23と、を備える。
MIDIインターフェース21は、鍵盤22及び音源・サウンドシステム23に接続されている。MIDIインターフェース21は、演奏動作表示装置1から模範演奏等に係る演奏データを受信し、この演奏データに対応する演奏信号を音源・サウンドシステム23に出力する。また、MIDIインターフェース21は、鍵盤22から楽器の操作入力を受け付け、この操作入力に対応した演奏信号を音源・サウンドシステム23に出力する。
このような演奏動作表示装置1は、ユーザの演奏の上達を補助するために、演奏時の腕、手及び指の模範的な動作を表示部16に表示する。
以下、図2(a)に示すような演奏時の腕、手及び指の模範的な動作の表示部16への表示を通常演奏動作表示という。また、図2(b)に示すような演奏時の腕、手及び指の模範的な動作の表示部16への拡大表示を拡大演奏動作表示という。また、図2(c)に示すような演奏時の腕、手及び指の模範的な動作の斜め方向からの拡大表示を演奏テクニック表示という。
なお、以下の説明において、図2(a)に示すような鍵盤を正面から視認した場合の横方向(低音の鍵から高音の鍵に向かう方向)をx軸方向とする。また、鍵盤を正面から視認した場合に正面から鍵盤に向かって延びる方向をy軸方向とする。また、鍵盤を正面から視認した場合の上方向をz軸方向とする。
図3は、表示部16に演奏動作表示を行う場合に用いられる用語を説明する図である。
まず、表示部16に表示される画像の領域を視野Pとする。この視野Pの中心位置を視野の中心という。また、視野の中心からレンダリングを行う場合における視点に向かって延びるベクトルを目線ベクトルという。また、視野の上端における中間と、視野の下端における中間とのそれぞれから視点に向かって線を引いた場合に、視点において2本の線が成す角度を高さ方向視野角という。
以下に、通常演奏動作表示に必要な情報について説明する。この演奏動作表示に必要な情報は、ROM12に記憶されている。これらの情報は、演奏時に、CPU11によってROM12から適宜複写され、RAM13に一時的に記憶される。
図4は、制御変数の構造を示す図である。この制御変数は、演奏動作表示装置1において通常演奏動作表示及び拡大演奏動作表示を行うために用いられる。
制御変数には、変数として、widthと、heightと、f0vyと、Center[3]と、Eye[3]と、EyeVector[3]と、NoteR[]と、StructR[]と、MotionR[]と、NoteL[]と、StructL[]と、MotionL[]と、が定義されている。
なお、構造を示す図において、末尾に添え字として[]が設けられている変数は、配列を示している。例えば、Center[3]は、3つの変数から構成される配列である。また、構造を示す図において、配列の要素数が空欄の配列は、演奏する曲によってそれぞれ異なることを示している。
widthは、表示部16に表示する画面の幅を示す変数である。
heightは、表示部16に表示する画面の高さを示す変数である。
f0vyは、高さ方向視野角(図3参照)を示す変数である。
Center[3]は、表示部16に表示する画面における視界の中心座標を示す変数である。Center[3]には、それぞれの要素に対して、3次元座標系(x,y,z)における各座標値が含まれており、3次元座標系における位置を示している。
Eye[3]は、表示部16に表示する画面における視点の座標を示す変数である。Eye[3]は、Center[3]と同様に3次元座標系における位置を示している。
EyeVector[3]は、視線ベクトルを示す変数である。EyeVector[3]は、Eye[3]からCenter[3]を減算することで得られる。
NoteR[]は、右手の演奏情報が格納される配列変数である。詳細は後述する。
StructR[]は、右手の構造データが格納される配列変数である。構造データとは、指、手及び腕の構造を示す図である。StructR[]は、表示部16に表示する画面において、右手に対応する指、手及び腕をレンダリングする際に用いられる。
MotionR[]は、演奏時における右手の動作を示す動作情報が格納される配列変数である。
NoteL[]は、左手の演奏情報が格納される配列変数である。
StructL[]は、左手の構造データが格納される配列変数である。StructL[]は、表示部16に表示する画面において、左手に対応する指、手及び腕をレンダリングする際に用いられる。
MotionL[]は、演奏時における左手の動作を示す動作情報が格納される配列変数である。
図5は、演奏情報の構造を示す図である。
演奏情報は、上述したように、右手の演奏情報を示すNoteR[]と、左手の演奏情報を示すNoteL[]と、から構成される。
NoteR[]と、NoteL[]とは構成が同一であるため、図5では、これらNoteR[]と、NoteL[]とをまとめて、Note[]として説明する。
図5に示すように、Note[]におけるそれぞれの要素(Note[0]、Note[1]、・・・Note[N]、・・・)には、Timeと、Gateと、Pitchと、Fingerと、Position[3]と、FigTech[]と、が定義されている。なお、以下の説明において、添え字のみ異なる配列変数には、特段の説明がない限り、同一の変数が定義されているものとする。例えば、図5では、Note[0]にのみ、Timeと、Gateと、Pitchと、Fingerと、Position[3]と、FigTech[]と、が定義されているが、他の変数(Note[1]、Note[N]等)においても、Note[0]と同様に、Timeと、Gateと、Pitchと、Fingerと、Position[3]と、FigTech[]と、が定義されているものとする。
Timeは、発音を開始する時刻(発音開始時刻)を示す変数である。
Gateは、発音を継続する時間を示す変数である。
Pitchは、発音される音の音高(周波数)を示す変数である。
Fingerは、指の番号を示す変数であり、親指、人差し指、中指、薬指、小指に対応している。
Position[3]は、指の押鍵位置を示す変数である。押鍵位置は、3次元座標系(x,y,z)で表される。これにより、演奏動作表示装置1は、どの鍵を押鍵するのかについて、ユーザに確認させるだけではなく、押鍵の対象となる鍵を押す位置についても確認させることができる。
FigTech[]は、演奏テクニックフラグを示す配列変数である。FigTech[]は、演奏テクニックにおいて定義されている動作ステップの数だけ要素数が設けられる。
図6は、構造データの構造を示す図である。
構造データは、上述したように、右手の構造データを示すStructR[]と、左手の構造データを示すStructL[]と、から構成される。
StructR[]と、StructL[]とは構成が同一であるため、図6では、これらStructR[]と、StructL[]とをまとめて、Struct[]として説明する。
図6に示すように、Struct[]におけるそれぞれの要素には、Indexと、Parentと、Childrenと、Child[]と、Vertices[][3]と、Lengthと、Theta[]と、Phi[]と、Lambda[]と、が定義されている。
Indexは、構造データのインデックスを示す変数である。
Parentは、親データとなる構造データのインデックスを示す変数である。例えば、Parentの値が2である場合には、インデックスが2である構造データが親データとなる。なお、Parentの値が−1である場合は、親データが無いことを示す。
Childrenは、親の構造に対して子となる構造物の数を示す変数である。
Vertices[][3]は、親の構造を示し、表示部16に表示されるポリゴンにおける各頂点の3次元座標を示す配列変数である。Vertices[][3]の[]は、ポリゴンにおける頂点の数に対応しており、この頂点の数だけ要素が定義される。また、Vertices[][3]の[3]は、ポリゴンを形成するためのそれぞれの頂点の3次元座標に対応している。
Lengthは、親の構造の長さを示す変数である。
Theta[]は、親の構造のx軸回転角を示す変数であり、後述の動作情報の要素数と同数の要素が定義される。
Phi[]は、親の構造のy軸回転角を示す変数であり、後述の動作情報の要素数と同数の要素が定義される。
Lambda[]は、親の構造のz軸回転角を示す変数であり、後述の動作情報の要素数と同数の要素が定義される。
図7は、鍵盤データの構造を示す図である。
鍵盤データとしてのKey[]は、表示部16に表示される鍵盤を構成する白鍵及び黒鍵のそれぞれの情報を格納している。Key[]には、最も低音の鍵から順に、それぞれの鍵の情報が格納されている。例えば、Key[0]は、最も左に位置する白鍵に対応しており、この白鍵より半音高い鍵がKey[1]に対応している。
図7に示すように、Key[]におけるそれぞれの要素には、Pitchと、isBlackと、Vertices[][3]と、Statusと、NoteOffと、が定義されている。
Pitchは、発音される音の音高(周波数)を示す変数である。
isBlackは、黒鍵か白鍵かを示すフラグである。具体的には、isBlackは、0の場合に白鍵を示し、1の場合に黒鍵を示す。
Vertices[][3]は、鍵の構造データ(ポリゴンデータ)を示し、表示部16に表示されるポリゴンにおける各頂点の3次元座標を示す配列変数である。
Statusは、鍵の状態を示す変数である。例えば、Statusが0の場合に離鍵状態を示し、+の場合に押鍵状態を示し、−の場合に離鍵中を示す。
NoteOffは、発音されてから消音されるまでの時間である消音時間を示す変数である。
図8は、動作情報の構造を示す図である。
動作情報は、上述したように、右手の動作情報を示すMotionR[]と、左手の動作情報を示すMotionL[]と、から構成される。
MotionR[]と、MotionL[]とは構成が同一であるため、図8では、これらMotionR[]と、MotionL[]とをまとめて、Motion[]として説明する。
図8に示すように、Motion[]におけるそれぞれの要素には、Timeと、RootPos[3]と、が定義されている。
Timeは、演奏時における各フレームが開始される時刻を示す変数である。
RootPos[3]は、表示部16に構造物を描画する際に起点となる構造物の3次元座標(起点関節の3次元座標)である。
続いて、演奏動作表示の処理の流れについて説明する。
図9は、演奏動作表示のメイン処理の流れを示すフローチャートである。このメイン処理は、通常演奏動作表示、拡大演奏動画表示、及び演奏テクニック表示において共通する処理である。
ステップS1において、CPU11は、データ初期化/読込処理を実行する。
すなわち、CPU11は、RAM13に一時的に記憶されているデータの初期化を行うとともに、ROM12に記憶されている各種情報を読み込み、その後、入力部15を介してユーザからの指示を受け付ける。各種情報としては、制御変数、演奏情報、構造データ、鍵盤データ、動作情報が挙げられる。また、CPU11は、データの初期化において、RAM13に描画終了フラグを記憶させる。この描画終了フラグの初期値は、OFFに設定されている。
ステップS2において、CPU11は、表示部16に鍵盤等の描画を行う描画処理を実行する。描画処理の詳細は、図14で詳述する。
ステップS3において、CPU11は、入力部15を介してユーザから終了指示を受け付けたか否かを判定する。CPU11は、この判定がYESの場合、メイン処理を終了し、この判定がNOの場合、ステップS4に処理を移す。
ステップS4において、CPU11は、入力部15を介してユーザから楽曲の再生指示を受け付けたか否かを判定する。CPU11は、この判定がYESの場合、ステップS5に処理を移し、この判定がNOの場合、ステップS6に処理を移す。
ステップS5において、CPU11は、ユーザから指示された楽曲の再生処理を実行する。再生処理の詳細は、図10で詳述する。CPU11は、ステップS5の処理が終了すると、ステップS3に処理を移す。
ステップS6において、CPU11は、入力部15を介してユーザから再生の停止指示を受け付けたか否かを判定する。CPU11は、この判定がYESの場合、ステップS7に処理を移し、この判定がNOの場合、ステップS3に処理を移す。
ステップS7において、CPU11は、演奏されている楽曲の再生を終了する。CPU11は、ステップS7の処理が終了すると、ステップS3に処理を移す。
ステップS8において、CPU11は、表示部16への描画を終了する。具体的には、CPU11は、描画終了フラグをONにする。
図10は、再生処理の流れを示すフローチャートである。
ステップS11において、CPU11は、初期化処理を実行する。
すなわち、CPU11は、再生処理が開始されたことに応じて、演奏情報の初期化を行う。演奏情報の初期化とは、制御変数、鍵盤データ、演奏情報、構造データ、動作情報をRAM13に記憶させることをいう。ここで、演奏情報、構造データ、及び動作情報は、図9のメイン処理において再生指示された楽曲に対応しているものとする。また、CPU11は、初期化処理において、RAM13に再生終了フラグを記憶させる。この再生終了フラグの初期値は、OFFに設定されている。
ステップS12において、CPU11は、図示しないタイマーからシステム時刻を取得する。
ステップS13において、CPU11は、RAM13に記憶されている再生終了フラグがONであるか否かを判定する。CPU11は、この判定がYES(再生終了フラグがON)である場合、再生処理を終了する。CPU11は、この判定がNO(再生終了フラグがOFF)である場合、ステップS14に処理を移す。
ステップS14において、CPU11は、再生している楽曲における現在時刻(再生位置)を更新する。
ステップS15において、CPU11は、ステップS14において更新された現在時刻が、再生している楽曲の終了時刻を超過しているか否かを判定する。CPU11は、この判定がYESの場合、ステップS16に処理を移し、この判定がNOの場合、ステップS17に処理を移す。
ステップS16において、CPU11は、RAM13に記憶されている再生終了フラグをONに更新する。CPU11は、ステップS16の処理が終了すると、ステップS13に処理を移す。
ステップS17において、CPU11は、右手パートの演奏情報の検索を行う処理である右手パート演奏情報検索処理を実行する。右手パート演奏情報検索処理の詳細は、図11で詳述する。
ステップS18において、CPU11は、左手パートの演奏情報の検索を行う処理である左手パート演奏情報検索処理を実行する。左手パート演奏情報検索処理の詳細は、図11で詳述する。
ステップS19において、CPU11は、右手パートの演奏情報の先読検索を行う処理である右手パート演奏情報先読検索処理を実行する。右手パート演奏情報先読検索処理の詳細は、図13で詳述する。
ステップS20において、CPU11は、左手パートの演奏情報の先読検索を行う処理である左手パート演奏情報先読検索処理を実行する。左手パート演奏情報先読検索処理の詳細は、図13で詳述する。
ステップS21において、CPU11は、離鍵チェック処理を実行する。離鍵チェック処理の詳細は、図12で詳述する。CPU11は、ステップS21の処理が終了すると、ステップS13に処理を移す。
図11は、演奏情報検索処理の流れを示すフローチャートである。
なお、本フローチャートにおいて説明するNote[]は、右手パート動作情報検索処理を実行する場合、NoteR[]に置き換えるものとし、左手パート動作情報検索処理を実行する場合、NoteL[]に置き換えるものとする。
ステップS31において、CPU11は、RAM13に記憶されている制御変数(handCtrl)から、RAM13に記憶されている演奏情報のインデックス(添え字)を参照して、前回検索したNote[]を描画対象の演奏情報として取得する。また、CPU11は、メイン処理が開始されてから初めて演奏情報を取得する場合、Note[0]を取得する。
ステップS32において、CPU11は、ステップS31において取得された描画対象の演奏情報に基づいて、全ての演奏情報を取得したか否かを判定する。すなわち、CPU11は、ステップS31において取得されたNote[]の添え字が、ROM12に記憶されているNote[]の添え字の最大値と等しいか否かを判定する。CPU11は、この判定がYESの場合、演奏情報検索処理を終了し、この判定がNOの場合、ステップS33に処理を移す。
ステップS33において、CPU11は、図10のステップS14において更新された現在時刻が、Note[]の発音開始時刻に到達したか否かを判定する。CPU11は、この判定がYESの場合、ステップS35に処理を移し、この判定がNOの場合、ステップS34に処理を移す。
ステップS34において、CPU11は、RAM13に記憶されている制御変数(handCtrl)に格納されている演奏情報のインデックス(添え字)を、RAM13に記憶させる。
ステップS35において、CPU11は、図10のステップS14において更新された現在時刻に発音されているか否かを判定する。CPU11は、この判定がYESの場合、ステップS36に処理を移し、この判定がNOの場合、ステップS38に処理を移す。
ステップS36において、CPU11は、RAM13に記憶されている鍵盤データ(Key[])において、該当する鍵の状態(Status)を“+”(押鍵状態)に更新するとともに、当該鍵盤データにおける消音時間(NoteOff)を更新する。ここで、CPU11は、制御変数に格納されている演奏情報のPitchを参照して、ステップS31において取得されたNote[]のPitchに対応する鍵を特定する。
ステップS37において、CPU11は、RAM13に記憶されている先読バッファの内容を削除する。
ステップS38において、CPU11は、次の演奏情報を取得する。CPU11は、この処理が終了すると、ステップS32に処理を移す。
図12は、離鍵チェック処理の流れを示すフローチャートである。
ステップS41において、CPU11は、RAM13に記憶されている鍵盤データ(Key[])から、最初の鍵の情報を取得する。ここで、最初の鍵の情報とは、例えば、最も低音の鍵の情報(Key[0])である。
ステップS42において、CPU11は、全ての鍵の情報のチェックが完了したか否かを判定する。すなわち、CPU11は、Key[]の添え字が、ROM12に記憶されているKey[]の添え字の最大値と等しいか否かを判定する。CPU11は、この判定がYESの場合、離鍵チェック処理を終了し、この判定がNOの場合、ステップS43に処理を移す。
ステップS43において、CPU11は、ステップS41又はステップS45において取得された鍵の情報に含まれる消音時間(Noteoff)に消音時間を示す情報が記憶されている場合、図10のステップS14において更新された現在時刻が、当該消音を行う時間を経過しているか否かを判定する。CPU11は、この判定がYESの場合、ステップS44に処理を移し、この判定がNOの場合、ステップS45に処理を移す。
ステップS44において、CPU11は、該当する鍵の状態(Status)を“−”(離鍵状態)に更新するとともに、当該鍵盤データにおける消音時間(NoteOff)に記憶されている情報を消去する。CPU11は、ステップS44の処理が終了すると、ステップS45に処理を移す。
ステップS45において、CPU11は、次の鍵の情報を取得する。CPU11は、ステップS45の処理が終了すると、ステップS42に処理を移す。
図13は、演奏情報先読検索処理の流れを示すフローチャートである。
なお、本フローチャートにおいて説明するNote[]は、右手パート演奏情報先読検索処理を実行する場合、NoteR[]に置き換えるものとし、左手パート演奏情報先読検索処理を実行する場合、NoteL[]に置き換えるものとする。また、先読バッファ[]は、配列変数である。
ステップS51において、CPU11は、RAM13に記憶されている制御変数(handCtrl)から、RAM13に記憶されている演奏情報のインデックス(添え字)を参照して、前回検索した演奏情報(Note[])を描画対象の演奏情報として取得する。
ステップS52において、CPU11は、ステップS51において取得された描画対象の演奏情報に基づいて、全ての演奏情報を取得したか否かを判定する。すなわち、CPU11は、ステップS51において取得されたNote[]の添え字が、ROM12に記憶されているNote[]の添え字の最大値と等しいか否かを判定する。CPU11は、この判定がYESの場合、演奏情報先読検索処理を終了し、この判定がNOの場合、ステップS53に処理を移す。
ステップS53において、CPU11は、Note[]の発音開始時刻が、検索範囲内か否かを判定する。CPU11は、この判定がYESの場合、ステップS54に処理を移し、この判定がNOの場合、演奏情報先読検索処理を終了する。ここで、検索範囲内とは、Note[]の発音開始時刻が、図10のステップS14において更新された現在時刻にプリセット値を加算した時刻より前であることをいう。
ステップS54において、CPU11は、RAM13に記憶されている先読バッファ[]に演奏情報が記憶されているか否かを判定する。CPU11は、この判定がYESの場合、ステップS56に処理を移し、この判定がNOの場合、ステップS55に処理を移す。なお、ステップS54において、CPU11は、RAM13に記憶されている演奏情報のインデックス(添え字)に対応する先読バッファ[]を参照する。
ステップS55において、CPU11は、ステップS51において取得した演奏情報をRAM13に記憶されている演奏情報のインデックス(添え字)に対応する先読バッファ[]に記憶させる。
ステップS56において、CPU11は、次の演奏情報を取得する。CPU11は、この処理が終了すると、ステップS52に処理を移す。
図14は、描画処理の流れを示すフローチャートである。
ステップS61において、CPU11は、描画終了フラグがONであるか否かを判定する。CPU11は、この判定がYESの場合、描画処理を終了し、この判定がNOの場合、ステップS62に処理を移す。
ステップS62において、CPU11は、視点設定処理を実行する。なお、CPU11は、入力部15により所定の操作を受け付けたことに応じて、割り込み処理を行い、演奏の再生中に視点設定処理を実行することができる。これにより、演奏動作表示装置1は、演奏の再生中に、視点を変更することができる。
すなわち、CPU11は、RAM13に記憶されている制御変数(handCtrl)に格納されている高さ方向の視野角(f0vy)、視界の中心座標(Center[3])、及び視点(Eye[3])に基づいて、表示部16に表示する画面における視点を設定する。
ステップS63において、CPU11は、鍵盤描画処理を実行する。鍵盤描画処理の詳細は、図15で詳述する。
ステップS64において、CPU11は、現在時刻を取得する。
ステップS65において、CPU11は、右腕描画処理を実行する。右腕描画処理の詳細は、図16で詳述する。
ステップS66において、CPU11は、左腕描画処理を実行する。左腕描画処理の詳細は、図16で詳述する。
ステップS67において、CPU11は、先読描画処理を実行する。先読描画処理の詳細は、図17で詳述する。
図15は、鍵盤描画処理の流れを示すフローチャートである。
ステップS71において、CPU11は、鍵盤を描画するために、鍵の構造データを行列スタックにプッシュする。ここで、行列スタックとは、構造データの描画を行うために用いられるデータ構造である。
ステップS72において、CPU11は、鍵盤を所定角度回転させて描画する際の中心点を原点とする座標系に移動させる。
ステップS73において、RAM13に記憶されている鍵盤データ(Key[])から、最初の鍵の構造データを取得する。ここで、最初の鍵の構造データとは、例えば、最も低音の鍵の情報(Key[0])に対応する構造データ(Vertices[][3])である。
ステップS74において、CPU11は、全ての鍵の描画が完了したか否かを判定する。CPU11は、この判定がYESの場合、ステップS82に処理を移し、この判定がNOの場合、ステップS75に処理を移す。
ステップS75において、CPU11は、取得した鍵の構造データに対応する鍵の状態が、“+”(押鍵状態)又は“−”(離鍵状態)であるか否かを判定する。CPU11は、この判定がYESの場合、ステップS76に処理を移し、この判定がNOの場合、ステップS80に処理を移す。
ステップS76において、CPU11は、ステップS73又はステップS81において取得された鍵の構造データを行列スタックにプッシュする。
ステップS77において、CPU11は、ステップS76において行列スタックにプッシュされた構造データの座標系を所定角度だけ回転させる。この状態で描画されることにより、鍵の状態が、“+”(押鍵状態)又は“−”(離鍵状態)の鍵は、押鍵されているように表示される。
ステップS78において、CPU11は、行列スタックにプッシュされている鍵の構造データをポリゴン描画する。
ステップS79において、CPU11は、ステップS76においてプッシュされた鍵の構造データをポップ(クリア)する。
ステップS80において、CPU11は、行列スタックにプッシュされている鍵の構造データをポリゴン描画する。
ステップS81において、CPU11は、次の鍵の構造データを取得する。なお、CPU11は、直前に取得した鍵の構造データが、最後の鍵(最も高音の鍵)である場合、当該取得されている鍵の構造データを取得した状態を維持する。CPU11は、ステップS81の処理が終了すると、ステップS74に処理を移す。
ステップS82において、CPU11は、ステップS71においてプッシュされた鍵の構造データをポップ(クリア)する。
図16は、腕描画処理の流れを示すフローチャートである。
ステップS91において、CPU11は、描画を行う動作情報を取得する処理である対象動作情報取得処理を実行する。対象動作情報取得処理の詳細は、図17で詳述する。
ステップS92において、CPU11は、ステップS91において取得した起点となる構造物(右腕又は左腕)の構造データを取得して、行列スタックにプッシュする。
ステップS93において、CPU11は、肩位置から描画を行うために、肩位置を原点とする座標系に移動する。
ステップS94において、CPU11は、RAM13に記憶されている構造データ(Struct[])のChild[]を参照して、下位の構造データを取得する。ここでは、CPU11は、右手又は左手の構造データを取得する。
ステップS95において、CPU11は、手指動画処理を実行する。手指動画処理の詳細は、図18で詳述する。
ステップS96において、CPU11は、行列スタックにプッシュされている構造物(右腕又は左腕)の構造データをポップする。
図17は、対象動作情報取得処理の流れを示すフローチャートである。なお、本フローチャートにおいて説明するMotion[]は、右腕描画処理を実行する場合、MotionR[]に置き換えるものとし、左腕描画処理を実行する場合、MotionL[]に置き換えるものとする。
ステップS101において、CPU11は、描画時刻を取得する。この描画時刻は、図14のステップS64において取得される現在時刻と同一の時刻である。
ステップS102において、CPU11は、RAM13に記憶されている最初の動作情報(Motion[0])から、描画対象動作情報を取得する。すなわち、CPU11は、Motion[]に格納されているRootPos[3]から、表示部16に構造物を描画する際に起点となる構造物の3次元座標を取得する。
ステップS103において、CPU11は、動作情報(Motion[])を全て取得したか否かを判定する。CPU11は、この判定がYESの場合、ステップS104に処理を移し、この判定がNOの場合、ステップS105に処理を移す。
ステップS104において、CPU11は、対象動作情報取得処理の戻り値に、最後の動作情報を設定する。最後の動作情報は、動作情報(Motion[])の添え字が最も大きい動作情報である。CPU11は、この処理が終了すると、対象動作情報取得処理を終了する。
ステップS105において、CPU11は、描画時刻が、動作情報(Motion[])に格納されているTimeを超過しているか否かを判定する。CPU11は、この判定がYESの場合、ステップS106に処理を移し、この判定がNOの場合、ステップS107に処理を移す。
ステップS106において、CPU11は、対象動作情報取得処理の戻り値に、最後に取得された動作情報を設定する。CPU11は、この処理が終了すると、対象動作情報取得処理を終了する。
ステップS107において、CPU11は、次の動作情報を取得する。なお、CPU11は、直前に取得した動作情報が、最も添え字の値が大きい動作情報である場合、当該取得されている動作情報を取得した状態を維持する。CPU11は、ステップS107の処理が終了すると、ステップS103に処理を移す。
図18は、手指描画処理の流れを示すフローチャートである。なお、本フローチャートにおいて説明するStruct[]は、右手に対応する手指描画処理を実行する場合、StructR[]に置き換えるものとし、左手に対応する手指描画処理を実行する場合、StructL[]に置き換えるものとする。
ステップS111において、CPU11は、RAM13に記憶されている構造データ(Struct[])を参照して、Lambda[]の値(z軸回転角)を取得する。そして、CPU11は、取得したz軸回転角に基づいて、座標系においてz軸の描画角度を回転させる。
ステップS112において、CPU11は、RAM13に記憶されている構造データ(Struct[])を参照して、Phi[]の値(y軸回転角)を取得する。そして、CPU11は、取得したy軸回転角に基づいて、座標系においてy軸の描画角度を回転させる。
ステップS113において、CPU11は、図16のステップS94において取得された手の構造データを行列スタックにプッシュする。ここで、CPU11は、当該手の構造データに対して、既に図16のステップS92において行列スタックにプッシュされている腕の構造データの値を乗算し、その後、乗算した結果を行列スタックにプッシュする。この状態において手の構造データを描画すると、手が腕に連結された状態で描画される。
ステップS114において、CPU11は、RAM13に記憶されている構造データ(Struct[])を参照して、Theta[]の値(x軸回転角)を取得する。そして、CPU11は、取得したx軸回転角に基づいて、座標系においてx軸の描画角度を回転させる。
ステップS115において、CPU11は、行列スタックに格納されている手の構造データのポリゴン描画を行う。上述したように、手が腕に連結された状態で描画される。
ステップS116において、CPU11は、行列スタックから手構造データをポップする。
ステップS117において、CPU11は、RAM13に記憶されている構造データ(Struct[])から、Lengthの値(構造の長さ)を取得する。そして、CPU11は、座標系をx軸方向に構造の長さ分移動する。
ステップS118において、CPU11は、RAM13に記憶されている構造データ(Struct[])のChildrenの値を参照して、子構造があるか判定する。ここで、子構造は、指を示す情報である。CPU11は、この判定がYESの場合、ステップS119に処理を移し、この判定がNOの場合、手指描画処理を終了する。
ステップS119において、CPU11は、RAM13に記憶されている構造データ(Struct[])のChild[]の値を参照して、最初の指構造データを取得する。例えば、指構造データを親指から小指に向かって順に取得する場合、CPU11は、最初の指構造データとして、親指の親構造データを取得する。
ステップS120において、CPU11は、全ての指の描画が完了したか否かを判定する。CPU11は、この判定がYESの場合、手指描画処理を終了し、この判定がNOの場合、ステップS121に処理を移す。
ステップS121において、CPU11は、ステップS119又はステップS124において取得された指構造データを行列スタックにプッシュする。ここで、CPU11は、当該指の構造データに対して、手の構造データの値を乗算し、その後、乗算した結果を行列スタックにプッシュする。この状態において指の構造データを描画すると、指が手に連結された状態で描画される。
ステップS122において、CPU11は、ステップS121において行列スタックにプッシュされた構造データに基づき、子構造の描画、ここでは例えば指の描画を行う。
ステップS123において、CPU11は、ステップS122において子構造描画が行われた構造データを行列スタックからポップする。
ステップS124において、CPU11は、次の指構造データを取得する。例えば、直前に親指の構造データが取得されている場合、CPU11は、人差し指に対応する構造データを取得する。また、例えば、直前に小指の構造データが取得されている場合、CPU11は、小指に対応する構造データを再取得する。CPU11は、この処理が終了するとステップS120に処理を移す。
図19は、先読描画処理の流れを示すフローチャートである。
ステップS131において、CPU11は、最初の先読バッファから、演奏情報の取得を試行する。ここで、最初の先読バッファは、先読バッファ[0]である。
ステップS132において、CPU11は、全ての先読バッファを取得したか否かを判定する。CPU11は、この判定がYESの場合、先読描画処理を終了し、この判定がNOの場合、ステップS133に処理を移す。
ステップS133において、CPU11は、ステップS131又はステップS140において演奏情報の取得を試行した結果、演奏情報が取得できたか否かを判定する。CPU11は、この判定がYESの場合、ステップS134に処理を移し、この判定がNOの場合、ステップS140に処理を移す。
ステップS134において、CPU11は、演奏情報を行列スタックにプッシュする。
ステップS135において、CPU11は、ステップS134において行列スタックにプッシュされた演奏情報のPosition[3]を参照して、押鍵位置が原点になるように座標系を移動する。
ステップS136において、CPU11は、発音時刻と現在時刻に基づいて座標系を移動する。具体的には、CPU11は、行列スタックにプッシュされた演奏情報のTimeから、現在時刻を減算する。そして、得られた結果をオフセット値で除算することによって、移動する量を決定する。続いて、CPU11は、決定された移動量だけy方向(yのプラス方向)座標系を移動させる。
ステップS137において、CPU11は、ステップS136において決定された移動する量に基づいて、座標系を拡大する。
ステップS138において、CPU11は、ステップS134において行列スタックにプッシュされた演奏情報のポリゴン描画を行う。ここで、CPU11は、行列スタックにプッシュされた演奏情報のTimeから、現在時刻を減算した結果に応じて、ポリゴンの形状を変化させてポリゴン描画を行うようにしてもよい。また、CPU11は、当該結果に応じて、ポリゴンの色を変化させてポリゴン描画を行うようにしてもよい。
ステップS139において、CPU11は、ステップS138においてポリゴン描画が行われた演奏情報を行列スタックからポップする。
ステップS140において、CPU11は、次の先読バッファ[]から演奏情報の取得を試行する。CPU11は、この処理が終了すると、ステップS132に処理を移す。
図20は、演奏動作表示装置1における拡大演奏動作の表示例である。
図20(a)は、視点が鍵盤の斜め前方である場合の表示画面である。図20(a)に示されているように、表示画面には、模範的な動作を示す手指のポリゴン画像Hと、先行動作を示すオブジェクトとが表示されている。図20(a)では、先行動作表示のオブジェクトとして、滴型のオブジェクトM1と、球状のオブジェクトM2とが表示されていることが確認できる。球状のオブジェクトM2は、鍵盤の奥行きを考慮して表示されている。滴型のオブジェクトM1は、鍵盤を押す時間を考慮して、それぞれ押鍵する長さが異なるように表示されていることが確認できる。
図20(b)は、視点が鍵盤の上方である場合の表示画面である。図20(b)では、図20(a)に示されていた滴型のオブジェクトM1と球状のオブジェクトM2とが、真上から視認した場合の形状で表示されていることが確認できる。図20(b)でも、複数の先行表示オブジェクトM1、M2のそれぞれについて、鍵盤の奥行きを考慮して表示されていることが確認できる。
図20(c)は、視点が鍵盤と同じ高さかつ前方である場合の表示画面である。図20(c)では、図20(a)に示されていた滴型のオブジェクトM1と、球状のオブジェクトM2とが、側面から視認した場合の形状で表示されていることが確認できる。図20(c)では、複数の先行表示オブジェクトM1のそれぞれについて、鍵盤を押す時間を考慮して、それぞれ押鍵する長さが異なるように表示されていることが確認できる。
以上説明したように、第1実施形態では、演奏動作表示装置1のCPU11により、演奏情報、動作情報、鍵盤データ及び構造データに基づいて、演奏を遂行する際の各時間における鍵盤の押鍵位置を示す演奏動作画像を連続して表示部16に描画する。そして、CPU11は、演奏情報に基づいて、各演奏動作画像の描画する時間の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成し、各演奏動作画像を描画する際に、各演奏動作画像それぞれに対応する先行動作情報を描画する。
このように、演奏動作表示装置1は、先行する演奏情報を、その演奏動作に必要な情報と併せて表示するため、演奏者に演奏の仕方を具体的にイメージさせることが可能になる。よって、演奏動作表示装置1は、演奏者にとって練習しやすい演奏動作の表示をすることができる。
特に、演奏動作表示装置1では、先行する演奏情報を、実際に押鍵されるまでの時間に併せて表示態様を変化させるので、演奏者に複数の先行する演奏情報の順番を認識させて、演奏の仕方をさらに具体的にイメージさせることが可能になる。
[第2実施形態]
続いて、第2実施形態について説明する。
第2実施形態の演奏動作表示装置は、第1実施形態の演奏動作表示装置1と異なり、先行バッファに演奏動作情報が含まれている場合において演奏テクニックフラグがONのとき、先行動作表示を行う。
第2実施形態の演奏動画表示装置のハードウェア構成及び機能的構成は、第1実施形態のものと同様であり、図1に示すとおりのものであるため、ここではその説明を省略する。
以下、図21を参照して、第2実施形態の演奏動作表示装置が実行する先読描画処理についてのみ説明する。
図21は、第2実施形態の演奏動作表示装置における先読描画処理の流れを示すフローチャートである。
ステップS131において、CPU11は、最初の先読バッファから、演奏情報の取得を試行する。ここで、最初の先読バッファは、先読バッファ[0]である。
ステップS132において、CPU11は、全ての先読バッファを取得したか否かを判定する。CPU11は、この判定がYESの場合、先読描画処理を終了し、この判定がNOの場合、ステップS133に処理を移す。
ステップS133において、CPU11は、ステップS131又はステップS140において演奏情報の取得を試行した結果、演奏情報が取得できたか否かを判定する。CPU11は、この判定がYESの場合、ステップS133Aに処理を移し、この判定がNOの場合、ステップS140に処理を移す。
ステップS133Aにおいて、CPU11は、先読バッファから取得した演奏情報に含まれる演奏テクニックフラグ(FigTech[])がONであるか否かを判定する。CPU11は、この判定がYESの場合、ステップS134に処理を移し、この判定がNOの場合、ステップS140に処理を移す。
ステップS134からステップS140までの処理は、第1実施形態の演奏動作表示装置1における先読描画処理のステップS134からステップS140までの処理と同一の処理であるので、説明を省略する。
以上説明したように、第2実施形態では、演奏動作表示装置は、先読バッファから取得した演奏情報に含まれる演奏テクニックフラグ(FigTech[])がONである場合においてのみ、演奏動作表示に対して先行動作を表すオブジェクトを表示させる。
演奏テクニックフラグは、演奏が難しいパートでONに設定されている。よって、第2実施形態の演奏動作表示装置は、演奏が困難であるパートにおいて先行動作情報を表示するので、例えば、演奏が困難なパートのみ練習を必要とする演奏者に対して、必要な先行動作オブジェクトのみ表示することができる。
[第3実施形態]
続いて、第3実施形態について説明する。
第3実施形態の演奏動作表示装置は、第1実施形態の演奏動作表示装置1と異なり、先行バッファに演奏動作情報が含まれている場合において演奏テクニックフラグがONのとき、先行動作表示を拡大する。
第3実施形態の演奏動画表示装置のハードウェア構成及び機能的構成は、第1実施形態のものと同様であり、図1に示すとおりのものであるため、ここではその説明を省略する。
以下、図22を参照して、第3実施形態の演奏動作表示装置が実行する先読描画処理についてのみ説明する。
図22は、第3実施形態の演奏動作表示装置における先読描画処理の流れを示すフローチャートである。
ステップS131において、CPU11は、最初の先読バッファから、演奏情報の取得を試行する。ここで、最初の先読バッファは、先読バッファ[0]である。
ステップS132において、CPU11は、全ての先読バッファを取得したか否かを判定する。CPU11は、この判定がYESの場合、先読描画処理を終了し、この判定がNOの場合、ステップS133に処理を移す。
ステップS133において、CPU11は、ステップS131又はステップS140において演奏情報の取得を試行した結果、演奏情報が取得できたか否かを判定する。CPU11は、この判定がYESの場合、ステップS133Bに処理を移し、この判定がNOの場合、ステップS140に処理を移す。
ステップS133Bにおいて、CPU11は、先読バッファから取得した演奏情報に含まれる演奏テクニックフラグ(FigTech[])がONであるか否かを判定する。CPU11は、この判定がYESの場合、ステップS133Cに処理を移し、この判定がNOの場合、ステップS134に処理を移す。
ステップS133Cにおいて、CPU11は、座標系をxz方向に拡大する。
ステップS134からステップS140までの処理は、第1実施形態の演奏動作表示装置1における先読描画処理のステップS134からステップS140までの処理と同一の処理であるので、説明を省略する。
以上説明したように、第3実施形態では、演奏動作表示装置は、先読バッファから取得した演奏情報に含まれる演奏テクニックフラグ(FigTech[])がONである場合に座標系をxz方向に拡大することにより、演奏動作表示を拡大して先行動作を表すオブジェクトを表示させる。
演奏テクニックフラグは、演奏が難しいパートでONに設定されている。よって、第3実施形態の演奏動作表示装置は、演奏が困難であるパートにおいて先行動作情報を拡大するので、演奏が困難であるパートの演奏動作を強調表示することができる。これにより、演奏動作表示装置は、演奏者に対して演奏情報及び先行動作情報を確認させやすくすることができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
また、上述の実施形態では、本発明が適用される演奏動作表示装置は、演奏動作表示装置1を例として説明したが、特にこれに限定されない。
例えば、本発明は、鍵盤と演奏動作表示機能とを有する電子楽器一般に適用することができる。具体的には、例えば、本発明は、電子ピアノ、電子オルガン等に適用可能である。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
換言すると、図1の構成は例示に過ぎず、特に限定されない。すなわち、上述した一連の処理を全体として実行できる機能が演奏動作表示装置1に備えられていれば足り、この機能を実現するためにどのような構成を構築するのかは特に図1の例に限定されない。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
このコンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータであってもよい。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
以上、本発明の実施形態について説明したが、この実施形態は、例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
演奏における、発音開始時刻、発音継続時間、音高、及び使用する指を示すデータを格納する演奏情報と、
前記演奏情報に基づく鍵盤の押鍵状態を格納する鍵盤データを記憶する鍵盤データと、
手指の構造を示す構造データとを記憶する構造データと、
前記発音開始時刻に対応して前記構造データを表示させるためデータを記憶する動作情報と、を記憶する記憶手段と、
前記演奏情報、前記動作情報、前記鍵盤データ及び前記構造データに基づいて、前記演奏を遂行する際の各時刻における鍵盤の押鍵位置を示す演奏動作画像を連続して表示手段に描画する描画手段と、を備え、
前記描画手段は、前記演奏情報に基づいて、各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成し、各演奏動作画像を描画する際に、各演奏動作画像それぞれに対応する先行動作情報を描画する、
ことを特徴とする演奏動作表示装置。
[付記2]
前記先行動作情報は、困難さを示すテクニックフラグを含み、
前記描画手段は、各演奏動作画像それぞれに対応する先行動作情報を描画する場合において、前記先行動作情報に含まれているテクニックフラグが所定値を示しているとき、各演奏動作画像の表示態様を変更する、
ことを特徴とする付記1に記載の演奏動作表示装置。
[付記3]
演奏動作表示装置が、演奏動作表示を行う方法であって、
前記演奏動作表示装置は、演奏における、発音開始時刻、発音継続時間、音高、及び使用する指を示すデータを格納する演奏情報と、前記演奏情報に基づく鍵盤の押鍵状態を格納する鍵盤データを記憶する鍵盤データと、手指の構造を示す構造データとを記憶する構造データと、前記発音開始時刻に対応して前記構造データを表示させるためデータを記憶する動作情報と、を記憶する記憶手段を備え、
前記方法は、
演奏動作表示装置が、前記演奏情報、前記動作情報、前記鍵盤データ及び前記構造データに基づいて、前記演奏を遂行する際の各時刻における鍵盤の押鍵位置を示す演奏動作画像を連続して表示手段に描画する描画ステップを含み、
前記描画ステップにおいて、前記演奏情報に基づいて、各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成し、各演奏動作画像を描画する際に、各演奏動作画像それぞれに対応する先行動作情報を描画する、
ことを特徴とする方法。
[付記4]
演奏における、発音開始時刻、発音継続時間、音高、及び使用する指を示すデータを格納する演奏情報と、前記演奏情報に基づく鍵盤の押鍵状態を格納する鍵盤データを記憶する鍵盤データと、手指の構造を示す構造データとを記憶する構造データと、前記発音開始時刻に対応して前記構造データを表示させるためデータを記憶する動作情報と、を記憶する記憶手段を備えた演奏動作表示装置に、演奏動作を表示する処理を実行させるプログラムであって、
前記演奏情報、前記動作情報、前記鍵盤データ及び前記構造データに基づいて、前記演奏を遂行する際の各時刻における鍵盤の押鍵位置を示す演奏動作画像を連続して表示手段に描画する描画ステップを前記演奏動作表示装置に実行させ、
前記描画ステップにおいて、前記演奏動作表示装置に、前記演奏情報に基づいて、各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成させ、各演奏動作画像を描画する際に、各演奏動作画像それぞれに対応する先行動作情報を描画させる、
ことを特徴とするプログラム。
1・・・演奏動作表示装置、2・・・電子楽器、11・・・CPU、12・・・ROM、13・・・RAM、14・・・バス、15・・・入力部、16・・・表示部、17、21・・・MIDIインターフェース、22・・・鍵盤、23・・・音源・サウンドシステム

Claims (5)

  1. 演奏すべき楽曲において、前記楽曲上で各楽音の発音開始時刻、音高、及び使用する指を示すデータを格納する演奏情報と、鍵盤の押鍵状態を格納する鍵盤データと、手指の構造を示す構造データと前記楽曲上の複数の位置それぞれにおける手指の動作を表わす動作情報と、を記憶する記憶手段と、
    前記演奏情報、前記動作情報、前記鍵盤データ及び前記構造データに基づいて、前記楽曲の演奏を遂行する際の前記鍵盤の押鍵位置を示す演奏動作画像を連続して表示手段に描画する描画手段と、を備え、
    前記描画手段は、
    前記鍵盤データに基づき鍵盤を描画する鍵盤描画手段と、
    前記演奏を遂行する際の各時刻における前記動作情報を取得する動作情報取得手段と、
    前記動作情報取得手段により取得された前記動作情報及び前記構造データに基づき手指の描画処理を行う手指描画処理手段と、
    前記楽曲の再生位置を表わす時刻を順次更新するとともに、前記演奏情報を検索し、更新された現在時刻に前記演奏情報の発音がされているかを判断し、発音されていない場合、発音されるまで前記判断を繰り返す判断手段と、
    各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成する先行動作情報生成手段と、
    前記鍵盤データの押鍵状態、前記手指描画処理手段における前記手指の描画処理及び前記先行動作情報生成手段で生成された前記先行動作情報に基づいて、鍵盤及び手指の動作画像、並びに先行動作画像を前記表示手段に表示する演奏表示手段と、
    前記判断手段において発音されていると判断されるまで、前記鍵盤データの押鍵状態を更新しない更新手段と、
    を有することを特徴とする演奏動作表示装置。
  2. 前記描画手段は、前記検索された演奏情報の発音開始時刻と前記更新された再生位置の時刻との差分に対応して前記生成された手指の動作画像を拡大して前記表示手段に描画する、
    ことを特徴とする請求項1に記載の演奏動作表示装置。
  3. 前記演奏情報は、困難さを示すテクニックフラグを含み、
    前記描画手段は、前記生成された手指の動作画像を描画する場合において、前記演奏情報に含まれているテクニックフラグが予め定められた値を示しているとき、前記生成された手指の動作画像を拡大して描画する、
    ことを特徴とする請求項2に記載の演奏動作表示装置。
  4. 演奏動作表示装置に用いられる演奏動作表示方法であって、
    前記演奏動作表示装置は、演奏すべき楽曲において、前記楽曲上で各楽音の発音開始時刻、音高、及び使用する指を示すデータを格納する演奏情報と、鍵盤の押鍵状態を格納する鍵盤データと、手指の構造を示す構造データと前記楽曲上の複数の位置それぞれにおける手指の動作を表わす動作情報と、を記憶する記憶手段を有し、
    前記演奏動作表示方法は、
    前記鍵盤データに基づき鍵盤を描画し、
    前記演奏を遂行する際の各時刻における前記動作情報を取得し、
    前記取得された前記動作情報及び前記構造データに基づき手指の描画処理を行い、
    前記楽曲の再生位置を表わす時刻を順次更新するとともに、前記演奏情報を検索し、更新された現在時刻に前記演奏情報の発音がされているかを判断し、発音されていない場合、発音されるまで前記判断を繰り返し、
    各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成し、
    前記鍵盤データの押鍵状態、前記手指の描画処理及び前記先行動作情報に基づいて、鍵盤及び手指の動作画像、並びに先行動作画像を表示手段に表示し、
    前記判断で発音されていると判断されるまで、前記鍵盤データの押鍵状態を更新しない、演奏動作表示方法。
  5. 演奏すべき楽曲において、前記楽曲上で各楽音の発音開始時刻、音高、及び使用する指を示すデータを格納する演奏情報と、鍵盤の押鍵状態を格納する鍵盤データと、手指の構造を示す構造データと前記楽曲上の複数の位置それぞれにおける手指の動作を表わす動作情報と、を記憶する記憶手段を有する演奏動作表示装置として用いられるコンピュータに、
    前記鍵盤データに基づき鍵盤を描画する鍵盤描画ステップと、
    前記演奏を遂行する際の各時刻における前記動作情報を取得する動作情報取得ステップと、
    前記取得された前記動作情報及び前記構造データに基づき手指の描画処理を行う描画処理ステップと、
    前記楽曲の再生位置を表わす時刻を順次更新するとともに、前記演奏情報を検索し、更新された現在時刻に前記演奏情報の発音がされているかを判断し、発音されていない場合、発音されるまで前記判断を繰り返す判断ステップと、
    各演奏動作画像の描画する時刻の所定時間経過後に押鍵される鍵盤の押鍵位置を示す先行動作情報を生成する先行動作情報生成ステップと、
    前記鍵盤データの押鍵状態、前記手指の描画処理及び前記先行動作情報に基づいて、鍵盤及び手指の動作画像、並びに先行動作画像を表示手段に表示する表示ステップと、
    前記判断ステップで、発音されていると判断されるまで、前記鍵盤データの押鍵状態を更新しない更新ステップと、
    実行させるプログラム。
JP2012023404A 2012-02-06 2012-02-06 演奏動作表示装置、方法及びプログラム Active JP6069841B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012023404A JP6069841B2 (ja) 2012-02-06 2012-02-06 演奏動作表示装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012023404A JP6069841B2 (ja) 2012-02-06 2012-02-06 演奏動作表示装置、方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2013160948A JP2013160948A (ja) 2013-08-19
JP2013160948A5 JP2013160948A5 (ja) 2015-03-12
JP6069841B2 true JP6069841B2 (ja) 2017-02-01

Family

ID=49173223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012023404A Active JP6069841B2 (ja) 2012-02-06 2012-02-06 演奏動作表示装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6069841B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116208661B (zh) * 2023-02-22 2024-06-25 重庆长安汽车股份有限公司 功能配置适配方法、装置、车辆及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59186872U (ja) * 1983-05-31 1984-12-11 ヤマハ株式会社 電子楽器の押鍵指示装置
JP3528051B2 (ja) * 2001-07-18 2004-05-17 カシオ計算機株式会社 演奏動作表示装置、及び記録媒体
JP4337288B2 (ja) * 2001-08-06 2009-09-30 カシオ計算機株式会社 演奏動作表示装置、及びプログラム
JP3890936B2 (ja) * 2001-08-13 2007-03-07 カシオ計算機株式会社 演奏教習装置及び演奏教習処理のプログラム

Also Published As

Publication number Publication date
JP2013160948A (ja) 2013-08-19

Similar Documents

Publication Publication Date Title
JP2013097089A (ja) 演奏動作表示装置、方法及びプログラム
US8766077B2 (en) Music playing movement display control device, music playing movement control method and computer readable medium
EP2772903A1 (en) Electroacoustic signal emitter device and electroacoustic signal emitter method
JP2007206556A (ja) サウンド処理プログラムおよびサウンド処理装置
CN110322861B (zh) 运指显示装置以及存储介质
JP2011182841A (ja) ゲーム装置、ゲーム装置の制御方法、及びプログラム
JP4757704B2 (ja) 音楽再生プログラム、音楽再生装置、音楽再生方法及び音楽再生システム
JP6069841B2 (ja) 演奏動作表示装置、方法及びプログラム
JP2013068657A (ja) 画像生成装置、画像生成方法及びそのプログラム、並びに演奏支援装置、演奏支援方法及びプログラム
JP5753868B2 (ja) ゲーム装置及びプログラム
JP6432966B2 (ja) 楽譜表示・演奏プログラム及び楽譜表示・演奏装置
JP5733228B2 (ja) 演奏動作表示装置、方法及びプログラム
JP2008176776A (ja) 画像処理装置及びその方法
JP5753867B2 (ja) ゲーム装置、ゲーム装置の制御方法、及びプログラム
JP5232890B2 (ja) ゲーム装置、ゲーム装置の制御方法、及びプログラム
JP2013160950A (ja) 演奏動作表示装置、方法及びプログラム
JP2013003205A (ja) 楽譜表示装置、楽譜表示プログラム及び楽譜
JP6823514B2 (ja) 楽譜表示・演奏プログラム及び楽譜表示・演奏装置
JP4637199B2 (ja) 画像処理装置、画像処理方法、ならびに、プログラム
JP5399831B2 (ja) 音楽ゲームシステム及びそのコンピュータプログラム並びに効果音データの生成方法
JP7429936B1 (ja) 鍵盤画面表示プログラム及びそのシステム
JP5773956B2 (ja) 楽曲演奏装置、楽曲演奏制御方法及びプログラム
JP6260176B2 (ja) 演奏練習装置、方法、およびプログラム
JP7107720B2 (ja) 運指表示プログラム
JP2012220884A (ja) 演奏評価装置および演奏評価プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150123

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150123

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160706

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161219

R150 Certificate of patent or registration of utility model

Ref document number: 6069841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150