(57)【要約】【課題】可能な限りの候補を出し総合的な評価により候補の絞込みを行い、演奏データを細かく分離して運指分析を行う運指情報分析システムを提供すること。【解決手段】このシステムでは、各音符Ｎｉが音高情報を持つ一連の音符列ＮＳを取得すると（２）、取得された音符列ＮＳにおいて隣り合う音符の音高情報８３，８２；８２，８０；…に基づいて、全ての可能な運指候補ＦＣ＝「候補１」〜「候補４」が抽出され（Ｃｓ）、これらの中から最適な運指ＦＣｍが決定される（Ｃｄ）。運指候補ＦＣの評価には、指交差（→，←）を伴う運指の出現状況、隣り合う音符（Ｎｉ，Ｎｉ＋１）に対応する運指「１」〜「５」の移動状態又は運指する指種類「１」〜「５」の出現状態が用いられる。また、各音符Ｎｉの時間情報から検出される所定休符長以上の休符位置で音符列ＮＳを複数区間に分割した後、区間毎に運指候補ＦＣを抽出して処理効率を上げる。【選択図】図２
2005227421.tif 000002
【特許請求の範囲】
【請求項１】
各音符が音高情報を持つ一連の音符列を取得する音符列取得手段と、
取得された音符列において隣り合う音符の音高情報に基づいて、全ての可能な運指候補を抽出する候補抽出手段と、
抽出された運指候補の中から最適な運指を決定する運指決定手段と
を具備することを特徴とする運指情報分析装置。
【請求項２】
各音符が音高情報を持つ一連の音符列を取得する音符列取得ステップと、
取得された音符列において隣り合う音符の音高情報に基づいて、全ての可能な運指候補を抽出する候補抽出ステップと、
抽出された運指候補の中から最適な運指を決定する運指決定ステップと
から成る手順をコンピュータに実行させるための運指情報分析プログラム。
【請求項３】
前記候補抽出ステップでは、取得された音符列から可能な運指候補が抽出されなかった場合、該音符列を複数の区間に分割して、夫々の区間において可能な運指候補を抽出し、
前記運指決定ステップでは、分割された夫々の区間で抽出された運指候補の中から最適な運指を決定する
請求項２に記載の運指情報分析プログラム。
【請求項４】
前記運指決定ステップでは、抽出された運指候補について、指交差を伴う運指の出現状況、運指に伴う指の移動状態又は運指する指種類の出現状態に基づいて、最適な運指を決定する請求項２又は３に記載の運指情報分析プログラム。
【請求項５】
前記音符列取得ステップで取得される音符列の各音符は、音高情報の他に時間情報を持ち、
前記候補抽出ステップでは、取得された音符列から、所定時間以上音符が途切れる位置を検出し、途切れが検出された位置で当該音符列を複数の区間に分割し、夫々の区間において可能な運指候補を抽出し、
前記運指決定ステップでは、分割された夫々の区間について、抽出された運指候補の中から最適な運指を決定する
請求項２〜４の何れか１項に記載の運指情報分析プログラム。
【請求項６】
前記候補抽出ステップでは、取得された音符列から分割された区間の音符数が所定数よりも多い場合、更に当該区間を分割する請求項５に記載の運指情報分析プログラム。
【請求項７】
前記運指決定ステップでは、各区間で抽出された運指候補について、隣り合う区間の接続が可能かどうかを判定し、接続が可能な場合に、当該両区間にわたる最適な運指を決定する請求項５又は６に記載の運指情報分析プログラム。
【請求項８】
前記候補抽出ステップでは、取得された音符列の中で、発音時間の重なる音符を識別し、これらの音符に指交差を伴う運指が付かない運指候補を抽出する請求項２〜７の何れか１項に記載の運指情報分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、演奏データを分析して最適な運指を決定するための運指情報分析システムに関する。
【背景技術】
【０００２】
従来より、例えば、特許文献１に示されるように、一連の音符列を分析して各音符情報に対する運指情報を自動生成する装置が知られており、運指情報を生成する際には、なるべく、指くぐりなどを示す運指がない、若しくは、指くぐりなどを示す運指がなるべく遅くに現れるように制御されている。
【特許文献１】特許第２９５０１３８号公報
【０００３】
このように指くぐりなどを示す運指は難しいとされる面もあるが、指くぐりなどの運指を避けることで必ずしも弾きやすい運指情報を得られるとは限らないので、より的確で弾きやすい運指情報を生成する方法の出現が望まれている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、このような事情に鑑み、演奏データを分析して可能な限りの候補を出し総合的な評価により候補の絞込みを行うことで的確で弾きやすい運指情報を生成することができ、さらに、演奏データを細かく分離して運指分析を行うことで分析処理の効率を上げ分析精度を向上することができる運指情報分析システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明の主たる特徴に従うと、各音符（Ｎｉ）が音高情報を持つ一連の音符列（ＮＳ）を取得する音符列取得手段（２；Ｓ１）と、取得された音符列（ＮＳ）において隣り合う音符（Ｎａ＝ＮＡ，Ｎａ＋１＝ＮＢ）の音高情報に基づいて、全ての可能な運指候補（ＦＣ）を抽出する候補抽出手段（Ｃｓ；Ｓ２〜Ｓ８）と、抽出された運指候補（ＦＣ）の中から最適な運指（ＦＣｍ）を決定する運指決定手段（Ｃｄ；Ｓ９〜Ｓ１２）とを具備する運指情報分析装置〔請求項１〕、並びに、各音符（Ｎｉ）が音高情報を持つ一連の音符列（ＮＳ）を取得する音符列取得ステップ（Ｓ１）と、取得された音符列（ＮＳ）において隣り合う音符（Ｎａ，Ｎａ＋１）の音高情報に基づいて、全ての可能な運指候補（ＦＣ）を抽出する候補抽出ステップ（Ｓ２〜Ｓ８）と、抽出された運指候補（ＦＣ）の中から最適な運指（ＦＣｍ）を決定する運指決定ステップ（Ｓ９〜Ｓ１２）とから成る手順をコンピュータに実行させるための運指情報分析プログラム〔請求項２〕が提供される。なお、括弧書きは、理解の便のために、対応する実施例の参照記号、参照箇所等を付記したものであり、以下においても同様である。
【０００６】
この発明の運指情報分析プログラムは、候補抽出ステップ（Ｓ２〜Ｓ８）では、取得された音符列（ＮＳ）から可能な運指候補が抽出されなかった場合、該音符列（ＮＳ）を複数の区間に分割して、夫々の区間において可能な運指候補（ＦＣ）を抽出し（Ｓ６〜Ｓ８＝〔１・２〕）、運指決定ステップ（Ｓ９〜Ｓ１２）では、分割された夫々の区間で抽出された運指候補（ＦＣ）の中から最適な運指（ＦＣｍ）を決定する（Ｓ１２＝〔１・３〕）〔請求項３〕ように構成することができる。
【０００７】
また、この発明の運指情報分析プログラムは、運指決定ステップ（Ｓ９〜Ｓ１２）では、抽出された運指候補（ＦＣ）について、指交差（→，←）を伴う運指の出現状況（〔ａ〕）、運指に伴う指の移動状態（〔ｂ〕）又は運指する指種類の出現状態（〔ｃ〕）に基づいて、最適な運指を決定する（Ｓ１２＝〔１・３〕）〔請求項４〕ように構成することができる。
【０００８】
さらに、この発明の運指情報分析プログラムは、音符列取得ステップ（Ｓ１）で取得される音符列（ＮＳ）の各音符（Ｎｉ）は、音高情報の他に時間情報を持ち、候補抽出ステップ（Ｓ２〜Ｓ８）では、取得された音符列（ＮＳ）から、所定時間以上音符が途切れる位置を検出し、途切れが検出された位置で当該音符列（ＮＳ）を複数の区間に分割し（Ｓ２＝〔２・１〕，Ｓ３＝〔３・１〕）、夫々の区間において可能な運指候補を抽出し（Ｓ５）、運指決定ステップ（Ｓ９〜Ｓ１２）では、分割された夫々の区間について、抽出された運指候補（ＦＣ）の中から最適な運指を決定する（〔３・１〕〜〔３・４〕）〔請求項５〕ように構成することができる。
【０００９】
この運指情報分析プログラムは、また、候補抽出ステップ（Ｓ２〜Ｓ８）では、取得された音符列（ＮＳ）から分割された区間の音符数が所定数よりも多い場合、更に当該区間を分割する（Ｓ２＝〔２・２〕）〔請求項６〕ように構成することができ、さらに、運指決定ステップ（Ｓ９〜Ｓ１２）では、各区間で抽出された運指候補（ＦＣｐ）について、隣り合う区間の接続が可能かどうかを判定し、接続が可能な場合に、当該両区間にわたる最適な運指を決定する（Ｓ１１〜Ｓ１２＝〔３・３〕）〔請求項７〕ように構成することができる。
【００１０】
さらに、この発明の運指情報分析プログラムは、候補抽出ステップ（Ｓ２〜Ｓ８）では、取得された音符列（ＮＳ）の中で、発音時間の重なる音符（Ｎ２〜Ｎ４）を識別し、これらの音符（Ｎ２〜Ｎ４）に指交差（→，←）を伴う運指が付かない運指候補（ＦＣ）を抽出する（Ｓ５＝〔４・２〕）〔請求項８〕ように構成することができる。
【発明の効果】
【００１１】
この発明による運指情報分析システムでは、演奏データなどの少なくとも音高情報を持つ一連の音符列（ＮＳ）が供給されると、隣り合う音符（Ｎａ＝ＮＡ，Ｎａ＋１＝ＮＢ）の音高情報に基づいて全ての可能な運指候補（ＦＣ）を抽出し、可能な運指候補の中から最適な運指（ＦＣｍ）を検出するようにしている。つまり、演奏データを分析して最適な運指情報を決定する際に、可能な限りの運指候補（ＦＣ）を洗い出してから総合的な評価を行って最適運指（ＦＣｍ）に絞り込むようにしているので、的確で弾きやすい運指情報を生成することができる。
【００１２】
この発明では、可能な運指候補が１つも抽出されなかった場合でも、音符列（ＮＳ）を複数区間に分割し、それぞれの区間において可能な運指候補を抽出することにより、分割された夫々の区間で抽出された可能な運指候補の中から最適な運指（ＦＣｍ）を確実に検出することができる。
【００１３】
この発明では、抽出された運指候補（ＦＣ）について、指交差（→，←）を伴う運指の出現状況（〔ａ〕）、運指に伴う指の移動状態（〔ｂ〕）又は運指する指種類の出現状態（〔ｃ〕）の少なくとも１つに基づいて評価し、最適な運指（ＦＣｍ）を決定する。このように、客観的な評価基準に従って運指候補（ＦＣ）の評価を行うことにより、最適な運指（ＦＣｍ）を的確に決定することができる。
【００１４】
また、この発明では、供給される音符列（ＮＳ）の各音符（Ｎｉ）は、音高情報の他に、少なくとも時間情報を持つものとし、これらの時間情報を参照することによって、音符列（ＮＳ）において所定時間以上音符の途切れる休符位置を検出し、この休符位置で、ブロック或いはフレーズと呼ばれる複数の区間に分割し、分割された各区間に対して、隣り合う音符の音高情報に基づき全ての可能な運指候補（ＦＣ）を抽出し、可能な運指候補の中から最適な運指（ＦＣｍ）を検出する。さらに、このような複数区間の分割の際に各区間内の音符数が所定数よりも多い場合には、更にその区間を分割する。このように、演奏データなどの音符列を細かく分割してから夫々の区間で運指候補を抽出する処理を行うようにしているので、運指情報分析の処理効率を上げ、運指付けの精度を向上させることができる。
【００１５】
この発明では、区間分割を行った場合は、一旦分割された各区間について可能な運指候補（ＦＣｐ）を抽出した後、隣り合う区間の接続が可能かどうかを判定し、接続が可能な場合には、各区間を再接続し、再接続された区間で最適な運指（ＦＣｍ）を検出するようにしているで、長い演奏データでも、運指の動きが滑らかで的確な運指情報を生成することができる。
【００１６】
この発明では、音符列（ＮＳ）の中から、発音時間の重なる和音状態の音符（Ｎ１〜Ｎ４）が識別されると、同一の和音状態の音符同士に指交差（→，←）を伴う運指が付かないように制御して、可能な運指候補を抽出するようにしているので、無理のない的確な運指情報を生成することができる。
【発明を実施するための最良の形態】
【００１７】
〔システム構成〕
図１は、この発明の一実施例による運指情報分析システムのハードウエア構成例を示す。運指情報分析システムが構築される情報処理装置（コンピュータ）には、パーソナルコンピュータ等の汎用の情報処理装置を用いても、電子楽器などの音楽専用の情報処理装置を用いてもよいが、以下の例では、パーソナルコンピュータに演奏入力及び楽音生成機能を設けたものが用いられる。この情報処理装置は、中央処理装置（ＣＰＵ）１、ランダムアクセスメモリ（ＲＡＭ）２、読出専用メモリ（ＲＯＭ）３、外部記憶装置４、入力操作部５、表示部６、音源部７、通信インターフェース（通信Ｉ／Ｆ）８等の要素を備え、これら要素１〜８はバス９を介して互いに接続される。
【００１８】
装置全体を制御するＣＰＵ１は、運指情報分析プログラムを含む各種制御プログラムに従って各種処理を実行し、ＲＡＭ２は、これらの処理で利用される種々の情報を一時的に記憶するための処理バッファとして機能する。また、ＲＯＭ３は、例えば、運指情報分析処理を実行するための運指情報分析プログラムなどを含む各種制御プログラムや必要な制御データ、演奏データ等の各種データを記憶しており、運指情報分析プログラムには運指可能テーブル（Ｆｔ）が含まれる。
【００１９】
外部記憶装置４は、ハードディスク（ＨＤ）や、コンパクトディスク・リード・オンリィ・メモリ（ＣＤ−ＲＯＭ）、フレキシブルディスク（ＦＤ）、光磁気（ＭＯ）ディスク、ディジタル多目的ディスク（ＤＶＤ）、メモリカード等の記憶媒体を用いた記憶手段である。運指情報分析プログラムや演奏データ等の各種プログラム及びデータは、ＲＯＭ３だけでなく外部記憶装置４に記憶させることができる。
【００２０】
例えば、ＲＯＭ３に運指情報分析プログラム等の制御プログラムが記憶されていない場合、ＨＤやＣＤ−ＲＯＭなどの外部記憶装置４に制御プログラムを記憶させておきそれをＲＡＭ２に読み込むことで、ＲＯＭ３に制御プログラムを記憶している場合と同様の動作をＣＰＵ１にさせることができ、制御プログラムの追加やバージョンアップ等を容易に行うことができる。また、運指情報分析処理に用いられるプログラムや必要な制御データ等をインストールすることによって、所望の運指情報分析装置を実現することができる。
【００２１】
入力操作部５は、鍵盤などの演奏操作子や、各種設定、運指情報分析処理の開始及び停止などを指示するためのパネル操作子を含む操作部と操作検出回路から成り、これら操作子を用いたユーザによる演奏操作やパネル操作の内容を操作検出回路で検出し、対応する入力情報をシステム本体内に導入する。表示部６は、これに接続されるディスプレイ（ＣＲＴ、ＬＣＤ等の表示器）１０の表示内容や各種インジケータの点灯状態をＣＰＵ１からの指令に従って制御し、入力操作部５の操作に対する表示援助を行う。
【００２２】
音源部７は、音源（ソフトウエアを含む）や効果付与ＤＳＰを含み、ＣＰＵ１で処理された演奏データに対応する楽音信号を生成し、音源部７に接続されるサウンドシステム１１は、Ｄ／Ａ変換部やアンプ、スピーカを備え、音源部７からの楽音信号に基づく楽音を発生する。
【００２３】
また、図示の通信Ｉ／Ｆ８は、ローカルエリアネットワーク（ＬＡＮ）や、インターネット、電話回線などの一般用通信ネットワーク、或いは、ＭＩＤＩ用ネットワークに接続される各種インターフェースを一括して表わしており、サーバ等の他のコンピュータやＭＩＤＩ機器などの種々の外部機器１２と各種情報を授受することができる。例えば、この装置に制御プログラムやデータが記憶されていない場合、通信Ｉ／Ｆ８を介して他のコンピュータ１２から制御プログラム等をダウンロードすることができる。また、外部機器１２に、他の鍵盤楽器などの演奏データ入力装置を含む各種ＭＩＤＩ機器を用いて、実演奏データや自動演奏データを通信Ｉ／Ｆ８から取り込むこともできる。
【００２４】
〔運指情報生成の原理〕
この発明の一実施例による運指情報分析システムでは、供給された音符列の隣り合う音符から、可能性のある全ての運指の組合せを洗い出（抽出）した後、所定の条件で最適の運指を絞り込む「全運指候補洗出し手法」と呼ばれる手法を採用する。図２は、この発明の一実施例による運指情報生成の原理及び運指候補の一例を示し、図３は、運指候補総洗出しに用いられる運指可能テーブルの一例を示す。
【００２５】
ここで、この運指情報分析システムの概要を極く簡単に説明しておく。このシステムでは、各音符Ｎｉが音高情報を持つ一連の音符列ＮＳを取得すると（２）、取得された音符列ＮＳにおいて隣り合う音符の音高情報８３，８２；８２，８０；…に基づいて、全ての可能な運指候補ＦＣ＝「候補１」〜「候補４」が抽出され（Ｃｓ）、これらの中から最適な運指ＦＣｍが決定される（Ｃｄ）。運指候補ＦＣの評価には、指交差（→，←）を伴う運指の出現状況、隣り合う音符（Ｎａ，Ｎａ＋１）に対応する運指「１」〜「５」の移動状態又は運指する指種類「１」〜「５」の出現状態が用いられる。また、各音符Ｎｉの時間情報から検出される所定休符長以上の休符位置で音符列ＮＳを複数区間に分割した後、区間毎に運指候補ＦＣを抽出して処理効率を上げる。
【００２６】
運指を片手で考えた場合、音符列中の或る音符に付く指の可能性は指の数「５」だけあり、指が移動できる範囲や状況は、鍵盤の位置と移動前の指によって決定される。そこで、このシステムでは、全ての音符に５指が付く可能性があるとして、各指が移動可能かどうかを表わす「運指可能テーブル」を用意し、運指可能テーブルで指の動きを制御しつつ運指の総洗出しを行う。そして、このような「全運指候補洗出し手法」により洗い出された全ての運指候補の中で最適なものをいくつかの方法を用いて絞り込み、運指情報を生成する。このように全ての候補を洗い出すことにより、絞込みの精度によって実用性のある運指を確実に付けることができる。
【００２７】
この運指情報分析システムにおいて運指情報生成の対象とする音符列ＮＳは、夫々音高情報（ノート番号等）や時間情報（タイミングデータ、ゲートタイム等）を有する複数の音符Ｎｉ（ｉ＝１，２，…，ｎ）から成っており、例えば、ＭＩＤＩ形式で表現される。このような音符列ＮＳは、図２（１）のように、ＲＯＭ３又は外部記憶装置４或いは外部ＭＩＤＩ機器１２などの演奏データ供給手段からＲＡＭ２上に供給される曲データ等の演奏データから得られる。
【００２８】
このシステムでは、演奏データ供給手段から入力される音符列ＮＳが音符列取得手段（ＲＡＭ２）に取り込まれると、まず、運指可能洗出し手段Ｃｓは、これら音符を含む一連の音符列ＮＳに対して、各音符Ｎｉの音高情報に基づいて鍵盤位置を決定し、隣り合う音符Ｎａ，Ｎａ＋１（ａ＝１〜ｎ−１）の鍵盤位置を基にして、図３に一例が示される運指可能テーブルＦｔによる抽出条件に従って、例えば、図２（２）に示されるように、指が移動可能な全ての運指候補ＦＣを洗い出す。そして、絞込み手段Ｃｄは、洗い出された運指候補ＦＣに対し所定の条件で絞込みを実施して最終的な運指列情報ＦＣｍを決定する。
【００２９】
各運指候補ＦＣは、音符列ＮＳの各音符Ｎｉに対応して運指されるべき指の種類等を表わす指情報を順次配列した一連の指情報列（運指列ともいう）で構成される。また、運指候補ＦＣ中の各指情報は、運指する指の種類（指種類）を表わすのに、所定の指記号（指番号）〔後述する移動可能情報（○，→，←）などの付属情報を含めて運指記号（運指番号）とも呼ばれる〕が用いられる。
【００３０】
以下の説明では、指種類を表わすのに指番号を用いて、右手の親指を「１」、人差指を「２」、中指を「３」、薬指を「４」、小指を「５」で表現する。なお、これとは逆に、小指「１」、薬指「２」、…、親指「５」としてもよい。このような指番号を用いると、各指の種類だけでなく相対的位置関係が分かるので、後述するように、運指の移動状態を把握するのに好都合である（〔１・３〕〔ｂ〕参照）。
【００３１】
〔１・１〕全運指候補の洗出し
次に、運指可能テーブルＦｔの機能を図３の例に従って説明する。運指可能テーブルＦｔは、音符列ＮＳ中の或る音符ＮＡに対応する鍵を或る指（基準指）ｆａで押鍵した後、次の音符ＮＢに対応する鍵を５指の夫々（移行指）ｆｂで押鍵しようとする場合（ＮＡ→ＮＢ）、次の指ｆｂへの移動（ｆａ→ｆｂ）の可否を決定するのに用いられ、基準指ｆａと移行指ｆｂの組合せ毎に備えられる。
【００３２】
従って、このような運指テーブルは、各基準指ｆａ毎に５つの移行指ｆｂ分存在し、例えば、右手の場合、指番号で表わすと、親指「１」→親指「１」、親指「１」→人差指「２」、親指「１」→中指「３」、…、小指「５」→薬指「４」，小指「５」→小指「５」の２５テーブルある。つまり、テーブル総数は、片手だけで２５タイプ、両手では５０タイプとなるが、以下の具体例では、右手についてのみ説明する。
【００３３】
つまり、押鍵中の音符ＮＡを「基準音」と呼び、次に押鍵すべき音符ＮＢを「移行音」と呼ぶと、「ｆａ→ｆｂ」タイプの運指可能テーブルＦｔは、或る基準音ＮＡを或る基準指ｆａで弾いた後、或る移行音ＮＢを移行指ｆｂで弾こうとする場合に、基準音ＮＡから移行音ＮＢへの移行（「音符移行ＮＡ→ＮＢ」という）の全ての組合せについて、基準指ｆａから移行指ｆｂへの指の移動（「ｆａ→ｆｂ」で表わす）が可能か否かを移行可否情報で表わす。例えば、図３の運指可能テーブルＦｔ２は、基準指ｆａ＝親指「１」、移行指ｆｂ＝人差指「２」とした「１→２」タイプのテーブルを示しており、親指「１」を軸に人差指「２」が移動できる範囲が設定されている。このテーブルＦｔ２中の移動可否情報（○，→，←，×）は、図３のテーブル各基準音ＮＡから各移行音ＮＢへの移行の全組合せに対して親指から人差指への移動＝「１→２」が可能か否かを表わす。
【００３４】
移動可否情報には、基準指ｆａから移行指ｆｂへの移動が可能であることを表わす移動可能情報（○，→，←）と、これが不可能であることを表わす移動不能情報（×）とがあり、移動可能情報については、指の交差なく普通の指移動により移行できることを表わす普通可能情報（○）と、指越え又は指くぐりなどの指交差により移行できることを表わす条件付可能情報（→，←）がある。図３の例では、普通可能情報を記号“○”で示し、条件付可能情報は、指越えにより移動可能なものを記号“←”で示し、移動不能情報を記号“×”で示している。なお、指くぐりにより移動可能なものは（図示せず）、記号“→”で示す。
【００３５】
基準音ＮＡの音高情報は鍵盤位置を表わす基準音鍵盤位置情報として用いられ、移行音ＮＢの音高情報は鍵盤位置を表わす移行音鍵盤位置情報として用いられる。図３では、各音ＮＡ，ＮＢの音高情報はノート番号で表示され、基準音ＮＡは縦軸に配置され、移行音ＮＢは横軸に配置される。また、各音高情報が表わす鍵盤位置のうち、斜線が施された鍵盤位置は黒鍵を示しており、基準音ＮＡ及び移行音ＮＢに対応する鍵盤位置は、音高順に並べると１オクターブの繰返しパターンとなる。
【００３６】
従って、運指可能テーブルＦｔの基準音ＮＡの鍵盤位置情報は、図３に示すように、例えば、Ｃ３〜Ｂ３というように、１オクターブの特定音域の範囲のものであればよく、運指可能テーブルＦｔで指定される特定音域を超える範囲の基準音ＮＡ’については、移行音ＮＢに対応する移動可否情報を、特定音域を超えるオクターブ分だけシフトする。例えば、基準音ＮＡ’＝Ｃ２〜Ｂ２に対する「１→２」タイプの移動可否情報は、テーブルＦｔ２（図３）中の移行音ＮＢの移動可否情報を−１オクターブ分（図示の左側に）シフトしたものを用いて、指移動「１→２」の可／不可を判断する。また、これとは逆に、基準音ＮＡ”＝Ｃ４〜Ｂ４には、＋１オクターブ分（同、右側に）シフトしたものを用いる。
【００３７】
運指可能洗出し手段Ｃｓでは、２５タイプ全ての運指可能テーブルＦｔを参照して、供給された音符列ＮＳにおける或る音符から次の音符への移行毎に、対応する基準音ＮＡ及び移行音ＮＢに移動可能情報（○，←，→）が付けられているか否かを調べ、移動可能情報が付いているテーブルがあれば、当該テーブルの基準指ｆａ及び移行指ｆｂを運指可能とする。この場合、次の音符移行については、運指可能とされた移行指ｆｂを新たな基準指ｆａとする運指可能テーブルのみを参照し、移動可能情報が付いていれば、このテーブルの移行指ｆｂを新たな基準指ｆａとする更なる運指可能テーブルを用いて更に次の音符移行の運指可能判断に進んで行く。一方、新たな運指可能テーブルに移動不能情報（×）が付いていれば、そこで運指可能判断を中断する。そして、当該音符列ＮＳ中の全ての音符移行につき運指可能と判断された運指列を全て洗い出して運指候補ＦＣを抽出する。
【００３８】
図２（２）の例は、音符列“Ｂ４−Ｂ♭４−Ｇ♯４−Ｆ♯４−Ｇ♯４−Ｆ♯４−Ｆ♯４”に対する全ての運指可能な運指候補ＦＣを示す。各運指候補ＦＣが表わす運指列は、全てのタイプの運指可能テーブルＦｔを参照して、この音符列の全ての音符移行（Ｎｉ＝ＮＡ→Ｎｉ＋１＝ＮＢ）：Ｂ４→Ｂ♭４，Ｂ♭４→Ｇ♯４，…，Ｆ♯４→Ｆ♯４が移動可能（○，←，→）であるテーブルを洗い出し、各テーブルの基準指ｆａ及び移行指ｆｂから各運指を決定することにより得られる。
【００３９】
運指可能洗出し手段Ｃｓにより運指候補ＦＣを洗い出す場合、候補ＦＣの各指情報（運指情報）には、付属情報として、指番号（運指番号）だけでなく、図２（２）に括弧書きで示すように、移動可能情報が示す運指内容（“○”＝通常、“←”＝指越え、“→”＝指くぐり）を含ませることが好ましい。
【００４０】
〔１・２〕洗出し区間の分割
なお、運指移動テーブルＦｔを利用して運指候補を洗い出す際に、音符列ＮＳによっては、音高の並び状態によって、どうしても移動不可能な場所が発生する場合がある。このように、運指可能洗出し手段Ｃｓにより、或る音符列ＮＳについて可能な運指候補の洗出し（抽出）を行った結果、運指候補ＦＣが得られなかった（ゼロだった）場合には、運指移動テーブルＦｔを用いた運指候補ＦＣの洗出し過程で得られる可能な運指列の中で、最長の運指列、即ち、運指列の抽出が最も先の音符まで到達できたものを、洗出し開始位置からこの到達位置までの区間の運指候補ＦＣとして選出する。
【００４１】
この場合、最長運指列の到達位置（最長運指列を得た最後の音符の直後）で運指候補の抽出をリセットして、このリセット位置で音符列ＮＳを複数の洗出し区間に分割し、この分割により残ったリセット位置以降の区間を新たな洗出し区間とし、新たな洗出し区間について、あらためて運指移動テーブルＦｔを用いて運指の洗出しを実行する。このように、運指候補がゼロの音符列ＮＳについては、１乃至複数回の洗出し区間分割を行い、新たな洗出し区間毎に最大長の運指候補ＦＣを求めて、最終的には、音符列ＮＳの終端まで運指候補ＦＣを洗い出していき、音符列ＮＳの全ての区間について運指候補を抽出する。
【００４２】
〔１・３〕運指候補の絞込み
さて、運指可能洗出し手段Ｃｓで複数の運指候補ＦＣが洗い出された（抽出された）場合は、次の絞込み手段Ｃｄにおいて、運指候補を絞り込むことによって最適運指（最適運指列ともいう）ＦＣｍを求める。絞込み手段Ｃｄでは、次の〔ａ〕〜〔ｃ〕の３種類の絞込みが行われる。
【００４３】
〔ａ〕第１の絞込み（指交差による評価）
まず、第１の絞込みでは、洗い出された全運指候補ＦＣについて、移動可能情報（○，→，←）の運指内容に基づく絞込みを行う。すなわち、各運指内容を参照して「指くぐり」（→）と「指越え」（←）を含む指交差の程度を評価して指交差評価値を求め、指交差評価値が小さい運指候補を選択する。指交差評価値として、例えば、「指くぐり」及び「指越え」回数の合計を計算し、合計値の少ない運指候補を選ぶ。従って、図２（２）の例では、指交差のない「候補３」及び「候補４」が選択される。なお、指交差評価値が同等の運指候補が複数出現した場合には、全て残し、第２絞込み以下の他の手法で更に絞りこむ。
【００４４】
〔ｂ〕第２の絞込み（指移動度による評価）
次に、第２の絞込みでは、第１の絞込みが適用された運指候補ＦＣの運指列において隣り合う音符Ｎａ，Ｎａ＋１（図２（２）：Ｂ４，Ｂ♭４；Ｂ♭４，Ｇ♯４；…）に対応する各指移動の距離（例えば、各指番号の差の絶対値）を累計し、この累計値の大きい運指候補を選択する。この場合、指交差（→，←）によって移動を許可された隣り合う運指番号については、差の絶対値に−１をかけた数値を利用して累計値を計算する。この累計値は、運指候補ＦＣの運指列による指移動の程度（大きさ）＝指移動度＝を指移動の総距離で示しており、運指に伴う指の移動状態を表わす指標となる。
【００４５】
なお、最大の累計値となる運指候補が複数あった場合〔図２（２）の例では、「候補３」及び「候補４」の距離累計値は同値〕には、これらの候補を残し、第３段階以下の他の方法で更に絞り込む。なお、洗い出された全運指候補ＦＣについて、まず、第２の絞込みを実施し、その後、第１の絞込みを実施するように、絞込み順序を逆にしてもよい。
【００４６】
〔ｃ〕第３の絞込み（指優先度による評価）
さらに、第３の絞込みでは、予め各指に優先度値を決めておき、運指候補ＦＣの各指の優先度値から運指列全体の累計値を計算し、計算された優先度累計値が最大の運指候補を残す。つまり、指種類毎に所定の優先度を与えておき、運指する指種類の出現状態から、運指候補ＦＣをより客観的に評価しようとするものである。
【００４７】
このような優先度値については、例えば、指種類毎に指使いのし易さを数値で表わし、親指（１）＝０．４、人差指（２）＝１．０、中指（３）＝０．９、薬指（４）＝０．７、小指（５）＝０．５とする。この優先度値の設定例に従うと、図２（２）の例では、「候補３」及び「候補４」の優先度累計値は、夫々、“４．８”、“６．０”となるので、「候補４」が選択される（なお、「候補１」及び「候補２」は、夫々、“４．５”、“５．９”）。
【００４８】
絞込み手段Ｃｄにより、このような第１〜第３の絞込みを経ることにより、最適の運指ＦＣｍが決定され、図２（２）の例では、「候補４」が最適運指ＦＣｍとなる。
【００４９】
〔ブロック分割と音符数制限〕
上述の説明のように、可能性のある全ての運指の組合せを洗い出して所定の条件で最適運指に絞り込む「全運指候補洗出し手法」を利用すると、全ての候補を洗い出すことから、絞込みの精度によって実用性のある運指が確実に得られる。しかしながら、全ての候補を洗い出すにはコンピュータへの負担が大きく、また、曲によっては不具合が発生し洗出し結果が得られない場合もある。そこで、この発明の一実施例による運指情報分析システムでは、区間分割により、マシン負担軽減を考慮して運指情報を分析し決定する。
【００５０】
〔２・１〕ブロック分割
区間分割の第１の方法は、「ブロック分割」と呼ばれる。つまり、運指の対象とする音符列を、絶対に運指が連続しない「ブロック」と呼ばれる区間に予め分割することによって、「全運指候補洗出し方法」を実行する際に負荷の軽減を図ることができ、更に、音符数の制限を実行することにより、極端に負荷が高くなって運指情報分析プログラムの処理動作が遅くなるのを防止することができる。また、ブロック分割の際には、内部時間によらず、実時間を利用して休符により分割を行うことによって、更に精度の向上を図ることができる。
【００５１】
まず、ブロック分割については、供給された音符列ＮＳから休符を洗い出し、所定長以上の休符を検索し、検索された休符位置で区間を分割することでブロック区間を決定し、決定された各ブロック区間毎に全運指候補洗出し処理を実施する。例えば、後述する図５に示される「音符列ＮＳ」のように、音符列ＮＳを構成する各音符Ｎｉ（ｉ＝１，２，…）は、ノート番号などで音高（図５縦軸）を表わす音高情報、タイミングデータ（ｔ１，ｔ２，…）やゲートタイムなどの音長データ（ｔ１〜ｔ２，…）を含む時間情報（図５横軸）を持っている。従って、各音符Ｎｉの時間軸上の位置は、タイミングデータや音長データなどの時間情報で規定され、通常の音符列には、音符が完全に存在せず途切れる区間Ｒｊ（ｊ＝１，２，…）が存在し、この区間Ｒｊは休符（又は休符区間）と呼ばれる。このシステムでは、ブロック分割機能によって、音符Ｎｉ間に存在する休符Ｒｊを検索し、所定時間以上の休符Ｒｊが現れた場合、この休符Ｒｊを境にして、音符列ＮＳを前後にブロック化する。
【００５２】
例えば、図５の音符列ＮＳで、休符Ｒ３が所定の基準値（例えば、１０００［ｔｉｃｋ］）以上あれば、この休符Ｒ３をブロック区間の切れ目として登録し、時間ｔ５以前と時間ｔ６以後のブロックに分割する。このように内部時間〔例えば、［ｔｉｃｋ］（ティック）〕を用いて休符長の評価をすると、運指候補を洗い出すための区間分けを簡単に実行することができる。
【００５３】
また、休符Ｒｊの時間（休符長）により音符列ＮＳを分離することにより運指候補を洗い出すための区間を決定する際には、休符長の内部時間長を実時間長〔例えば、［ｍｓ］（ミリ秒）〕に換算し、所定の基準実時間値（例えば、１０００［ｍｓ］）で評価することもできる。この場合、同じ内部時間（ティック）の休符でも、実時間長（ミリ秒）で評価すれば、遅いテンポ（例：１２０）ではブロックに分割するが、速いテンポ（例：２００）では分割を発生しないようにすることができる。このように実時間で休符長を評価してブロック分割を行うと、テンポによって変化する休符長の時間評価を正確に行うことができる。
【００５４】
さらに、休符長の実時間換算によるブロック分割を行う場合には、テンポチェンジをまたぐ休符区間について考慮する必要がある。この場合、休符Ｒｊの途中にテンポチェンジが発生しているときは、当該休符Ｒｊをテンポチェンジ位置で複数の休符区間に分割し、各休符区間について、夫々のテンポに対応する実時間で休符時間を計算し、計算された実時間長を合計した総休符時間長を評価することによって、当該休符Ｒｊで区間分割すべきか否かを決定する。
【００５５】
〔２・２〕音符数制限（サブブロック分割）
運指候補を洗い出す区間（洗出し区間）の音符数が多ければ多いほど、運指可能洗出し手段Ｃｓによる運指候補ＦＣを洗い出す処理に対するマシン負荷は多大なものとなる。そこで、このシステムでは、あまりにも長い音符列の運指付けを実行しないために、運指洗出し処理の対象としているブロックを休符で複数の区間に細分化していき、細分化された各区間の運指候補洗出し対象音符数を所定値以下に制限する。所定音符数以下になった区間は「サブブロック」と呼ばれ、これを洗出し区間として運指候補ＦＣを抽出し、絞込みで最適候補を求める。
【００５６】
つまり、休符長により音符列ＮＳを分離することにより運指候補を洗い出すためのブロックを決定する際に、ブロック設定用休符長に従って決定されたブロックの音符数が所定数より多い場合には、ブロックの中に存在する休符の中で最長休符長の休符を検索し、検索された最長休符によりブロックを分割する。そして、分割によって新しく発生した各区間を所定音符数で再評価し、所定音符数以下の区間があればこれをサブブロックとし、そうでない区間については更に最長休符による区間分割を行い、所定音符数を超える区間がなくなるまで最長休符による分割を繰り返し、最終的に運指を洗い出す区間を決定する。この方法はサブブロック分割と呼ばれ、設定休符長に達する休符Ｒｊがなくブロック分割がなされない音符列ＮＳについても、サブブロック分割の方法により、音符数が制限されたサブブロックに分割することができる。
【００５７】
なお、音符数によるサブブロック分割に当っては、分割された区間毎にサブブロックフラグＤＦを持たせ、各区間の音符数が所定数以下となったか否かを判断してフラグＤＦによりサブブロック（洗出し区間）を決定する方法が有用である。例えば、各区間に当初はサブブロックフラグＤＦ＝０を与えるものとして、各区間の音符数を計算して所定音符数以下の区間はフラグＤＦ→１に変更してサブブロックとし、フラグＤＦ＝０の区間がある間は、当該区間を分割して再び音符数計算及びフラグ変更を行うというループ処理を繰り返し、全ての区間でフラグＤＦ＝１（所定音符数以下であるという条件を満たしている）と判断された場合にループ処理を終了する。
【００５８】
なお、音符数による区間分割で生じた各サブブロックについては、必要に応じて〔例えば、サブブロック分割点の休符長が所定値（例：１５０［ｍｓ］）以下のサブブロック間など〕再接続し、ブロック全体にわたって、運指の動きが滑らかで的確な運指列を得るようにすることができる。このサブブロックの再接続には、次に説明するフレーズ毎の運指候補最適化及びグループ間接続と同様の手法が用いられ、簡単にいえば、各サブブロックにおいて、同一の先頭及び末尾指種類をもつ運指候補をグループ化し、グループ毎に最適化されたサブブロック運指候補の隣接サブブロック間再接続を図るようにする（〔３・２〕〜〔３・４〕参照）。
【００５９】
〔フレーズ分割〕
前述したように、全運指候補を洗い出して絞込みで最適運指を決定する「全運指候補洗出し手法」はＰＣなどのコンピュータへの負担が大きく、曲によっては不具合が発生し良好な結果が出ない場合があるので、このシステムでは、音符列ＮＳを区間分割する方法としてブロック分割を適用することを説明したが、更にマシン負担軽減を図るために、「フレーズ分割」と呼ばれる区間分割法をとることもできる。
【００６０】
このフレーズ分割では、ブロック分割で分離されたブロック内の音符列或いはブロック分割されなかった音符列ＮＳについて、一旦、「フレーズ」と呼ばれる運指候補洗出し区間に分割し、フレーズ毎に全ての運指候補の洗出しを実行する。各フレーズで洗い出された運指候補ＦＣｐの中からグループ毎に最適のものを当該フレーズの運指候補ＦＣｐに決定し、隣り合うフレーズの間が、運指上、連続させることができる場合には、両フレーズの運指候補ＦＣｐの再接続を図り、最終評価により当該音符列ＮＳの最適運指ＦＣｍとする。以下、フレーズ分割があった場合の処理例を詳述する。
【００６１】
〔３・１〕フレーズ分割
まず、供給された音符列ＮＳ（例えば、図５参照）について、前述したブロック分割と同様の方法で、休符長（休符区間Ｒｊの長さ）に応じて、フレーズと呼ばれる区間に分割し、これを運指の洗出し区間する。ただし、フレーズ分割では、分割の基準にする基準休符長をブロック分割に比べて短くし（例えば、１５０［ｍｓ］）、運指洗出し区間が更に細かいフレーズに分解される。
【００６２】
次に、分解したフレーズ毎に、既に説明した全運指候補の洗出し（Ｃｓ）と同様に、運指可能テーブルＦｔを用いて運指候補の全洗出し処理を実行し、続いて、フレーズ毎の運指候補の最適化を行う。図４は、グループ毎の運指候補ＦＣｐの決定以後のフレーズ間の運指候補の組合せ処理の一例を示す。
【００６３】
〔３・２〕フレーズ毎の運指候補の最適化
フレーズ毎の運指候補の最適化では、フレーズ毎に洗い出された運指候補を同一の先頭及び末尾指番号でグルーピングし、グループ毎に最良の運指列を選択し、これを当該フレーズの運指候補ＦＣｐとする。つまり、フレーズ毎に洗い出された全運指候補のうち、先頭の指番号と末尾の指番号が同じ運指候補を同一のグループにまとめ、各グループ毎に、〔１・３〕で説明した第１〜第３の絞込み〔ａ〕〜〔ｃ〕と同じ手法を用いて、最適な運指候補を絞り込む。このような運指候補の最適化処理で各フレーズの運指候補数を減らすことにより、次のフレーズ間接続処理のフレーズ組合せ数も大幅に減少させることができる。従って、トータルの運指候補数の削減が実現され、ＰＣの処理負担が軽減されることになる。
【００６４】
例えば、各フレーズでは、洗い出された運指候補について、その運指列が親指「１」で開始し親指「１」で終了するもの（「１〜１」）を１グループとし、人差指「２」で開始し親指「１」で終了するもの（「２〜１」）を１グループとし、…、というように、分類して行く。従って、右手だけの場合に全てのグループで運指候補が洗い出された場合は、最大の２５タイプのグループに分けられ、２５タイプのグループ夫々で最適となる運指列が選ばれる。このようにして絞り込まれたグループで最良の運指候補は「フレーズ毎の運指候補ＦＣｐ」と呼ばれ、上述のようにして運指候補ＦＣｐを決定することが「フレーズ毎の運指候補の最適化」と呼ばれる。図４（１）の例では、フレーズ分割により、供給された音符列ＮＳ＝ノート番号“６１〜５５”が３つのフレーズ区間（６１〜６５，６６〜６２，６０〜６５）に分割され、運指候補の最適化により、各フレーズで３又は２個の運指候補ＦＣｐが選択されたことを示している。
【００６５】
〔３・３〕フレーズ間の接続
各フレーズで最適化された運指候補ＦＣｐが得られた後は、フレーズ運指候補ＦＣｐの可否判定を行い、これに基づいて運指候補ＦＣｐのフレーズ間接続処理を行う。つまり、隣り合うフレーズ間で、両フレーズの運指候補ＦＣｐについて全ての組合せを洗い出し、洗い出された全てのフレーズ組合せについて、既に説明した全運指候補の洗出し（Ｃｓ）と同様に、前フレーズの運指候補ＦＣｐで最後の指番号から後フレーズの運指候補ＦＣｐで先頭の指番号に運指が可能な組合せを抽出して行き、全フレーズにわたって可能な運指候補ＦＣを求める。
【００６６】
フレーズ間の接続処理では、要するに、運指可能テーブルＦｔを参照して、前フレーズ音符列の終端音符の音高（ノート番号）から後フレーズ音符列の先頭音符の音高への移行に対して、前フレーズ運指列の終端指から後フレーズの先頭指への移動可能性を判断し、移動可能な場合に両フレーズ間の接続を可とする。そして、全フレーズ間の接続が可とされた運指列を、図４（２）のように、全フレーズにわたる運指候補ＦＣとする。
【００６７】
図４（１）に示した例では、各フレーズ運指候補ＦＣｐの全組合せは、３×２×３＝１８通りあるが、図４（２）は、フレーズ間接続処理によって、７つの組合せが運指候補ＦＣとして残ったことを示している。具体的に説明すると、第１フレーズの第１運指候補ＦＣｐである運指列「１〜１」と、第２フレーズの第１運指候補ＦＣｐである運指列「３〜１」と、第３フレーズの第３運指候補ＦＣｐである運指列「３〜２」とを組み合わせた図４（２）最上段の「運指候補１」は、第１及び第２フレーズの運指列組合せ並びに第２及び第３フレーズの運指列組合せの何れについてもフレーズ間接続判定に合格したことを表わしている。
【００６８】
つまり、第１フレーズ音符列“６１〜６５”の最後の音符“６５”から第２フレーズ音符列“６６〜６２”の最初の音符“６６”への移行“６５→６６”〔図４（１）上段参照〕に対して、第１フレーズ運指列「１〜１」の最後の指「１」から、第２フレーズ運指列「３〜１」の最初の指「３」への移動「１→３」が可能であり、しかも、第２フレーズ音符列の最後の音符“６２”から第３フレーズ音符列の最初の音符“６０”への移行“６２→６０”に対して、第２フレーズ運指列「３〜１」の最後の指「１」から第３フレーズ運指列「３〜２」の最初の指「３」への移動「１→３」が可能である。
【００６９】
なお、第１フレーズ運指列「１〜１」、第２フレーズ運指列「３〜１」及び第３フレーズ運指列「３〜２」〔図４（１）〕の運指内容が、それぞれ、図４（３）上段に示される場合、これら運指列が接続された図４（２）の「運指候補１」は、図４（３）下段に示される運指内容を表わす。つまり、フレーズ間接続判定に合格したフレーズ運指候補ＦＣｐの組合せ〔図４（２）の候補１〜７〕は、図４（１）の音符列ＮＳの全域に対して、図４（３）下段のように一連の音符から成る運指候補ＦＣとして洗い出されたことを表わす。
【００７０】
〔３・４〕最終絞込み
このようにして全フレーズにわたって接続可能な運指候補ＦＣｐを接続して（この接続は「再接続」と呼ばれる）音符列ＮＳ全体の運指候補ＦＣを洗い出すと、洗い出された全体の運指候補ＦＣについて、再び、〔１・３〕で説明した第１〜第３の絞込み〔ａ〕〜〔ｃ〕を適用し、最終的に、全音符列ＮＳにわたって最適な運指列ＦＣｍを１つ決定する。このようにして再接続及びその評価で最終的な絞込みを行うことにより、長い音符列ＮＳにも拘わらず、運指の動きが滑らかで的確な最適運指ＦＣｍを生成することができる。
【００７１】
なお、フレーズ分割だけでなく、〔２．２〕の音符数制限処理により分割されたサブブロックについても、〔３・２〕〜〔３・４〕で説明したと同様の処理を行い、最適な運指列ＦＣｍを生成することができる。さらに、フレーズ分割とサブブロック分割を併せて実行する場合にも、音符数制限によるサブブロック分割と〔３・１〕のフレーズ分割で決まる最小区間をフレーズと同様に取り扱うことで、当該最小区間について〔３・２〕〜〔３・４〕で説明したと同様の処理を行い、最適な運指列ＦＣｍを生成することができる。
【００７２】
〔３・５〕例外処理
なお、フレーズ分割を行い各フレーズ毎に運指候補の洗出しをした結果、運指候補の数がゼロのフレーズが出てきた場合は、運指が連続できる最長の位置を当該フレーズに対する新しい区間の切れ目として当該フレーズを分割し、分割された前側の区間に運指不連続フラグを設定し、運指不連続フラグで分割される各区間について、運指可能テーブルによる運指２５種類の候補の組合せを実行する。
【００７３】
また、各フレーズ運指候補ＦＣｐが洗い出されたものの、フレーズ間接続処理の結果、全フレーズのうち途中のフレーズまでしか運指候補ＦＣｐを接続できずフレーズ接続が最終フレーズまで届かなかった場合には、フレーズ間接続ができた最長フレーズまでを１つの区間として運指付けを実施し、接続できた運指候補ＦＣの中から最良の１運指ＦＣｍを絞りこむ。また、最長フレーズの後の残りの区間については、あらためて同様の処理を実施し、フレーズ運指候補ＦＣｐを洗い出して最適の運指付けを行う。
【００７４】
この場合、当初、運指付けを実施しようとしたフレーズの終端までフレーズの再接続処理が実施されるまで、区間分割された区間を必要に応じて細分化して、リスタートしながら再接続を完了する。
【００７５】
〔同時発音の音符に対する処理〕
この発明の一実施例による運指情報分析システムでは、同時発音の存在する音符列に対して、同時発音の単旋律化機能により「全運指候補洗出し手法」を適用することができ、この場合、同時発音部分に不適切な運指が付かないよう配慮するができる。図５は、音符列に同時発音の音符が存在する場合の処置例を示す。
【００７６】
〔４・１〕同時発音（和音）の抽出及び単旋律化
このシステムの同時発音の単旋律化機能によると、図５上段のように、音符列ＮＳ中に和音などの同時発音される音符Ｎ２〜Ｎ４がある場合、これら複数音符Ｎ２〜Ｎ４を同時発音される音符群（音符セット）と判断して音符を単旋律化し、これによって、同時発音の存在する曲も、単旋律の曲と同様に、「全運指候補洗出し手法」に従う同一の処理に通すことができる。
【００７７】
この単旋律化の処理では、図５（１）（ａ）に示すように、音符列ＮＳから音符Ｎ２〜Ｎ４のような複旋律部分を抽出し〔（ａ１）〕、これを同時発音される音符群（音符セット）として認識し〔（ａ２）〕、認識された音符群について、音程の低い方の音符Ｎ２から順に〔（ａ３）〕或いは高い方の音符Ｎ４から順に〔（ａ４）〕、各音符Ｎ２〜Ｎ４の発音開始タイミングを所定時間ずつずらし、音符Ｎ２〜Ｎ４を時間的に順序付けて整列させ、単旋律を決定する。そして、単旋律化された複数音符Ｎ２〜Ｎ４〔図５（１）（ａ３）又は（ａ４）〕について、運指可能テーブルＦｔによる運指洗出し処理を実施する。
【００７８】
〔４・２〕同時発音部分に対する指交差の禁止
また、単旋律化の処理を実施する際には、図５（１）（ｂ）に示すように、同時発音として認識された音符群であることを認識できるフラグを用意しておき、運指候補洗出しの際には、同時発音と認識された音符セットの途中で指交差が発生しないように、指交差（→，←）による指移動を不可とする。図５（１）（ｂ）の例では、音符移行時に基点（基準音ＮＡ）側となる音符に指交差禁止フラグを持たせ、運指洗出しの際に、同時発音の音符セットＮ２〜Ｎ４内における音符移行に対して指交差を禁止する。
【００７９】
つまり、音符セットＮ２〜Ｎ４内での音符移行“Ｎ２→Ｎ３”，“Ｎ３→Ｎ４”については、基点側の音符Ｎ２，Ｎ３に指交差禁止フラグ＝Ｙｅｓ（“１”）が設定されているので、指交差（→，←）のある運指は禁止される。一方、それ以外の音符移行については指交差禁止フラグ＝Ｎｏ（“０”）が設定されており、例えば、同フラグ＝Ｎｏの音符Ｎ１から次の音符Ｎ２への移行“Ｎ１→Ｎ２”などは、通常通り、運指可能テーブルＦｔに指交差（→，←）を条件とした条件付可能情報による指移動でも運指可能である。
【００８０】
このような方法により、同時発音（和音）を単旋律として扱うようにしたので、同時発音のある音符列にも「全運指候補洗出し手法」を実施することができ、しかも、同時発音（和音）で物理的に不可能になる指交差を禁止するようにしたので、演奏不可能な指番号が付くことを阻止することができる。
【００８１】
〔４・３〕同時発音部分を考慮した区間の細分化
さらに、同時発音部分を含む音符列ＮＳを運指付けの対象とする場合には、運指候補の洗出しにより、音符列ＮＳの途中までしか運指候補を抽出できず、抽出された運指候補の中で最長の運指候補が、同時発音として認識された音符セットの継続期間の途中で途切れてしまう場合には、一旦、最長の運指候補の終端が位置する音符セットの開始位置を運指候補洗出しの終端に定めて運指候補を決定し、その後、当該音符セット開始位置から運指候補洗出しを再開する。
【００８２】
例えば、図５（２）のように、或るフレーズの同時発音部分の途中で最長運指列が終了した場合には当該同時発音部分の開始位置Ｂで運指候補の洗出しをリセットし、フレーズ開始位置Ａから洗い出されてきた運指候補の中から、位置Ａ〜Ｂ間で連続する運指候補を選び出して（最適化という）最適な運指候補を決定し、位置Ｂから、再度、新たな運指候補の洗出しを開始する。このように同時発音（和音）区間を考慮することによりフレーズを細分化し処理を簡潔にすることができる。
【００８３】
〔運指情報分析の動作フロー〕
この発明の一実施例による運指情報分析システムでは、運指情報分析プログラムに従って、上述した種々の機能を含む運指情報分析処理を実行し、最適な運指情報を生成することができる。図６は、この発明の一実施例による運指情報分析処理に基づく運指情報生成の動作の一例を表わすフローチャートである。
【００８４】
ユーザが入力操作部５を操作して運指情報分析処理による運指情報生成動作フローをスタートさせると、まず、ステップＳ１でユーザ設定を行い、処理対象とする音符列データをＲＡＭ２上に取り込み、これに対する処理条件などの設定内容をＲＡＭ２に記憶する。
【００８５】
例えば、入力操作部５を用いたユーザの設定操作に応じて、ＲＯＭ３や外部記憶装置４などから所望の演奏データを選択して処理対象の音符列ＮＳを設定し、ＲＡＭ２上に読み込む。また、処理条件の設定については、ブロック分割、サブブロック分割、フレーズ分割などの区間分割を行うか否かの設定を行い、区間分割を行う場合には、ブロック分割用やフレーズ分割用の休符長やサブブロック分割用の音符数など種々の設定値をデフォルトなどで設定する。なお、この処理フロー例では、サブブロック分割設定時にサブブロックが再接続される（Ｓ９〜Ｓ１２）ものとしている。
【００８６】
次いで、ステップＳ２に進み、ブロック分割やサブブロック分割が設定されている場合には、処理対象に設定された音符列ＮＳを、音符の途切れる位置で、ブロックに分割するブロック分割処理を行い、音符数によっては更にサブブロックに分割する処理などを行う。また、これらが設定されていな場合にはステップＳ２はスルーする。
【００８７】
ブロック分割については、例えば、〔２・１〕で説明したように、音符列ＮＳに設定休符長（例：１０００［ｍｓ］）以上の休符Ｒｊを検出したときには当該休符Ｒｊの位置で音符列ＮＳを複数のブロックに分割する処理を行い、その際、実時間で休符長を評価する場合はテンポチェンジを考慮する。また、〔２・２〕で説明したように、分割された各ブロック内の音符列或いはブロック分割されなかった音符列ＮＳに設定音符数以上の音符数があれば、次に音符の途切れが大きい位置で、更にサブブロックに分割する処理を行う。
【００８８】
次のステップＳ３では、フレーズ分割が設定されている場合にフレーズ分割処理を行い、設定されていない場合はこのステップをスルーする。フレーズ分割については、各ブロック内の音符列、サブブロック内の音符列、或いは、これらの分割がなされなかった音符列ＮＳについて、〔３・１〕で説明したように、音符の途切れる位置で、例えば、所定休符長＝１５０［ｍｓ］以上の休符Ｒｊの位置で、フレーズ単位に分割する。
【００８９】
なお、ステップＳ２でのブロック分割やサブブロック分割、ステップＳ３でのフレーズ分割において、音符の途切れる位置の具体的な検出は、〔２・１〕で説明した方法で行われる。この場合、内部時間を用いても、上述のように実時間を用いてもよく、実時間利用の際は、更にテンポチェンジも考慮しておくと、より精度が上がる。
【００９０】
続くステップＳ４で、和音の抽出及び単旋律化を行い、〔４・１〕で説明したように、和音のように同時発音部分と判断される音符（Ｎ２〜Ｎ４）を抽出しこれら音符を単旋律化する。
【００９１】
さらに、ステップＳ５においては、洗出し区間毎に、運指可能テーブルＦｔを用いて、〔１．１〕で説明した「全運指候補洗出し」を行い、可能な運指候補を洗い出す。ここで、「洗出し区間」は、ステップＳ２，Ｓ３の区間分割を経て得られる最も小さい範囲の音符列の区間をいい、区間の分割があれば、最も細かく分けられた区間をいう。例えば、ステップＳ３でフレーズ分割された場合には各フレーズが洗出し区間となる。但し、フレーズ分割だけでなく、ステップＳ２でサブブロックの分割があったときは、両者の分割で決まる最小区間となる。一方、フレーズ分割されなかった場合は、ステップＳ２において、ブロック及びサブブロックの分割があればサブブロックが洗出し区間となり、ブロック分割だけであれば各ブロックが洗出し区間となる。また、区間分割がなければ、ステップＳ１で読み込まれた元の音符列ＮＳの全区間が洗出し区間となる。
【００９２】
なお、ステップＳ５の運指候補洗出しに当って、洗出し区間の音符列中に同時発音部分が検出されている場合は（Ｓ４）、〔４・２〕で説明したように、当該同時発音部分に対して指交差（→，←）を禁止して運指候補の抽出を制限する。
【００９３】
次いで、ステップＳ６では、洗出し区間に運指候補が洗い出されたか否かを判定し、運指候補が洗い出されなかったときは（Ｓ６→ＮＯ）、洗出し区間を分割して運指候補ＦＣを洗い出すステップＳ７，Ｓ８の区間分割洗出し処理に進む。つまり、可能な運指候補が抽出されなかった場合のフォローは、〔１・２〕で説明した区間分割洗出し処理を行い、まず、ステップＳ７で、洗出し区間の運指候補を洗い出して得られた最長運指列の後端位置で当該洗出し区間を新たな洗出し区間に分割し、当該最長運指列を前方の新たな洗出し区間の運指候補ＦＣとする。そして、次のステップＳ８で、後方の新たな洗出し区間について可能な運指候補洗出しを行う。
【００９４】
なお、和音状態の音符列への運指付けについては、ステップＳ４の処理で単音列とみなせるようにしてからステップＳ５で運指付けを行う。その際、〔４・２〕で説明したように、同時に使う指は交差できないので、運指候補から和音部分の指交差を示す運指は削除する。その結果、運指候補がなくなってしまう場合には（Ｓ６→ＮＯ）、ステップＳ７，Ｓ８の区間分割洗出し処理に進み、〔４・３〕で説明した「区間の細分化」を優先してフォローする。
【００９５】
ステップＳ８の運指候補洗出し処理の後は、運指候補の有無を判定するステップＳ６に戻り、ステップＳ７で分割された後方の新たな洗出し区間に運指候補が見つかるまで、ステップＳ６〜Ｓ８の処理動作を繰り返し実行する。そして、全ての洗出し区間について、後方の新たな洗出し区間に運指候補が洗い出されたときには（Ｓ６→ＹＥＳ）、ステップＳ２でサブブロックの分割がなされた場合、或いは、ステップＳ３でフレーズ分割された場合には、順次、ステップＳ９〜Ｓ１２に進み、そうでない場合は、ステップＳ９〜Ｓ１１をスルーして直ちにステップＳ１２に進む。
【００９６】
ステップＳ２，Ｓ３でサブブロックの分割やフレーズ分割があった場合は、〔３・２〕で説明したように、まず、ステップＳ９で、各サブブロック又はフレーズ毎に洗い出された運指候補を同一の先頭及び末尾の指種類をもつものにグループ分けし、次のステップＳ１０にて、グループ毎に最適候補ＦＣｐを決定する。ステップＳ１０における最適候補ＦＣｐの決定には、〔１・３〕で説明した絞込み手法が用いられ、例えば、各グループの運指候補について、指くぐり、指越えなど指交差を伴う運指の出現状況、隣り合う音符に対応する運指の移動状態又は運指する指種類の出現状態を評価し、各グループの最適候補ＦＣｐを決定する。
【００９７】
続くステップＳ１１では、〔３・３〕で説明したように、各サブブロック又はフレーズに存在する各グループの最適候補ＦＣｐが隣り合うサブブロック又はフレーズ間で接続可能かを〔１．１〕の「全運指候補洗出し手法」で判定し、この判定に合格した最適候補ＦＣｐ同士を連結してサブブロック又はフレーズ接続を行って、サブブロック又はフレーズ間が接続された運指候補ＦＣを求める。
【００９８】
そして、ステップＳ１２では、〔３・４〕で説明したように、サブブロック又はフレーズ間が接続された運指候補ＦＣに対して〔１・３〕の絞込み手法を再適用して運指候補の最終絞込みを行い、最適運指ＦＣｍを決定する。一方、ステップＳ２，Ｓ３でサブブロックの分割やフレーズ分割がなされなかった場合は、洗出し区間で洗い出された運指候補ＦＣに対して〔１・３〕の絞込み手法を適用して運指候補を絞り込み、最適運指ＦＣｍを決定する。そして、最適運指ＦＣｍを決定すると、この運指情報生成の動作フローを終了する。
【００９９】
〔種々の実施態様〕
以上、この発明の好適な一実施例について説明したが、これは単なる一例であって、この発明は、その精神を逸脱しない範囲で種々の変更が可能であり、種々の態様で実施することができる。例えば、可能な運指候補を抽出する具体的な方法としては、実施例では、図３に示すような運指可能テーブル（Ｆｔ）を用いているが、テーブルによらず、或る基準指（ｆａ）から或る移行指（ｆｂ）への移動可能距離は例えば４半音などと、基準指（ｆａ）と移行指（ｆｂ）の種類に応じて移動可能距離を設定しておき、これに基いて音符移行（ＮＡ→ＮＢ）に対応する指移動が可能か否かを計算するようにしてもよい。また、運指候補抽出時に、運指のスタートは、親指でスタートの場合、…、小指でスタートの場合など、各指からのスタートについて、制限や優先度を考慮するようにするとよい。
【０１００】
可能な運指候補の中から最適な運指を検出する具体的な方法としては、例えば、〔１・３〕の〔ａ〕〜〔ｃ〕で説明した３つの運指候補の絞込み手法があるが、これら３種類の絞込みは、実施例のように、順次行ってもよいし、何れか１又は２つの手法を用いて最適運指への絞込みを行ってもよい。
【０１０１】
区間分割のために音符の途切れを検出するのに用いられる休符長（休符区間）の閾値は、デフォルトでもよいし、ユーザ設定ができるようにしてもよい。また、実施例では、区間分割を、ブロックと更に細かいフレーズというように２段階で行っているが、ブロック分割のみ或いはフレーズのみとしてもよい。何れの場合も、〔２・１〕で説明した休符長判定方法を適用することができる。
【０１０２】
音符数に基づいて区間分割する方法は、〔２・２〕で説明したとおりであるが、最大休符長の判定にも、〔２・１〕で説明した内部時間又は実時間での評価やテンポチェンジの考慮を適用することができる。また、音符数の閾値は、デフォルトでもよいし、ユーザ設定でもよい。
【０１０３】
区間分割された各区間の接続については、フレーズだけなく、必要に応じて、サブブロックやブロックについても行うことができる。この場合、具体的には、〔３・２〕〜〔３・４〕で説明した方法を適用して、区間開始の指の種類と区間終了時の指の種類の組み合わせてグループ分けを行ってから区間を接続する。
【図面の簡単な説明】
【０１０４】
【図１】この発明の一実施例による運指情報分析システムのハードウエア構成例を示すブロック図である。
【図２】この発明の一実施例による運指情報分析処理に基づく運指情報生成の原理及び運指候補の一例を示す。
【図３】この発明の一実施例による運指情報分析処理において、運指候補総洗出しに用いられる運指可能テーブルの一例を示す。
【図４】この発明の一実施例による運指情報分析処理におけるフレーズ間の運指候補の組合せ処理の一例を示す。
【図５】この発明の一実施例による運指情報分析処理おいて、音符列に同時発音の音符が存在する場合の処置例を示す。
【図６】この発明の一実施例による運指情報分析処理に基づく運指情報生成の動作の一例を表わすフローチャートである。
【符号の説明】
【０１０５】
Ｆｔ  運指可能テーブル、
Ｆｔ２  「１→２」タイプ運指可能テーブル、
Ｃｓ  運指可能洗出し手段、
Ｃｄ  絞込み手段、
ＮＳ  音符Ｎｉ及び休符Ｒｊ（ｉ，ｊ＝１，２，…）を含む音符列、
ＮＡ，ＮＢ  基準音及び移行音、
○，→、←、×  運指可否情報、
ＦＣ  運指候補（候補運指列）、
ＦＣｍ  最適運指（最適運指列）、
ＦＣｐ  フレーズ運指候補（グループ毎に最適化された運指候補）。
【図１】
2005227421.tif 000003
【図２】
2005227421.tif 000004
【図３】
2005227421.tif 000005
【図４】
2005227421.tif 000006
【図５】
2005227421.tif 000007
【図６】
2005227421.tif 000008