(57)【要約】【課題】演奏者にとって視認しやすい演奏動作の表示をすることができる演奏動作表示装置、方法及びプログラムを提供すること。【解決手段】演奏動作表示装置１は、ＲＡＭ１３に記憶された演奏情報、動作情報及び構造データに基づいて、表示部１６に演奏動作画像を描画するＣＰＵ１１を備える。ＣＰＵ１１は、ＲＡＭ１３に記憶されているフラグに基づいて演奏テクニック動作の表示を行うか否かを判定し、当該演奏テクニック動作の表示を行うと判定した場合に、当該演奏テクニック動作に対応する画像の表示態様を、当該演奏テクニック動作を表示しない場合に対応する画像の表示態様に比べて変化させる。【選択図】図１
2013097089.tif 000002
【特許請求の範囲】
【請求項１】
発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報と、
複数の構造データと、当該構造データ同士の関連性を記憶する構造データと、
前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報と、を記憶する記憶手段と、
前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画する描画手段と、を備え、
前記描画手段は、前記記憶手段に記憶されている前記演奏情報の前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させる、
ことを特徴とする演奏動作表示装置。
【請求項２】
前記描画手段は、前記特定動作を行う場合に前記表示手段に表示する構造データを拡大して描画する、
ことを特徴とする請求項１記載の演奏動作表示装置。
【請求項３】
前記描画手段は、前記特定動作を行う場合に前記表示手段に表示する構造データを斜視状態で描画する、
ことを特徴とする請求項１又は２記載の演奏動作表示装置。
【請求項４】
演奏動作表示装置が、演奏動作表示を行う方法であって、
前記演奏動作表示装置は、発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報、複数の構造データと、当該構造データ同士の関連性を記憶する構造データ、及び前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報を記憶する記憶手段と、を備え、
前記演奏動作表示装置が、前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画する描画ステップを含み、
前記描画ステップにおいて、演奏情報記憶手段に記憶されている前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させる、
ことを特徴とする方法。
【請求項５】
発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報、複数の構造データの関連性を記憶する構造データ、及び前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報を記憶する記憶手段と、を備えるコンピュータを、
前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画させる描画手段であって、演奏情報記憶手段に記憶されている前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させる描画手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器の演奏動作を表示する演奏動作表示装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来、演奏の進行に応じて押鍵（操作）すべき鍵に対して、押鍵に使用する指をユーザに通知するナビゲーション機能を備えた演奏動作表示装置が提案されている。例えば、特許文献１には、演奏時に演奏動作として鍵盤に対する手指の位置を表示部に表示させることにより、押鍵に使用する指をユーザに通知するナビゲーション機能を備えた演奏動作表示装置が提案されている。また、特許文献１で提案される演奏動作表示装置では、演奏の各パートにおいて、演奏動作の表示方式の変更操作を受け付けたことに応じて、手指のサイズの拡大及び縮小、手指の透過表示、手指をワイヤーフレームとした表示、視点（表示角度）の変更等を実行することが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３５２８０５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１で提案された演奏動作表示装置では、例えば、両手が離れて配置されるパートにおいて、鍵盤全体が表示される場合がある。鍵盤は横に長いことから、鍵盤全体が表示される場合には、押鍵に使用する指が表示部に小さく表示されてしまう。
【０００５】
また、特許文献１で提案された演奏動作表示装置では、上述したように拡大及び縮小等の表示方式の変更操作を受け付けることも可能であるが、演奏時に演奏者が変更操作を行うことが困難である。また、特許文献１で提案された演奏動作表示装置では、自動的に視点を変更することができない。このため、演奏者は、指の細かい動作等の特定の演奏技術を確認する場合、演奏者自らが視点を変更する操作を行う必要がある。よって、特許文献１で提案された演奏動作表示装置では、ユーザが特定の演奏技術について演奏しながら確認することが、困難になる可能性がある。
【０００６】
本発明は、このような状況に鑑みてなされたものであり、演奏者にとって視認しやすい演奏動作の表示をすることができる演奏動作表示装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の一態様の演奏動作表示装置は、発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報と、複数の構造データと、当該構造データ同士の関連性を記憶する構造データと、前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報と、を記憶する記憶手段と、前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画する描画手段と、を備え、前記描画手段は、前記記憶手段に記憶されている前記演奏情報の前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、演奏者にとって視認しやすい演奏動作の表示をすることができる。
【図面の簡単な説明】
【０００９】
【図１】演奏動作表示装置及び電子楽器のハードウェアの構成を示すブロック図である。
【図２】演奏動作表示の例を説明する図である。
【図３】表示部に演奏動作表示を行う場合における、それぞれの用語を説明する図である。
【図４】制御変数の構造を示す図である。
【図５】演奏情報の構造を示す図である。
【図６】構造データの構造を示す図である。
【図７】鍵盤データの構造を示す図である。
【図８】動作情報の構造を示す図である。
【図９】演奏動作表示のメイン処理の流れを示すフローチャートである。
【図１０】再生処理の流れを示すフローチャートである。
【図１１】動作情報検索処理の流れを示すフローチャートである。
【図１２】演奏情報検索処理の流れを示すフローチャートである。
【図１３】離鍵チェック処理の流れを示すフローチャートである。
【図１４】レンダリング処理の流れを示すフローチャートである。
【図１５】鍵盤描画処理の流れを示すフローチャートである。
【図１６】腕描画処理の流れを示すフローチャートである。
【図１７】手指描画処理の流れを示すフローチャートである。
【図１８】拡大演奏動作表示において参照される動作情報の構造を示す図である。
【図１９】視点移動時のレンダリング処理の流れを示すフローチャートである。
【図２０】視点計算処理の流れを示すフローチャートである。
【図２１】演奏テクニック表示を含む演奏動作表示を行う場合に参照される制御変数の構造を示す図である。
【図２２】演奏テクニック表示を含む演奏動作表示を行う場合に参照される演奏情報の構造を示す図である。
【図２３】演奏テクニック表示を含む演奏動作表示を行う場合に実行される演奏情報検索処理の流れを示すフローチャートである。
【図２４】演奏テクニック表示を含む演奏動作表示を行う場合に実行される演奏テクニック検索処理の流れを示すフローチャートである。
【図２５】演奏テクニック表示を含む演奏動作表示を行う場合に実行されるレンダリング処理の流れを示すフローチャートである。
【図２６】演奏テクニック表示を含む演奏動作表示を行う場合に実行される視点変更計算処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を用いて説明する。
【００１１】
図１は、本発明の一実施形態に係る演奏動作表示装置及び電子楽器のハードウェアの構成を示すブロック図である。
演奏動作表示装置１は、例えば表示部を備えて構成される。
【００１２】
演奏動作表示装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、バス１４と、入力部１５と、表示部１６と、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）インターフェース１７と、を備えている。
【００１３】
ＣＰＵ１１は、演奏動作表示装置１の全体を制御し、ＲＯＭ１２に記憶されているプログラム、又は、ＲＯＭ１２からＲＡＭ１３に読み出されたプログラムに従って各種の処理を実行する。
【００１４】
ＲＯＭ１２は、ＣＰＵ１１の実行する各種処理の処理プログラムを格納する。また、ＲＡＭ１３は、ＲＯＭ１２から読み出されたプログラム等を格納する。
【００１５】
ＣＰＵ１１、ＲＯＭ１２及びＲＡＭ１３は、バス１４を介して相互に接続されている。また、バス１４には、入力部１５、表示部１６及びＭＩＤＩインターフェース１７が接続されている。
【００１６】
入力部１５は、例えばボタン等により構成されており、ユーザからの操作指示に応じて各種情報の入力を受け付ける。
表示部１６は、ＣＰＵ１１の制御に従って各種設定情報や演奏動作に係る情報等を表示する。
ＭＩＤＩインターフェース１７は、電子楽器２が接続されている。ＭＩＤＩインターフェース１７は、電子楽器２に対して模範演奏等に係る演奏データを送信する。
【００１７】
電子楽器２は、ＭＩＤＩインターフェース２１と、鍵盤２２と、音源・サウンドシステム２３と、を備える。
ＭＩＤＩインターフェース２１は、演奏動作表示装置１から模範演奏等に係る演奏データを受信し、この演奏データに対応する演奏信号を音源・サウンドシステムに出力する。また、鍵盤２２から楽器の操作入力を受け付け、この操作入力に対応した演奏信号を音源・サウンドシステムに出力する。
音源・サウンドシステム２３は、ＭＩＤＩインターフェース２１と接続され、ＭＩＤＩインターフェースから出力された信号に基づいて、楽器等の音を出力する。
【００１８】
このような演奏動作表示装置１は、ユーザの演奏の上達を補助するために、演奏時の腕、手及び指の模範的な動作を表示部１６に表示する。なお、以下、図２（ａ）に示すような演奏時の腕、手及び指の動作の表示部１６への表示を通常演奏動作表示という。また、図２（ｂ）に示すような演奏時の腕、手及び指の動作の表示部１６への拡大表示を拡大演奏動作表示という。また、図２（ｃ）に示すような演奏時の腕、手及び指を斜め方向からの拡大表示を演奏テクニック表示という。
【００１９】
なお、以下の説明において、図２（ａ）に示すような鍵盤を正面から視認した場合の横方向（低音の鍵から高音の鍵に向かう方向）をｘ軸方向とし、鍵盤を正面から視認した場合に正面から鍵盤に向かって延びる方向をｙ軸方向とし、鍵盤を正面から視認した場合の上方向をｚ軸方向とする。
【００２０】
図３は、表示部１６に演奏動作表示を行う場合における、それぞれの用語を説明する図である。
まず、表示部１６に表示される画像を視野Ｐとする。この視野Ｐの中心位置を視野の中心という。また、視野の中心からレンダリングを行う場合における視点に向かって延びるベクトルを目線ベクトルという。また、視点に向かって視野の上端及び下端における幅方向の中心に向かって線を引いた場合の、当該線が交差する角度を高さ方向視野角という。
【００２１】
まず、通常演奏動作表示に必要な情報について説明する。この演奏動作表示に必要な情報は、ＲＯＭ１２に記憶されている。これらの情報は、演奏時において、ＣＰＵ１１によって、ＲＯＭ１２から適宜複写されてＲＡＭ１３に一時的に記憶される。
【００２２】
図４は、制御変数の構造を示す図である。この制御変数は、演奏動作表示装置１において通常演奏動作表示及び拡大演奏動作表示を行うために用いられる。
制御変数には、変数として、ｗｉｄｔｈと、ｈｅｉｇｈｔと、ｆ０ｖｙと、Ｃｅｎｔｅｒ［３］と、Ｅｙｅ［３］と、ＥｙｅＶｅｃｔｏｒ［３］と、ＮｏｔｅＲ［］と、ＳｔｒｕｃｔＲ［］と、ＭｏｔｉｏｎＲ［］と、ＩｎｄｅｘＲと、ＮｏｔｅＬ［］と、ＳｔｒｕｃｔＬ［］と、ＭｏｔｉｏｎＬ［］と、ＩｎｄｅｘＬと、が定義されている。
なお、構造を示す図において、末尾に添え字として［］が設けられている変数は、配列を示している。例えば、Ｃｅｎｔｅｒ［３］は、３つの変数から構成される配列である。また、構造を示す図において、配列の要素数が空欄の配列は、演奏する曲によってそれぞれ異なることを示している。
【００２３】
ｗｉｄｔｈは、表示部１６に表示する画面の幅を示す変数である。
ｈｅｉｇｈｔは、表示部１６に表示する画面の高さを示す変数である。
ｆ０ｖｙは、高さ方向視野角（図３参照）を示す変数である。
Ｃｅｎｔｅｒ［３］は、表示部１６に表示する画面における視界の中心座標を示す変数である。Ｃｅｎｔｅｒ［３］には、それぞれの要素に対して、３次元座標系（ｘ，ｙ，ｚ）における各座標値が含まれており、３次元座標系における位置を示している。
Ｅｙｅ［３］は、表示部１６に表示する画面における視点を示す変数である。この変数Ｅｙｅも、Ｃｅｎｔｅｒと同様に３次元座標系における位置を示している。
ＥｙｅＶｅｃｔｏｒ［３］は、視線ベクトルを示す変数である。ＥｙｅＶｅｃｔｏｒ［３］は、Ｅｙｅ［３］からＣｅｎｔｅｒ［３］を減算することで得られる。
【００２４】
ＮｏｔｅＲ［］は、右手の演奏情報が格納される配列変数である。詳細は後述する。
ＳｔｒｕｃｔＲ［］は、右手の構造データが格納される配列変数である。構造データとは、指、手及び腕の構造を示す図である。この構造データは、表示部１６に表示する画面において、指、手及び腕をレンダリングする際に用いられる。
ＭｏｔｉｏｎＲ［］は、演奏時における右手の動作を示す動作情報が格納される配列変数である。
ＩｎｄｅｘＲは、レンダリング対象の右手の動作情報のインデックスを示す変数である。
【００２５】
ＮｏｔｅＬ［］は、左手の演奏情報が格納される配列変数である。ＮｏｔｅＬ［］に格納される変数は、ＮｏｔｅＲ［］と同一である。
ＳｔｒｕｃｔＬ［］は、左手の構造データが格納される配列変数である。ＳｔｒｕｃｔＬ［］に格納される変数は、ＳｔｒｕｃｔＲ［］と同一である。
ＭｏｔｉｏｎＬ［］は、演奏時における左手の動作を示す動作情報が格納される配列変数である。ＭｏｔｉｏｎＬ［］に格納される変数は、ＭｏｔｉｏｎＲ［］と同一である。
ＩｎｄｅｘＬは、レンダリング対象の左手の動作情報のインデックスを示す変数である。
【００２６】
図５は、演奏情報の構造を示す図である。
演奏情報は、上述したように、右手の演奏情報を示すＮｏｔｅＲ［］と、左手の演奏情報を示すＮｏｔｅＬ［］と、から構成される。
ＮｏｔｅＲ［］と、ＮｏｔｅＬ［］とは構成が同一であるため、図５では、これらＮｏｔｅＲ［］と、ＮｏｔｅＬ［］とをまとめて、Ｎｏｔｅ［］として説明する。
【００２７】
図５に示すように、Ｎｏｔｅ［］におけるそれぞれの要素（Ｎｏｔｅ［０］、Ｎｏｔｅ［１］、・・・Ｎｏｔｅ［Ｎ］、・・・）には、Ｔｉｍｅと、Ｇａｔｅと、Ｐｉｔｃｈと、が定義されている。なお、以下の説明において、添え字のみ異なる配列変数には、特段の説明がない限り、同一の変数が定義されているものとする。例えば、図５では、Ｎｏｔｅ［０］にのみ、Ｔｉｍｅと、Ｇａｔｅと、Ｐｉｔｃｈとが定義されているが、他の変数（Ｎｏｔｅ［１］、Ｎｏｔｅ［Ｎ］等）においても、Ｎｏｔｅ［０］と同様に、Ｔｉｍｅと、Ｇａｔｅと、Ｐｉｔｃｈとが定義されているものとする。
【００２８】
Ｔｉｍｅは、発音を開始する時間を示す変数である。
Ｇａｔｅは、発音を継続する時間を示す変数である。
Ｐｉｔｃｈは、発音される音の音高（周波数）を示す変数である。
【００２９】
図６は、構造データの構造を示す図である。
構造データは、上述したように、右手の構造データを示すＳｔｒｕｃｔＲ［］と、左手の構造データを示すＳｔｒｕｃｔＬ［］と、から構成される。
ＳｔｒｕｃｔＲ［］と、ＳｔｒｕｃｔＬ［］とは構成が同一であるため、図６では、これらＳｔｒｕｃｔＲ［］と、ＳｔｒｕｃｔＬ［］とをまとめて、Ｓｔｒｕｃｔ［］として説明する。
【００３０】
図６に示すように、Ｓｔｒｕｃｔ［］におけるそれぞれの要素には、Ｉｎｄｅｘと、Ｐａｒｅｎｔと、Ｃｈｉｌｄｒｅｎと、Ｃｈｉｌｄ［］と、Ｖｅｒｔｉｃｅｓ［］［３］と、Ｌｅｎｇｔｈと、Ｔｈｅｔａ［］と、Ｐｈｉ［］と、Ｌａｍｂｄａ［］と、が定義されている。
【００３１】
Ｉｎｄｅｘは、構造データのインデックスを示す変数である。
Ｐａｒｅｎｔは、親データとなる構造データのインデックスを示す変数である。例えば、Ｐａｒｅｎｔの値が２である場合には、インデックスが２である構造データが親データとなる。なお、Ｐａｒｅｎｔの値が−１である場合は、親データが無いことを示す。
Ｃｈｉｌｄｒｅｎは、親の構造に対して子となる構造物の数を示す変数である。
Ｖｅｒｔｉｃｅｓ［］［３］は、親の構造を示し、表示部１６に表示されるポリゴンにおける各頂点の３次元座標を示す配列変数である。Ｖｅｒｔｉｃｅｓ［］［３］の［］は、ポリゴンにおける頂点の数に対応しており、この頂点の数だけが要素が定義される。また、Ｖｅｒｔｉｃｅｓ［］［３］の［３］は、それぞれの頂点の３次元座標に対応している。
Ｌｅｎｇｔｈは、親の構造の長さを示す変数である。
【００３２】
Ｔｈｅｔａ［］は、親の構造のｘ軸回転角を示す変数であり、後述の動作情報の要素数と同数の要素が定義される。
Ｐｈｉ［］は、親の構造のｙ軸回転角を示す変数であり、後述の動作情報の要素数と同数の要素が定義される。
Ｌａｍｂｄａ［］は、親の構造のｚ軸回転角を示す変数であり、後述の動作情報の要素数と同数の要素が定義される。
【００３３】
図７は、鍵盤データの構造を示す図である。
鍵盤データとしてのＫｅｙ［］は、表示部１６に表示される鍵盤を構成する白鍵及び黒鍵のそれぞれの情報を格納している。Ｋｅｙ［］には、最も低音の鍵から順に、それぞれの鍵の情報が格納されている。例えば、Ｋｅｙ［０］は、最も左に位置する白鍵に対応しており、この白鍵より半音高い鍵がＫｅｙ［１］に対応している。
【００３４】
図７に示すように、Ｋｅｙ［］におけるそれぞれの要素には、Ｐｉｔｃｈと、ｉｓＢｌａｃｋと、Ｖｅｒｔｉｃｅｓ［］［３］と、Ｓｔａｔｕｓと、ＮｏｔｅＯｆｆと、が定義されている。
【００３５】
Ｐｉｔｃｈは、発音される音の音高（周波数）を示す変数である。
ｉｓＢｌａｃｋは、黒鍵か白鍵かを示すフラグである。具体的には、ｉｓＢｌａｃｋは、０の場合に白鍵を示し、１の場合に黒鍵を示す。
Ｖｅｒｔｉｃｅｓ［］［３］は、鍵の構造データ（ポリゴンデータ）を示し、表示部１６に表示されるポリゴンにおける各頂点の３次元座標を示す配列変数である。
Ｓｔａｔｕｓは、鍵の状態を示す変数である。例えば、Ｓｔａｔｕｓが０の場合に離鍵状態を示し、＋の場合に押鍵状態を示し、−の場合に離鍵中を示す。
ＮｏｔｅＯｆｆは、発音されてから消音されるまでの時間である消音時間を示す変数である。
【００３６】
図８は、動作情報の構造を示す図である。
動作情報は、上述したように、右手の動作情報を示すＭｏｔｉｏｎＲ［］と、左手の動作情報を示すＭｏｔｉｏｎＬ［］と、から構成される。
ＭｏｔｉｏｎＲ［］と、ＭｏｔｉｏｎＬ［］とは構成が同一であるため、図８では、これらＭｏｔｉｏｎＲ［］と、ＭｏｔｉｏｎＬ［］とをまとめて、Ｍｏｔｉｏｎ［］として説明する。
【００３７】
図８に示すように、Ｍｏｔｉｏｎ［］におけるそれぞれの要素には、Ｔｉｍｅと、ＲｏｏｔＰｏｓ［３］と、が定義されている。
Ｔｉｍｅは、演奏時における各フレームが開始される時間を示す変数である。
ＲｏｏｔＰｏｓ［３］は、表示部１６に構造物を描画する際に起点となる構造物の３次元座標（起点関節の３次元座標）である。
【００３８】
続いて、演奏動作表示の処理の流れについて説明する。
図９は、演奏動作表示のメイン処理の流れを示すフローチャートである。このメイン処理は、通常演奏動作表示、拡大演奏動画表示、及び演奏テクニック表示において共通する。
ステップＳ１において、ＣＰＵ１１は、データ初期化／読込処理を実行する。
すなわち、ＣＰＵ１１は、ＲＡＭ１３に一時的に記憶されているデータの初期化を行うとともに、ＲＯＭ１２に記憶されている各種情報を読み込み、その後、入力部１５を介してユーザからの指示を受け付ける。各種情報としては、制御変数、演奏情報、構造データ、鍵盤データ、動作情報が挙げられる。
【００３９】
ステップＳ２において、ＣＰＵ１１は、入力部１５を介してユーザから終了指示を受け付けたか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、メイン処理を終了し、この判定がＮＯの場合、ステップＳ３に処理を移す。
【００４０】
ステップＳ３において、ＣＰＵ１１は、入力部１５を介してユーザから楽曲の再生指示を受け付けたか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ４に処理を移し、この判定がＮＯの場合、ステップＳ５に処理を移す。
【００４１】
ステップＳ４において、ＣＰＵ１１は、ユーザから指示された楽曲の再生処理を実行する。再生処理の詳細は、図１０で詳述する。ＣＰＵ１１は、ステップＳ４の処理が終了すると、ステップＳ２に処理を移す。
ステップＳ５において、ＣＰＵ１１は、入力部１５を介してユーザから再生の停止指示を受け付けたか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ６に処理を移し、この判定がＮＯの場合、ステップＳ２に処理を移す。
ステップＳ６において、ＣＰＵ１１は、演奏されている楽曲の再生を終了する。ＣＰＵ１１は、ステップＳ６の処理が終了すると、ステップＳ２に処理を移す。
【００４２】
図１０は、再生処理の流れを示すフローチャートである。
ステップＳ１１において、ＣＰＵ１１は、初期化処理を実行する。
すなわち、ＣＰＵ１１は、再生処理が開始されたことに応じて、演奏情報の初期化を行う。演奏情報の初期化とは、制御変数、鍵盤データ、演奏情報、構造データ、動作情報をＲＡＭ１３に記憶させることをいう。ここで、演奏情報、構造データ、及び動作情報は、図９のステップＳ３において再生指示された楽曲に対応しているものとする。また、ＣＰＵ１１は、初期化処理において、ＲＡＭ１３に再生終了フラグを記憶させる。この再生終了フラグの初期値は、ＯＦＦに設定されている。
【００４３】
ステップＳ１２において、ＣＰＵ１１は、図示しないタイマーからシステム時刻を取得する。
ステップＳ１３において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている再生終了フラグの状態を判定する。ＣＰＵ１１は、再生終了フラグがＯＮである場合、再生処理を終了する。ＣＰＵ１１は、再生終了フラグがＯＦＦである場合、ステップＳ１４に処理を移す。
【００４４】
ステップＳ１４において、ＣＰＵ１１は、再生している楽曲における現在時刻（再生位置）を更新する。
ステップＳ１５において、ＣＰＵ１１は、ステップＳ１４において更新された現在時刻が、再生している楽曲の終了時刻を超過しているか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１６に処理を移し、この判定がＮＯの場合、ステップＳ１７に処理を移す。
【００４５】
ステップＳ１６において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている再生終了フラグをＯＮに更新する。ＣＰＵ１１は、ステップＳ１６の処理が終了すると、ステップＳ１３に処理を移す。
【００４６】
ステップＳ１７において、ＣＰＵ１１は、右手パートの動作情報の検索を行う処理である右手パート動作情報検索処理を実行する。右手パート動作情報検索処理の詳細は、図１１で詳述する。
ステップＳ１８において、ＣＰＵ１１は、左手パートの動作情報の検索を行う処理である左手パート動作情報検索処理を実行する。左手パート動作情報検索処理の詳細は、図１１で詳述する。
【００４７】
ステップＳ１９において、ＣＰＵ１１は、右手パートの演奏情報の検索を行う処理である右手パート演奏情報検索処理を実行する。右手パート演奏情報検索処理の詳細は、図１２で詳述する。
ステップＳ２０において、ＣＰＵ１１は、左手パートの演奏情報の検索を行う処理である左手パート演奏情報検索処理を実行する。左手パート演奏情報検索処理の詳細は、図１２で詳述する。
【００４８】
ステップＳ２１において、ＣＰＵ１１は、離鍵チェック処理を実行する。離鍵チェック処理の詳細は、図１３で詳述する。ＣＰＵ１１は、ステップＳ２１の処理が終了すると、ステップＳ１３に処理を移す。
【００４９】
図１１は、動作情報検索処理の流れを示すフローチャートである。
なお、ＣＰＵ１１は、右手パート動作情報検索処理を実行する場合には、ＭｏｔｉｏｎＲ［］を検索し、左手パート動作情報検索処理を実行する場合には、ＭｏｔｉｏｎＬ［］を検索するものとする。なお、本フローチャートにおいて説明するＭｏｔｉｏｎ［］は、右手パート動作情報検索処理を実行する場合、ＭｏｔｉｏｎＲ［］に置き換えるものとし、左手パート動作情報検索処理を実行する場合、ＭｏｔｉｏｎＬ［］に置き換えるものとする。
【００５０】
ステップＳ３１において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）の描画対象動作情報インデックスを取得する。ここで、ＣＰＵ１１は、右手パート動作情報検索処理を実行する場合には、ＩｎｄｅｘＲを取得し、左手パート動作情報検索処理を実行する場合には、ＩｎｄｅｘＬを取得するものとする。
【００５１】
ステップＳ３２において、ＣＰＵ１１は、取得された描画対象動作情報インデックスに基づいて、全ての動作情報を取得したか否かを判定する。すなわち、ＣＰＵ１１は、描画対象動作情報インデックスが、Ｍｏｔｉｏｎ［］の添え字の最大値と等しいか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、動画情報検索処理を終了し、この判定がＮＯの場合、ステップＳ３３に処理を移す。
【００５２】
ステップＳ３３において、ＣＰＵ１１は、図１０のステップＳ１４において更新された現在時刻が、Ｍｏｔｉｏｎ［］のフレーム時間を経過したか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ３４に処理を移し、この判定がＮＯの場合、ステップＳ３５に処理を移す。
【００５３】
ステップＳ３４において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）の描画対象動作情報インデックスを更新する。すなわち、ＣＰＵ１１は、ステップＳ３１において取得した描画対象動作情報インデックスの値をインクリメントすることにより、描画対象動作情報インデックスを更新する。
【００５４】
ステップＳ３５において、ＣＰＵ１１は、次の動作情報を取得する。ＣＰＵ１１は、この処理が終了すると、ステップＳ３２に処理を移す。
【００５５】
図１２は、演奏情報検索処理の流れを示すフローチャートである。
なお、本フローチャートにおいて説明するＮｏｔｅ［］は、右手パート動作情報検索処理を実行する場合、ＮｏｔｅＲ［］に置き換えるものとし、左手パート動作情報検索処理を実行する場合、ＮｏｔｅＬ［］に置き換えるものとする。
【００５６】
ステップＳ４１において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）から、Ｎｏｔｅ［］を描画対象の演奏情報として取得する。
【００５７】
ステップＳ４２において、ＣＰＵ１１は、ステップＳ４１において取得された描画対象の演奏情報に基づいて、全ての演奏情報を取得したか否かを判定する。すなわち、ＣＰＵ１１は、Ｎｏｔｅ［］の添え字が、ＲＯＭ１２に記憶されているＮｏｔｅ［］の添え字の最大値と等しいか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、演奏情報検索処理を終了し、この判定がＮＯの場合、ステップＳ４３に処理を移す。
【００５８】
ステップＳ４３において、ＣＰＵ１１は、図１０のステップＳ１４において更新された現在時刻が、Ｎｏｔｅ［］の発音開始時間に到達したか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ４５に処理を移し、この判定がＮＯの場合、ステップＳ４４に処理を移す。
【００５９】
ステップＳ４４において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）に格納されている演奏情報を、次に発音する演奏情報に更新する。具体的には、ＣＰＵ１１は、ステップＳ４１において取得されたＮｏｔｅ［］の添え字をインクリメントし、添え字がインクリメントされたＮｏｔｅ［］の情報をＲＡＭ１３から取得する。そして、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）を、取得されたＮｏｔｅ［］の情報に書き換える。
【００６０】
ステップＳ４５において、ＣＰＵ１１は、図１０のステップＳ１４において更新された現在時刻に発音されているか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ４６に処理を移し、この判定がＮＯの場合、ステップＳ４２に処理を移す。
【００６１】
ステップＳ４６において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている鍵盤データ（Ｋｅｙ［］）において、該当する鍵の状態（Ｓｔａｔｕｓ）を“＋”（押鍵状態）に更新するとともに、当該鍵盤データにおける消音時間（ＮｏｔｅＯｆｆ）を更新する。ここで、ＣＰＵ１１は、制御変数に格納されている演奏情報のＰｉｔｃｈを参照して、ステップＳ４４において取得されたＮｏｔｅ［］のＰｉｔｃｈに対応するする鍵を特定する。
【００６２】
ステップＳ４７において、ＣＰＵ１１は、次の演奏情報を取得する。ＣＰＵ１１は、この処理が終了すると、ステップＳ４２に処理を移す。
【００６３】
図１３は、離鍵チェック処理の流れを示すフローチャートである。
ステップＳ５１において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている鍵盤データ（Ｋｅｙ［］）から、最初の鍵の情報を取得する。ここで、最初の鍵の情報とは、例えば、最も低音の鍵の情報（Ｋｅｙ［０］）である。
【００６４】
ステップＳ５２において、ＣＰＵ１１は、全ての鍵の情報のチェックが完了したか否かを判定する。すなわち、ＣＰＵ１１は、Ｋｅｙ［］の添え字が、ＲＯＭ１２に記憶されているＫｅｙ［］の添え字の最大値と等しいか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、離鍵チェック処理を終了し、この判定がＮＯの場合、ステップＳ５３に処理を移す。
【００６５】
ステップＳ５３において、ＣＰＵ１１は、ステップＳ５１又はステップＳ５５において取得された鍵の情報に含まれる消音時間に時間が記憶されている場合、図１０のステップＳ１４において更新された現在時刻が、当該消音時間を経過しているか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ５４に処理を移し、この判定がＮＯの場合、ステップＳ５５に処理を移す。
【００６６】
ステップＳ５４において、ＣＰＵ１１は、該当する鍵の状態（Ｓｔａｔｕｓ）を“−”（離鍵状態）に更新するとともに、当該鍵盤データにおける消音時間（ＮｏｔｅＯｆｆ）を消去する。ＣＰＵ１１は、ステップＳ５４の処理が終了すると、ステップＳ５５に処理を移す。
【００６７】
ステップＳ５５において、ＣＰＵ１１は、次の鍵の情報を取得する。ＣＰＵ１１は、ステップＳ５５の処理が終了すると、ステップＳ５２に処理を移す。
【００６８】
図１４は、レンダリング処理の流れを示すフローチャートである。なお、レンダリング処理は、図９において説明したメイン処理のステップＳ１のデータの初期化／読込処理が完了した後に継続的に行われる。
ステップＳ６１において、ＣＰＵ１１は、視点設定処理を実行する。
すなわち、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）に格納されている高さ方向の視野角（ｆ０ｖｙ）、視界の中心座標（Ｃｅｎｔｅｒ［３］）、及び視点（Ｅｙｅ［３］）に基づいて、表示部１６に表示する画面における視点を設定する。
ステップＳ６２において、ＣＰＵ１１は、鍵盤描画処理を実行する。鍵盤描画処理の詳細は、図１５で詳述する。
【００６９】
ステップＳ６３において、ＣＰＵ１１は、右腕描画処理を実行する。右腕描画処理の詳細は、図１６で詳述する。
ステップＳ６４において、ＣＰＵ１１は、左腕描画処理を実行する。左腕描画処理の詳細は、図１６で詳述する。
【００７０】
図１５は、鍵盤描画処理の流れを示すフローチャートである。
ステップＳ７１において、ＣＰＵ１１は、鍵盤を描画するために、鍵の構造データを行列スタックにプッシュする。
ステップＳ７２において、ＣＰＵ１１は、鍵盤を回転させる際の中心点を原点とする座標系に移動する。
ステップＳ７３において、ＲＡＭ１３に記憶されている鍵盤データ（Ｋｅｙ［］）から、最初の鍵の構造データを取得する。ここで、最初の鍵の構造データとは、例えば、最も低音の鍵の情報（Ｋｅｙ［０］）に対応する構造データ（Ｖｅｒｔｉｃｅｓ［］［３］）である。
【００７１】
ステップＳ７４において、ＣＰＵ１１は、全ての鍵の描画が完了したか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ８２に処理を移し、この判定がＮＯの場合、ステップＳ７５に処理を移す。
【００７２】
ステップＳ７５において、ＣＰＵ１１は、取得した鍵の構造データに対応する鍵の状態が、“＋”（押鍵状態）又は“−”（離鍵状態）であるか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ７６に処理を移し、この判定がＮＯの場合、ステップＳ８０に処理を移す。
【００７３】
ステップＳ７６において、ＣＰＵ１１は、ステップＳ７３又はステップＳ８１において取得された鍵の構造データを行列スタックにプッシュする。ここで、行列スタックとは、構造データの３Ｄのレンダリングを行うために用いられるデータ構造である。
【００７４】
ステップＳ７７において、ＣＰＵ１１は、ステップＳ７６において行列スタックにプッシュされた構造データの座標系を所定角度だけ回転させる。この状態で描画されることにより、鍵の状態が、“＋”（押鍵状態）又は“−”（離鍵状態）の鍵は、押鍵されているように表示される。
【００７５】
ステップＳ７８において、ＣＰＵ１１は、行列スタックにプッシュされている鍵の構造データをポリゴン描画する。
ステップＳ７９において、ＣＰＵ１１は、ステップＳ７６においてプッシュされた鍵の構造データをポップ（クリア）する。
ステップＳ８０において、ＣＰＵ１１は、行列スタックにプッシュされている鍵の構造データをポリゴン描画する。
【００７６】
ステップＳ８１において、ＣＰＵ１１は、次の鍵の構造データを取得する。なお、ＣＰＵ１１は、直前に取得した鍵の構造データが、最後の鍵（最も高音の鍵）である場合、当該取得されている鍵の構造データを取得した状態を維持する。ＣＰＵ１１は、ステップＳ８１の処理が終了すると、ステップＳ７４に処理を移す。
ステップＳ８２において、ＣＰＵ１１は、ステップＳ７１においてプッシュされた鍵の構造データをポップ（クリア）する。
【００７７】
図１６は、腕描画処理の流れを示すフローチャートである。なお、本フローチャートにおいて説明するＭｏｔｉｏｎ［］は、右腕描画処理を実行する場合、ＭｏｔｉｏｎＲ［］に置き換えるものとし、左腕描画処理を実行する場合、ＭｏｔｉｏｎＬ［］に置き換えるものとする。
【００７８】
ステップＳ９１において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている動作情報（Ｍｏｔｉｏｎ［］）から、描画対象動作情報を取得する。すなわち、ＣＰＵ１１は、Ｍｏｔｉｏｎ［］に格納されているＲｏｏｔＰｏｓ［３］から、表示部１６に構造物を描画する際に起点となる構造物の３次元座標を取得する。
【００７９】
ステップＳ９２において、ＣＰＵ１１は、ステップＳ９１において取得した起点となる構造物（右腕又は左腕）の構造データを取得して、行列スタックにプッシュする。
ステップＳ９３において、ＣＰＵ１１は、肩位置から描画を行うために、肩位置を原点とする座標系に移動する。
【００８０】
ステップＳ９４において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）のＣｈｉｌｄ［］を参照して、下位の構造データを取得する。ここでは、ＣＰＵ１１は、右手又は左手の構造データを取得する。
ステップＳ９５において、ＣＰＵ１１は、手指動画処理を実行する。手指動画処理の詳細は、図１７で詳述する。
ステップＳ９６において、ＣＰＵ１１は、行列スタックにプッシュされている構造物（右腕又は左腕）の構造データをポップする。
【００８１】
図１７は、手指描画処理の流れを示すフローチャートである。なお、本フローチャートにおいて説明するＭｏｔｉｏｎ［］は、右手に対応する手指描画処理を実行する場合、ＭｏｔｉｏｎＲ［］に置き換えるものとし、左手に対応する手指描画処理を実行する場合、ＭｏｔｉｏｎＬ［］に置き換えるものとする。
【００８２】
ステップＳ１０１において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）を参照して、Ｌａｍｂｄａ［］の値（ｚ軸回転角）を取得する。そして、ＣＰＵ１１は、取得したｚ軸回転角に基づいて、座標系においてｚ軸の描画角度を回転させる。
【００８３】
ステップＳ１０２において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）を参照して、Ｐｈｉ［］の値（ｙ軸回転角）を取得する。そして、ＣＰＵ１１は、取得したｙ軸回転角に基づいて、座標系においてｙ軸の描画角度を回転させる。
【００８４】
ステップＳ１０３において、ＣＰＵ１１は、図１６のステップＳ８４において取得された手の構造データを行列スタックにプッシュする。ここで、ＣＰＵ１１は、当該手の構造データに対して、既に図１６のステップＳ９２において腕の構造データの値を乗算し、その後、乗算した結果を行列スタックにプッシュする。この状態において手の構造データを描画すると、手が腕に連結された状態で描画される。
【００８５】
ステップＳ１０４において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）を参照して、Ｔｈｅｔａ［］の値（ｘ軸回転角）を取得する。そして、ＣＰＵ１１は、取得したｘ軸回転角に基づいて、座標系においてｘ軸の描画角度を回転させる。
【００８６】
ステップＳ１０５において、ＣＰＵ１１は、行列スタックに格納されている手の構造データのポリゴン描画を行う。上述したように、手が腕に連結された状態で描画される。
ステップＳ１０６において、ＣＰＵ１１は、行列スタックから、手構造データをポップする。
【００８７】
ステップＳ１０７において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）から、Ｌｅｎｇｔｈの値（構造の長さ）を取得する。そして、ＣＰＵ１１は、座標系をｘ軸方向に構造の長さ分移動する。
【００８８】
ステップＳ１０８において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）のＣｈｉｌｄｒｅｎの値を参照して、子構造があるか判定する。ここで、子構造とは指である。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１０９に処理を移し、この判定がＮＯの場合、手指描画処理を終了する。
【００８９】
ステップＳ１０９において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている構造データ（Ｓｔｒｕｃｔ［］）のＣｈｉｌｄ［］の値を参照して、最初の指構造データを取得する。例えば、指構造データを親指から小指に向かって順に取得する場合、ＣＰＵ１１は、最初の指構造データとして、親指の親構造データを取得する。
【００９０】
ステップＳ１１０において、ＣＰＵ１１は、全ての指の描画が完了したか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、手指描画処理を終了し、この判定がＮＯの場合、ステップＳ１１１に処理を移す。
【００９１】
ステップＳ１１１において、ＣＰＵ１１は、ステップＳ１０９又はステップＳ１１４において取得された指構造データを行列スタックにプッシュする。ここで、ＣＰＵ１１は、当該指の構造データに対して、手の構造データの値を乗算し、その後、乗算した結果を行列スタックにプッシュする。この状態において指の構造データを描画すると、指が手に連結された状態で描画される。
【００９２】
ステップＳ１１２において、ＣＰＵ１１は、ステップＳ１１１において行列スタックにプッシュされた構造データのポリゴン描画を行う。
ステップＳ１１３において、ＣＰＵ１１は、ステップＳ１１２においてポリゴン描画が行われた構造データを行列スタックからポップする。
ステップＳ１１４において、ＣＰＵ１１は、次の指構造データを取得する。例えば、直前に親指の構造データが取得されている場合、ＣＰＵ１１は、人差し指に対応する構造データを取得する。また、例えば、直前に小指の構造データが取得されている場合、ＣＰＵ１１は、小指に対応する構造データを再取得する。
【００９３】
続いて、拡大演奏動作表示を行う際に参照されるデータの構造及び処理の流れについて説明する。なお、拡大演奏動画表示において、視点移動が行われるため、拡大演奏動作表示を行う場合を、「視点移動時」ともいう。
【００９４】
図１８は、拡大演奏動作表示において参照される動作情報の構造を示す図である。
動作情報は、上述したように、右手の動作情報を示すＭｏｔｉｏｎＲ［］と、左手の動作情報を示すＭｏｔｉｏｎＬ［］と、から構成される。
ＭｏｔｉｏｎＲ［］と、ＭｏｔｉｏｎＬ［］とは構成が同一であるため、図１８では、これらＭｏｔｉｏｎＲ［］と、ＭｏｔｉｏｎＬ［］とをまとめて、Ｍｏｔｉｏｎ［］として説明する。
【００９５】
図１８に示すように、拡大演奏動画表示を行う際に参照されるＭｏｔｉｏｎ［］におけるそれぞれの要素には、Ｔｉｍｅと、ＲｏｏｔＰｏｓ［３］と、ＭａｘＨａｎｄＰｏｓ［３］と、ＭｉｎＨａｎｄＰｏｓ［３］と、ＷｒｉｓｔＰｏｓ［３］と、が定義されている。
Ｔｉｍｅは、演奏時における各フレームが開始される時間を示す変数である。
ＲｏｏｔＰｏｓ［３］は、表示部１６に表示される構造物における起点の３次元座標（起点関節の３次元座標）である。
ＭａｘＨａｎｄＰｏｓ［３］は、視点移動時において、最も右側となる手関節の３次元座標を示す変数である。
ＭｉｎＨａｎｄＰｏｓ［３］は、視点移動時において、最も左側となる手関節の３次元座標を示す変数である。
ＷｒｉｓｔＰｏｓ［３］は、視点移動時における手首関節の３次元座標を示す変数である。
【００９６】
図１９は、視点移動時のレンダリング処理の流れを示すフローチャートである。なお、レンダリング処理は、図９において説明したメイン処理のステップＳ１のデータの初期化／読込処理が完了した後に継続的に行われる。
【００９７】
ステップＳ１２１において、ＣＰＵ１１は、視点計算処理を実行する。視点計算処理の詳細は、図２０で詳述する。
ステップＳ１２２において、ＣＰＵ１１は、視点設定処理を実行する。
すなわち、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数に格納されている高さ方向の視野角（ｆ０ｖｙ）、視界の中心座標（Ｃｅｎｔｅｒ［３］）、及び視点（Ｅｙｅ［３］）に基づいて、表示部１６に表示する画面における視点を設定する。
【００９８】
ステップＳ１２３において、ＣＰＵ１１は、図１５で詳述した鍵盤描画処理を実行する。
ステップＳ１２４において、ＣＰＵ１１は、図１６で詳述した右腕描画処理を実行する。
ステップＳ１２５において、ＣＰＵ１１は、図１６で詳述した左腕描画処理を実行する。
【００９９】
図２０は、視点計算処理の流れを示すフローチャートである。
ステップＳ１３１において、ＣＰＵ１１は、左右の描画対象の動画情報からｘ方向の最大値及び最小値を取得し、取得した最大値及び最小値の中間値を計算する。
ステップＳ１３２において、ＣＰＵ１１は、左右の構造データの最大幅、最小幅から、視界の中心と視点との距離を計算する。
【０１００】
ステップＳ１３３において、ＣＰＵ１１は、左右の描画対象の動画情報の既定数前後を検索し、ｘ方向の最大値及び最小値を取得し、中間値を計算する。
ステップＳ１３４において、ＣＰＵ１１は、視界の中心となるｘ座標を中間値に設定する。
【０１０１】
ステップＳ１３５において、ＣＰＵ１１は、視界の幅を計算する。
ステップＳ１３６において、ステップＳ１３１において取得したｘ方向の最大値及び最小値がステップＳ１３５において計算した視界の幅（視界内）に収まっているか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１３８に処理を移し、この判定がＮＯの場合、ステップＳ１３７に処理を移す。
【０１０２】
ステップＳ１３７において、ＣＰＵ１１は、視界の中心と視点との距離を再計算する。
ステップＳ１３８において、ＣＰＵ１１は、視界の幅を再計算する。
【０１０３】
続いて、演奏時に演奏テクニック表示を挿入する場合に参照されるデータの構造及び処理の流れについて説明する。なお、拡大演奏動画表示において、視点移動が行われるため、拡大演奏動作表示を行う場合を、「視点移動時」ともいう。
図２１は、演奏テクニック表示を含む演奏動作表示を行う場合に参照される制御変数の構造を示す図である。なお、図２１に示す制御変数を用いて演奏テクニック表示を含む演奏動作表示を行う場合、演奏途中において演奏テクニックを要するパートに差し掛かったときに、自動的に手指の詳細な動きが確認できるように手指が拡大され、斜視表示される。
【０１０４】
演奏テクニック表示を含む演奏動作表示を行う場合に参照される制御変数には、変数として、ｗｉｄｔｈと、ｈｅｉｇｈｔと、ｆ０ｖｙと、Ｃｅｎｔｅｒ［３］と、Ｅｙｅ［３］と、ＥｙｅＶｅｃｔｏｒ［３］と、Ｖｅｒｔｉｃａｌ［３］と、Ｈｏｒｉｚｏｎａｌ［３］と、ＡｕｔｏＡｎｇｌｅＳｔａｔｕｓと、Ｓｔａｒｔと、Ｒｅｔｕｒｎと、ＥｙｅＶｅｃｔｏｒＮ［３］と、ＥｙｅＡｎｇｌｅと、ＮｏｔｅＲ［］と、ＳｔｒｕｃｔＲ［］と、ＭｏｔｉｏｎＲ［］と、ＩｎｄｅｘＲと、ＮｏｔｅＬ［］と、ＳｔｒｕｃｔＬ［］と、ＭｏｔｉｏｎＬ［］と、ＩｎｄｅｘＬと、が定義されている。
【０１０５】
ｗｉｄｔｈ、ｈｅｉｇｈｔ、ｆ０ｖｙと、Ｃｅｎｔｅｒ［３］と、Ｅｙｅ［３］と、ＥｙｅＶｅｃｔｏｒ［３］とは、図４に示した制御変数と同一であるので、説明を省略する。
【０１０６】
Ｖｅｒｔｉｃａｌ［３］は、視界の縦（画面高さ）方向のベクトルを示す変数である。
Ｈｏｒｉｚｏｎａｌ［３］は、視界の横（画面幅）方向のベクトルを示す変数である。
ＡｕｔｏＡｎｇｌｅＳｔａｔｕｓは、視点移動状態を示す変数である。例えば、ＡｕｔｏＡｎｇｌｅＳｔａｔｕｓが“０”の場合に視点移動が行われていない状態（停止）を示し、“＋”の場合に移動中を示し、“−”の場合に復帰中を示す。
Ｓｔａｒｔは、演奏テクニックの表示を開始する時刻である移動開始時刻を示す変数である。
Ｒｅｔｕｒｎは、演奏テクニックが終了して通常の表示状態へ復帰する時刻である復帰開始時刻を示す変数である。
ＥｙｅＶｅｃｔｏｒＮ［３］は、目線回転面の法線ベクトルを示す変数である。
ＥｙｅＡｎｇｌｅは、目線回転角を示す変数である。
【０１０７】
ＮｏｔｅＲ［］と、ＳｔｒｕｃｔＲ［］と、ＭｏｔｉｏｎＲ［］と、ＩｎｄｅｘＲと、ＮｏｔｅＬ［］と、ＳｔｒｕｃｔＬ［］と、ＭｏｔｉｏｎＬ［］と、ＩｎｄｅｘＬとは、図４に示した制御変数と同一であるので、説明を省略する。
【０１０８】
図２２は、演奏テクニック表示を含む演奏動作表示を行う場合に参照される演奏情報の構造を示す図である。
演奏情報は、上述したように、右手の演奏情報を示すＮｏｔｅＲ［］と、左手の演奏情報を示すＮｏｔｅＬ［］と、から構成される。
ＮｏｔｅＲ［］と、ＮｏｔｅＬ［］とは構成が同一であるため、図２２では、これらＮｏｔｅＲ［］と、ＮｏｔｅＬ［］とをまとめて、Ｎｏｔｅ［］として説明する。
【０１０９】
図２２に示すように、Ｎｏｔｅ［］におけるそれぞれの要素には、Ｔｉｍｅと、Ｇａｔｅと、Ｐｉｔｃｈと、Ｆｉｎｇｅｒと、ＦｉｇＴｅｃｈ［］が定義されている。
【０１１０】
Ｔｉｍｅは、発音を開始する時間を示す変数である。
Ｇａｔｅは、発音を継続する時間を示す変数である。
Ｐｉｔｃｈは、発音される音の音高（周波数）を示す変数である。
Ｆｉｎｇｅｒは、指番号を示す変数である。指番号とは、演奏時において指を識別するための番号である。
ＦｉｇＴｅｃｈ［］は、演奏テクニックフラグを示す配列変数である。ＦｉｇＴｅｃｈ［］は、演奏テクニックにおいて定義されている動作ステップの数だけ要素数が設けられる。
【０１１１】
図２３は、演奏テクニック表示を含む演奏動作表示を行う場合に実行される演奏情報検索処理の流れを示すフローチャートである。
なお、本フローチャートにおいて説明するＮｏｔｅ［］は、右手パート動作情報検索処理を実行する場合、ＮｏｔｅＲ［］に置き換えるものとし、左手パート動作情報検索処理を実行する場合、ＮｏｔｅＬ［］に置き換えるものとする。
【０１１２】
ステップＳ１４１乃至ステップＳ１４３の処理は、図１２において説明したステップＳ４１乃至ステップＳ４３の処理と同一であるので、説明を省略する。
ステップＳ１４４において、ＣＰＵ１１は、ステップＳ４４における処理と同様に、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）に格納されている演奏情報を、次に発音する演奏情報に更新する。
【０１１３】
ステップＳ１４５において、ＣＰＵ１１は、演奏テクニック検索処理を実行する。演奏テクニック検索処理は、図２４で詳述する。ＣＰＵ１１は、この処理が終了すると、動作情報検索処理を終了する。
ステップＳ１４６乃至ステップＳ１４８の処理は、図１２において説明したステップＳ４５乃至ステップＳ４７の処理と同一であるので、説明を省略する。
【０１１４】
図２４は、演奏テクニック表示を含む演奏動作表示を行う場合に実行される演奏テクニック検索処理の流れを示すフローチャートである。なお、本フローチャートを実行するにあたり、ＲＡＭ１３には、図２１に示される制御変数が記憶されているものとする。
【０１１５】
ステップＳ１５１において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを参照し、視点移動するか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、演奏テクニック検索処理を終了し、この判定がＮＯの場合、ステップＳ１５２に処理を移す。
【０１１６】
ステップＳ１５２において、ＣＰＵ１１は、演奏テクニック表示を行うか否かを判定するために検索対象とする時間（検索時間）を、現在時刻から所定時間後までに設定する。
ステップＳ１５３において、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数（ｈａｎｄＣｔｒｌ）から、Ｎｏｔｅ［］を描画対象の演奏情報として取得する。
【０１１７】
ステップＳ１５４において、ＣＰＵ１１は、ステップＳ１５３又はステップＳ１６０において取得された描画対象の演奏情報に基づいて、全ての演奏情報を取得したか否かを判定する。すなわち、ＣＰＵ１１は、Ｎｏｔｅ［］の添え字が、ＲＯＭ１２に記憶されているＮｏｔｅ［］の添え字の最大値と等しいか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、演奏テクニック検索処理を終了し、この判定がＮＯの場合、ステップＳ１５５に処理を移す。
【０１１８】
ステップＳ１５５において、ＣＰＵ１１は、発音時間が、ステップＳ１５２において設定された検索時間の範囲内であるか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１５６に処理を移し、この判定がＮＯの場合、演奏テクニック検索処理を終了する。
【０１１９】
ステップＳ１５６において、ＣＰＵ１１は、図２２に示される演奏情報のＦｉｇＴｅｃｈ［］を参照し、演奏テクニックフラグがＯＮであるか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１５７に処理を移し、この判定がＮＯの場合、ステップＳ１６０に処理を移す。
【０１２０】
ステップＳ１５７において、ＣＰＵ１１は、現在の視点状態及び演奏テクニックに応じた視点状態から、回転角・回転軸を計算する。
ステップＳ１５８において、ＣＰＵ１１は、演奏テクニック表示を開始する時刻（移動開始時刻）を発音時刻の所定時間前に設定する。すなわち、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数のＳｔａｒｔを設定する。
ステップＳ１５９において、ＣＰＵ１１は、演奏テクニック表示から通常演奏動作表示又は拡大演奏動作表示に戻る時刻（復帰開始時刻）を所定時間後に設定する。ＣＰＵ１１は、この処理が終了すると、演奏テクニック検索処理を終了する。すなわち、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数のＲｅｔｕｒｎを設定する。
【０１２１】
ステップＳ１６０において、ＣＰＵ１１は、次の演奏データを取得し、ステップＳ１５４に処理を移す。
【０１２２】
図２５は、演奏テクニック表示を含む演奏動作表示を行う場合に実行されるレンダリング処理の流れを示すフローチャートである。なお、このレンダリング処理は、図９において説明したメイン処理のステップＳ１のデータの初期化／読込処理が完了した後に継続的に行われる。また、このレンダリング処理を開始時に、ＣＰＵ１１は、図２０に示す視点計算処理を実行することにより、演奏テクニック表示時において拡大して表示されるようにしてもよい。
【０１２３】
ステップＳ１６１において、ＣＰＵ１１は、視点変更計算処理を実行する。視点変更計算処理の詳細は、図２６で詳述する。
ステップＳ１６２において、ＣＰＵ１１は、視点設定処理を実行する。
すなわち、ＣＰＵ１１は、ＲＡＭ１３に記憶されている制御変数に格納されている高さ方向の視野角（ｆ０ｖｙ）、視界の中心座標（Ｃｅｎｔｅｒ［３］）、及び視点（Ｅｙｅ［３］）に基づいて、表示部１６に表示する画面における視点を設定する。
【０１２４】
ステップＳ１６３において、ＣＰＵ１１は、図１５で詳述した鍵盤描画処理を実行する。
ステップＳ１６４において、ＣＰＵ１１は、図１６で詳述した右腕描画処理を実行する。
ステップＳ１６５において、ＣＰＵ１１は、図１６で詳述した左腕描画処理を実行する。
【０１２５】
図２６は、演奏テクニック表示を含む演奏動作表示を行う場合に実行される視点変更計算処理の流れを示すフローチャートである。なお、このレンダリング処理は、図９において説明したメイン処理のステップＳ１のデータの初期化／読込処理が完了した後に継続的に行われる。
【０１２６】
ステップＳ１７１において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを参照して、視点が停止しているか否かを判定する。具体的には、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓの値が“０”である場合に視点停止であると判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１７２に処理を移し、この判定がＮＯの場合、ステップＳ１７８に処理を移す。
【０１２７】
ステップＳ１７２において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＳｔａｒｔ（移動開始時刻）を参照して、図１０のステップＳ１４において更新された現在時刻が、移動開始時刻を超過したか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１７３に処理を移し、この判定がＮＯの場合、ステップＳ１７５に処理を移す。
【０１２８】
ステップＳ１７３において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを“＋”にすることにより、視点移動状態を移動中に設定する。また、ＣＰＵ１１は、移動開始時刻と復帰開始時刻とに基づいて、移動フレーム数を算出して、ＲＡＭ１３に記憶させる。さらに、ＣＰＵ１１は、状態変数の初期値を０として、ＲＡＭ１３に記憶させる。
ステップＳ１７４において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＳｔａｒｔ（移動開始時刻）を消去する。
【０１２９】
ステップＳ１７５において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＲｅｔｕｒｎ（復帰開始時刻）を参照して、図１０のステップＳ１４において更新された現在時刻が、復帰開始時刻を超過したか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１７６に処理を移し、この判定がＮＯの場合、視点変更処理を終了する。
【０１３０】
ステップＳ１７６において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを“−”にすることにより、視点移動状態を復帰中に設定する。また、ＣＰＵ１１は、状態変数の初期値をステップＳ１７３において算出した移動フレーム数として、ＲＡＭ１３に記憶させる。
ステップＳ１７７において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＲｅｔｕｒｎ（復帰開始時刻）を消去する。
【０１３１】
ステップＳ１７８において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを参照して、視点移動中であるか否かを判定する。具体的には、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓの値が“＋”である場合に視点移動中であると判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１７９に処理を移し、この判定がＮＯの場合、ステップＳ１８３に処理を移す。
【０１３２】
ステップＳ１７９において、ＣＰＵ１１は、ＲＡＭ１３に記憶された状態変数が、ＲＡＭ１３に記憶された移動フレーム数を超過しているか否かを判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１８０に処理を移し、この判定がＮＯの場合、ステップＳ１８２に処理を移す。
ステップＳ１８０において、ＣＰＵ１１は、視線ベクトルを回転面上で所定量だけ回転移動させる。具体的には、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＥｙｅＶｅｃｔｏｒ［３］を、回転移動するように演算する。
ステップＳ１８１において、ＣＰＵ１１は、ＲＡＭ１３に記憶された状態変数の値をインクリメントする。ＣＰＵ１１は、ステップＳ１８１の処理が終了すると、視点変更処理を終了する。
【０１３３】
ステップＳ１８２において、ＣＰＵ１１は、視点移動状態を視点停止に設定する。具体的には、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを“０”にする。また、ＣＰＵ１１は、状態変数をＲＡＭ１３から消去する。ＣＰＵ１１は、ステップＳ１８２の処理が終了すると、視点変更処理を終了する。
【０１３４】
ステップＳ１８３において、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓを参照して、視点復帰中であるか否かを判定する。具体的には、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＡｕｔｏＡｎｇｌｅＳｔａｔｕｓの値が“−”である場合に視点移動中であると判定する。ＣＰＵ１１は、この判定がＹＥＳの場合、ステップＳ１８４に処理を移し、この判定がＮＯの場合、視点変更処理を終了する。
【０１３５】
ステップＳ１８４において、ＣＰＵ１１は、視線ベクトルを回転面上で所定量だけ逆回転移動させる。具体的には、ＣＰＵ１１は、ＲＡＭ１３に記憶された制御変数のＥｙｅＶｅｃｔｏｒ［３］を、逆回転移動するように演算する。
ステップＳ１８５において、ＣＰＵ１１は、ＲＡＭ１３に記憶された状態変数の値をデクリメントする。ＣＰＵ１１は、ステップＳ１８５の処理が終了すると、視点変更処理を終了する。
【０１３６】
以上のような本実施形態の演奏動作表示装置１によれば、ＣＰＵ１１は、ＲＡＭ１３に記憶されている演奏情報の演奏テクニックフラグに基づいて演奏テクニックの表示を行うか否かを判定し、当該演奏テクニックの表示を行うと判定した場合に、当該演奏テクニックに対応する画像の表示態様を、当該演奏テクニックを表示しない場合に対応する画像の表示態様に比べて変化させる。
これにより、演奏動作表示装置１は、演奏テクニックを表示する場合において、表示態様を変化させることにより、演奏者にとって視認しやすい演奏動作の表示をすることが可能になる。
【０１３７】
特に、演奏動作表示装置１では、ＣＰＵ１１は、演奏テクニックの表示を行う場合に表示部１６に表示する構造データを拡大して描画する。
これにより、演奏動作表示装置１は、演奏テクニックに対応する場面で手や指を拡大表示して、演奏テクニックの動作表示を演奏者にとってより認識しやすくすることができる。また、一連の演奏動作を再生する際に、視野を動作領域にあわせ可能な限り大きな表示にするため、より動作を視認しやすくすることが可能になる。
【０１３８】
特に、演奏動作表示装置１では、ＣＰＵ１１は、演奏テクニックの表示を行う場合に表示部１６に表示する構造データを斜視状態で描画する。
これにより、演奏動作表示装置１は、演奏テクニックに対応する場面で手や指を斜視表示して、真上や真横から演奏テクニックの動作表示をする場合に比べて演奏者にとって認識しやすくすることができる。例えば、演奏テクニックの動作表示に対してアングル等の表示状態を変更するため、特に初心者にとって困難な動作も、視認しやすく、理解しやすい表示をすることが可能になる。
【０１３９】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【０１４０】
また、上述の実施形態では、本発明が適用される演奏動作表示装置は、演奏動作表示装置１を例として説明したが、特にこれに限定されない。
例えば、本発明は、鍵盤と演奏動作表示機能とを有する電子楽器一般に適用することができる。具体的には、例えば、本発明は、電子ピアノ、電子オルガン等に適用可能である。
【０１４１】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
換言すると、図１の構成は例示に過ぎず、特に限定されない。すなわち、上述した一連の処理を全体として実行できる機能が演奏動作表示装置１に備えられていれば足り、この機能を実現するためにどのような構成を構築するのかは特に図１の例に限定されない。
【０１４２】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
このコンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータであってもよい。
【０１４３】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
【０１４４】
以上、本発明の実施形態について説明したが、この実施形態は、例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１４５】
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
［付記１］
発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報と、
複数の構造データと、当該構造データ同士の関連性を記憶する構造データと、
前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報と、を記憶する記憶手段と、
前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画する描画手段と、を備え、
前記描画手段は、前記記憶手段に記憶されている前記演奏情報の前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させる、
ことを特徴とする演奏動作表示装置。
［付記２］
前記描画手段は、前記特定動作を行う場合に前記表示手段に表示する構造データを拡大して描画する、
ことを特徴とする付記１記載の演奏動作表示装置。
［付記３］
前記描画手段は、前記特定動作を行う場合に前記表示手段に表示する構造データを斜視状態で描画する、
ことを特徴とする付記１又は２記載の演奏動作表示装置。
［付記４］
演奏動作表示装置が、演奏動作表示を行う方法であって、
前記演奏動作表示装置は、発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報、複数の構造データと、当該構造データ同士の関連性を記憶する構造データ、及び前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報を記憶する記憶手段と、を備え、
前記演奏動作表示装置が、前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画する描画ステップを含み、
前記描画ステップにおいて、演奏情報記憶手段に記憶されている前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させる、
ことを特徴とする方法。
［付記５］
発音開始時間、発音継続時間、音高、使用する指、及び特定動作の表示を行うためのフラグを格納する演奏情報、複数の構造データの関連性を記憶する構造データ、及び前記発音開始時間に対応して複数の前記構造データを表示させる場合の起点となる前記構造データの情報を示す動作情報を記憶する記憶手段と、を備えるコンピュータを、
前記記憶手段に記憶された前記演奏情報、前記動作情報及び前記構造データに基づいて、表示手段に演奏動作画像を描画させる描画手段であって、演奏情報記憶手段に記憶されている前記フラグに基づいて前記特定動作の表示を行うか否かを判定し、当該特定動作の表示を行うと判定した場合に、当該特定動作に対応する画像の表示態様を、当該特定動作を表示しない場合に対応する画像の表示態様に比べて変化させる描画手段、
として機能させることを特徴とするプログラム。
【符号の説明】
【０１４６】
１・・・演奏動作表示装置、２・・・電子楽器、１１・・・ＣＰＵ、１２・・・ＲＯＭ、１３・・・ＲＡＭ、１４・・・バス、１５・・・入力部、１６・・・表示部、１７、２１・・・ＭＩＤＩインターフェース、２２・・・鍵盤、２３・・・音源・サウンドシステム
【図１】
2013097089.tif 000003
【図２】
2013097089.tif 000004
【図３】
2013097089.tif 000005
【図４】
2013097089.tif 000006
【図５】
2013097089.tif 000007
【図６】
2013097089.tif 000008
【図７】
2013097089.tif 000009
【図８】
2013097089.tif 000010
【図９】
2013097089.tif 000011
【図１０】
2013097089.tif 000012
【図１１】
2013097089.tif 000013
【図１２】
2013097089.tif 000014
【図１３】
2013097089.tif 000015
【図１４】
2013097089.tif 000016
【図１５】
2013097089.tif 000017
【図１６】
2013097089.tif 000018
【図１７】
2013097089.tif 000019
【図１８】
2013097089.tif 000020
【図１９】
2013097089.tif 000021
【図２０】
2013097089.tif 000022
【図２１】
2013097089.tif 000023
【図２２】
2013097089.tif 000024
【図２３】
2013097089.tif 000025
【図２４】
2013097089.tif 000026
【図２５】
2013097089.tif 000027
【図２６】
2013097089.tif 000028