(57)【要約】      （修正有）【課題】弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を楽譜上で一目瞭然にする演奏練習装置を実現する。【解決手段】ＣＰＵは、表示された楽譜中でカーソルが位置する現在小節を含む描画範囲内のパート境界音を設定する。演奏入力で生じる押鍵音と同じ音高の演奏データＮｏｔｅに対応する描画範囲内の音符を該当音として識別表示すると共に、該当音が右手パート(又は左手パート）に含まれる場合には、描画範囲内で押鍵音と同じ音高を示す音高線を該当色で描画し、その音高線と同じ五線上に位置するが押鍵音より半音下(又は半音上)の音符に半音下がるマーク又は半音上がるマークを描画する。【選択図】図２６
2014178361.tif 000002
【特許請求の範囲】
【請求項１】
楽譜を表示手段に表示させる楽譜表示手段と、
前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、
音高の指定が入力される音高入力手段と、
前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、
を具備することを特徴とする演奏練習装置。
【請求項２】
前記範囲指定手段は、前記表示手段に表示された楽譜において、カーソルが位置する小節を含む段の開始小節から終了小節まで範囲指定することを特徴とする請求項１記載の演奏練習装置。
【請求項３】
前記状態描画手段は、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高線と同じ五線上に位置し、かつ前記音高入力手段により入力された音高と音階が異なる音符にマークを描画することを特徴とする請求項１または２に記載の演奏練習装置。
【請求項４】
前記状態描画手段は、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高と同じ音高の音符を検索し、該当する音符を該当音として識別表示することを特徴とする請求項１から３のいずれかに記載の演奏練習装置。
【請求項５】
前記状態描画手段は、前記範囲指定手段により指定された楽譜の所定範囲において、前記入力された音高と同じ音高の音符が存在していた場合に第１の表示色で音高線を描画し、前記入力された音高と同じ音高の音符が存在していない場合に第２の表示色で音高線を描画することを特徴とする請求項１から４のいずれかに記載の演奏練習装置。
【請求項６】
前記状態描画手段は、前記入力された音と同じ五線上に位置し、かつ入力音高より高い音符に対して第１のマーク表示を描画し、前記入力された音と同じ五線上に位置し、かつ入力音高より低い音符に対して第２のマーク表示を描画することを特徴とする請求項３に記載の演奏練習装置。
【請求項７】
前記第１のマーク表示が右方向矢印表示であり、前記第２のマーク表示が左方向矢印表示であることを特徴とする請求項６記載の演奏練習装置。
【請求項８】
前記範囲指定手段により指定された楽譜の所定範囲においてパートを分別する境界音を取得する境界音取得手段を更に備えることを特徴とする請求項１から７のいずれかに記載の演奏練習装置。
【請求項９】
前記境界音取得手段は、
前記範囲指定手段により指定された楽譜の所定範囲において、パートを分別する境界音となる第１パート最低音および第２パート最高音を特定する特定手段と、
前記特定手段により特定された第１パート最低音が第２パート最高音より高く、かつ第１パート最低音と第２パート最高音との間にＣ４音が含まれる場合には、第１パート最低音および第２パート最高音をＣ４音に設定する第１の設定手段と、
前記特定手段により特定された第１パート最低音が第２パート最高音より高く、かつ第２パート最高音がＣ４音以上もしくは第１パート最低音がＣ４音以下の場合には、第１パート最低音を第２パート最高音の一つ上の音に設定する第２の設定手段と
を備えることを特徴とする請求項８記載の演奏練習装置。
【請求項１０】
前記状態描画手段は、
前記境界音取得手段により取得された境界音に基づき前記該当音が何れかのパートに包含されると判別した場合に、前記範囲指定手段により指定された楽譜の所定範囲内で入力音高と同じ音高を示す音高線を第１の表示形態で描画すると共に、当該音高線と同じ五線上に位置し、かつ入力音高と半音差ある音符に対してガイド用マークを描画する第１の描画手段と、
前記境界音取得手段により取得された境界音に基づき前記該当音が何れのパートにも包含されないと判別した場合に、前記範囲指定手段により指定された楽譜の所定範囲内で入力音高と同じ音高を示す音高線を第２の表示形態で描画すると共に、当該音高線と同じ五線上に位置し、かつ入力音高と半音差ある音符に対してガイド用マークを描画する第２の描画手段と、
を備えることを特徴とする請求項８または９に記載の演奏練習装置。
【請求項１１】
楽譜を表示手段に表示させる楽譜表示手段と、
前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、
音高の指定が入力される音高入力手段と、
前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、
を具備することを特徴とする楽譜表示装置。
【請求項１２】
楽譜を表示手段に表示させる楽譜表示手段と、
前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、
音高の指定が入力される音高入力手段と、
前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、
を具備することを特徴とする電子楽器。
【請求項１３】
楽譜を表示手段に表示させる楽譜表示ステップと、
前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、
音高の指定入力を受け付ける音高入力ステップと、
前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップと、
を具備することを特徴とする演奏練習方法。
【請求項１４】
楽譜を表示手段に表示させる楽譜表示ステップと、
前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、
音高の指定入力を受け付ける音高入力ステップと、
前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップと、
を具備することを特徴とする楽譜表示方法。
【請求項１５】
コンピュータに、
楽譜を表示手段に表示させる楽譜表示ステップと、
前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、
音高の指定入力を受け付ける音高入力ステップと、
前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、曲の楽譜を表示すると共に、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を、表示された楽譜上で一目瞭然にする演奏練習装置、楽譜表示装置、電子楽器、演奏練習方法、楽譜表示方法およびプログラムに関する。
【背景技術】
【０００２】
曲進行に同期して読み出される練習曲の曲データと、その練習曲の演奏操作に応じて発生する演奏データとを比較し、曲データと演奏データとが相違する演奏ミスを検出した場合に演奏練習態様を変化させる演奏練習装置が知られている。この種の装置として、例えば特許文献１には曲データと演奏データとを比較して演奏操作の誤りを検出した場合に、間違った箇所の演奏操作を繰り返し練習させる技術が開示され、また特許文献２には、練習する曲の自然な流れに対応したフレーズ中、最も間違った演奏をしたフレーズの先頭から演奏練習させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−２１９５３５号公報
【特許文献２】特開２００４−２０５９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１，２に開示の技術は、間違えた箇所の演奏を繰り返したり、間違えたフレーズを先頭からやり直したりするだけなので、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を楽譜上で一目瞭然にすることが出来ない、という問題が生じる。
【０００５】
本発明は、このような事情に鑑みてなされたもので、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を楽譜上で一目瞭然にすることができる演奏練習装置、楽譜表示装置、電子楽器、演奏練習方法、楽譜表示方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の演奏練習装置は、楽譜を表示手段に表示させる楽譜表示手段と、前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、音高の指定が入力される音高入力手段と、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、を具備することを特徴とする。
【０００７】
本発明の楽譜表示装置は、楽譜を表示手段に表示させる楽譜表示手段と、前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、音高の指定が入力される音高入力手段と、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段とを具備することを特徴とする。
【０００８】
本発明の電子楽器は、楽譜を表示手段に表示させる楽譜表示手段と、前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、音高の指定が入力される音高入力手段と、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段とを具備することを特徴とする。
【０００９】
本発明の演奏練習方法は、楽譜を表示手段に表示させる楽譜表示ステップと、前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、音高の指定入力を受け付ける音高入力ステップと、前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップとを具備することを特徴とする。
【００１０】
本発明の楽譜表示方法は、楽譜を表示手段に表示させる楽譜表示ステップと、前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、音高の指定入力を受け付ける音高入力ステップと、前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップとを具備することを特徴とする。
【００１１】
本発明のプログラムは、コンピュータに、楽譜を表示手段に表示させる楽譜表示ステップと、前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、音高の指定入力を受け付ける音高入力ステップと、前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップとを実行させることを特徴とする。
【発明の効果】
【００１２】
本発明では、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を楽譜上で一目瞭然にすることができる。
【図面の簡単な説明】
【００１３】
【図１】実施の一形態による演奏練習装置１００の全体構成を示すブロック図である。
【図２】ＲＯＭ１１のメモリ構成を示すメモリマップである。
【図３】ＲＡＭ１２のメモリ構成を示すメモリマップである。
【図４】ＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌの構成を示すメモリマップである。
【図５】ＲＡＭ１２の小節データエリアＭＥの構成を示すメモリマップである。
【図６】ＲＡＭ１２の演奏データエリアＰＥの構成を示すメモリマップである。
【図７】ＲＡＭ１２の五線テーブルＦＴの構成を示すメモリマップである。
【図８】メインルーチンの動作を示すフローチャートである。
【図９】描画処理の動作を示すフローチャートである。
【図１０】楽譜画像描画処理の動作を示すフローチャートである。
【図１１】押鍵状態描画処理の動作を示すフローチャートである。
【図１２】描画範囲取得処理の動作を示すフローチャートである。
【図１３】パート境界音取得処理の動作を示すフローチャートである。
【図１４】パート境界音取得処理の動作を示すフローチャートである。
【図１５】該当音検索処理の動作を示すフローチャートである。
【図１６】状態描画処理の動作を示すフローチャートである。
【図１７】状態描画処理の動作を示すフローチャートである。
【図１８】音高線描画処理の動作を示すフローチャートである。
【図１９】音高線描画処理の動作を示すフローチャートである。
【図２０】五線情報取得処理の動作を示すフローチャートである。
【図２１】五線座標取得処理の動作を示すフローチャートである。
【図２２】補助線描画処理の動作を示すフローチャートである。
【図２３】五線上部の補助線描画処理の動作を示すフローチャートである。
【図２４】五線下部の補助線描画処理の動作を示すフローチャートである。
【図２５】第１の画面表示例を示す図である。
【図２６】第２の画面表示例を示す図である。
【図２７】第３の画面表示例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．全体構成  
図１は、本発明の実施の一形態による演奏練習装置１００の全体構成を示すブロック図である。この図において、ＣＰＵ１０は、ＭＩＤＩインタフェース１５を介して外部のＭＩＤＩ楽器２０から入力される演奏情報（ＭＩＤＩイベント）に基づき音源１６に楽音発生を指示する通常の楽器機能の他に、演奏練習機能を具備する。演奏練習機能とは、演奏練習する曲の楽譜を表示すると共に、ユーザが演奏練習として弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を、表示された楽譜上で一目瞭然にする機能を指す。こうした本発明の要旨に係わるＣＰＵ１０の演奏練習機能については追って詳述する。
【００１５】
ＲＯＭ１１は、図２に図示するように、プログラムエリアＰＥおよび画像データエリアＩＥを備える。ＲＯＭ１１のプログラムエリアＰＥには、ＣＰＵ１０にロードされる各種の制御プログラムが記憶される。各種の制御プログラムとは、後述のメインルーチンおよび当該メインルーチンからコールされる描画処理を含む。
【００１６】
描画処理は、楽譜画像描画処理および押鍵状態描画処理から構成される。押鍵状態描画処理は、描画範囲取得処理、パート境界音取得処理、該当音検索処理および状態描画処理を含む。状態描画処理は、音高線描画処理を含む。音高線描画処理は、五線情報取得処理、五線座標取得処理および補助線描画処理を含む。補助線描画処理は、五線上部の補助線描画処理および五線下部の補助線描画処理を含む。
【００１７】
ＲＯＭ１１の画像データエリアＩＥには、例えば小節線や五線、ト音記号など楽譜表示に用いる各種画像データＢｉｔｍａｐ［０］〜Ｂｉｔｍａｐ［Ｎ］が記憶される。１つの画像データＢｉｔｍａｐは、ビットマップ形式の画像データ本体、当該画像データ本体の表示サイズを表す幅Ｗおよび高さＨから構成される。
【００１８】
ＲＡＭ１３は、図３に図示するように、ＣＰＵ１０の処理に用いられる各種レジスタ・フラグデータを一時記憶するワークエリアＷＥの他、楽譜制御データエリアｓｃｏｒｅＣｔｒｌ、小節データエリアＭＥ、演奏データエリアＰＥおよび五線テーブルＦＴを備える。ワークエリアＷＥを除く上記各エリアに格納される主要なデータ構成については追って述べる。
【００１９】
操作部１３は、装置動作を終了させる終了スイッチや、楽器機能又は演奏練習機能の何れかを選択して実行指示する機能選択スイッチ等を備え、各スイッチ操作に応じたスイッチイベントを発生してＣＰＵ１０に供給する。表示部１４は、ＣＰＵ１０の制御の下に、演奏練習する曲の楽譜を表示すると共に、ユーザが演奏練習として弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を、楽譜上に表示する。
【００２０】
ＭＩＤＩインタフェース部１５は、ユーザの演奏操作に応じて、外部のＭＩＤＩ楽器２０から出力される演奏情報（ＭＩＤＩイベント）を、ＣＰＵ１０の制御の下に取り込む。音源１６は、公知の波形メモリ読み出し方式で構成され、ＣＰＵ１０の制御の下に、ＭＩＤＩインタフェース部１５を介して取り込まれた演奏情報（ＭＩＤＩイベント）に応じた楽音データを発生する。サウンドシステム１７は、音源１６が生成した楽音データをアナログ形式の楽音信号に変換すると共に、その楽音信号に対してノイズ除去やレベル制御を施した後、スピーカから楽音として発音させる。
【００２１】
Ｂ．ＲＡＭ１３のデータ構成
次に、図４〜図７を参照してＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌ、小節データエリアＭＥ、演奏データエリアＰＥおよび五線テーブルＦＴにそれぞれ格納される各種データの構成について説明する。
【００２２】
（１）楽譜制御データエリアｓｃｏｒｅＣｔｒｌの構成
図４は、ＲＡＭ１２が備える楽譜制御データエリアｓｃｏｒｅＣｔｒｌのデータ構成を示すメモリマップである。図４において、レジスタｎｏｗＰａｇｅには、画面に表示される楽譜のページ番号がストアされる。レジスタｎｏｗＭｅａｓには、小節番号で表されるカーソル位置がストアされる。レジスタｓｃｒＸには、画面に表示される楽譜のｘ方向表示開始座標値がストアされる。なお、ｘ方向とは、画面の横方向を指す。レジスタｓｃｒＹには、画面に表示される楽譜のｙ方向表示開始座標値がストアされる。なお、ｙ方向とは、画面の縦方向を指す。従って、座標値（ｓｃｒＸ，ｓｃｒＹ）により画面に表示される楽譜の表示開始位置が決まる。
【００２３】
レジスタｓｃｒＳＸには、画面に表示される楽譜の表示幅がストアされる。レジスタｓｃｒＳＹには、画面に表示される楽譜の表示長（表示高）がストアされる。レジスタＰａｇｅＣｏｕｎｔには、楽譜の表示ページ数がストアされる。レジスタＢｉｔｍａｐ［ＰａｇｅＣｏｕｎｔ］は、ＲＯＭ１１の画像データエリアＩＥ（図２参照）に記憶される各種画像データＢｉｔｍａｐ［０］〜Ｂｉｔｍａｐ［Ｎ］の中から、レジスタＰａｇｅＣｏｕｎｔの表示ページに対応付けられた画像データ（元画像）を指定する。
【００２４】
レジスタＳｃａｌｅには、元画像に対する表示倍率がストアされる。レジスタｘには、元画像のｘ方向表示開始座標値がストアされる。レジスタｙには、元画像のｙ方向表示開始座標値がストアされる。ノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］には、対応するノートナンバ（鍵番号）がノートオン（押鍵）された場合に「１」がセット、ノートオフ（離鍵）された場合にゼロリセットされるフラグである。
【００２５】
（２）小節データエリアＭＥの構成
図５は、ＲＡＭ１２が備える小節データエリアＭＥのデータ構成を示すメモリマップである。小節データエリアＭＥには、演奏練習に供する曲を構成する複数の小節データＭｅａｓ［０］〜［Ｎ］がストアされる。小節データＭｅａｓは、レジスタＰａｇｅ、レジスタＲｅｃｔ、レジスタＳｈｅｌｆ、レジスタＫｅｙＳｉｇｎ、レジスタＣｌｅｆ［２］およびレジスタＬｉｎｅ［ＰＡＲＴ］［ＩＮＤＥＸ］から構成される。
【００２６】
レジスタＰａｇｅには、楽譜表示されるページ番号がストアされる。レジスタＲｅｃｔには、小節の範囲を規定する矩形座標値がストアされる。矩形座標値は、矩形の左端Ｌｅｆｔ、上端Ｔｏｐ、右端Ｒｉｇｈｔおよび下端Ｂｏｔｔｏｍからなる。レジスタＳｈｅｌｆには、段番号がストアされる。レジスタＫｅｙＳｉｇｎには、演奏練習に供する曲の調号を表す調号番号がストアされる。調号番号は、ハ長調を「０（調号無し）」とした場合に、シャープ♯の数（＋１〜＋７）およびフラット♭の数（−１〜−７）に基づき「−７」から「＋７」までの都合１５種で表す。
【００２７】
レジスタＣｌｅｆ［２］には、「＋１」でト音記号（通常）、「＋２」でト音記号（オクターブ下げ）、「＋３」でト音記号（オクターブ上げ）、「−１」でヘ音記号（通常）、「−２」でヘ音記号（オクターブ下げ）、「−３」でヘ音記号（オクターブ上げ）をそれぞれ表す音部番号がストアされる。なお、Ｃｌｅｆ［０］とＣｌｅｆ［１］は、それぞれ右手パートと左手パート（大譜表の上段と下段）の五線の音部記号を表す音部番号がストアされる。
【００２８】
レジスタＬｉｎｅ［ＰＡＲＴ］［ＩＮＤＥＸ］には、元画像においてパートＰＡＲＴおよび五線ＩＮＤＥＸで指定される五線譜中の線のｙ座標値がストアされる。ここで、パートＰＡＲＴは「０」の場合に右手パートを表し、「１」の場合に左手パートを表す。五線ＩＮＤＥＸは、「０」で第５線、「１」で第４線、「２」で第３線、「３」で第２線、「４」で第１線をそれぞれ指定する。
【００２９】
したがって、図５に図示する一例の楽譜の場合、レジスタＬｉｎｅ［０］［０］には右手パート第５線のｙ座標値、レジスタＬｉｎｅ［０］［１］には右手パート第４線のｙ座標値、レジスタＬｉｎｅ［０］［２］には右手パート第３線のｙ座標値、レジスタＬｉｎｅ［０］［３］には右手パート第２線のｙ座標値、レジスタＬｉｎｅ［０］［４］には右手パート第１線のｙ座標値がそれぞれストアされる。
【００３０】
さらに、レジスタＬｉｎｅ［１］［０］には左手パート第５線のｙ座標値、レジスタＬｉｎｅ［１］［１］には左手パート第４線のｙ座標値、レジスタＬｉｎｅ［１］［２］には左手パート第３線のｙ座標値、レジスタＬｉｎｅ［１］［３］には左手パート第２線のｙ座標値、レジスタＬｉｎｅ［１］［４］には左手パート第１線のｙ座標値がそれぞれストアされる。
【００３１】
（３）演奏データエリアＰＥの構成
図６は、ＲＡＭ１２が備える演奏データエリアＰＥのデータ構成を示すメモリマップである。演奏データエリアＰＥには、演奏練習に供する曲の各音符を表す演奏データＮｏｔｅ［０］〜［Ｎ］がストアされる。演奏データＮｏｔｅは、発音開始時間Ｔｉｍｅ、音長Ｇａｔｅ（発音継続時間）、音高Ｐｉｔｃｈ、パート番号Ｈａｎｄ、小節番号Ｍｅａｓ、玉座標ｘおよび玉座標ｙから構成される。
【００３２】
発音開始時間Ｔｉｍｅは、曲頭からの経過時間で表現される。パート番号Ｈａｎｄは、「０」の場合に右手パートの音符を表し、「１」の場合に左手パートの音符を表す。小節番号Ｍｅａｓは、音符が含まれる小節の番号を表し、上述した小節データＭｅａｓ［小節番号］を指定する。玉座標ｘおよび玉座標ｙは、元画像における音符の玉の座標位置を表す。
【００３３】
（３）五線テーブルＦＴの構成
図７は、ＲＡＭ１２が備える五線テーブルＦＴのデータ構成を示すメモリマップである。五線テーブルＦＴは、ノートナンバ（鍵番号）＃４８〜＃７１までの２オクターブ分の各音高についてト音記号表記した際の五線上の位置を、１５種類の調号毎に定義したデータテーブルである。五線テーブルＦＴは、１５種類の調号に対応付けられたデータｂａｒｌｉｎｅ［０］〜［１４］から構成される。なお、データｂａｒｌｉｎｅ［７］はハ長調に相当する。
【００３４】
１つのデータｂａｒｌｉｎｅは、ノートナンバ＃４８〜＃７１までの２オクターブ分の各音高の五線上の位置ｔｏｎｅｐｏｓ［０（＃４８）］〜［２３（＃７１）］から構成される。さらに、五線上の位置ｔｏｎｅｐｏｓは、五線インデックスｌｉｎｅ、五線間フラグｉｎｔｅｒｖａｌおよび臨時記号ａｃｃｉｄｅｎｔａｌを有する。
【００３５】
なお、五線インデックスｌｉｎｅは、五線譜の一番上の第５線を「０」として、対応する音高の五線位置を指定する。五線間フラグｉｎｔｅｒｖａｌは、「０」の場合に五線上を表し、「１」の場合に五線の間を表す。臨時記号ａｃｃｉｄｅｎｔａｌは、「０」の場合に無し、「１」の場合にフラット♭、「２」の場合にダブルフラット♭♭、「３」の場合にナチュラル、「４」の場合にシャープ♯、「５」の場合にダブルシャープ♯♯をそれぞれ表す。
【００３６】
従って、例えば現在の曲の調がハ長調であるときにノートナンバ＃６０（Ｃ４音）の五線上の位置を求める場合には、五線テーブルＦＴからデータｂａｒｌｉｎｅ［７］における位置ｔｏｎｅｐｏｓ［１２］を読み出し、これにより五線インデックスｌｉｎｅが「５」、五線間フラグｉｎｔｅｒｖａｌが「０」、臨時記号ａｃｃｉｄｅｎｔａｌが「０」となる。
【００３７】
Ｃ．動作
次に、図８〜図２４を参照して上記構成による演奏練習装置１００の動作について説明する。以下では、演奏練習装置１００のＣＰＵ１０が実行するメインルーチンおよび当該メインルーチンからコールされる描画処理の各動作を説明する。
【００３８】
なお、描画処理は、楽譜画像描画処理および押鍵状態描画処理から構成される。押鍵状態描画処理は、描画範囲取得処理、パート境界音取得処理、該当音検索処理および状態描画処理を含む。状態描画処理は、音高線描画処理を含む。音高線描画処理は、五線情報取得処理、五線座標取得処理および補助線描画処理を含む。補助線描画処理は、五線上部の補助線描画処理および五線下部の補助線描画処理を含む。
【００３９】
（１）メインルーチンの動作
図８は、メインルーチンの動作を示すフローチャートである。演奏練習装置１００では、機能選択スイッチの操作により演奏練習装置１００の機能を演奏練習機能に切り替えた場合にメインルーチンが実行される。メインルーチンが実行されると、ＣＰＵ１０は、図８に図示するステップＳＡ１に処理を進め、ＲＡＭ１２のワークエリアＷＥに格納される各種レジスタやフラグデータをゼロリセットしたり初期値セットしたりする等のイニシャライズを行う。
【００４０】
イニシャライズが完了すると、ステップＳＡ２に進み、終了スイッチの操作により終了指示されたか否かを判断する。終了指示されていなければ、判断結果は「ＮＯ」になり、ステップＳＡ３に進む。ステップＳＡ３では、ノートオン入力の有無、すなわちＭＩＤＩインタフェース１５を介して外部のＭＩＤＩ楽器２０から押鍵操作に応じたノートオンイベントが入力されたかどうかを判断する。
【００４１】
押鍵操作に応じたノートオンイベントが入力されると、上記ステップＳＡ３の判断結果は「ＹＥＳ」となり、ステップＳＡ４に進み、その入力されたノートオンイベントに含まれるノートナンバ、つまり押鍵された鍵の音高をレジスタｐにストアする。そして、続くステップＳＡ５では、楽譜制御データエリアｓｃｏｒｅＣｔｒｌ（図４参照）のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の内、レジスタｐの音高に対応したノートオンフラグＮｏｔｅＯｎ［ｐ］に「１」をセットした後、後述のステップＳＡ９に処理を進める。
【００４２】
一方、押鍵操作に応じたノートオンイベントが入力されなければ、上記ステップＳＡ３の判断結果は「ＮＯ」になり、ステップＳＡ６に進む。ステップＳＡ６では、ノートオフ入力の有無、すなわちＭＩＤＩインタフェース１５を介して外部のＭＩＤＩ楽器２０から離鍵操作に応じたノートオフイベントが入力されたかどうかを判断する。離鍵操作に応じたノートオフイベントが入力されなければ、判断結果は「ＮＯ」になり、後述のステップＳＡ９に処理を進める。
【００４３】
これに対し、離鍵操作に応じたノートオフイベントが入力されると、上記ステップＳＡ６の判断結果は「ＹＥＳ」となり、ステップＳＡ７に進み、その入力されたノートオフイベントに含まれるノートナンバ、つまり離鍵された鍵の音高をレジスタｐにストアする。次いで、ステップＳＡ８では、楽譜制御データエリアｓｃｏｒｅＣｔｒｌ（図４参照）のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の内、レジスタｐの音高に対応したノートオンフラグＮｏｔｅＯｎ［ｐ］をゼロリセットした後、ステップＳＡ９に処理を進める。
【００４４】
そして、ステップＳＡ９では、描画処理を実行する。描画処理では、後述するように、現在表示すべき楽譜のページに相当する元画像（楽譜の画像データ）をＲＯＭ１１の画像データエリアＩＥ（図２参照）から読み出し、読み出した元画像（楽譜の画像データ）を表示画面（ディスプレイ）の表示サイズに合わせて描画する。この後、現在の小節（表示された楽譜においてカーソルが位置する小節）の段番号を、ＲＡＭ１２の小節データエリアＭＥから取得し、取得した段番号と同じ段の開始小節番号および終了小節番号を描画範囲として取得する。
【００４５】
開始小節番号から終了小節番号までの描画範囲が定まると、その描画範囲内のパート境界音（右手パート最低音および左手パート最高音）を特定し、右手パート最低音が左手パート最高音より高く、かつ右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれる場合であれば、右手パート最低音および左手パート最高音を「ノートナンバ＃６０（Ｃ４音）」に設定し、右手パート最低音が左手パート最高音より高く、かつ左手パート最高音がノートナンバ＃６０（Ｃ４音）以上もしくは右手パート最低音がノートナンバ＃６０（Ｃ４音）以下の場合であれば、右手パート最低音を左手パート最高音の一つ上の音に設定する。
【００４６】
続いて、ＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌ(図４参照)のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の中からノートオンフラグＮｏｔｅＯｎ［ｐ］が「１」、つまり押鍵音のノートナンバを検索した後、描画範囲内の音符であって、かつ押鍵音と同じ音高（ノートナンバ）の演奏データＮｏｔｅを探し出し、該当する演奏データＮｏｔｅに対応する音符の玉を該当マーク（○印）で囲んで表示することで該当音として表現し、この該当音が右手パートに含まれる場合には右検知フラグをセットし、左手パートに含まれる場合には左検知フラグをセットする。
【００４７】
続いて、描画小節内に押鍵音と同じ音高の該当音が右手パート（又は左手パート）に含まれ、右検知フラグ（又は左検知フラグ）がセットされていれば、描画色を該当色に設定し、描画パートを右（又は左）に設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００４８】
一方、右／左検知フラグが何れも立っていなければ、描画色を非該当色に設定し、描画音高が右手パート最低音を上回れば描画パートを右手パートに設定し、描画音高が左手パート最高音を下回れば描画パートを左手パートに設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００４９】
さて、こうした描画処理を終えると、ＣＰＵ１０は前述のステップＳＡ２に処理を戻す。そして、ユーザによる終了スイッチ操作で終了指示されると、上記ステップＳＡ２の判断結果が「ＹＥＳ」になり、本メインルーチンを終える。
【００５０】
（２）描画処理の動作
次に、図９を参照して描画処理の動作を説明する。上述したメインルーチンのステップＳＡ９（図８参照）を介して本処理が実行されると、ＣＰＵ１０は、図９に図示するステップＳＢ１の楽譜画像描画処理を実行する。楽譜画像描画処理では、後述するように、現在表示すべき楽譜のページに相当する元画像（楽譜の画像データ）をＲＯＭ１１の画像データエリアＩＥ（図２参照）から読み出し、読み出した元画像（楽譜の画像データ）を表示画面（ディスプレイ）の表示サイズに合わせて描画する。
【００５１】
そして、ステップＳＢ２を介して押鍵状態描画処理を実行する。押鍵状態描画処理では、後述するように、現在の小節（表示された楽譜においてカーソルが位置する小節）の段番号を、ＲＡＭ１２の小節データエリアＭＥから取得し、取得した段番号と同じ段の開始小節番号および終了小節番号を描画範囲として取得する。そして、描画範囲内におけるパート境界音（右手パート最低音および左手パート最高音）を特定する。
【００５２】
右手パート最低音が左手パート最高音より高く、かつ右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれる場合には、右手パート最低音および左手パート最高音を「ノートナンバ＃６０（Ｃ４音）」に設定する。右手パート最低音が左手パート最高音より高く、かつ左手パート最高音がノートナンバ＃６０（Ｃ４音）以上もしくは右手パート最低音がノートナンバ＃６０（Ｃ４音）以下の場合には、右手パート最低音を左手パート最高音の一つ上の音に設定する。
【００５３】
次に、ＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌ(図４参照)のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の中からノートオンフラグＮｏｔｅＯｎ［ｐ］が「１」、つまり押鍵音のノートナンバを検索した後、描画範囲内の音符であって、かつ押鍵音と同じ音高の演奏データＮｏｔｅを探し出し、該当する演奏データＮｏｔｅに対応する音符の玉を該当マーク（○印）で囲んで該当音として表現し、この該当音が右手パートに含まれる場合には右検知フラグをセットし、左手パートに含まれる場合には左検知フラグをセットする。
【００５４】
続いて、描画小節内に押鍵音と同じ音高の該当音が右手パート（又は左手パート）に含まれ、右検知フラグ（又は左検知フラグ）がセットされていれば、描画色を該当色に設定し、描画パートを右（又は左）に設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００５５】
一方、右／左検知フラグが何れも立っていなければ、描画色を非該当色に設定し、描画音高が右手パート最低音を上回れば描画パートを右手パートに設定し、描画音高が左手パート最高音を下回れば描画パートを左手パートに設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００５６】
（３）楽譜画像描画処理の動作
次に、図１０を参照して楽譜画像描画処理の動作を説明する。上述した描画処理のステップＳＢ１（図９参照）を介して本処理が実行されると、ＣＰＵ１０は、図１０に図示するステップＳＣ１に処理を進め、楽譜制御データエリアｓｃｏｒｅＣｔｒｌ（図４参照）のレジスタｎｏｗＰａｇｅにストアされる楽譜のページ番号を現在ページｐｇにセットする。
【００５７】
続いて、ステップＳＣ２では、楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタｓｃｒＸにストアされるｘ方向表示開始座標値と、レジスタｓｃｒＹにストアされるｙ方向表示開始座標値とをそれぞれ座標位置ｓｃｒＸ、座標位置ｓｃｒＹにセットする。また、楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタｓｃｒＳＸにストアされる楽譜の表示幅と、レジスタｓｃｒＳＹにストアされる楽譜の表示長とをそれぞれ表示幅ｓｃｒＳＸ、表示長ｓｃｒＳＹにセットする。
【００５８】
次いで、ステップＳＣ３では、楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタｘにストアされる元画像のｘ方向表示開始座標値を元画像表示開始位置ｘにセットし、レジスタｙにストアされる元画像のｙ方向表示開始座標値を元画像表示開始位置ｙにセットする。
【００５９】
そして、ステップＳＣ４では、現在ページｐｇに対応して楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタＢｉｔｍａｐ［ｐｇ］により指定されるＲＯＭ１１の画像データエリアＩＥ（図２参照）中の画像データＢｉｔｍａｐ［ｐｇ］の高さＨに、楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタＳｃａｌｅにストアされる表示倍率を乗算して画像領域の高さｈを算出する。続いて、ステップＳＣ５では、上記ステップＳＣ４で算出した画像領域の高さｈに、表示幅ｓｃｒＳＸ／表示長ｓｃｒＳＹを乗算して画像領域の幅ｗを算出する。
【００６０】
次いで、ステップＳＣ６では、元画像の矩形領域（ｘ，ｙ，ｘ＋ｗ，ｙ＋ｈ）を、ディスプレイの矩形領域（ｓｃｒＸ，ｓｃｒＹ，ｓｃｒＸ＋ｓｃｒＳＸ，ｓｃｒＹ＋ｓｃｒＳＹ）に表示する。なお、矩形領域（ｘ，ｙ，ｘ＋ｗ，ｙ＋ｈ）とは、対角座標（元画像表示開始位置ｘ，元画像表示開始位置ｙ）および対角座標（元画像表示開始位置ｘ＋画像領域の幅ｗ，元画像表示開始位置ｙ＋画像領域の高さｈ）で定まる領域である。また、矩形領域（ｓｃｒＸ，ｓｃｒＹ，ｓｃｒＸ＋ｓｃｒＳＸ，ｓｃｒＹ＋ｓｃｒＳＹ）とは、対角座標（座標位置ｓｃｒＸ，座標位置ｓｃｒＹ）および対角座標（座標位置ｓｃｒＸ＋表示幅ｓｃｒＳＸ，座標位置ｓｃｒＹ＋表示長ｓｃｒＳＹ）で定まる領域である。
【００６１】
このように、楽譜画像描画処理では、現在表示すべき楽譜のページに相当する元画像（楽譜の画像データ）をＲＯＭ１１の画像データエリアＩＥ（図２参照）から読み出し、読み出した元画像（楽譜の画像データ）を表示画面（ディスプレイ）の表示サイズに合わせて楽譜画像として描画する。
【００６２】
（４）押鍵状態描画処理の動作
次に、図１１を参照して押鍵状態描画処理の動作を説明する。前述した描画処理のステップＳＢ２（図９参照）を介して本処理が実行されると、ＣＰＵ１０は、図１１に図示するステップＳＤ１に処理を進め、描画範囲取得処理を実行する。描画範囲取得処理では、後述するように、現在の小節（表示された楽譜においてカーソルが位置する小節）の段番号を、ＲＡＭ１２が備える小節データエリアＭＥから取得し、取得した段番号と同じ段の開始小節番号および終了小節番号を描画範囲として取得する。
【００６３】
次いで、ステップＳＤ２では、パート境界音取得処理を実行する。パート境界音取得処理では、後述するように、描画範囲取得処理で取得された描画範囲内における右手パート最低音および左手パート最高音を特定し、右手パート最低音が左手パート最高音より高く、かつ右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれる場合には、右手パート最低音および左手パート最高音を「ノートナンバ＃６０（Ｃ４音）」に設定し、右手パート最低音が左手パート最高音より高く、かつ左手パート最高音がノートナンバ＃６０（Ｃ４音）以上もしくは右手パート最低音がノートナンバ＃６０（Ｃ４音）以下の場合には、右手パート最低音を左手パート最高音の一つ上の音に設定する。
【００６４】
そして、ステップＳＤ３に進むと、ポインタｐをゼロリセットし、続くステップＳＤ４では、ポインタｐが「１２８」より小さいか否か、すなわちＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌ(図４参照)のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の全てについて検索し終えたかどうかを判断する。検索し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＤ５に進む。
【００６５】
ステップＳＤ５では、ポインタｐで指定する楽譜制御データエリアｓｃｏｒｅＣｔｒｌのノートオンフラグＮｏｔｅＯｎ［ｐ］が「１」、つまりポインタｐで指定するノートナンバの鍵が押鍵中であるかどうかを判断する。ポインタｐで指定するノートオンフラグＮｏｔｅＯｎ［ｐ］が「０」（離鍵状態）ならば、判断結果は「ＮＯ」になり、ステップＳＤ８に進み、ポインタｐをインクリメントして歩進させた後、上記ステップＳＤ４に処理を戻す。
【００６６】
そして、例えば歩進されたポインタｐが指定するノートオンフラグＮｏｔｅＯｎ［ｐ］が「１」（押鍵中）であると、上記ステップＳＤ５の判断結果が「ＹＥＳ」になり、ステップＳＤ６を介して該当音検索処理を実行する。
【００６７】
該当音検索処理では、後述するように、描画範囲内の音符であって、かつ押鍵音と同じ音高の演奏データＮｏｔｅを探し出し、該当する演奏データＮｏｔｅに対応する音符の玉を該当マーク（○印）で囲んで該当音として表現し、この該当音が右手パートに含まれる場合には右検知フラグをセットし、左手パートに含まれる場合には左検知フラグをセットする。
【００６８】
続いて、ステップＳＤ７では、状態描画処理を実行する。状態描画処理では、後述するように、描画小節内に押鍵音と同じ音高の該当音が右手パート（又は左手パート）に含まれ、右検知フラグ（又は左検知フラグ）がセットされていれば、描画色を該当色（例えば青色）に設定し、描画パートを右（又は左）に設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００６９】
一方、右／左検知フラグが何れも立っていなければ、描画色を非該当色（例えば赤色）に設定し、描画音高が右手パート最低音を上回れば描画パートを右手パートに設定し、描画音高が左手パート最高音を下回れば描画パートを左手パートに設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００７０】
こうした状態描画処理が完了すると、ステップＳＤ８に進み、ポインタｐをインクリメントして歩進させた後、上述のステップＳＤ４に処理を戻す。以後、歩進されたポインタｐに応じて、ＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌ(図４参照)のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の全てについて検索し終える迄、上述したステップＳＤ４〜ＳＤ８を繰り返す。そして、歩進されたポインタｐが「１２８」を超え、ノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の全てについて検索し終えると、ステップＳＤ４の判断結果が「ＮＯ」になり、本処理を終える。
【００７１】
以上のように、押鍵状態描画処理では、先ず現在の小節（表示された楽譜においてカーソルが位置する小節）の段番号を、ＲＡＭ１２が備える小節データエリアＭＥから取得し、取得した段番号と同じ段の開始小節番号および終了小節番号を描画範囲として取得する。
【００７２】
次に、取得した描画範囲内におけるパート境界音（右手パート最低音および左手パート最高音）を特定し、右手パート最低音が左手パート最高音より高く、かつ右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれる場合には、右手パート最低音および左手パート最高音を「ノートナンバ＃６０（Ｃ４音）」に設定し、右手パート最低音が左手パート最高音より高く、かつ左手パート最高音がノートナンバ＃６０（Ｃ４音）以上もしくは右手パート最低音がノートナンバ＃６０（Ｃ４音）以下の場合には、右手パート最低音を左手パート最高音の一つ上の音に設定する。
【００７３】
続いて、ＲＡＭ１２の楽譜制御データエリアｓｃｏｒｅＣｔｒｌ(図４参照)のノートオンフラグＮｏｔｅＯｎ［０］〜［１２７］の中からノートオンフラグＮｏｔｅＯｎ［ｐ］が「１」、つまり押鍵音のノートナンバを検索した後、描画範囲内の音符であって、かつ押鍵音と同じ音高の演奏データＮｏｔｅを探し出し、該当する演奏データＮｏｔｅに対応する音符の玉を該当マーク（○印）で囲んで該当音として表現し、この該当音が右手パートに含まれる場合には右検知フラグをセットし、左手パートに含まれる場合には左検知フラグをセットする。
【００７４】
次いで、描画小節内に押鍵音と同じ音高の該当音が右手パート（又は左手パート）に含まれ、右検知フラグ（又は左検知フラグ）がセットされていれば、描画色を該当色に設定し、描画パートを右（又は左）に設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００７５】
一方、右／左検知フラグが何れも立っていなければ、描画色を非該当色（例えば赤色）に設定し、描画音高が右手パート最低音を上回れば描画パートを右手パートに設定し、描画音高が左手パート最高音を下回れば描画パートを左手パートに設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【００７６】
（５）描画範囲取得処理の動作
次に、図１２を参照して描画範囲取得処理の動作を説明する。上述した押鍵状態描画処理のステップＳＤ１（図１１参照）を介して本処理が実行されると、ＣＰＵ１０は、図１２に図示するステップＳＥ１に処理を進め、（描画）開始小節番号および（描画）終了小節番号を検索用変数に設定する。
【００７７】
次いで、ステップＳＥ２では、現在の小節（表示された楽譜においてカーソルが位置する小節）の段番号を、ＲＡＭ１２が備える小節データエリアＭＥから取得する。具体的には、カーソル位置を含む矩形座標値Ｒｅｃｔを有する小節データＭｅａｓを検索し、該当する小節データＭｅａｓの段番号Ｓｈｅｌｆを取得する。
【００７８】
そして、ステップＳＥ３では、検索用変数を現在の小節番号の一つ前に設定し、続くステップＳＥ４では、設定された検索用変数（現在の小節番号−１）が曲先頭を超過していないかどうかを判断する。曲先頭を超過していなければ、判断結果は「ＹＥＳ」になり、ステップＳＥ５に進む。ステップＳＥ５では、検索中の小節の段番号が、上記ステップＳＥ２で取得した現在の小節の段番号と一致するか否かを判断する。
【００７９】
検索中の小節の段番号が、現在の小節の段番号と一致する場合には、判断結果が「ＹＥＳ」となり、ステップＳＥ６に進み、（描画）開始小節番号を検索用変数に更新する。そして、ステップＳＥ７に進み、検索用変数をデクリメントした後、上述のステップＳＥ７に処理を戻す。
【００８０】
以後、ステップＳＥ４〜ＳＥ７では、検索中の小節（検索用変数で指定される小節）の段番号が現在の小節の段番号と一致する毎に、（描画）開始小節番号を検索用変数に更新すると共に、検索用変数をデクリメントする処理を、当該デクリメントされた検索用変数が曲先頭を超過するまで繰り返すことによって（描画）開始小節番号を探し出す。つまり、検索中の小節と同じ段の小節のうちで、最も先（楽譜で左）に位置する小節を、検索用変数を１づつデクリメントしながら、検索中の小節と同じ段であるか否かを判断して、（描画）開始小節番号を探しているものである。
【００８１】
さて一方、上記ステップＳＥ４〜ＳＥ７の処理によって（描画）開始小節番号を探し終えると、検索用変数が曲先頭を超過するか、あるいは検索中の小節の段番号が現在の小節の段番号と不一致になり、これにより上記ステップＳＥ４又はＳＥ５の何れかの判断結果が「ＮＯ」になり、ステップＳＥ８に進む。
【００８２】
ステップＳＥ８では、検索用変数を現在の小節番号の一つ先に設定し、続くステップＳＥ９では、設定された検索用変数（現在の小節番号＋１）が曲末尾を超過していないかどうかを判断する。曲末尾を超過していなければ、判断結果は「ＹＥＳ」になり、ステップＳＥ１０に進む。ステップＳＥ１０では、検索中の小節の段番号が、上記ステップＳＥ２で取得した現在の小節の段番号と一致するか否かを判断する。
【００８３】
検索中の小節の段番号が、現在の小節の段番号と一致する場合には、判断結果が「ＹＥＳ」となり、ステップＳＥ１１に進み、（描画）終了小節番号を検索用変数に更新する。そして、ステップＳＥ１２に進み、検索用変数をインクリメントした後、上述のステップＳＥ９に処理を戻す。
【００８４】
以後、ステップＳＥ９〜ＳＥ１２では、検索中の小節（検索用変数で指定される小節）の段番号が現在の小節の段番号と一致する毎に、（描画）終了小節番号を検索用変数に更新すると共に、検索用変数をインクリメントする処理を、当該インクリメントされた検索用変数が曲末尾を超過するまで繰り返すことによって終了小節番号を探し出す。つまり、検索中の小節と同じ段の小節のうちで、最も後（楽譜で右）に位置する小節を、検索用変数を１づつインクリメントしながら、検索中の小節と同じ段であるか否かを判断して、（描画）終了小節番号を探しているものである。そして、終了小節番号を探し終えると、上記ステップＳＥ９又はＳＥ１０の何れかの判断結果が「ＮＯ」になり、本処理を終える。
【００８５】
このように、描画範囲取得処理では、現在の小節（表示された楽譜においてカーソルが位置する小節）の段番号を、ＲＡＭ１２が備える小節データエリアＭＥから取得し、取得した段番号と同じ段の開始小節番号および終了小節番号を描画範囲として取得する。
【００８６】
（６）パート境界音取得処理の動作
次に、図１３〜図１４を参照してパート境界音取得処理の動作を説明する。上述した押鍵状態描画処理のステップＳＤ２（図１１参照）を介して本処理が実行されると、ＣＰＵ１０は、図１３に図示するステップＳＦ１に処理を進め、右手パート最低音のノートナンバを「１２８」に、左手パート最高音のノートナンバを「−１」に初期設定する。次いで、ステップＳＦ２では、ＲＡＭ１２の演奏データエリアＰＥ（図６参照）に格納される演奏データＮｏｔｅ［０］〜［Ｎ］の内、最初（曲頭）の演奏データＮｏｔｅ［０］を指定する。
【００８７】
続いて、ステップＳＦ３では、全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終えたか否かを判断する。全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＦ４に進む。ステップＳＦ４では、検索対象の演奏データＮｏｔｅが描画範囲内の音符、すなわち上述の描画範囲取得処理により取得された開始小節番号から終了小節番号までの各小節に含まれる音符であるかどうかを判断する。
【００８８】
検索対象の演奏データＮｏｔｅが描画範囲内の音符でなければ、上記ステップＳＦ４の判断結果は「ＮＯ」になり、ステップＳＦ１１に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＦ３に処理を戻す。
【００８９】
そして、例えば更新した検索対象の演奏データＮｏｔｅが描画範囲内の音符であると、上記ステップＳＦ４の判断結果が「ＹＥＳ」になり、ステップＳＦ５に進む。ステップＳＦ５では、検索対象の演奏データＮｏｔｅに含まれるパート番号Ｈａｎｄが「０」、つまり右手パートの音であるか否かを判断する。検索対象の演奏データＮｏｔｅが、右手パートの音であれば、判断結果は「ＹＥＳ」になり、ステップＳＦ６に進む。
【００９０】
ステップＳＦ６では、検索対象の演奏データＮｏｔｅの音高Ｐｉｔｃｈが、右手パート最低音のノートナンバより小さいか否かを判断する。最初の判断では、右手パート最低音のノートナンバが「１２８」に設定されている為、判断結果は「ＹＥＳ」になり、ステップＳＦ７に進む。ステップＳＦ７では、右手パート最低音を、現在検索対象となっている演奏データＮｏｔｅの音高Ｐｉｔｃｈに更新する。
【００９１】
この後、ステップＳＦ１１に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＦ３に処理を戻す。そして、例えば更新した検索対象の演奏データＮｏｔｅが描画範囲内の右手パートの音であって、その音高Ｐｉｔｃｈが右手パート最低音のノートナンバより大きければ、上記ステップＳＦ６の判断結果は「ＮＯ」になり、ステップＳＦ１１に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＦ３に処理を戻す。
【００９２】
以後、全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終える迄、上述したステップＳＦ３〜ＳＦ７、ＳＦ１１を繰り返すことによって、描画範囲内における右手パート最低音を特定する。
【００９３】
一方、検索対象の演奏データＮｏｔｅが描画範囲内の左手パートの音であると、上述したステップＳＦ５の判断結果が「ＮＯ」になり、ステップＳＦ８に進む。ステップＳＦ８では、検索対象の演奏データＮｏｔｅに含まれるパート番号Ｈａｎｄが「１」、つまり左手パートの音であるか否かを判断する。検索対象の演奏データＮｏｔｅが、左手パートの音であれば、判断結果は「ＹＥＳ」になり、ステップＳＦ９に進む。
【００９４】
ステップＳＦ９では、検索対象の演奏データＮｏｔｅの音高Ｐｉｔｃｈが、左手パート最高音のノートナンバより小さいか否かを判断する。最初の判断では、左手パート最高音のノートナンバが「−１」に設定されている為、判断結果は「ＹＥＳ」になり、ステップＳＦ１０に進み、左手パート最高音を、現在検索対象となっている演奏データＮｏｔｅの音高Ｐｉｔｃｈに更新する。
【００９５】
この後、ステップＳＦ１１に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＦ３に処理を戻す。そして、例えば更新した検索対象の演奏データＮｏｔｅが描画範囲内の左手パートの音であって、その音高Ｐｉｔｃｈが左手パート最高音のノートナンバより小さければ、上記ステップＳＦ９の判断結果は「ＮＯ」になり、ステップＳＦ１１に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＦ３に処理を戻す。
【００９６】
以後、全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終える迄、上述したステップＳＦ３〜ＳＦ５、ＳＦ８〜ＳＦ１１を繰り返すことによって、描画範囲内における左手パート最高音を特定する。
【００９７】
こうして、全ての演奏データＮｏｔｅ［０］〜［Ｎ］の中から描画範囲内における右手パート最低音および左手パート最高音を特定すると、上述したステップＳＦ３の判断結果が「ＹＥＳ」になり、図１４に図示するステップＳＦ１２に進む。ステップＳＦ１２では、右手パート最低音が左手パート最高音より高いか否かを判断する。右手パート最低音が左手パート最高音より高くなければ、判断結果は「ＮＯ」となり、本処理を終えるが、右手パート最低音が左手パート最高音より高ければ、判断結果が「ＹＥＳ」になり、ステップＳＦ１３に進む。
【００９８】
ステップＳＦ１３では、右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれるか否かを判断する。右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれると、判断結果は「ＹＥＳ」になり、ステップＳＦ１４に進み、右手パート最低音および左手パート最高音を「ノートナンバ＃６０（Ｃ４音）」に設定して本処理を終える。
【００９９】
一方、右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれなければ、上記ステップＳＦ１３の判断結果が「ＮＯ」になり、ステップＳＦ１５に進む。ステップＳＦ１５では、左手パート最高音がノートナンバ＃６０（Ｃ４音）以上であるか否かを判断する。左手パート最高音がノートナンバ＃６０（Ｃ４音）以上であると、判断結果は「ＹＥＳ」になり、ステップＳＦ１６に進み、右手パート最低音を左手パート最高音の一つ上の音に設定して本処理を終える。
【０１００】
これに対し、左手パート最高音がノートナンバ＃６０（Ｃ４音）以上でなければ、上記ステップＳＦ１５の判断結果が「ＮＯ」になり、ステップＳＦ１７に進む。ステップＳＦ１７では、右手パート最低音がノートナンバ＃６０（Ｃ４音）以下であるか否かを判断する。右手パート最低音がノートナンバ＃６０（Ｃ４音）以下であると、判断結果は「ＹＥＳ」となり、ステップＳＦ１８に進み、右手パート最低音を左手パート最高音の一つ上の音に設定して本処理を終える。一方、右手パート最低音がノートナンバ＃６０（Ｃ４音）以下でなければ、判断結果が「ＮＯ」となり、本処理を終える。
【０１０１】
このように、パート境界音取得処理では、描画範囲内における右手パート最低音および左手パート最高音を特定し、右手パート最低音が左手パート最高音より高く、かつ右手パート最低音と左手パート最高音との間（ギャップ）にノートナンバ＃６０（Ｃ４音）が含まれる場合には、右手パート最低音および左手パート最高音を「ノートナンバ＃６０（Ｃ４音）」に設定し、右手パート最低音が左手パート最高音より高く、かつ左手パート最高音がノートナンバ＃６０（Ｃ４音）以上もしくは右手パート最低音がノートナンバ＃６０（Ｃ４音）以下の場合には、右手パート最低音を左手パート最高音の一つ上の音に設定する。
【０１０２】
（７）該当音検索処理の動作
次に、図１５を参照して該当音検索処理の動作を説明する。前述した押鍵状態描画処理のステップＳＤ６（図１１参照）を介して本処理が実行されると、ＣＰＵ１０は、図１５に図示するステップＳＧ１に処理を進め、右検知フラグおよび左検知フラグを初期化する。続いて、ステップＳＧ２では、ＲＡＭ１２の演奏データエリアＰＥ（図６参照）に格納される演奏データＮｏｔｅ［０］〜［Ｎ］の内、最初（曲頭）の演奏データＮｏｔｅ［０］を指定する。
【０１０３】
次いで、ステップＳＧ３では、全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終えたか否かを判断する。全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＧ４に進む。ステップＳＧ４では、検索対象の演奏データＮｏｔｅが描画範囲内の音符、すなわち前述した描画範囲取得処理（図１２参照）により取得された開始小節番号から終了小節番号までの何れかの小節に含まれる音符であるかどうかを判断する。
【０１０４】
検索対象の演奏データＮｏｔｅが描画範囲内の音符でなければ、上記ステップＳＧ４の判断結果は「ＮＯ」になり、ステップＳＧ１３に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＧ３に処理を戻す。
【０１０５】
そして、例えば更新した検索対象の演奏データＮｏｔｅが描画範囲内の音符であると、上記ステップＳＧ４の判断結果が「ＹＥＳ」になり、ステップＳＧ５に進む。ステップＳＧ５では、検索対象の演奏データＮｏｔｅに含まれる音高Ｐｉｔｃｈと、ポインタｐで指定されるノートナンバ（鍵番号）とが一致するか否かを判断する。つまり、検索対象の演奏データＮｏｔｅが押鍵音と同じ音高であるかどうかを判断する。
【０１０６】
検索対象の演奏データＮｏｔｅが押鍵音と同じ音高でなければ、判断結果は「ＮＯ」になり、ステップＳＧ１３に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＧ３に処理を戻す。
【０１０７】
そして、例えば更新した検索対象の演奏データＮｏｔｅが描画範囲内の音符であって、かつ押鍵音と同じ音高であると、上記ステップＳＧ５の判断結果が「ＹＥＳ」になり、ステップＳＧ６に進む。ステップＳＧ６では、その演奏データＮｏｔｅから元画像における音符の玉座標ｘおよび玉座標ｙを取得する。
【０１０８】
次いで、ステップＳＧ７では、上記ステップＳＧ６で取得した元画像上の音符の玉座標ｘおよび玉座標ｙを、表示状態に合わせて座標変換する。すなわち、前述した楽譜画像描画処理（図１０参照）において、表示画面（ディスプレイ）に応じて元画像（楽譜の画像データ）の表示サイズを変更したのに合わせて音符の玉の位置（座標ｘおよび玉座標ｙ）を変換する。
【０１０９】
続いて、ステップＳＧ８では、上記ステップＳＧ７で変換された音符の玉の位置（座標ｘおよび玉座標ｙ）を中心として楽譜上に該当マークを描画する。具体的には、例えば図２５に図示する一例の楽譜において、描画範囲内で押鍵音と同じ音高の音符の玉を該当マーク（○印）で囲むように描画して該当音を示す。
【０１１０】
そして、ステップＳＧ９では、前述したパート境界音取得処理（図１３〜図１４参照）で設定された描画範囲内の右手パート最低音および左手パート最高音に基づき、該当音（押鍵音と同じ音高の音符）が右手パートの音であるか否かを判断する。該当音が右手パートの音であると、判断結果が「ＹＥＳ」になり、ステップＳＧ１０に進み、右検知フラグをセットした後、ステップＳＧ１３に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＧ３に処理を戻す。
【０１１１】
一方、該当音が右手パートの音でなければ、上記ステップＳＧ９の判断結果は「ＮＯ」になり、ステップＳＧ１１に進み、左手パートの音であるか否かを判断する。該当音が左手パートの音であると、判断結果は「ＹＥＳ」になり、ステップＳＧ１２に進み、左検知フラグをセットした後、ステップＳＧ１３に進み、次の演奏データＮｏｔｅを指定して検索対象を更新させた後、上記ステップＳＧ３に処理を戻す。
【０１１２】
以後、ステップＳＧ３〜ＳＧ１３では、全ての演奏データＮｏｔｅ［０］〜［Ｎ］の中から描画範囲内の音符であって、かつ押鍵音と同じ音高の演奏データＮｏｔｅを探し出し、該当する演奏データＮｏｔｅに対応する音符の玉を該当マーク（○印）で囲むように描画し、これにより描画範囲内で押鍵音と同じ音高の音符を該当音として表現すると共に、該当音が右手パートに含まれる音であれば、右検知フラグをセットし、一方、左手パートに含まれる音ならば、左検知フラグをセットする。そして、全ての演奏データＮｏｔｅ［０］〜［Ｎ］について検索し終えると、上記ステップＳＧ３の判断結果が「ＹＥＳ」になり、本処理を終える。
【０１１３】
このように、該当音検索処理では、描画範囲内の音符であって、かつ押鍵音と同じ音高の演奏データＮｏｔｅを探し出し、該当する演奏データＮｏｔｅに対応する音符の玉を該当マーク（○印）で囲んで該当音として表現し、この該当音が右手パートに含まれる場合には右検知フラグをセットし、左手パートに含まれる場合には左検知フラグをセットする。
【０１１４】
（８）状態描画処理の動作
次に、図１６〜図１７を参照して状態描画処理の動作を説明する。前述した押鍵状態描画処理のステップＳＤ７（図１１参照）を介して本処理が実行されると、ＣＰＵ１０は、図１６に図示するステップＳＨ１に処理を進め、描画小節を開始小節番号にセットする。なお、開始小節番号は、前述した描画範囲取得処理（図１２参照）により取得される。
【０１１５】
続いて、ステップＳＨ２では、描画範囲内であるか否か、すなわち開始小節番号から終了小節番号まで状態描画し終えたかどうかを判断する。開始小節番号から終了小節番号まで状態描画し終えておらず、描画範囲内にあると、判断結果は「ＹＥＳ」になり、ステップＳＨ３に進み、右検知フラグがセットされているか否か、つまり描画小節内に押鍵音と同じ音高の該当音が右手パートに含まれているかどうかを判断する。
【０１１６】
上述した該当音検索処理（図１５参照）において、描画小節内に押鍵音と同じ音高の該当音が右手パートに含まれ、右検知フラグがセットされると、上記ステップＳＨ３の判断結果は「ＹＥＳ」になり、ステップＳＨ４に進む。ステップＳＨ４では、描画色を該当色（例えば青色）に設定し、続くステップＳＨ５では、描画パートを右に設定した後、ステップＳＨ６を介して音高線描画処理を実行した後、ステップＳＨ７に進む。
【０１１７】
ステップＳＨ６の音高線描画処理では、後述するように、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【０１１８】
一方、右検知フラグがセットされなければ、上記ステップＳＨ３の判断結果は「ＮＯ」になり、ステップＳＨ７に処理を進める。ステップＳＨ７では、左検知フラグがセットされているか否か、つまり描画小節内に押鍵音と同じ音高の該当音が左手パートに含まれているかどうかを判断する。
【０１１９】
上述した該当音検索処理（図１５参照）において、描画小節内に押鍵音と同じ音高の該当音が左手パートに含まれ、左検知フラグがセットされると、上記ステップＳＨ７の判断結果は「ＹＥＳ」になり、ステップＳＨ８に進む。ステップＳＨ８では、描画色を該当色（例えば青色）に設定し、続くステップＳＨ９では、描画パートを左に設定した後、ステップＳＨ１０を介して音高線描画処理を実行した後、図１７に図示するステップＳＨ１１に進む。
【０１２０】
ステップＳＨ１０の音高線描画処理では、上記ステップＳＨ６と同様、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【０１２１】
これに対し、左検知フラグがセットされなければ、上記ステップＳＨ７の判断結果は「ＮＯ」になり、図１７に図示するステップＳＨ１１に処理を進める。ステップＳＨ１１では、右／左検知フラグが何れも立っていないかどうかを判断する。右検知フラグおよび左検知フラグの何れかが立っていれば、判断結果は「ＮＯ」になり、ステップＳＨ１９に進み、描画小節番号をインクリメントして歩進させた後、前述のステップＳＨ２（図１６参照）に処理を戻す。
【０１２２】
一方、右／左検知フラグが何れも立っていなければ、上記ステップＳＨ１１の判断結果は「ＹＥＳ」になり、ステップＳＨ１２に進み、描画色を非該当色（例えば赤色）に設定する。次いで、ステップＳＨ１３では、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））が、右手パート最低音を上回るか否かを判断する。描画音高が右手パート最低音を上回らなければ、判断結果は「ＮＯ」になり、後述のステップＳＨ１６に進む。
【０１２３】
これに対し、描画音高が右手パート最低音を上回ると、上記ステップＳＨ１３の判断結果が「ＹＥＳ」になり、ステップＳＨ１４に進み、描画パートを右手パートに設定する。そして、ステップＳＨ１５に進み、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する音高描画処理を実行した後、ステップＳＨ１６に進む。
【０１２４】
ステップＳＨ１６では、描画音高が左手パート最高音を下回るか否かを判断する。描画音高が左手パート最高音を下回らなければ、判断結果は「ＮＯ」になり、ステップＳＨ１９に進み、描画小節番号をインクリメントして歩進させた後、前述のステップＳＨ２（図１６参照）に処理を戻す。
【０１２５】
一方、描画音高が左手パート最高音を下回ると、上記ステップＳＨ１６の判断結果が「ＹＥＳ」になり、ステップＳＨ１７に進み、描画パートを左手パートに設定する。そして、ステップＳＨ１８に進み、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する音高描画処理を実行した後、ステップＳＨ１９に進み、描画小節番号をインクリメントして歩進させた後、前述のステップＳＨ２（図１６参照）に処理を戻す。
【０１２６】
以後、開始小節番号から終了小節番号まで状態描画し終える迄、上述したステップＳＨ２〜ＳＨ１９を繰り返し、歩進された描画小節番号が終了小節番号を超えると、上記ステップＳＨ２の判断結果が「ＮＯ」になり、本処理を終える。
【０１２７】
このように、状態描画処理では、描画小節内に押鍵音と同じ音高の該当音が右手パート（又は左手パート）に含まれ、右検知フラグ（又は左検知フラグ）がセットされていれば、描画色を該当色（例えば青色）に設定し、描画パートを右手パート（又は左手パート）に設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【０１２８】
一方、右／左検知フラグが何れも立っていなければ、描画色を非該当色（例えば赤色）に設定し、描画音高が右手パート最低音を上回れば描画パートを右手パートに設定し、描画音高が左手パート最高音を下回れば描画パートを左手パートに設定した後、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する他、描画小節内に描画音高より半音下(又は半音上)であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、その音の表示位置に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画する。
【０１２９】
（９）音高線描画処理の動作
次に、図１８〜図１９を参照して音高線描画処理の動作を説明する。上述した状態描画処理のステップＳＨ６又はステップＳＨ１０（図１６参照）もしくはステップＳＨ１５又はステップＳＨ１８（図１７参照）を介して本処理が実行されると、ＣＰＵ１０は、図１８に図示するステップＳＪ１に処理を進め、ＲＡＭ１２の小節データエリアＭＥに格納される小節データＭｅａｓ［０］〜［Ｎ］の内、描画小節に対応する小節データＭｅａｓから取得した調号番号ＫｅｙＳｉｇｎを調号番号ｋｓに設定し、続くステップＳＪ２では、描画小節に対応する小節データＭｅａｓから取得した音部番号Ｃｌｅｆを音部番号ｃｌに設定する。
【０１３０】
そして、ステップＳＪ３に進むと、描画音高の五線情報取得処理を実行する。描画音高の五線情報取得処理では、後述するように、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、続くステップＳｊ４では、取得した五線番号ｌｎを補助線番号とする。
【０１３１】
次いで、ステップＳＪ５では、補助線番号は五線の一番下で五線の間（五線間フラグｉｎｔが「０」）であるか否かを判断する。五線の一番下で五線の間でなければ、判断結果は「ＮＯ」になり、後述のステップＳＪ７に進む。一方、五線の一番下で五線の間であれば、判断結果が「ＹＥＳ」になり、ステップＳＪ６に進み、補助線番号をインクリメントして歩進させた後、ステップＳＪ７に進む。
【０１３２】
ステップＳＪ７では、補助線番号は五線外であるかどうかを判断する。五線外でなければ、判断結果は「ＮＯ」になり、後述のステップＳＪ９に進むが、五線外ならば、判断結果が「ＹＥＳ」になり、ステップＳＪ８を介して補助線描画処理を実行する。
【０１３３】
ステップＳＪ８の補助線描画処理では、後述するように、補助線番号ｌｉｎｅｅｘが「０」より小さく、五線譜の第５線を超える場合には、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線上部に補助線を描画し、描画し終える毎にデクリメントされるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより小さくなるまで次の補助線の描画を繰り返す。
【０１３４】
一方、補助線番号ｌｉｎｅｅｘが「４」より大きく、五線譜の第１線を超える場合には、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線下部に補助線を描画し、描画し終える毎に歩進されるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘを超えるまで次の補助線の描画を繰り返す。
【０１３５】
こうして、補助線を描画し終えると、ステップＳＪ９に進み、五線番号の五線座標取得処理を実行する。五線座標取得処理では、描画小節番号ｎｂ、パート番号ｈａｎｄおよび五線番号ｌｎに応じて、小節データＭｅａｓ［ｎｂ］から読み出される五線譜中の線のｙ座標値Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［ｌｎ］に基づいて音高座標ｙ（描画する音符の玉のｙ座標）を取得し、五線間フラグｉｎｔが「１」（五線の間）の場合には、五線番号ｌｎ＋１で指定される一つ下の線の音高座標との差分中央値ｇａｐ／２を五線番号ｌｎの音高座標ｙに加算する。
【０１３６】
次いで、図１９に図示するステップＳＪ１０に進むと、縦幅を取得した五線座標に上下オフセットを持たせ、横座標を描画小節に合わせた矩形領域を設定する。次に、ステップＳＪ１１では、その設定された矩形領域を表す矩形座標を、表示状態（表示倍率ｓｃａｌｅ）に応じて座標の位置を変換し、続くステップＳＪ１２では、表示状態（表示倍率ｓｃａｌｅ）に応じて変換された矩形座標で示される矩形領域を楽譜背景となる所定色で塗り潰す。
【０１３７】
そして、ステップＳＪ１３を介して五線情報取得処理を実行する。この五線情報取得処理では、
描画音高（ポインタｐで指定されるノートナンバ（鍵番号））より一つ低い音（半音下）を含む描画小節の調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得する。
【０１３８】
続いて、ステップＳＪ１４では、上述のステップＳＪ３で取得した描画音高の五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）と、上記ステップＳＪ１３で取得した描画音高より半音下の五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）とが一致するか否かを判断する。描画音高の五線情報と描画音高より半音下の五線情報とが一致する場合、つまり描画音高より半音下であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合には、判断結果が「ＹＥＳ」となり、ステップＳＪ１５に進む。
【０１３９】
ステップＳＪ１５では、ＲＡＭ１２の演奏データエリアＰＥに記憶される演奏データＮｏｔｅ［０］〜［Ｎ］の中から描画小節内の描画音高（ポインタｐで指定されるノートナンバ（鍵番号）の音）より一つ低い音（半音下）を検索し、該当する音の表示位置に半音下がるマーク「＜」を描画して本処理を終える。なお、半音下がるマーク「＜」とは、鍵盤上で描画音高に対応する鍵よりも一つ低い音（半音下）の鍵の押鍵をユーザにガイドする意味を持つ。
【０１４０】
一方、描画音高の五線情報と描画音高より半音下の五線情報とが一致しない場合には、上記ステップＳＪ１４の判断結果が「ＮＯ」になり、ステップＳＪ１６を介して五線情報取得処理を実行する。この五線情報取得処理では、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））より一つ高い音（半音上）を含む描画小節の調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得する。
【０１４１】
次に、ステップＳＪ１７では、上述のステップＳＪ３で取得した描画音高の五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）と、上記ステップＳＪ１６で取得した描画音高より半音上の五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）とが一致するか否かを判断する。描画音高の五線情報と描画音高より半音上の五線情報とが一致しない場合には、判断結果が「ＮＯ」になり、本処理を終える。
【０１４２】
これに対し、描画音高の五線情報と描画音高より半音上の五線情報とが一致する場合、つまり描画音高より半音上であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合には、判断結果が「ＹＥＳ」となり、ステップＳＪ１８に進む。
【０１４３】
ステップＳＪ１８では、ＲＡＭ１２の演奏データエリアＰＥに記憶される演奏データＮｏｔｅ［０］〜［Ｎ］の中から描画小節内の描画音（ポインタｐで指定されるノートナンバ（鍵番号）の音）より一つ高い音（半音上）を検索し、該当する音の表示位置に半音上がるマーク「＞」を描画して本処理を終える。なお、半音上がるマーク「＞」とは、鍵盤上で描画音高に対応する鍵よりも一つ高い音（半音上）の鍵の押鍵をユーザにガイドする意味を持つ。
【０１４４】
このように、音高線描画処理では、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の小節データＭｅａｓから得た調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得し、取得した五線番号ｌｎの音高座標ｙに基づいて補助線を描画する。
【０１４５】
また、描画小節内に、描画音高より半音下であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音や、描画音高より半音上であるが、調号や臨時記号等の関係から楽譜上で描画音高と同じ五線上（又は五線間）に位置する音が存在する場合、描画音高より半音下の該当音の表示位置に半音下がるマーク「＜」を描画し、一方、描画音高より半音上の該当音の表示位置に半音上がるマーク「＞」を描画する。
【０１４６】
（１０）五線情報取得処理の動作
次に、図２０を参照して五線情報取得処理の動作を説明する。上述した音高線描画処理のステップＳＪ３（図１８参照）もしくはステップＳＪ１３又はステップＳＪ１６（図１９参照）を介して本処理が実行されると、ＣＰＵ１０は、図２０に図示するステップＳＫ１に処理を進め、ＲＡＭ１２の五線テーブルＦＴ（図６参照）からデータｂａｒｌｉｎｅ［ｋｓ＋７］を読み出してレジスタｂｌにストアする。
【０１４７】
ここで、調号番号ｋｓは、音高線描画処理のステップＳＪ１（図１８参照）で取得されたものであり、描画小節の調号を表す。したがって、レジスタｂｌには、調号番号ｋｓをハ長調「７」に加算した調号［ｋｓ＋７］において、ノートナンバ（鍵番号）＃４８〜＃７１までの２オクターブ分の各音高についてト音記号表記した際の五線上の位置が格納される。
【０１４８】
具体的には、レジスタｂｌは［ａ］［ｂ］の２次元配列レジスタで構成され、［ａ］にはデータｂａｒｌｉｎｅ［ｋｓ＋７］におけるノートナンバ＃４８〜＃７１までの２オクターブ分の各音高の五線上の位置ｔｏｎｅｐｏｓ［０（＃４８）］〜［２３（＃７１）］が格納される。［ｂ］には対応する五線上の位置ｔｏｎｅｐｏｓの「五線インデックスｌｉｎｅ」（引数ｂ＝０で指定）、「五線間フラグｉｎｔｅｒｖａｌ」（引数ｂ＝１で指定）および「臨時記号ａｃｃｉｄｅｎｔａｌ」（引数ｂ＝２で指定）が格納される。
【０１４９】
次いで、ステップＳＫ２では、音高線描画処理のステップＳＪ２（図１８参照）で取得された音部番号ｃｌの絶対値ＡＢＳ（ｃｌ）が「２」（オクターブ下げ）であるか否かを判断する。音部番号ｃｌの絶対値ＡＢＳ（ｃｌ）が「２」（オクターブ下げ）であると、判断結果は「ＹＥＳ」になり、ステップＳＫ３に進み、ポインタｐで指定されるノートナンバ（鍵番号）から「１２」半音分を減算して１オクターブ下げた描画音高ｐｃを算出した後、ステップＳＫ７に進む。
【０１５０】
一方、音部番号ｃｌの絶対値ＡＢＳ（ｃｌ）が「２」（オクターブ下げ）でなければ、上記ステップＳＫ２の判断結果は「ＮＯ」になり、ステップＳＫ４に進む。ステップＳＫ４では、音高線描画処理のステップＳＪ２（図１８参照）で取得された音部番号ｃｌの絶対値ＡＢＳ（ｃｌ）が「３」（オクターブ上げ）であるか否かを判断する。音部番号ｃｌの絶対値ＡＢＳ（ｃｌ）が「３」（オクターブ上げ）ならば、判断結果は「ＹＥＳ」になり、ステップＳＫ５に進み、ポインタｐで指定されるノートナンバ（鍵番号）に「１２」半音分を加算して１オクターブ上げた描画音高ｐｃを算出した後、ステップＳＫ７に進む。
【０１５１】
これに対し、音部番号ｃｌの絶対値ＡＢＳ（ｃｌ）が「３」（オクターブ上げ）でなければ、上記ステップＳＫ４の判断結果は「ＮＯ」になり、ステップＳＫ６に進み、ポインタｐで指定されるノートナンバ（鍵番号）を描画音高ｐｃに設定する。そして、ステップＳＫ７に進むと、描画音高ｐｃの「２４」の剰余値ｐｉを算出する。
【０１５２】
次に、ステップＳＫ８では、剰余値ｐｉおよび引数「０」に応じて、レジスタｂｌ［ｐｉ］［０］から読み出した五線インデックスｌｉｎｅをレジスタｌｎにストアする。ステップＳＫ９では、レジスタｌｎの五線インデックスｌｉｎｅから「７×（ｐｃ−ＢＬＳＴＡＲＴ）／２４」を減算して五線番号ｌｎを算出する。なお、ＢＬＳＴＡＲＴは五線テーブルの最低音（＃４８）である。
【０１５３】
続いて、ステップＳＫ１０では、ポインタｐで指定されるノートナンバ（鍵番号）が、五線テーブル最低音ＢＬＳＴＡＲＴより小さく、かつポインタｐで指定されるノートナンバ（鍵番号）の「２４」の剰余値が「０」であるか否かを判断する。つまり、ポインタｐで指定されるノートナンバ（鍵番号）が、五線テーブルＦＴの定義音域を外れているかどうかを判断する。
【０１５４】
五線テーブルＦＴの定義音域を外れていなければ、判断結果は「ＮＯ」になり、ステップＳＫ１２に進むが、五線テーブルＦＴの定義音域を外れていると、上記ステップＳＫ１０の判断結果は「ＹＥＳ」になり、ステップＳＫ１１に進み、五線番号ｌｎに「７」を加算して補正した後、ステップＳＫ１２に進む。
【０１５５】
ステップＳＫ１２では、五線間フラグｉｎｔをゼロリセットし、続くステップＳＫ１３では、剰余値ｐｉおよび引数「１」に応じて、レジスタｂｌ［ｐｉ］［１］から読み出した五線間フラグｉｎｔｅｒｖａｌが「１」、すなわち五線の間であるか否かを判断する。読み出した五線間フラグｉｎｔｅｒｖａｌが「１」（五線の間）であれば、判断結果は「ＹＥＳ」になり、ステップＳＫ１４に進み、五線間フラグｉｎｔを「１」にセットして描画音高ｐｃが五線の間に位置する旨を表して本処理を終える。これに対し、読み出した五線間フラグｉｎｔｅｒｖａｌが「０」（五線上）ならば、上記ステップＳＫ１３の判断結果は「ＮＯ」になり、この場合、五線間フラグｉｎｔを「０」のままにして本処理を終える。
【０１５６】
このように、五線情報取得処理では、描画音高（ポインタｐで指定されるノートナンバ（鍵番号））を含む描画小節の調号番号ｋｓおよび音部番号ｃｌに基づき五線テーブルＦＴを参照して五線情報（五線番号ｌｎおよび五線間フラグｉｎｔ）を取得する。
【０１５７】
（１１）五線座標取得処理の動作
次に、図２１を参照して五線座標取得処理の動作を説明する。前述した音高線描画処理のステップＳＪ９（図１８参照）、五線上部の補助線描画処理のステップＳＮ４（図２３参照）あるいは五線上部の補助線描画処理のステップＳＰ４（図２４参照）の何れかを介して本処理が実行されると、ＣＰＵ１０は、図２２に図示するステップＳＬ１に処理を進め、五線番号ｌｎが「０」以上で「４」より小さいか否かを判断する。
【０１５８】
五線番号ｌｎが「０」以上で「４」より小さければ、判断結果は「ＹＥＳ」になり、ステップＳＬ２に進み、ＲＡＭ１２の小節データエリアＭＥ（図５参照）から描画小節番号ｎｂで指定される小節データＭｅａｓ［ｎｂ］において、パート番号ｈａｎｄおよび五線番号ｌｎで指定される五線譜中の線のｙ座標値（Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［ｌｎ］）を読み出してレジスタｙにストアする。また、ステップＳＬ２では、五線番号ｌｎ＋１で指定される一つ下の線のｙ座標値（Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［ｌｎ＋１］）も同様に読み出し、これとレジスタｙにストアしたｙ座標値との差分から線間距離ｇａｐを算出する。
【０１５９】
そして、ステップＳＬ８に進み、五線間フラグｉｎｔが「１」（五線の間）であるか否かを判断する。五線間フラグｉｎｔが「０」（五線上）の場合には、判断結果は「ＮＯ」となり、上記ステップＳＬ２でレジスタｙにストアした値を、音高座標ｙ（描画する音符の玉のｙ座標）として本処理を終える。
【０１６０】
これに対し、五線間フラグｉｎｔが「１」（五線の間）の場合には、上記ステップＳＬ８の判断結果が「ＹＥＳ」になり、ステップＳＬ９に進み、上記ステップＳＬ２でレジスタｙにストアした値に線間距離ｇａｐの半値ｇａｐ／２を加算して得られる値（ｙ＋ｇａｐ／２）を、音高座標ｙ（描画する音符の玉のｙ座標）として本処理を終える。
【０１６１】
五線番号ｌｎが「０」以上で「４」より小さくなければ、上記ステップＳＬ１の判断結果は「ＮＯ」になり、ステップＳＬ３に進む。ステップＳＬ３では、五線番号ｌｎが「０」より小さいか否かを判断する。五線番号ｌｎが「０」より小さいと、判断結果は「ＹＥＳ」となり、ステップＳＬ４に進む。
【０１６２】
ステップＳＬ４では、ＲＡＭ１２の小節データエリアＭＥ（図５参照）から描画小節番号ｎｂで指定される小節データＭｅａｓ［ｎｂ］において、パート番号ｈａｎｄおよび五線番号「０」で指定される第５線のｙ座標値（Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［０］）を読み出してレジスタｙにストアする。また、ステップＳＬ４では、五線番号「１」で指定される一つ下の第４線のｙ座標値（Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［１］）も同様に読み出し、これとレジスタｙにストアしたｙ座標値との差分から第４線と第５線との線間距離ｇａｐを算出する。
【０１６３】
そして、ステップＳＬ５に進むと、第４線と第５線との線間距離ｇａｐと、五線番号ｌｎとの乗算値に、上記ステップＳＬ４でレジスタｙにストアした値（第５線のｙ座標値）を加算する。この後、ステップＳＬ８に進み、五線間フラグｉｎｔが「１」（五線の間）であるか否かを判断し、五線間フラグｉｎｔが「０」（五線上）であれば、判断結果は「ＮＯ」となり、上記ステップＳＬ５でレジスタｙにストアした値（ｙ＋ｇａｐ×ｌｎ）を、音高座標ｙ（描画する音符の玉のｙ座標）として本処理を終える。
【０１６４】
これに対し、五線間フラグｉｎｔが「１」（五線の間）ならば、上記ステップＳＬ８の判断結果は「ＹＥＳ」になり、ステップＳＬ９に進む。ステップＳＬ９では、上記ステップＳＬ５でレジスタｙにストアした値に、第４線と第５線との線間距離ｇａｐの半値ｇａｐ／２を加算して得られる値（ｙ＋ｇａｐ／２）を、音高座標ｙ（描画する音符の玉のｙ座標）として本処理を終える。
【０１６５】
さて一方、五線番号ｌｎが「４」より大きい場合、すなわち第１線より下であると、上記ステップＳＬ３の判断結果が「ＮＯ」になり、ステップＳＬ６に進む。ステップＳＬ６では、ＲＡＭ１２の小節データエリアＭＥ（図５参照）から描画小節番号ｎｂで指定される小節データＭｅａｓ［ｎｂ］において、パート番号ｈａｎｄおよび五線番号「４」で指定される第１線のｙ座標値（Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［４］）を読み出してレジスタｙにストアする。また、ステップＳＬ６では、五線番号「３」で指定される第２線のｙ座標値（Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［３］）も同様に読み出し、これとレジスタｙにストアした値との差分から第１線と第２線との線間距離ｇａｐを算出する。
【０１６６】
そして、ステップＳＬ７に進み、五線番号ｌｎから「４」を減算した値（ｌｎ−４）と、第１線と第２線との線間距離ｇａｐとの乗算値をレジスタｙにストアした第１線のｙ座標値に加算する。この後、ステップＳＬ８に進み、五線間フラグｉｎｔが「１」（五線の間）であるか否かを判断し、五線間フラグｉｎｔが「０」（五線上）であれば、判断結果は「ＮＯ」となり、上記ステップＳＬ７でレジスタｙにストアした値（ｙ＋ｇａｐ×（ｌｎ−４））を、音高座標ｙ（描画する音符の玉のｙ座標）として本処理を終える。
【０１６７】
これに対し、五線間フラグｉｎｔが「１」（五線の間）ならば、上記ステップＳＬ８の判断結果は「ＹＥＳ」になり、ステップＳＬ９に進む。ステップＳＬ９では、上記ステップＳＬ７でレジスタｙにストアした値に、第１線と第２線との線間距離ｇａｐの半値ｇａｐ／２を加算して得られる値（ｙ＋ｇａｐ／２）を、音高座標ｙ（描画する音符の玉のｙ座標）として本処理を終える。
【０１６８】
このように、五線座標取得処理では、描画小節番号ｎｂ、パート番号ｈａｎｄおよび五線番号ｌｎに応じて、小節データＭｅａｓ［ｎｂ］から読み出される五線譜中の線のｙ座標値Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［ｌｎ］に基づいて音高座標ｙ（描画する音符の玉のｙ座標）を取得し、五線間フラグｉｎｔが「１」（五線の間）の場合には、五線番号ｌｎ＋１で指定される一つ下の線の音高座標との差分中央値ｇａｐ／２を五線番号ｌｎの音高座標ｙに加算する。
【０１６９】
（１２）補助線描画処理の動作
次に、図２２を参照して補助線描画処理の動作を説明する。前述した音高線描画処理のステップＳＪ８（図１８参照）を介して本処理が実行されると、ＣＰＵ１０は、図２２に図示するステップＳＭ１に処理を進め、補助線番号ｌｉｎｅｅｘが「０」より小さいか否かを判断する。補助線番号ｌｉｎｅｅｘが「０」より小さい場合、すなわち五線譜の第５線を超えていれば、判断結果は「ＹＥＳ」になり、ステップＳＭ２に進み、五線上部の補助線描画処理を実行する。
【０１７０】
五線上部の補助線描画処理では、後述するように、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線上部に補助線を描画し、描画し終える毎にデクリメントされるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより小さくなるまで次の補助線の描画を繰り返す。
【０１７１】
一方、補助線番号ｌｉｎｅｅｘが「０」より大きければ、上記ステップＳＭ１の判断結果は「ＮＯ」になり、ステップＳＭ３に進む。ステップＳＭ３では、補助線番号ｌｉｎｅｅｘが「４」より大きいか否かを判断する。補助線番号ｌｉｎｅｅｘが「４」より大きくなければ、判断結果は「ＮＯ」になり、本処理を終える。補助線番号ｌｉｎｅｅｘが「４」より大きい場合、すなわち五線譜の第１線を超えていれば、上記ステップＳＭ３の判断結果は「ＹＥＳ」になり、ステップＳＭ４を介して五線下部の補助線描画処理を実行した後、本処理を終える。
【０１７２】
五線下部の補助線描画処理では、後述するように、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線下部に補助線を描画し、描画し終える毎に歩進されるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘを超えるまで次の補助線の描画を繰り返す。
【０１７３】
以上のように、補助線描画処理では、補助線番号ｌｉｎｅｅｘが「０」より小さく、五線譜の第５線を超える場合には、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線上部に補助線を描画し、描画し終える毎にデクリメントされるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより小さくなるまで次の補助線の描画を繰り返す。
【０１７４】
一方、補助線番号ｌｉｎｅｅｘが「４」より大きく、五線譜の第１線を超える場合には、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線下部に補助線を描画し、描画し終える毎に歩進されるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘを超えるまで次の補助線の描画を繰り返す。
【０１７５】
（１３）五線上部の補助線描画処理の動作
次に、図２３を参照して五線上部の補助線描画処理の動作を説明する。上述した補助線描画処理のステップＳＭ２（図２２参照）を介して本処理が実行されると、ＣＰＵ１０は、図２３に図示するステップＳＮ１に処理を進め、ポインタｌｎｔｍｐに初期値「−１」をセットする。続いて、ステップＳＮ２では、ポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘ以上であるか否かを判断する。
【０１７６】
ポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘ以上であると、判断結果は「ＹＥＳ」となり、ステップＳＫ３に進み、ポインタｌｎｔｍｐの値を五線番号ｌｎとし、この五線番号ｌｎおよび五線間フラグｉｎｔからなる五線情報を設定する。次いで、ステップＳＮ４では、五線座標取得処理を実行する。
【０１７７】
五線座標取得処理では、描画する小節番号ｎｂ、パート番号ｈａｎｄおよび上記ステップＳＫ３で設定される五線情報（五線番号ｌｎ、五線間フラグｉｎｔ）が与えられると、描画する小節番号ｎｂおよびパート番号ｈａｎｄに対応付けられた小節データＭｅａｓ［ｎｂ］から読み出される五線譜中の線のｙ座標値Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［ｌｎ］に基づいて音高座標ｙ（描画する音符の玉のｙ座標）を取得し、五線間フラグｉｎｔが「１」（五線の間）の場合には、五線番号ｌｎ＋１で指定される一つ下の線の音高座標との差分中央値ｇａｐ／２を五線番号ｌｎの音高座標ｙに加算する。
【０１７８】
次いで、ステップＳＮ５では、上記ステップＳＮ４の五線座標取得処理で得られる音高座標ｙ（描画する音符の玉のｙ座標）をレジスタｃにストアする。続いて、ステップＳＮ６では、描画小節の最左座標ｌから元画像の表示開始位置ｂｘを減算した値（ｌ−ｂｘ）に表示倍率ｓｃａｌｅを乗算して表示位置ｓｌを、描画小節の最右座標ｒから元画像の表示開始位置ｂｘを減算した値（ｒ−ｂｘ）に表示倍率ｓｃａｌｅを乗算して表示位置ｓｒを、レジスタｃの音高座標ｙから元画像の表示開始位置ｂｙを減算した値（ｃ−ｂｙ）に表示倍率ｓｃａｌｅを乗算して表示位置ｓｃをそれぞれ取得する。
【０１７９】
なお、描画小節の最左座標ｌおよび最右座標ｒは、小節データＭｅａｓ［描画小節番号ｎｂ］．Ｒｅｃｔ（小節の範囲を規定する矩形座標値）から読み出される左端Ｌｅｆｔおよび右端Ｒｉｇｈｔである。元画像の表示開始位置ｂｘ，ｂｙは、それぞれ楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタｘ，レジスタｙから読み出される。表示倍率ｓｃａｌｅは、楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタＳｃａｌｅから読み出される。
【０１８０】
次に、ステップＳＮ７では、座標（ｄｘ＋ｓｌ，ｄｙ＋ｓｃ）から座標（ｄｘ＋ｓｌ＋（ｓｒ−ｓｌ）／１０，ｄｙ＋ｓｃ）へ補助線を描画し、続くステップＳＮ８では、座標（ｄｘ＋ｓｒ−（ｓｒ−ｓｌ）／１０，ｄｙ＋ｓｃ）から座標（ｄｘ＋ｓｒ，ｄｙ＋ｓｃ）へ補助線を描画する。
【０１８１】
そして、ステップＳＮ９では、ポインタｌｎｔｍｐをデクリメントした後、前述のステップＳＮ２に処理を戻す。以後、デクリメントされたポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより小さくなるまで上述したステップＳＮ２〜ＳＮ９を繰り返し、デクリメントされたポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより小さくなると、上記ステップＳＮ２の判断結果が「ＮＯ」になり、本処理を終える。
【０１８２】
このように、五線上部の補助線描画処理では、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線上部に補助線を描画し、描画し終える毎にデクリメントされるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより小さくなるまで次の補助線の描画を繰り返す。
【０１８３】
（１４）五線下部の補助線描画処理の動作
次に、図２４を参照して五線下部の補助線描画処理の動作を説明する。前述した補助線描画処理のステップＳＭ４（図２２参照）を介して本処理が実行されると、ＣＰＵ１０は、図２４に図示するステップＳＰ１に処理を進め、ポインタｌｎｔｍｐに初期値「５」をセットする。続いて、ステップＳＮ２では、ポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘ以下であるか否かを判断する。
【０１８４】
ポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘ以下であると、判断結果は「ＹＥＳ」となり、ステップＳＰ３に進み、ポインタｌｎｔｍｐの値を五線番号ｌｎとし、この五線番号ｌｎおよび五線間フラグｉｎｔからなる五線情報を設定する。次いで、ステップＳＰ４では、五線座標取得処理を実行する。
【０１８５】
五線座標取得処理では、描画する小節番号ｎｂ、パート番号ｈａｎｄおよび上記ステップＳＰ３で設定される五線情報（五線番号ｌｎ、五線間フラグｉｎｔ）が与えられると、描画する小節番号ｎｂおよびパート番号ｈａｎｄに対応付けられた小節データＭｅａｓ［ｎｂ］から読み出される五線譜中の線のｙ座標値Ｍｅａｓ［ｎｂ］．Ｌｉｎｅ［ｈａｎｄ］［ｌｎ］に基づいて音高座標ｙ（描画する音符の玉のｙ座標）を取得し、五線間フラグｉｎｔが「１」（五線の間）の場合には、五線番号ｌｎ＋１で指定される一つ下の線の音高座標との差分中央値ｇａｐ／２を五線番号ｌｎの音高座標ｙに加算する。
【０１８６】
次いで、ステップＳＰ５では、上記ステップＳＰ４の五線座標取得処理で得られる音高座標ｙ（描画する音符の玉のｙ座標）をレジスタｃにストアする。続いて、ステップＳＰ６では、描画小節の最左座標ｌから元画像の表示開始位置ｂｘを減算した値（ｌ−ｂｘ）に表示倍率ｓｃａｌｅを乗算して表示位置ｓｌを、描画小節の最右座標ｒから元画像の表示開始位置ｂｘを減算した値（ｒ−ｂｘ）に表示倍率ｓｃａｌｅを乗算して表示位置ｓｒを、レジスタｃの音高座標ｙから元画像の表示開始位置ｂｙを減算した値（ｃ−ｂｙ）に表示倍率ｓｃａｌｅを乗算して表示位置ｓｃをそれぞれ取得する。
【０１８７】
なお、描画小節の最左座標ｌおよび最右座標ｒは、小節データＭｅａｓ［描画小節番号ｎｂ］．Ｒｅｃｔ（小節の範囲を規定する矩形座標値）から読み出される左端Ｌｅｆｔおよび右端Ｒｉｇｈｔである。元画像の表示開始位置ｂｘ，ｂｙは、それぞれ楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタｘ，レジスタｙから読み出される。表示倍率ｓｃａｌｅは、楽譜制御データエリアｓｃｏｒｅＣｔｒｌのレジスタＳｃａｌｅから読み出される。
【０１８８】
次に、ステップＳＰ７では、座標（ｄｘ＋ｓｌ，ｄｙ＋ｓｃ）から座標（ｄｘ＋ｓｌ＋（ｓｒ−ｓｌ）／１０，ｄｙ＋ｓｃ）へ補助線を描画し、続くステップＳＰ８では、座標（ｄｘ＋ｓｒ−（ｓｒ−ｓｌ）／１０，ｄｙ＋ｓｃ）から座標（ｄｘ＋ｓｒ，ｄｙ＋ｓｃ）へ補助線を描画する。そして、ステップＳＰ９では、ポインタｌｎｔｍｐをインクリメントして歩進させた後、前述のステップＳＰ２に処理を戻す。
【０１８９】
以後、歩進されたポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘを超えるまで上述したステップＳＰ２〜ＳＰ９を繰り返し、歩進されたポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘより大きくなると、上記ステップＳＰ２の判断結果が「ＮＯ」になり、本処理を終える。
【０１９０】
このように、五線下部の補助線描画処理では、ポインタｌｎｔｍｐの値を五線番号ｌｎとして、その五線番号ｌｎに対応して取得される音高座標ｙに基づいて描画小節における五線下部に補助線を描画し、描画し終える毎に歩進されるポインタｌｎｔｍｐの値が補助線番号ｌｉｎｅｅｘを超えるまで次の補助線の描画を繰り返す。
【０１９１】
（１５）具体的な画面表示の一例
次に、図２５〜図２７を参照し、前述したメインルーチンの動作に基づく具体的な画面表示の一例について説明する。なお、図２５は第１の画面表示例を、図２６は第２の画面表示例を、図２７は第３の画面表示例をそれぞれ示す図である。
【０１９２】
ａ．第１の画面表示例
図２５に図示する第１の画面表示例では、現在小節（カーソルが位置する小節）を含む描画範囲の楽譜において、例えば第１小節先頭の音符（右手パートのノートナンバ＃７９の音符および左手パートのノートナンバ＃５２の音符）を押鍵すべきところ、右手で＃７９の鍵と、左手で＃４８の鍵とを押鍵したとする。この場合、右手の押鍵＃７９は正しい押鍵であるが、左手の押鍵＃４８は間違った押鍵ということになる。そうすると、右手パートの＃７９の押鍵に対応した音高線（青線ＢＬ）が描画されると共に、押鍵音＃７９と同じ音高の該当音である第１小節第４音および第４小節第１音を○印で囲むマーク表示が為される。
【０１９３】
一方、左手パートのノートナンバ＃５２の音符に対応する鍵を押鍵すべきところ間違えて＃４８の鍵を押鍵すると、押鍵音＃４８は描画範囲内で使われている音ではないので、音高線（赤線ＲＬ）のみ描画する。こうした楽譜表示形態によれば、右手パートでは適正な押鍵が為されたのに対し、左手パートでは弾くべき音高よりも低い音を間違って押鍵したことをユーザに対して一目瞭然にすることが出来る。これらの処理は、図１１における、音高ｐを順次変化させながらのループ処理で、ステップＳＤ５で押鍵されていると判断された各音につき、ステップＳＤ６での該当音検索処理（図１５）で、描画範囲内に右手若しくは左手で該当音があるか否かを検索し、その後ステップＳＤ７での状態描画処理（図１６〜）で、該当音と検知された音について描画色をセットした上で音高線描画処理（ステップＳＨ６、ＳＨ１０、ＳＨ１５、ＳＨ１８、図１８）で音高線が描かれる事で実現している。また、ステップＳＧ８における該当マークの描画処理により、該当音について○印で囲むマーク表示が行われる。また、これに限らず、相応の方法により、現在表示対象となっている描画範囲内で、押鍵された音と同じ音があるか否かを検索して、その有無により描画色を変えて五線上に音高線を表示すると共に、該当音を丸で囲む表示を行うことで実現できる。
【０１９４】
ｂ．第２の画面表示例
図２６に図示する第２の画面表示例では、現在小節（カーソルが位置する小節）を含む描画範囲の楽譜において、ノートナンバ＃６０（Ｃ音）の鍵を押鍵している状態を示している。この場合、左手パートの＃６０の押鍵に対応した音高線（青線ＢＬ）が描画されると共に、同じ音高の該当音である第６小節第３音（Ｃ音）を○印で囲むマーク表示が為される。一方、押鍵音高と同じ五線位置にある第４小節第３音（Ｃ＃音）には、臨時記号＃が付加されている為、半音高い鍵の押鍵をガイドする半音上がるマーク「＞」が描画される。この右矢印マークは、当該音について、ピアノの鍵盤上で、一つ右の鍵（Ｃ＃の黒鍵）を押鍵すべきことを表している。こうした楽譜表示形態によれば、弾いた音と楽譜上の音符との対応関係を一目瞭然にすることが出来る。
【０１９５】
ｃ．第３の画面表示例
図２７に図示する第３の画面表示例では、現在小節（カーソルが位置する小節）を含む描画範囲の楽譜において、ノートナンバ＃６１（Ｃ＃音）の鍵を押鍵している状態を示している。この場合、左手パートの＃６１の押鍵に対応した音高線（青線ＢＬ）が描画されると共に、同じ音高の該当音である第４小節第３音（Ｃ＃音）を○印で囲むマーク表示が為される。一方、押鍵音高と同じ五線位置にある第６小節第３音（Ｃ音）には、半音低い鍵の押鍵をガイドする半音下がるマーク「＜」を描画する。この左矢印マークは、当該音について、ピアノの鍵盤上で、一つ左の鍵（Ｃの白鍵）を押鍵すべきことを表している。
【０１９６】
こうした楽譜表示形態によれば、弾いた音と楽譜上の音符との対応関係を一目瞭然にすることが出来る。これらの第２および第３の画面表示例については、ステップＳＪ１５およびステップＳＪ１８で、半音上がる／下がるマークを表示することにより実現されている。また、これに限らず、相応の方法により、現在表示対象となっている描画範囲内で、押鍵された音と同じ五線上に表示されるものの、臨時記号等やミスタッチ等により、押鍵されている音より半音上または下の音があるか否かを検索して、かかる音が検索された場合には、半音上の場合に右矢印、半音下の場合に左矢印などの所定のマーク表示を当該音符に付すことで実現できる。この場合のマーク表示は、上記に限られず、それぞれの場合で所定の色で所定のマークを表示したり、「＃」、「♭」、やナチュラルの記号などを表示したり、種々の方法が可能である。また、臨時記号の関係等から、同じ五線位置にあるものの、音高が２半音異なっている音の場合（例えば、押鍵音が♭音で、楽譜上の記譜音が＃音の場合など）には、例えば、「＞＞」や「＜＜」のように、マークを２つ表示して、２半音違いであることを明示するようにしても良い。
【０１９７】
以上説明したように、本実施形態では、元画像（楽譜の画像データ）をディスプレイ表示サイズに合わせて楽譜表示し、現在の小節（カーソルが位置する小節）を含む描画範囲内のパート境界音（右手パート最低音および左手パート最高音）を設定する。そして、ユーザの押鍵で生じる押鍵音と同じ音高の演奏データＮｏｔｅに対応する描画範囲内の音符の玉を該当マーク（○印）で囲んで該当音として表示すると共に、パート境界音に基づき該当音が右手パート(又は左手パート）に含まれると判別された場合には、描画範囲内で押鍵音と同じ音高を示す音高線を該当色で描画し、その音高線と同じ五線上に位置するが押鍵音より半音下(又は半音上)の音符に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画し、一方、該当音が左右両パートの何れにも含まれないと判別された場合には、描画範囲内で押鍵音と同じ音高を示す音高線を非該当色で描画し、その音高線と同じ五線上に位置するが押鍵音より半音下(又は半音上)の音符に半音下がるマーク「＜」（又は半音上がるマーク「＞」）を描画するので、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係を楽譜上で一目瞭然にすることができる。また、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係が楽譜上で一目瞭然になることから、楽譜を読み取る能力が向上するという効果も奏する。
【０１９８】
なお、上述した実施形態では、描画範囲を決めるカーソル位置を固定としたが、これに限らず、例えば楽譜に表示される曲のテンポに同期してカーソル位置を移動制御したり、ユーザ設定される移動速度でカーソル位置を移動させたりする態様としても構わず、そのようにすればカーソル位置の移動に応じて描画範囲も移動する為、弾いた音の正誤や弾いた音と楽譜中の音符との対応関係が、曲の最初から最後まで楽譜上で一目瞭然となり演奏練習に好適となる。
【０１９９】
以上、本発明の実施の一形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
【０２００】
（付記）
［請求項１］
楽譜を表示手段に表示させる楽譜表示手段と、
前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、
音高の指定が入力される音高入力手段と、
前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、
を具備することを特徴とする演奏練習装置。
【０２０１】
［請求項２］
前記範囲指定手段は、前記表示手段に表示された楽譜において、カーソルが位置する小節を含む段の開始小節から終了小節まで範囲指定することを特徴とする請求項１記載の演奏練習装置。
【０２０２】
［請求項３］
前記状態描画手段は、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高線と同じ五線上に位置し、かつ前記音高入力手段により入力された音高と音階が異なる音符にマークを描画することを特徴とする請求項１または２に記載の演奏練習装置。
【０２０３】
［請求項４］
前記状態描画手段は、前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高と同じ音高の音符を検索し、該当する音符を該当音として識別表示することを特徴とする請求項１から３のいずれかに記載の演奏練習装置。
【０２０４】
［請求項５］
前記状態描画手段は、前記範囲指定手段により指定された楽譜の所定範囲において、前記入力された音高と同じ音高の音符が存在していた場合に第１の表示色で音高線を描画し、前記入力された音高と同じ音高の音符が存在していない場合に第２の表示色で音高線を描画することを特徴とする請求項１から４のいずれかに記載の演奏練習装置。
【０２０５】
［請求項６］
前記状態描画手段は、前記入力された音と同じ五線上に位置し、かつ入力音高より高い音符に対して第１のマーク表示を描画し、前記入力された音と同じ五線上に位置し、かつ入力音高より低い音符に対して第２のマーク表示を描画することを特徴とする請求項３に記載の演奏練習装置。
【０２０６】
［請求項７］
前記第１のマーク表示が右方向矢印表示であり、前記第２のマーク表示が左方向矢印表示であることを特徴とする請求項６記載の演奏練習装置。
【０２０７】
［請求項８］
前記範囲指定手段により指定された楽譜の所定範囲においてパートを分別する境界音を取得する境界音取得手段を更に備えることを特徴とする請求項１から７のいずれかに記載の演奏練習装置。
【０２０８】
［請求項９］
前記境界音取得手段は、
前記範囲指定手段により指定された楽譜の所定範囲において、パートを分別する境界音となる第１パート最低音および第２パート最高音を特定する特定手段と、
前記特定手段により特定された第１パート最低音が第２パート最高音より高く、かつ第１パート最低音と第２パート最高音との間にＣ４音が含まれる場合には、第１パート最低音および第２パート最高音をＣ４音に設定する第１の設定手段と、
前記特定手段により特定された第１パート最低音が第２パート最高音より高く、かつ第２パート最高音がＣ４音以上もしくは第１パート最低音がＣ４音以下の場合には、第１パート最低音を第２パート最高音の一つ上の音に設定する第２の設定手段と
を備えることを特徴とする請求項８記載の演奏練習装置。
【０２０９】
［請求項１０］
前記状態描画手段は、
前記境界音取得手段により取得された境界音に基づき前記該当音が何れかのパートに包含されると判別した場合に、前記範囲指定手段により指定された楽譜の所定範囲内で入力音高と同じ音高を示す音高線を第１の表示形態で描画すると共に、当該音高線と同じ五線上に位置し、かつ入力音高と半音差ある音符に対してガイド用マークを描画する第１の描画手段と、
前記境界音取得手段により取得された境界音に基づき前記該当音が何れのパートにも包含されないと判別した場合に、前記範囲指定手段により指定された楽譜の所定範囲内で入力音高と同じ音高を示す音高線を第２の表示形態で描画すると共に、当該音高線と同じ五線上に位置し、かつ入力音高と半音差ある音符に対してガイド用マークを描画する第２の描画手段と、
を備えることを特徴とする請求項８または９に記載の演奏練習装置。
【０２１０】
［請求項１１］
楽譜を表示手段に表示させる楽譜表示手段と、
前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、
音高の指定が入力される音高入力手段と、
前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、
を具備することを特徴とする楽譜表示装置。
【０２１１】
［請求項１２］
楽譜を表示手段に表示させる楽譜表示手段と、
前記表示手段に表示された楽譜の所定範囲を指定する範囲指定手段と、
音高の指定が入力される音高入力手段と、
前記範囲指定手段により指定された楽譜の所定範囲において、前記音高入力手段により入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画手段と、
を具備することを特徴とする電子楽器。
【０２１２】
［請求項１３］
楽譜を表示手段に表示させる楽譜表示ステップと、
前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、
音高の指定入力を受け付ける音高入力ステップと、
前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップと、
を具備することを特徴とする演奏練習方法。
【０２１３】
［請求項１４］
楽譜を表示手段に表示させる楽譜表示ステップと、
前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、
音高の指定入力を受け付ける音高入力ステップと、
前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップと、
を具備することを特徴とする楽譜表示方法。
【０２１４】
［請求項１５］
コンピュータに、
楽譜を表示手段に表示させる楽譜表示ステップと、
前記楽譜表示ステップで表示された楽譜の所定範囲を指定する範囲指定ステップと、
音高の指定入力を受け付ける音高入力ステップと、
前記範囲指定ステップで指定された楽譜の所定範囲において、前記音高入力ステップで入力された音高に対応する楽譜表示上の位置に音高線を描画する状態描画ステップと、
を実行させることを特徴とするプログラム。
【符号の説明】
【０２１５】
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  操作部
１４  表示部
１５  ＭＩＤＩインタフェース
１６  音源
１７  サウンドシステム
２０  ＭＩＤＩ楽器
１００  演奏練習装置
【図１】
2014178361.tif 000003
【図２】
2014178361.tif 000004
【図３】
2014178361.tif 000005
【図４】
2014178361.tif 000006
【図５】
2014178361.tif 000007
【図６】
2014178361.tif 000008
【図７】
2014178361.tif 000009
【図８】
2014178361.tif 000010
【図９】
2014178361.tif 000011
【図１０】
2014178361.tif 000012
【図１１】
2014178361.tif 000013
【図１２】
2014178361.tif 000014
【図１３】
2014178361.tif 000015
【図１４】
2014178361.tif 000016
【図１５】
2014178361.tif 000017
【図１６】
2014178361.tif 000018
【図１７】
2014178361.tif 000019
【図１８】
2014178361.tif 000020
【図１９】
2014178361.tif 000021
【図２０】
2014178361.tif 000022
【図２１】
2014178361.tif 000023
【図２２】
2014178361.tif 000024
【図２３】
2014178361.tif 000025
【図２４】
2014178361.tif 000026
【図２５】
2014178361.tif 000027
【図２６】
2014178361.tif 000028
【図２７】
2014178361.tif 000029