(57)【特許請求の範囲】
【請求項１】
曲を構成する音高、当該音高の演奏に用いる指の種類を表す運指情報及び当該運指情報が表す指が演奏に不適切であると判定される禁止条件を満たすか否かを示す判定情報からなるイベントが複数順次記憶された記憶手段と、
この記憶手段に記憶されたイベントのうち、判定情報が前記禁止条件を満たすと判定された判定情報を有するイベントを検索する検索手段と、
この検索手段により検索されたイベントに対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を評価する評価値を算出する動作を行う評価手段と、
この評価手段により前記禁止条件を満たさずかつ算出された評価値が所定の基準値を超えないという条件を満たす指を検索し、この検索された指の中で演奏の難易度が最も低い評価値を有する指の種類を表す運指情報を、前記検索されたイベントの運指情報として前記記憶手段内に記憶させることにより、当該運指情報を前記検索されたイベントに割り当てる割り当て手段と、
この割り当て手段にて前記条件を満たす指が検索されない場合に、前記評価手段に対して再度動作を開始させるとともに、前回算出された評価値より演奏の難易度の低い評価値が算出されるように前記評価手段を制御する制御手段と、
を具備する運指情報修正装置。
【請求項２】
前記運指情報修正装置は、前記各イベントに対応して当該各イベントに含まれる音高の高低傾向を表す傾向データを有するとともに、当該傾向データが極値を表すイベントを前記検索手段により検索されたイベントの前後夫々からひとつずつ指定し、当該２つのイベントにて前記記憶手段上の範囲を指定する範囲指定手段を含み、
前記評価手段は、この範囲指定手段に含まれるイベント夫々に対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を評価する評価値を算出する動作を行う、請求項１に記載の運指情報修正装置。
【請求項３】
曲を構成する音高、当該音高の演奏に用いる指の種類を表す運指情報及び当該運指情報が表す指が演奏に不適切であると判定される禁止条件を満たすか否かを示す判定情報からなるイベントが複数順次記憶された記憶手段を有する運指情報修正装置として用いられるコンピュータに、
この記憶手段に記憶されたイベントのうち、判定情報が前記禁止条件を満たすと判定された判定情報を有するイベントを検索する検索ステップと、
この検索されたイベントに対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を、評価する評価値を算出する動作を行う評価ステップと、
前記禁止条件を満たさずかつ算出された評価値が所定の基準値を超えないという条件を満たす指を検索し、この検索された指の中で演奏の難易度が最も低い評価値を有する指の種類を表す運指情報を、前記検索されたイベントの運指情報として前記記憶手段内に記憶させることにより、当該運指情報を前記検索されたイベントに割り当てる割り当てステップと、
前記条件を満たす指が検索されない場合に、前記評価ステップの再動作を開始させるとともに、前回算出された評価値より演奏の難易度の低い評価値が算出されるように前記評価手段を制御する制御ステップと、
を実行させる運指情報修正プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵盤を備えた電子楽器に用いて好適な運指情報修正装置および運指情報修正処理プログラムに関する。
【背景技術】
【０００２】
演奏者に弾くべき鍵の位置および鍵操作の指使い（運指）を案内する運指情報を発生する装置が知られている。例えば特許文献１には、隣り合う２つの音に対して鍵盤を操作したときの指使いの容易さを表す２音運指データをそれぞれの指の組合わせに対応付けて記憶しておき、その内から曲データ（与えられたメロディの音列）に対応する２音運指データを読み出し、読み出した２音運指データの累算値を最適にする運指を決定して運指情報を発生させる装置が開示されている。
【０００３】
【特許文献１】特許第２５２６９５４号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の技術に基づき曲データから運指情報を生成する際に、曲データの内容によっては、例えば手の幅以上離れた鍵を弾く等、不適切な運指（指使い）になり得ることもままあり、その様な場合には運指情報が生成されず、それを修正することができないという問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、不適切な運指を修正することができる運指情報修正装置および運指情報修正処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１に記載の発明では、曲を構成する音高、当該音高の演奏に用いる指の種類を表す運指情報及び当該運指情報が表す指が演奏に不適切であると判定される禁止条件を満たすか否かを示す判定情報からなるイベントが複数順次記憶された記憶手段と、この記憶手段に記憶されたイベントのうち、判定情報が前記禁止条件を満たすと判定された判定情報を有するイベントを検索する検索手段と、この検索手段により検索されたイベントに対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を、評価する評価値を算出する動作を行う評価手段と、この評価手段により前記禁止条件を満たさずかつ算出された評価値が所定の基準値を超えないという条件を満たす指を検索し、この検索された指の中で演奏の難易度が最も低い評価値を有する指の種類を表す運指情報を、前記検索されたイベントの運指情報として前記記憶手段内に記憶させることにより、当該運指情報を前記検索されたイベントに割り当てる割り当て手段と、この割り当て手段にて前記条件を満たす指が検索されない場合に、前記評価手段に対して再度動作を開始させるとともに、前回算出された評価値より演奏の難易度の低い評価値が算出されるように前記評価手段を制御する制御手段と、を具備することを特徴とする。
【０００６】
また、請求項２に記載の発明のように、前記運指情報修正装置は、前記各イベントに対応して当該各イベントに含まれる音高の高低傾向を表す傾向データを有するとともに、当該傾向データが極値を表すイベントを前記検索手段により検索されたイベントの前後夫々からひとつずつ指定し、当該２つのイベントにて前記記憶手段上の範囲を指定する範囲指定手段を含み、前記評価手段は、この範囲指定手段に含まれるイベント夫々に対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を評価する評価値を算出する動作を行うように構成してもよい。
【０００７】
請求項３に記載の発明では、曲を構成する音高、当該音高の演奏に用いる指の種類を表す運指情報及び当該運指情報が表す指が演奏に不適切であると判定される禁止条件を満たすか否かを示す判定情報からなるイベントが複数順次記憶された記憶手段を有する運指情報修正装置として用いられるコンピュータに、  この記憶手段に記憶されたイベントのうち、判定情報が前記禁止条件を満たすと判定された判定情報を有するイベントを検索する検索ステップと、この検索されたイベントに対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を、評価する評価値を算出する動作を行う評価ステップと、前記禁止条件を満たさずかつ算出された評価値が所定の基準値を超えないという条件を満たす指を検索し、この検索された指の中で演奏の難易度が最も低い評価値を有する指の種類を表す運指情報を、前記検索されたイベントの運指情報として前記記憶手段内に記憶させることにより、当該運指情報を前記検索されたイベントに割り当てる割り当てステップと、前記条件を満たす指が検索されない場合に、前記評価ステップの再動作を開始させるとともに、前回算出された評価値より演奏の難易度の低い評価値が算出されるように前記評価手段を制御する制御ステップと、を実行させることを特徴とする。
【発明の効果】
【０００９】
請求項１、３に記載の発明によれば、曲を構成する音高、当該音高の演奏に用いる指の種類を表す運指情報及び当該運指情報が表す指が演奏に不適切であると判定される禁止条件を満たすか否かを示す判定情報からなるイベントのうち、判定情報が前記禁止条件を満たすと判定された判定情報を有するイベントを検索し、この検索されたイベントに対して、当該イベントの演奏に用いる指の種類として親指から小指までを順次割り当てた場合に前記禁止条件を満たすか否かを判定するとともに、当該イベントに割り当てられる指の種類を表す運指情報と当該イベントに続くイベントに含まれる運指情報とに基づき、前記割り当てられた指で前記イベントを演奏した場合の難易度を、評価する評価値を算出する動作を行う。そしてこの禁止条件を満たさずかつ算出された評価値が所定の基準値を超えないという条件を満たす指を検索し、この検索された指の中で演奏の難易度が最も低い評価値を有する指の種類を表す運指情報を、前記検索されたイベントの運指情報として前記記憶手段内に記憶させることにより、当該運指情報を前記検索されたイベントに割り当てるとともに、前記条件を満たす指が検索されない場合に、前記評価ステップの再動作を開始させるとともに、前回算出された評価値より演奏の難易度の低い評価値が算出されるように前記評価手段を制御するので、不適切な運指を修正することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．第１実施形態  
（１）構成  
図１は、第１実施形態による運指情報修正装置の全体構成を示すブロック図である。運指情報修正装置は、データ入力部１、表示部２、データ指定部３、ＣＰＵ４、ＲＯＭ５およびＲＡＭ６を備える。データ入力部１は、図示されていない運指情報発生装置において生成された楽曲データを取り込み、ＲＡＭ６に格納する。楽曲データとは、図２に図示するように、ＭＩＤＩデータ形式で構成され、曲を構成する各音を表す曲データと各音毎の運指データとを備える。曲データは、曲を構成する各音に対応したイベントＭｉｄｉＥｖｅｎｔ毎の発音開始時間、発音時間およびピッチを表す。
【００１２】
一方、運指データは、曲データで表される音に対応した、鍵盤座標ｉＰｏｓｘ、運指ｃｆｉｇ、評価値ｉＣｏｓｔおよび禁止条件ｉＮＰを有する。鍵盤座標ｉＰｏｓｘは、曲データ中のピッチに対応する鍵盤位置を表す。運指ｃｆｉｇは、鍵操作する指（「０：親指」、「１：人差し指」、「２：中指」、「３：薬指」、「４：小指」）を指定する。評価値ｉＣｏｓｔは、運指ｃｆｉｇの評価値を表す。禁止条件ｉＮＰは、禁止条件（「禁止条件１：黒鍵の運指に親指や小指を割り当てない」、「禁止条件２：和音時の運指逆転」および「禁止条件３：運指可能幅を超えない」）に該当するかどうかを表す。禁止条件に該当しない場合、禁止条件ｉＮＰは「０」となる。
【００１３】
表示部２は、ＣＰＵ４の制御の下に、例えば上述した曲データおよび運指データからなる楽曲データを画面表示する。データ指定部３は、マウスあるいはキーボード等の入力デバイスを備え、表示部２に画面表示された楽曲データ中の任意をデータを指定し、その値の修正指示を発生する。ＣＰＵ４は、装置各部を制御するものであり、本発明の要旨に関わる処理動作については追って詳述する。ＲＯＭ５は、上記ＣＰＵ４にロードされる各種制御プログラムやテーブル等を記憶する。ここで言う各種制御プログラムとは、後述するメインルーチン、修正処理、評価処理、禁止条件判定処理およびコスト補正処理を含む。
【００１４】
また、ＲＯＭ５には、コストテーブルｃＣｏｓｔＴｗｏＦｉｎｇｅｒが設けられる。コストテーブルｃＣｏｓｔＴｗｏＦｉｎｇｅｒとは、隣り合う２音、つまり現在評価対象としている音と次の音とを勘案して、現在評価対象としている音の運指の容易さを表す評価値を読み出すテーブルである。具体的には、黒鍵／白鍵の別を表すｉＢＷ、次の音が現在評価対象としている音の高音側か低音側かを表すｉＰＭ、現在評価対象としている音にアサインされる運指ｃｆｉｇを表すｉＦｔ、次の音にアサインされる運指ｃｆｉｇを表すｉＴｔ、現在評価対象としている音の鍵盤位置と次の音の鍵盤位置との離間距離ｉＩｎｔに応じた評価値が登録される。
【００１５】
ＲＡＭ６は、データエリアおよびワークエリアを備える。ＲＡＭ６のデータエリアには、データ入力部１を介して取り込んだ楽曲データがストアされる。ＲＡＭ６のワークエリアには、ＣＰＵ４が実行するメインルーチン、修正処理、評価処理、禁止条件判定処理およびコスト補正処理において用いられる各種レジスタ・フラグデータが一時記憶される。後述するコスト補正処理では、ＲＡＭ６のデータエリアに格納される楽曲データにおいて、禁止条件に合致した運指データの評価値ｉＣｏｓｔをユーザ操作に応じて修正するようになっている。
【００１６】
（２）動作
次に、図３〜図７を参照して第１実施形態の動作について説明する。以下では、最初にＣＰＵ４が実行するメインルーチンの動作を説明し、続いて修正処理、評価処理、禁止条件判定処理およびコスト補正処理の各動作について順次説明する。なお、以下の動作説明では、図２に図示した楽曲データがデータ入力部１を介してＲＡＭ６のデータエリアに格納されていることを前提とする。
【００１７】
＜メインルーチンの動作＞
装置電源の投入に応じて、ＣＰＵ４は図３に示すメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ６に格納される各種レジスタやフラグ類をリセットしたり初期値をセットする初期化処理を行う。次いで、ステップＳＡ２では、ＲＡＭ６のデータエリアに格納される楽曲データの内、最初の音を指定するポインタをレジスタｍｅにストアする。次いで、ステップＳＡ３では、レジスタｍｅのポインタが曲終端を表す「ＥＮＤ」に達したか、すなわち曲を構成する全ての音について適切な運指であるか否かの適正判定を終えたかどうかを判断する。全ての音について適正判定を終えていなければ、判断結果は「ＮＯ」になり、ステップＳＡ４に進む。
【００１８】
ステップＳＡ４では、ｍｅ［ｉＮＰ］が「０」でないか否か、すなわちレジスタｍｅのポインタで指定される音の運指データ中の禁止条件ｉＮＰが、禁止条件に該当していないかどうかを判断する。禁止条件に該当した場合には、判断結果が「ＹＥＳ」となり、ステップＳＡ５を介して修正処理を実行する。修正処理では、後述するように、禁止条件に該当した不適切な指使いの運指データを再評価し、適切な運指に修正した後、ステップＳＡ６に進む。
一方、禁止条件に該当していなければ、判断結果は「ＮＯ」になり、ステップＳＡ６に進み、次の音を指定するポインタｍｅ［ｎｅｘｔ］をレジスタｍｅにストアして上述のステップＳＡ３に処理を戻す。
【００１９】
以後、曲を構成する全ての音について適正判定を終えるまでステップＳＡ３〜ＳＡ６を繰り返し、全ての音について適正判定を終えると、ステップＳＡ３の判断結果が「ＹＥＳ」となり、本処理を完了させる。
このように、メインルーチンでは、ＲＡＭ６のデータエリアに格納される楽曲データの内から禁止条件に該当した不適切な運指データを有する音を検索し、該当する音の運指データを再評価して修正するようになっている。
【００２０】
＜修正処理の動作＞
次に、図４を参照して修正処理の動作を説明する。上述したメインルーチンのステップＳＡ５（図３参照）を介して本処理が実行されると、ＣＰＵ４は図４に図示するステップＳＢ１に処理を進め、レジスタｉＲＣｏｓｔに評価判定値を、レジスタｃｆｉｇＢｅｓｔに初期値「−１」をセットする。さらに、ステップＳＢ２では、修正回数をカウントするカウンタｉＯｐｔをゼロリセットする。次いで、ステップＳＢ３では、カウンタｉＯｐｔの値が規定値ＯＰＴ＿ＭＡＸより小さいか否か、つまり規定の修正回数を行ったかどうかを判断する。規定の修正回数が行われると、判断結果は「ＮＯ」になり、本処理を完了させるが、規定の修正回数を行っていなければ、判断結果が「ＹＥＳ」になり、ステップＳＢ４に進む。
【００２１】
ステップＳＢ４では、レジスタｉｆｉｇに「０」をセットする。レジスタｉｆｉｇには、後述するように、親指から小指までの運指を再評価させるためのインデックス値「０：親指」、「１：人差し指」、「２：中指」、「３：薬指」および「４：小指」がセットされる。続いて、ステップＳＢ５では、レジスタｉｆｉｇの値が「５」より小さいか否か、すなわち親指から小指までの運指を再評価し終えたかどうかを判断する。運指を再評価し終えた場合には、判断結果が「ＮＯ」となり、後述するステップＳＢ１０に処理を進めるが、親指から小指までの運指を再評価し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＢ６を介して評価処理（後述する）を実行する。
【００２２】
そして、ステップＳＢ７では、上記ステップＳＢ６において再評価された音の禁止条件ｉＮＰ（ｍｅ［ｉＮＰ］）が「０（禁止条件に該当せず）」であって、しかも再評価値（レジスタｉＣｏｓｔの値）がレジスタｉＲＣｏｓｔに格納される評価判定値より小さい場合、つまり弾きやすい運指に更新されたか否かを判断する。そして、上記判定条件に合致しなければ、判断結果は「ＮＯ」になり、ステップＳＢ９に進む。ステップＳＢ９では、次の指について運指を再評価すべくレジスタｉｆｉｇのインデックス値を歩進させて上述のステップＳＢ５に処理を戻す。
【００２３】
これに対し、上記判定条件に合致すると、ステップＳＢ７の判断結果が「ＹＥＳ」になり、ステップＳＢ８に進み、レジスタｍｅ［ｉｆｉｇ］に格納される再評価された音の運指（指番号）をレジスタｃｆｉｇＢｅｓｔにストアすると共に、レジスタｉＣｏｓｔの再評価値を、レジスタｉＲＣｏｓｔにストアして評価判定値を更新した後、ステップＳＢ９に進む。
【００２４】
このように、ステップＳＢ４〜ＳＢ９では、禁止条件に該当した音の運指ｍｅ［ｃｆｉｇ］を再評価すべく、その運指ｍｅ［ｃｆｉｇ］をレジスタｉｆｉｇのインデックス値に替えて親指から小指まで変化させながらステップＳＢ６において再評価を行い、その結果、禁止条件に該当せず、かつ最も評価判定値が小さく弾きやすい運指（指番号）になった場合に、その運指をレジスタｃｆｉｇＢｅｓｔにストアするようになっている。
【００２５】
そして、親指から小指までの再評価を終えると、ステップＳＢ５の判断結果が「ＮＯ」になり、ステップＳＢ１０に進み、レジスタｃｆｉｇＢｅｓｔの値が初期値「−１」のままであるかどうかを判断する。レジスタｃｆｉｇＢｅｓｔの値が初期値「−１」のままであると、判断結果は「ＮＯ」になり、ステップＳＢ１２に進み、修正回数をカウントするカウンタｉＯｐｔをインクリメントして歩進させた後、上述のステップＳＢ３に処理を戻す。以後、カウンタｉＯｐｔの修正回数が規定値ＯＰＴ＿ＭＡＸを超えるまで前述のステップＳＢ３〜ＳＢ１０を繰り返す。
【００２６】
カウンタｉＯｐｔの修正回数が規定値ＯＰＴ＿ＭＡＸを超えるまでステップＳＢ３〜ＳＢ１０を繰り返す過程で、禁止条件に該当せず、かつ最も評価判定値が小さく弾きやすい運指（指番号）がレジスタｃｆｉｇＢｅｓｔにストアされると、ステップＳＢ１０の判断結果が「ＹＥＳ」になり、ステップＳＢ１１に進み、レジスタｃｆｉｇＢｅｓｔの再評価された運指（指番号）を、対応する音の運指データｍｅ［ｃｆｉｇ］に登録して本処理を終える。
【００２７】
＜評価処理の動作＞
次に、図５〜図７を参照して評価処理の動作を説明する。上述した修正処理のステップＳＢ６（図４参照）を介して本処理が実行されると、ＣＰＵ４は図５に図示するステップＳＣ１に処理を進め、レジスタｉＣｏｓｔに初期値「−１」をセットする。続いて、ステップＳＣ２では、レジスタｍｅ［ｉｆｉｇ］に格納される再評価対象音の運指（指番号）をレジスタｉＦｔに、レジスタｍｅ［ｉＰｏｓｘ］に格納される再評価対象音の鍵盤座標をレジスタｉＦｐに、レジスタｍｅ［ｉＰｏｓｘ］の２の剰余値、つまり再評価対象音が黒鍵／白鍵のいずれであるかを識別する値（０：白鍵／１：黒鍵）をレジスタｉＢＷにそれぞれストアする。次いで、ステップＳＣ３では、再評価対象音の次の音ｍｅ［ｎｅｘｔ］を指定するポインタをレジスタｍｅｎにストアする。
【００２８】
ステップＳＣ４では、レジスタｍｅｎにストアされたポインタにて指定される次の音の運指ｍｅｎ［ｃｆｉｇ］をレジスタｉＴｆに、次の音の鍵盤座標ｍｅｎ［ｉＰｏｓｘ］をレジスタｉＴｐにそれぞれストアする。次いで、ステップＳＣ５では、レジスタｉＦｐに格納された再評価対象音の鍵盤座標と、レジスタｉＴｐに格納された次の音の鍵盤座標とを大小比較し、ｉＦｐ＜ｉＴｐなら「０」を、ｉＦｐ≧ｉＴｐなら「１」をレジスタｉＰＭにストアする。つまり次の音が再評価対象音より高音側なら「０」、それ以外なら「１」となる値をレジスタｉＰＭにストアする。
また、ステップＳＣ５では、再評価対象音の鍵盤座標と次の音の鍵盤座標から両鍵の離間距離（ｉＴｐ−ｉＦｐ又はｉＦｐ−ｉＴｐ）をレジスタｉＩｎｔにストアする。そして、ステップＳＣ６では、上記ステップＳＣ２〜ＳＣ５において得たレジスタｉＢＷ、ｉＰＭ、ｉＦｔ、ｉＴｔ、ｉＩｎｔの値に従い、ＲＯＭ５に格納されるコストテーブルｃＣｏｓｔＴｗｏＦｉｎｇｅｒから再評価対象音にアサインした運指の容易さを表す評価値を読み出す。
【００２９】
次いで、ステップＳＣ７を介して図６に図示する禁止条件判定処理を実行し、ステップＳＤ１に処理を進める。ステップＳＤ１では、再評価対象音が「禁止条件１：黒鍵の運指に親指や小指を割り当てない」、「禁止条件２：和音時の運指逆転」および「禁止条件３：運指可能幅を超えない」のいずれかに合致するか否かを判断する。禁止条件１〜３に合致しない場合には、判断結果が「ＮＯ」となり、本処理を完了させるが、禁止条件１〜３のいずれかに合致する場合には、再評価対象音の禁止条件ｍｅ［ｉＮＰ］に「０」をセットして禁止条件に該当しない旨を表すと共に、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］として、禁止コストＮＯＴ＿ＰＥＲＭＩＴ−１−ｉＯｐｔを設定する。つまり、ステップＳＤ２では、禁止条件を解き、最も弾き難いことを表す禁止コストＮＯＴ＿ＰＥＲＭＩＴから修正回数ｉＯｐｔ＋１を減算した値の再評価値を設定する。
【００３０】
続いて、ステップＳＣ８を介して図７に図示する評価補正処理を実行し、ステップＳＥ１に処理を進める。ステップＳＥ１では、再評価対象音と次の音との２音間の運指に係わる評価値を、その実行時間や他の音列との繋がり（和音押鍵時）を勘案してユーザが修正操作する。例えば、再評価対象音のイベントタイミングと次の音のイベントタイミングとの差（絶対時間差）が短ければ難しい運指であるとして、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］を高めたり、絶対時間差が長ければ易しい運指であるとして再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］を下げる修正操作を行う。この他、修正操作される項目として、指の交差加算や指越え・指返し評価加算、和音押鍵時の指越え・指潜り、押鍵幅の調整などがあり、これら各修正項目について再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］を修正する。
【００３１】
そして、ユーザ修正操作が完了すると、ステップＳＥ２に進み、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］が最も弾き難いことを表す禁止コストＮＯＴ＿ＰＥＲＭＩＴより大きいか否かを判断する。再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］が禁止コストＮＯＴ＿ＰＥＲＭＩＴより小さければ、判断結果は「ＮＯ」になり、本処理を完了させるが、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］が禁止コストＮＯＴ＿ＰＥＲＭＩＴより大きいと、判断結果は「ＹＥＳ」になり、ステップＳＥ３に進み、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］を修正回数ｉＯｐｔ分減算する。
【００３２】
こうして、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］が補正されると、ＣＰＵ４は図５に図示するステップＳＣ９に処理を進め、再評価対象音の禁止条件ｍｅ［ｉＮＰ］が「０」でないか否か、つまり禁止条件に該当していないかどうかを判断する。禁止条件に該当していなければ、判断結果は「ＮＯ」となり、ステップＳＣ１０に進み、レジスタｉＣｏｓｔの値が「０」以上であれば、そのレジスタｉＣｏｓｔの値を、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］として運指データに登録する。レジスタｉＣｏｓｔの値が負の場合には、所定値を再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］として運指データに登録する。一方、禁止条件に該当した場合には、上記ステップＳＣ９の判断結果が「ＹＥＳ」となり、ステップＳＣ１１に進み、再評価対象音の評価値ｍｅ［ｉＣｏｓｔ］として禁止コストＮＯＴ＿ＰＥＲＭＩＴを運指データに登録する。
【００３３】
このように、第１実施形態では、曲を構成する各音について弾く指を表す運指データの内から禁止条件に該当した不適切な運指データを検索し、該当する運指データを親指から小指まで変化させながら再評価を行い、禁止条件に該当せず、かつ最も評価判定値が小さく弾きやすい運指（指番号）になった場合に、それを新たな運指データとして登録し直すようにしている。
とりわけ再評価を行う評価処理（図５参照）では、評価対象音と次の音とを勘案して、評価対象音の運指の容易さを表す評価値を生成する一方、評価対象音の運指が「禁止条件１：黒鍵の運指に親指や小指を割り当てない」、「禁止条件２：和音時の運指逆転」および「禁止条件３：運指可能幅を超えない」のいずれかの禁止条件に合致する場合には、禁止条件を解き、最も弾き難いことを表す禁止コストＮＯＴ＿ＰＥＲＭＩＴから修正回数ｉＯｐｔ＋１を減算した評価値を設定したり、評価対象音と次の音との２音間の運指に係わる評価値をユーザ操作に応じて修正した後、修正した評価対象音の評価値が禁止コストＮＯＴ＿ＰＥＲＭＩＴより大きければ、評価対象音の評価値を修正回数ｉＯｐｔ分減算したりする。これにより、修正回数に応じて評価判定値が緩和されて最終的に不適切な運指と判定されなくなる為、不適切な運指を修正することが可能になる。
【００３４】
Ｂ．第２実施形態
次に、図８〜図１０を参照して第２実施形態の動作を説明する。第２実施形態が上述の第１実施形態と相違する点は、運指データ中に音列（曲データ）の高低傾向を表すデータｃＴｅｎｄｅｎｃｙを備え、このデータｃＴｅｎｄｅｎｃｙを参照して、禁止条件に該当した運指データを有する音の前後において音の高低が入れ替われる音列区間を評価範囲に決定し、その評価範囲で運指の再評価を行うことにある。以下では、こうした第２実施形態による「修正処理」、「評価範囲決定処理」および「決定範囲評価処理」の各動作を説明する。なお、第２実施形態のメインルーチンは、上述の第１実施形態と同一なので、その説明については省略する。
【００３５】
＜修正処理の動作＞
上述の第１実施形態と同様、メインルーチンのステップＳＡ５（図３参照）を介して本処理が実行されると、ＣＰＵ４は図８に図示するステップＳＦ１に処理を進め、レジスタｉＲＣｏｓｔに評価判定値を、レジスタｃｆｉｇＢｅｓｔに初期値「−１」をそれぞれセットすると共に、修正回数をカウントするカウンタｉＯｐｔをゼロリセットする。次いで、ステップＳＦ２では、評価範囲決定処理を実行する。評価範囲決定処理では、後述するように、運指データ中に設けられるデータｃＴｅｎｄｅｎｃｙを参照して、禁止条件に該当した運指データを有する音の前後において音の高低が入れ替われる音列区間を評価範囲に決定する。
【００３６】
続いて、ステップＳＦ３では、カウンタｉＯｐｔの値が規定値ＯＰＴ＿ＭＡＸより小さいか否か、つまり規定の修正回数を行ったかどうかを判断する。規定の修正回数が行われると、判断結果は「ＮＯ」になり、本処理を完了させるが、規定の修正回数を行っていなければ、判断結果が「ＹＥＳ」になり、ステップＳＦ４に進む。ステップＳＦ４では、レジスタｉｆｉｇに「０」をセットする。レジスタｉｆｉｇには、後述するように、親指から小指までの運指を再評価させるためのインデックス値「０：親指」、「１：人差し指」、「２：中指」、「３：薬指」および「４：小指」がセットされる。
【００３７】
ステップＳＦ５では、レジスタｉｆｉｇの値が「５」より小さいか否か、すなわち親指から小指までの運指を再評価し終えたかどうかを判断する。運指を再評価し終えた場合には、判断結果が「ＮＯ」となり、後述するステップＳＦ１０に処理を進めるが、親指から小指までの運指を再評価し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＦ６を介して決定範囲評価処理（後述する）を実行する。
【００３８】
そして、ステップＳＦ７では、上記ステップＳＦ６において再評価された音の禁止条件ｉＮＰ（ｍｅ［ｉＮＰ］）が「０（禁止条件に該当せず）」であって、しかも再評価値（レジスタｉＣｏｓｔの値）がレジスタｉＲＣｏｓｔに格納される評価判定値より小さい場合、つまり弾きやすい運指に更新されたか否かを判断する。そして、上記判定条件に合致しなければ、判断結果は「ＮＯ」になり、ステップＳＦ９に進む。ステップＳＦ９では、次の指について運指を再評価すべくレジスタｉｆｉｇのインデックス値を歩進させて上述のステップＳＦ５に処理を戻す。
【００３９】
これに対し、上記判定条件に合致すると、ステップＳＦ７の判断結果が「ＹＥＳ」になり、ステップＳＦ８に進み、レジスタｍｅ［ｉｆｉｇ］に格納される再評価された音の運指（指番号）をレジスタｃｆｉｇＢｅｓｔにストアすると共に、レジスタｉＣｏｓｔの再評価値を、レジスタｉＲＣｏｓｔにストアして評価判定値を更新した後、ステップＳＦ９に進む。
【００４０】
このように、ステップＳＦ４〜ＳＦ９では、禁止条件に該当した音の運指ｍｅ［ｃｆｉｇ］を再評価すべく、その運指ｍｅ［ｃｆｉｇ］をレジスタｉｆｉｇのインデックス値に替えて親指から小指まで変化させながらステップＳＦ６において再評価を行い、その結果、禁止条件に該当せず、かつ最も評価判定値が小さく弾きやすい運指（指番号）になった場合に、その運指をレジスタｃｆｉｇＢｅｓｔにストアするようになっている。
【００４１】
そして、親指から小指までの再評価を終えると、ステップＳＦ５の判断結果が「ＮＯ」になり、ステップＳＦ１０に進み、レジスタｃｆｉｇＢｅｓｔの値が初期値「−１」のままであるかどうかを判断する。レジスタｃｆｉｇＢｅｓｔの値が初期値「−１」のままであると、判断結果は「ＮＯ」になり、ステップＳＦ１２に進み、修正回数をカウントするカウンタｉＯｐｔをインクリメントして歩進させてから上述のステップＳＦ３に処理を戻す。以後、カウンタｉＯｐｔの修正回数が規定値ＯＰＴ＿ＭＡＸを超えるまで前述のステップＳＦ３〜ＳＦ１０を繰り返す。
【００４２】
カウンタｉＯｐｔの修正回数が規定値ＯＰＴ＿ＭＡＸを超えるまでステップＳＦ３〜ＳＦ１０を繰り返す過程で、禁止条件に該当せず、かつ最も評価判定値が小さく弾きやすい運指（指番号）がレジスタｃｆｉｇＢｅｓｔにストアされると、ステップＳＦ１０の判断結果が「ＹＥＳ」になり、ステップＳＦ１１に進み、レジスタｃｆｉｇＢｅｓｔの再評価された運指（指番号）を、対応する音の運指データｍｅ［ｃｆｉｇ］に登録して本処理を終える。
【００４３】
＜評価範囲決定処理の動作＞
次に、図９を参照して評価範囲決定処理の動作を説明する。上述した修正処理のステップＳＦ２（図８参照）を介して本処理が実行されると、ＣＰＵ４は図９に図示するステップＳＧ１に処理を進める。ステップＳＧ１では、禁止条件に該当した運指データの一つ前の運指データｍｅ［ｐｒｅｖ］を区間先頭ポインタｍｅｆに、運指データｍｅ［ｐｒｅｖ］の次の運指データｍｅ［ｎｅｘｔ］を区間後端ポインタｍｅｔに設定する。
次いで、ステップＳＧ２では、ｍｅｆ［ｃＴｅｎｄｅｎｃｙ］、すなわち区間先頭ポインタｍｅｆで指定される運指データの高低傾向ｃＴｅｎｄｅｎｃｙが「０」であるかどうかを判断する。高低傾向ｃＴｅｎｄｅｎｃｙは、音列（曲データ）の高低傾向を表すデータであり、「０」の場合に極値（ピーク）を表す。したがって、このステップＳＧ２では、区間先頭ポインタｍｅｆが極値であるかどうかを判断する。
【００４４】
区間先頭ポインタｍｅｆが極値でなければ、判断結果が「ＮＯ」になり、ステップＳＧ３に進み、区間先頭ポインタｍｅｆをさらに一つ前の運指データに設定して上記ステップＳＧ２に処理を戻す。以後、極値の高低傾向ｃＴｅｎｄｅｎｃｙを有する運指データが見つかるまで区間先頭ポインタｍｅｆを運指データ中で遡らせ、極値の高低傾向ｃＴｅｎｄｅｎｃｙを有する運指データが見つかり、区間先頭が定まると、ステップＳＧ２の判断結果は「ＹＥＳ」となり、ステップＳＧ４に進む。
【００４５】
続いて、ステップＳＧ４では、区間後端ポインタｍｅｔが極値であるかどうかを判断する。区間後端ポインタｍｅｔが極値でなければ、判断結果は「ＮＯ」になり、ステップＳＧ５に進み、区間後端ポインタｍｅｔをさらに次の運指データに設定して上記ステップＳＧ４に処理を戻す。以後、極値の高低傾向ｃＴｅｎｄｅｎｃｙを有する運指データが見つかるまで区間後端ポインタｍｅｔを歩進させ、極値の高低傾向ｃＴｅｎｄｅｎｃｙを有する運指データが見つかり、区間後端が定まると、ステップＳＧ４の判断結果は「ＹＥＳ」となり、本処理を終える。
このように、評価範囲決定処理では、禁止条件に該当した運指データを有する音の前後において音の高低が入れ替われる音列区間を評価範囲に決定するようになっている。
【００４６】
＜決定範囲評価処理の動作＞
次に、図１０を参照して決定範囲評価処理の動作を説明する。上述した修正処理のステップＳＦ６（図８参照）を介して本処理が実行されると、ＣＰＵ４は図１０に図示するステップＳＨ１に処理を進め、レジスタｉＣｏｓｔに初期値「−１」をセットし、評価データ数をカウントするカウンタｉＣｎｔをゼロリセットする。さらに、レジスタｍｐに区間先頭ポインタｍｅｆをセットする。続いて、ステップＳＨ２では、ｍｐ≠ｍｅｔ［ｎｅｘｔ］、すなわちレジスタｍｐの区間先頭ポインタｍｅｆで指定される運指データが区間後端ポインタｍｅｔで指定される運指データに一致しないかどうか、つまり区間後端まで評価し終えたかどうかを判断する。
【００４７】
区間後端まで評価し終えていなければ、判断結果は「ＹＥＳ」になり、ステップＳＨ３を介して評価処理を実行する。評価処理は、図５に図示した第１実施形態の評価処理と同等であり、上述の評価範囲決定処理にて決定された評価範囲、つまり禁止条件に該当した運指データを有する音の前後で音の高低が入れ替われる音列区間において、評価対象音と次の音とを勘案して、評価対象音の運指の容易さを表す評価値を生成する。
その後、評価対象音の運指が「黒鍵の運指に親指や小指を割り当てない」、「和音時の運指逆転」および「運指可能幅を超えない」のいずれかの禁止条件に合致する場合には、禁止条件を解き、最も弾き難いことを表す禁止コストＮＯＴ＿ＰＥＲＭＩＴから修正回数ｉＯｐｔ＋１を減算した評価値を設定する。続いて、評価対象音と次の音との２音間の運指に係わる評価値をユーザ操作に応じて修正した後、修正した評価対象音の評価値が禁止コストＮＯＴ＿ＰＥＲＭＩＴより大きければ、評価対象音の評価値を修正回数ｉＯｐｔ分減算する。
【００４８】
こうした評価処理を終えると、ステップＳＨ４に進み、評価データ個数をカウントするカウンタｉＣｎｔをインクリメントして歩進させると共に、評価処理で得られた評価値ｉＣｏｓｔを累算する。次いで、ステップＳＨ５では、レジスタｍｐに格納されるポインタを歩進させた後、ステップＳＨ２に処理を戻す。以後、レジスタｍｐが区間後端ポインタｍｅｔに達するまでステップＳＨ２〜ＳＨ５を繰り返す。そして、評価範囲（禁止条件に該当した運指データを有する音の前後において音の高低が入れ替われる音列区間）の全ての音について評価を完了すると、ステップＳＨ２の判断結果が「ＮＯ」となり、ステップＳＨ６に進み、累算評価値を評価データ個数で除算して得た平均評価値ｉＣｏｓｔ／ｉＣｎｔを、禁止条件に該当した運指データの評価値ｉＣｏｓｔとする。
【００４９】
このように、第２実施形態では、禁止条件に該当した不適切な運指データを有する音の前後において音の高低が入れ替われる音列区間を評価範囲に設定し、その評価範囲にある音の運指データの内から禁止条件に該当した不適切な運指データを検索し、該当する運指データを親指から小指まで変化させながら再評価を行い、禁止条件に該当せず、かつ最も評価判定値が小さく弾きやすい運指（指番号）になった場合に、それを新たな運指データとして登録し直すようにしている。
【００５０】
そして、再評価を行う評価処理（図５参照）では、第１実施形態と同様、評価対象音と次の音とを勘案して、評価対象音の運指の容易さを表す評価値を生成する一方、評価対象音の運指が「禁止条件１：黒鍵の運指に親指や小指を割り当てない」、「禁止条件２：和音時の運指逆転」および「禁止条件３：運指可能幅を超えない」のいずれかの禁止条件に合致する場合には、禁止条件を解き、最も弾き難いことを表す禁止コストＮＯＴ＿ＰＥＲＭＩＴから修正回数ｉＯｐｔ＋１を減算した評価値を設定したり、評価対象音と次の音との２音間の運指に係わる評価値をユーザ操作に応じて修正した後、修正した評価対象音の評価値が禁止コストＮＯＴ＿ＰＥＲＭＩＴより大きければ、評価対象音の評価値を修正回数ｉＯｐｔ分減算したりする。この結果、修正回数に応じて評価判定値が緩和されて最終的に不適切な運指と判定されなくなる為、不適切な運指を修正することが可能になる。加えて、運指の評価値を修正する際に、禁止条件に該当した不適切な運指データを有する音の前後において音の高低が入れ替われる音列区間を評価範囲に設定するため、音楽的により自然な運指に修正することが可能になっている。
【図面の簡単な説明】
【００５１】
【図１】本発明による第１実施形態の構成を示すブロック図である。
【図２】曲データおよび運指データを備えた楽曲データの構成を示す図である。
【図３】メインルーチンの動作を示すフローチャートである。
【図４】修正処理の動作を示すフローチャートである。
【図５】評価処理の動作を示すフローチャートである。
【図６】禁止条件判定処理の動作を示すフローチャートである。
【図７】評価補正処理の動作を示すフローチャートである。
【図８】第２実施形態による修正処理の動作を示すフローチャートである。
【図９】第２実施形態による評価範囲決定処理の動作を示すフローチャートである。
【図１０】第２実施形態による決定範囲評価処理の動作を示すフローチャートである。
【符号の説明】
【００５２】
１  データ入力部
２  表示部
３  データ指定部
４  ＣＰＵ
５  ＲＯＭ
６  ＲＡＭ
【図１】
0004543832.tif 000002
【図２】
0004543832.tif 000003
【図３】
0004543832.tif 000004
【図４】
0004543832.tif 000005
【図５】
0004543832.tif 000006
【図６】
0004543832.tif 000007
【図７】
0004543832.tif 000008
【図８】
0004543832.tif 000009
【図９】
0004543832.tif 000010
【図１０】
0004543832.tif 000011