(57)【要約】【課題】タブ譜を含む楽譜を従来よりも正確に認識することができるようにする。【解決手段】タブ譜３０２の音符のノートナンバと、当該タブ譜３０２の音符と対になっている五線譜３０１の音符のノートナンバとの差を算出する。算出したノートナンバが閾値NoteDiffThrよりも大きい場合に、当該五線譜３０１の音符のノートナンバから、当該タブ譜３０２の音符に適用されるタブ譜チューニング情報４０８を減算した値を、当該タブ譜３０２の音符の新たな数字NewNumTabとする。【選択図】図１
2010102408.tif 000002
【特許請求の範囲】
【請求項１】
タブ譜と、当該タブ譜と対になる五線譜とを含む楽譜の画像情報を、画像読み取り手段から取得する取得手段と、
前記楽譜に表記されている図形と、予め設定されている辞書とをマッチングして当該図形が、どの音楽記号に属するのかを認識する認識手段と、
前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている前記五線譜の音符のノートナンバとの差を算出する算出手段と、
前記算出手段により算出されたノートナンバの差に基づいて、前記認識手段により認識された音楽記号を修正する修正手段とを有することを特徴とする楽譜認識装置。
【請求項２】
前記五線譜の小節の中から、当該五線譜と対になるタブ譜の音符が属する小節の小節番号と同じ小節番号の小節を検索する検索手段と、
前記検索手段により検索された小節の音符のうち、当該タブ譜の音符の当該音符が属する小節における位置と同じ位置関係にある音符を、前記五線譜から検出する検出手段とを有し、
前記算出手段は、前記タブ譜の音符のノートナンバと、前記検出手段により検出された音符のノートナンバとの差を算出することを特徴とする請求項１に記載の楽譜認識装置。
【請求項３】
前記修正手段は、前記算出手段により算出された、前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている音符のノートナンバとの差に基づいて、当該タブ譜の音符の数字を修正することを特徴とする請求項１又は２に記載の楽譜認識装置。
【請求項４】
前記算出手段により算出されたノートナンバの差から、複数の小節におけるノートナンバの差の代表値を、前記タブ譜の弦毎に算出する第２の算出手段と、
前記第２の算出手段により算出された代表値を用いて、前記タブ譜における弦のチューニング情報を修正する第２の修正手段とを有することを特徴とする請求項１〜３の何れか１項に記載の楽譜認識装置。
【請求項５】
前記修正手段は、前記算出手段により算出された、前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている音符のノートナンバとの差と、前記第２の修正手段により修正されたチューニング情報とに基づいて、当該タブ譜の音符の数字を修正することを特徴とする請求項４に記載の楽譜認識装置。
【請求項６】
前記修正手段は、前記算出手段により算出された、前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている前記五線譜の音符のノートナンバとの差が閾値以上であり、且つ当該差のばらつきが閾値以下となる連続した複数の小節の先頭の所定の領域に音部記号を追加することを特徴とする請求項１〜５の何れか１項に記載の楽譜認識装置。
【請求項７】
タブ譜と、当該タブ譜と対になる五線譜とを含む楽譜の画像情報を、画像読み取り手段から取得する取得ステップと、
前記楽譜に表記されている図形と、予め設定されている辞書とをマッチングして当該図形が、どの音楽記号に属するのかを認識する認識ステップと、
前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている前記五線譜の音符のノートナンバとの差を算出する算出ステップと、
前記算出ステップにより算出されたノートナンバの差に基づいて、前記認識手段により認識された音楽記号を修正する修正ステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽譜認識装置、及びコンピュータプログラムに関し、特に、紙面の楽譜を認識するために用いて好適なものである。
【背景技術】
【０００２】
従来から、スキャナ等を用いて、紙面上の楽譜を読み取り、読み取った楽譜のデータについて、五線、音符、及びその他の各種の音楽記号を認識して、ＭＩＤＩファイルデータ等の演奏データや、表示用／印刷用のデータを生成することが行われている。
具体的に各種の音楽記号を認識する場合には、五線及び段落を認識した上で、五線消去を行った後、任意の矩形形状をした読み取り用のラベルを記号毎に設定して、当該ラベルのデータと、予め辞書に登録されているデータとをパターンマッチングするようにしている（特許文献１を参照）。ここで、ラベルとは、モノクロ画像（白黒の２値画像）の場合、例えば、４連結又は８連結している黒画素の一塊をいう。
【０００３】
【特許文献１】特開平１１−１６１７３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前述した従来の技術では、パターンマッチングの結果だけから音楽記号を認識しているので、音楽記号を正確に認識することができない虞があった。例えば、タブ譜では、弦に対応する横線（以下の説明ではこの線も必要に応じて五線と称する）上に音符の数字が表記されるが、線の上に数字が表記されているため、パターンマッチングの結果だけからでは、この数字を正確に認識することができない虞があった。
【０００５】
本発明は、このような問題点に鑑みてなされたものであり、タブ譜を含む楽譜を従来よりも正確に認識することができるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の楽譜認識装置は、タブ譜と、当該タブ譜と対になる五線譜とを含む楽譜の画像情報を、画像読み取り手段から取得する取得手段と、前記楽譜に表記されている図形と、予め設定されている辞書とをマッチングして当該図形が、どの音楽記号に属するのかを認識する認識手段と、前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている前記五線譜の音符のノートナンバとの差を算出する算出手段と、前記算出手段により算出されたノートナンバの差に基づいて、前記認識手段により認識された音楽記号を修正する修正手段とを有することを特徴とする。
【０００７】
本発明のコンピュータプログラムは、タブ譜と、当該タブ譜と対になる五線譜とを含む楽譜の画像情報を、画像読み取り手段から取得する取得ステップと、前記楽譜に表記されている図形と、予め設定されている辞書とをマッチングして当該図形が、どの音楽記号に属するのかを認識する認識ステップと、前記タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている前記五線譜の音符のノートナンバとの差を算出する算出ステップと、前記算出ステップにより算出されたノートナンバの差に基づいて、前記認識手段により認識された音楽記号を修正する修正ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、タブ譜の音符のノートナンバと、当該タブ譜の音符と対になっている音符のノートナンバとの差に基づいて、マッチングにより認識された音楽記号を修正するようにした。したがって、タブ譜を含む楽譜を従来よりも正確に認識することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照しながら、本発明の一実施形態について説明する。
図１は、楽譜認識装置の構成の一例を示すブロック図である。
図１において、楽譜認識装置１００は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、ＨＤＤ４、ＦＤＤ５、ＭＩＤＩインタフェース回路６、スキャナインタフェース回路７、プリンタインタフェース回路８、キーボードインタフェース回路９、ＣＲＴインタフェース回路１０、及びバス１５を有している。そして、スキャナ１１、プリンタ１２、キーボード１３、及びＣＲＴ１４が楽譜認識装置１００に接続されている。
【００１０】
図１に示すように、本実施形態の楽譜認識装置１００は、パソコン等の一般的な計算機システムに、ＭＩＤＩインタフェース回路６を付加したものである。
ＣＰＵ１は、ＲＯＭ２に格納されたプログラムをＲＡＭ３に展開して実行すること等により、楽譜認識装置１００の全体の制御を行う中央処理装置である。また、楽譜認識装置１００は、予め設定された所定の周期でＣＰＵ１に割り込みをかけるタイマ回路を内蔵している。ＲＡＭ３は、プログラムエリアの他、画像データバッファ、ワークエリア等として使用される。ＨＤＤ（ハードディスクドライブ）４及びＦＤＤ（フレキシブルディスクドライブ）５は、プログラム、画像データ、及び演奏データ等を格納する。
【００１１】
ＣＲＴ１４は、ＣＰＵ１の制御に基づき、ＣＲＴインタフェース回路１０から出力される映像情報を表示する。キーボード１３から入力された情報は、キーボードインタフェース回路９を経てＣＰＵ１に取り込まれる。プリンタ１２は、ＣＰＵ１の制御に基づき、プリンタインタフェース回路８から出力される印字情報を印字する。
【００１２】
スキャナ１１は、紙面に印刷された楽譜を光学的に走査して、２値、グレイスケール、あるいはカラーの画像データに変換するものである。スキャナ１１としては、フラットベッド型、ハンディ型、フィーダー型等任意のタイプのものを使用できる。スキャナ１１によって読み取られた画像情報は、スキャナインタフェース回路７を介して、ＲＡＭ３又はＨＤＤ４に取り込まれる。ＭＩＤＩインタフェース回路６は、音源モジュール等の外部のＭＩＤＩ機器との間でＭＩＤＩデータの送受信を行う回路である。バス１５は、楽譜認識装置１００内の各回路を接続している。尚、この他に、マウス等のポインティングデバイスや、ＲＳ２３２Ｃ等のシリアルインターフェース回路等を楽譜認識装置１００が備えていてもよい。
【００１３】
図２は、ＣＰＵ１の処理の一例を説明するメインフローチャートである。尚、ここでは、本発明の実施形態を説明する上で必要な事項を中心に説明し、その他の事項の詳細な説明を省略する。
まず、ステップＳ１において、ＣＰＵ１は、画像取り込み処理を行う。この画像取り込み処理では、スキャナ１２によって読み取られた楽譜の画像データをＲＡＭ３に取り込む等の処理が行われる。図３は、楽譜認識装置１００に取り込まれる楽譜の一例を示す図である。具体的に図３（ａ）は、五線譜とタブ譜とが対になって表記された楽譜の一部を示す図である。また、図３（ｂ）〜図３（ｄ）は、図３（ａ）の領域３０３におけるパターンマッチングによる認識結果の第１〜第３の例を概念的に示す図である。
図３（ａ）に示すように、本実施形態では、五線譜３０１とタブ譜３０２とが対になって表記された楽譜を取り込むようにしている。
【００１４】
次に、ステップＳ２において、ＣＰＵ１は、五線認識処理を行う。この五線認識処理では、五線走査開始位置検出処理及び五線シフト量検出処理等が行われる。五線走査開始位置検出処理の概略を述べると、横（ｘ）軸方向のある位置で、黒画素の幅と白画素の幅とを順に求め、求めた幅に基づいて、五線状に並んでいる位置を、ある程度の誤差を考慮して検出する。そして、加線（五線からはみ出した音符を記載するために付加した横線）の影響を除くために、五線状の並びの両側に、五線の間隔より大きな白画素幅があるという条件を加える。この条件に合う白黒画素の並びがある横（ｘ）方向の各黒ランの中点を五線走査開始位置とする。ここで、ランとは、モノクロ画像（白黒の２値画像）の場合、例えば、縦又は横に黒画素又は白画素が連結している長さをいう。
【００１５】
次に、五線シフト量検出処理の概略を述べる。まず、五線走査開始位置（５点の黒画素位置）から、１ドットずつ位置を左右に変えていき、５点の内、黒画素がある個数（例えば３あるいは４個）以下になった場合に、５点を上下にずらして黒画素数をチェックし、縦（ｙ）方向のうち、黒画素の割合が高くなる方向へｙ座標をシフトする。この五線走査開始位置からのシフト量を五線のシフト量とする。そして、五線走査開始位置の左右方向（横方向）に、黒画素の個数が０になる位置まで走査することにより五線の検出を行う。
【００１６】
次に、ステップＳ３において、ＣＰＵ１は、段落認識処理を行う。段落認識処理では、段落認識処理及び大かっこ認識処理等が行われる。段落認識処理においては、画像全体で五線を検出し、五線同士で左端がほぼ同じ場所にある五線の組を探し、五線の端同士が、黒画素で結ばれているかどうかを検査し、段落を認識する。五線同士が大かっこで結ばれていた場合には、五線同士にまたがる音符等が存在する場合があるので、大かっこで結ばれた五線は１つの単位で処理を行った方が良い。大かっこについては、段落線の左の所定の範囲で認識を行う。ここで、段落線とは、同時に進行している複数のパートの五線同士の左端を繋いでいる線をいい、段落とは、段落線で繋がれた複数の五線の一塊をいう。尚、パートが１つの場合には、複数のパートの段落に相当する一塊を段落という。また、大かっことは、特にピアノの楽譜に用いられることが多い音楽記号であり、２つ又は３つの五線を纏めるための「[」で表記される括弧である。
【００１７】
次に、ステップＳ４において、ＣＰＵ１は、パート認識処理を行う。パート認識処理では、五線認識処理及び段落認識処理で認識された結果に基づいて各パートを認識する。パート認識処理では、処理矩形決定処理、五線消去処理、及び音楽記号認識処理等を行う。  処理矩形決定処理では、求められた五線を含む、ある程度広い矩形を採り、これを認識処理矩形とする。矩形の大きさは、その五線に関係する音楽記号が存在する最大領域以上で、且つ五線傾き補正により、必要な音楽記号が消えない様な大きさにする。これ以降の認識はこの矩形内で行う。
【００１８】
五線消去処理では、求められた五線のうち、線幅が閾値以下の部分（音楽記号と重なっていない部分）を消去する。
音楽記号認識処理では、五線が消去された楽譜の画像データに対し、連続する黒画素の外縁に接するように矩形ラベルを設定し、当該矩形ラベル内の黒画素のデータと、予め辞書に登録されているデータとのパターンマッチングを行う等して各種の音楽記号を認識する。この音楽記号認識処理により、タブ譜に表記されている数字が認識される。パターンマッチングに際しては、テンプレートマッチングの他に、矩形ラベルのサイズと加重方向指数とを用いたり、ペリフェラル特徴を用いたりすることができる。
【００１９】
次に、ステップＳ５において、ＣＰＵ１は、結合処理を行う。結合処理では、五線認識処理で認識された五線、段落認識処理で認識された段落、パート認識処理で認識されたパートの内容等を結合して、楽譜のデータを生成する等の処理を行う。
次に、ステップＳ６において、ＣＰＵ１は、認識結果修正処理を行う。認識結果修正処理では、音楽記号認識処理でパターンマッチングにより認識された結果を、五線譜３０１の音符のノートナンバと、タブ譜３０２の音符（フレット番号と当該フレット番号が表記されている五線の位置とから定まる音符）のノートナンバとの差に基づいて修正する。認識結果修正処理の詳細については後述する。
【００２０】
尚、本実施形態では、楽譜の認識後に当該楽譜に対して設定する必要がある設定情報を含むパートテンプレートを、予めＨＤＤ４等に記憶している。そして、前述したステップＳ６における認識結果修正処理が行われる前に、ステップＳ１で取り込まれた楽譜の各パートに対応するパートテンプレートを複数のパートテンプレートの中から抽出する。具体的に説明すると、段落の左等に表記されているパート名（パートネーム）を構成する文字を、記号マッチングを行って認識し、その文字の並びをパート名として想定される文字列辞書とマッチングし、マッチングした結果から、パート名を示す文字列を認識する。そして、認識した文字列に対応する楽器を表現するパートテンプレートを、複数のパートテンプレートの中から選択する（認識した文字列に対応する楽器ＩＤを取得し、その楽器ＩＤに対応するパートテンプレートを、複数のパートテンプレートの中から選択する）。
図４は、パートテンプレートの一例を示す図である。図４において、パートテンプレート４０１は、テンプレート名４０２、パート名４０３、パート名短縮４０４、移調楽器設定４０５、音部記号４０６、タブ譜線数４０７、及びタブ譜チューニング情報４０８を有する。
【００２１】
テンプレート名４０２には、パートテンプレート４０１を識別するための文字列として、例えば、日本語の文字列又はアルファベットの文字列が格納される。
パート名４０３には、パートテンプレート４０１が適用されるパートを識別するための文字列が格納される。
パート名短縮４０４には、パートテンプレート４０１が適用されるパートの短縮表記を識別するための文字列が格納されている。
移調楽器設定４０５には、パートテンプレート４０１が適用される楽器が移調楽器であるか否かと、その楽器が移調楽器である場合にはその移調楽器がどのようなものであるかとを識別するための数値が格納されている。本実施形態では、パートテンプレート４０１が適用される楽器が移調楽器でない場合、移調楽器設定４０５には、０が格納される。また、本実施形態では、パートテンプレート４０１が適用される楽器がトランペット、ウッドベース、ピッコロ、アルトサックスである場合、移調楽器設定４０５には、夫々、−２、−１２、１２、−９が格納される。
【００２２】
音部記号４０６には、パートテンプレート４０１が適用される音部記号の種類に対応した数値が格納されている。本実施形態では、パートテンプレート４０１が適用される音部記号がト音記号である場合、音部記号４０６には０が格納される。また、本実施形態では、パートテンプレート４０１が適用される音部記号がヘ音記号である場合、音部記号４０６には１が格納される。
タブ譜線数４０７には、パートテンプレート４０１が適用される"楽譜の線数（五線の数）"を表す数値が格納されている。
タブ譜チューニング情報４０８には、楽譜の各線に対するチューニングを表す数値が格納されている。タブ譜チューニング情報４０８には、パートテンプレート４０１が適用される"楽譜の線数"分の情報が格納されている。図５は、タブ譜チューニング情報４０８の一例を示す図である。
【００２３】
尚、パートテンプレート４０１には、移調楽器設定４０５、音部記号４０６、タブ譜線数４０７、及びタブ譜チューニング情報４０８が少なくとも含まれていればよい。ただし、テンプレート名４０２、パート名４０３は含まれていた方が好ましい。また、テンプレート名４０２、パート名４０３、パート名短縮４０４、移調楽器設定４０５、音部記号４０６、タブ譜線数４０７、及びタブ譜チューニング情報４０８に格納される情報は、前述したものに限定されるものではない。
【００２４】
そして、ＣＰＵ１は、選択したパートテンプレート４０１のうち、パート認識処理で認識された線数（タブ譜の弦に対応する横線の数）に対応するパートテンプレート４０１を１つ選択し、ステップＳ１の画像データ取り込み処理で取り込まれた楽譜のタブ譜３０２に対してパートテンプレート４０１を適用する。
【００２５】
尚、以上のようなパートテンプレート４０１の内容や、タブ譜３０２に対して適用したパートテンプレート４０１は、例えば、五線や段落の設定変更を行うための「段落修正画面」におけるユーザの操作に基づいて変更することができる。
【００２６】
図２の説明に戻り、ステップＳ７において、ＣＰＵ１は、その他の処理を行う。その他の処理では、ＭＩＤＩファイルデータ等の演奏データを生成する等の処理を行う。
尚、前述したように、実際には、以上の処理の他に様々な処理が実行されるが、ステップＳ６における認識結果修正処理以外については、公知の技術によって実現できるので、ここでは、その詳細な説明を省略する。
【００２７】
次に、図６のフローチャートを参照しながら、図２のステップＳ６における認識結果修正処理の一例を説明する。
まず、ステップＳ１１において、ＣＰＵ１は、パート認識処理により認識された音楽記号の内容に基づいて、五線譜３０１の音符のノートナンバを算出し、算出したノートナンバを、当該音符の情報として記憶する。このノートナンバの算出は、五線譜を演奏する際にノートナンバを検出するときと同じ方法で行うことができる。ただし、本実施形態では、楽譜（曲）の先頭から、音高に関係する音楽記号（音部記号、調号、臨時記号、タイ、オッターヴァ等）だけを考慮しながら、各音符のノートナンバを算出する。また、本実施形態では、「Ｄ.Ｓ.」や「コーダ」等の繰り返し記号があったとしても、当該繰り返し記号には従わずにノートナンバを算出する。すなわち、楽譜（曲）の最初から最後まで後戻りせずにノートナンバを検出する。
【００２８】
ステップＳ１２において、ＣＰＵ１は、パート認識処理により認識された音楽記号の内容に基づいて、タブ譜３０２の音符のノートナンバを算出し、算出したノートナンバを、当該音符の情報として記憶する。このノートナンバの算出は、タブ譜を演奏する際にノートナンバを検出するときと同じ方法で行うことができる。ただし、本実施形態では、タブ譜３０２の"符頭に対応する位置"に表記されている"音符の数字（フレット番号）"に、当該タブ譜３０２に対して適用されたパートテンプレート４０１内のタブ譜チューニング情報４０８であって、当該フレット番号が表記されている弦に対応する情報を加算したものを、ノートナンバとするようにしている。ここで、符頭とは、五線における"４分音符より短い音符の黒い玉や、２分音符より長い音符の穴あきの玉"に相当するものをいう。
【００２９】
次に、ステップＳ１３において、ＣＰＵ１は、前パート参照情報取得処理を行う。前パート参照情報取得処理では、タブ譜３０２と対になっている五線譜３０１の情報を参照し、参照した結果に基づいて、タブ譜３０２の各音符の情報に、当該音符と対になる音楽記号のインデックス情報を記憶する処理である。インデックス情報は、五線譜３０１の先頭から各音楽記号に対してその出現順に付されたインデックス番号と、当該音楽記号の内容を示す情報（ノートナンバ等）とを含む。この前パート参照情報取得処理の詳細については後述する。
【００３０】
次に、ステップＳ１４において、ＣＰＵ１は、タブ譜３０２の数字（フレット番号）を修正するか否かを判定する。例えば、タブ譜３０２と対になっている五線譜３０１が存在していない場合には、タブ譜３０２の数字（フレット番号）を修正しないと判定することができる。また、対となる音楽記号を検出できたタブ譜３０２側の音符の数や割合が閾値以上である場合に、タブ譜３０２の数字（フレット番号）を修正すると判定し、そうでない場合にタブ譜３０２の数字（フレット番号）を修正しないと判定することができる。この他に、タブ譜３０２側の音符と対にされなかった"五線譜３０１側の音楽記号"の数や割合が閾値以下である場合に、タブ譜３０２の数字（フレット番号）を修正すると判定し、そうでない場合にタブ譜３０２の数字（フレット番号）を修正しないと判定することができる。尚、前記において、割合とは、例えば、該当する音符の数を、五線譜３０１やタブ譜３０２の音符の総数で割った値である。
【００３１】
この判定の結果、タブ譜３０２の数字（フレット番号）を修正しない場合には、ステップＳ２４に進んで、その他の処理が行われた後、図６のフローチャートによる処理を終了する。一方、タブ譜３０２の数字（フレット番号）を修正する場合には、ステップＳ１５に進む。
ステップＳ１５に進むと、ＣＰＵ１は、ノートナンバ比較表を作成する。
図７は、ノートナンバ比較表の一例を示す図である。具体的に図７（ａ）は、図６のステップＳ１５で作成されるノートナンバ比較表の一例を示す図であり、図７（ｂ）は、後述する図６のステップＳ１９で作成されるノートナンバ比較表の一例を示す図である。
【００３２】
まず、ＣＰＵ１は、タブ譜３０２の音符のノートナンバと、当該音符の情報に記憶された"五線譜３０１の音符のインデックス情報"とに基づいて、タブ譜３０２の音符のノートナンバから、当該音符と対になる"五線譜３０１の音符"のノートナンバを減算した値を、タブ譜３０２の全ての音符について算出する。尚、タブ譜３０２の音符の情報に五線譜３０１の音符のインデックス情報が記憶されていない場合には、当該タブ譜３０２の音符については、この状態が判定できるように、ノートナンバの差を、通常ではあり得ない値（例えば「−１０００」）とする。また、以下の説明では、タブ譜３０２の音符のノートナンバを、当該音符と対になる"五線譜３０１の音符"のノートナンバから減算した値を、必要に応じてノートナンバの差と称する。
【００３３】
その後、ＣＰＵ１は、各小節について、ノートナンバの差が同値であるものの数の最大値を算出し、算出した値を、図７（ａ）に示すノートナンバ比較表７０１の領域７０１ａに記憶する。例えば、タブ譜３０２の小節１の弦１における音符の数が４であり、当該４つの音符と対になる音符が五線譜３０１に存在し、それら４つの音符のノートナンバの差が夫々「１」、「１」、「２」、「０」であったとする。この場合には、領域７０１ａの"小節１と弦１とにより特定されるセル"には代表値として「１」が記憶される。
以上のようにして領域７０１ａの全てのセルに値が記憶されると、各セルの値のうち、０以上の値のものを弦毎に抽出し、抽出した値が同値であるものの数の最大値を算出し、算出した値を、図７（ａ）に示すノートナンバ比較表７０１の領域７０１ｂに記憶する。例えば、Ｎが４であり、弦１における小節１〜４に記憶された値が夫々「１」、「１」、「０」、「１」であったとする。この場合には、領域７０１ｂの弦１に対応するセルには代表値として「１」が記憶される。
【００３４】
尚、ノートナンバの差が同値であるものの数の最大値が複数ある場合には、例えば、それらのうち小さい値を選択するようにする。
また、領域７０１ａのセルに記憶すべき値を決めるために算出したノートナンバの差の数（すなわち、領域７０１ａのセルに対応する小節にある"五線譜３０１とタブ譜３０２の"音符の数）が閾値以下である場合には、当該セルの値を空欄にしてもよい。このようにすれば、五線譜３０１におけるパターンマッチングの誤認識による影響を低減することができる。この場合、当該ノートナンバの差の数を各セルに記憶し、各セルにおけるノートナンバの差の数を容易に判別できるようにしてもよい。
【００３５】
次に、ステップＳ１６において、ＣＰＵ１は、チューニング情報修正処理を行う。このチューニング情報修正処理では、ステップＳ１５で作成したノートナンバ比較表７０１に基づいて、タブ譜３０２に対して適用されたパートテンプレート４０１内のタブ譜チューニング情報４０８を修正するか否かを判定し、修正する必要がある場合には修正する。このチューニング情報修正処理の詳細については後述する。
次に、ステップＳ１７において、ＣＰＵ１は、ステップＳ１６のチューニング情報修正処理の結果、タブ譜チューニング情報４０８が変更されたか否かを判定する。この判定の結果、タブ譜チューニング情報４０８が変更された場合には、ステップＳ１８に進む。ステップＳ１８に進むと、ＣＰＵ１は、タブ譜３０２の音符のノートナンバを、変更されたタブ譜チューニング情報４０８に基づいて再算出する。そして、ステップＳ１９に進む。
一方、タブ譜チューニング情報４０８が変更されなかった場合には、ステップＳ１８を省略してステップＳ１９に進む。
【００３６】
ステップＳ１９に進むと、ＣＰＵ１は、図７（ｂ）に示すようなノートナンバ比較表を作成する。
まず、ＣＰＵ１は、図７（ａ）に示したノートナンバ比較表７０１を作成したときと同様に、各弦、各小節により特定されるセルに、ノートナンバの差が同値であるものの数の最大値を記憶する。
その後、ＣＰＵ１は、全ての弦のセルに記憶された値の平均値を小節毎に算出し、算出した値をノートナンバ比較表７０２の領域７０２ａに記憶する。例えば、小節１における弦１〜６の値が夫々「１」、「１」、「２」、「２」、「３」、「３」である場合には、領域７０２ａの小節１に対応するセルには「２（＝（（１＋１＋２＋２＋３＋３）／６））」が記憶される。
【００３７】
そして、ＣＰＵ１は、以上のようにして領域７０２ａに記憶した値が閾値以上である小節が連続して存在しているか否かを判定する。この判定の結果、領域７０２ａに記憶した値が閾値以上である小節が連続して存在している場合、当該連続している小節のセルに対して記憶された値の平均値を弦毎に算出する。領域７０２ａに記憶した値が閾値以上である小節が、小節１０〜１５であるとした場合、グレーで表示されている小節１０〜１５の値の弦毎の平均値が領域７０２ｂに記憶される。
【００３８】
次に、ステップＳ２０において、ＣＰＵ１は、ステップＳ１９で作成されたノートナンバ比較表７０２に基づいて、音部記号誤認識領域が検出されたか否かを判定する。ここで、音部記号誤認識領域とは、パターンマッチングでは音部記号が存在していないと認識されたが、本来は音部記号が存在している"五線譜３０１の領域"をいう。具体的には、例えば、領域７０２ｂを算出した小節（図７（ｂ）のグレーで表示した部分に対応する小節）のうち最初の小節の先頭部分の所定の領域が、音部記号誤認識領域となる。
【００３９】
このステップＳ２０の処理の具体例を説明すると、まず、ＣＰＵ１は、ステップＳ１９で作成されたノートナンバ比較表７０２を参照し、領域７０２ｂに記憶された値のばらつき（最大値と最小値との差、もしくは標準偏差）が閾値以下（所定の範囲内）であるか否かを判定する。この判定の結果、領域７０２ｂに記憶された値のばらつきが閾値以下である場合に、音部記号誤認識領域が検出されたと判定し、そうでない場合に音部記号誤認識領域が検出されなかったと判定する。
【００４０】
この判定の結果、音部記号誤認識領域が検出されなかった場合には、ステップＳ２１、Ｓ２２を省略して後述するステップＳ２３に進む。一方、音部記号誤認識領域が検出された場合には、ステップＳ２１に進む。
ステップＳ２１に進むと、ＣＰＵ１は、五線譜３０１のパターンマッチングによる認識の結果を変更する。このステップＳ２１の処理の具体例を説明すると、まず、ＣＰＵ１は、領域７０２ｂを算出した小節（図７（ｂ）のグレーで表示した部分に対応する小節）における音高の平均を算出する。そして、ＣＰＵ１は、その平均と、当該小節よりも前の小節に適用されている音部記号とに基づいて、当該小節（図７（ｂ）のグレーで表示した部分に対応する小節）に適用される音部記号を推定する。ＣＰＵ１は、その推定した音部記号を、音部記号認識領域に追加する。
【００４１】
尚、図２のステップＳ４のパート認識処理における音楽記号認識処理で行われたパターンマッチングの結果、マッチング度（得点）が閾値以上でない音楽記号のうち、マッチング度（得点）が最も高い音楽記号を識別するための次点ＩＤが、音部記号認識領域に対して記憶されている場合には、以上のようにして推定した音部記号と次点ＩＤで識別される音楽記号とが一致した場合に限り、推定した音部記号を、音部記号認識領域に追加するようにしてもよい。ここでは、次点ＩＤは、パターンマッチングではマッチング度（得点）が閾値以上でないために認識されない音楽記号のうち、該当する可能性が最も高い音楽記号を識別するためのものである。
【００４２】
次に、ステップＳ２２において、ＣＰＵ１は、ステップＳ２１で変更した音部記号に基づいて、当該音部記号が適用される小節の音符の音高に関する情報を変更する。そして、ステップＳ２３に進む。
ステップＳ２３に進むと、ＣＰＵ１は、タブ譜数字修正処理を行う。このタブ譜数字修正処理では、五線譜３０１の音符のノートナンバと、タブ譜３０２の音符のノートナンバとの差が閾値以上である場合に、五線譜３０１の音符のノートナンバにタブ譜の音符のノートナンバを合わせて変更する。このタブ譜数字修正処理の詳細については後述する。
次に、ステップＳ２４において、ＣＰＵ１は、その他の処理を行い、図６のフローチャートによる処理を終了する。
【００４３】
次に、図８のフローチャートを参照しながら、図６のステップＳ１３の前パート参照情報取得処理の一例を説明する。
まず、ステップＳ１０１において、ＣＰＵ１は、タブ譜３０２の処理対象の音符が属する小節番号を変数nMeasureTに代入する。
次に、ステップＳ１０２において、ＣＰＵ１は、変数nMeasureTで特定されるタブ譜３０２の小節の右端（当該小節の後ろの小節線の位置）から、音符タブ譜３０２の処理対象の音符までの横方向における最短距離を求め、求めた距離を変数ｘＴに代入する。尚、図８のフローチャートの説明において、横方向における最短距離を必要に応じて最短距離と称する。
【００４４】
次に、ステップＳ１０３において、ＣＰＵ１は、変数nMeasureTで特定される五線譜３０１の小節であって、処理対象の音符が属するタブ譜３０２と対になっている五線譜３０１の小節において、当該小節の右端からの最短距離ｘＢが変数ｘＴに最も近い音符を検出する。
次に、ステップＳ１０４において、ＣＰＵ１は、変数ｘＴと最短距離ｘＢとの差の絶対値（＝｜ｘＴ−ｘＢ｜）が閾値以下である音符が五線譜３０１から検出されたか否かを判定する。この判定の結果、変数ｘＴと最短距離ｘＢとの差の絶対値（＝｜ｘＴ−ｘＢ｜）が閾値以下である音符が五線譜３０１から検出されなかった場合には、後述するステップＳ１１０に進む。一方、変数ｘＴと最短距離ｘＢとの差の絶対値（＝｜ｘＴ−ｘＢ｜）が閾値以下である音符が五線譜３０１から検出された場合には、ステップＳ１０５に進む。
【００４５】
ステップＳ１０５に進むと、ＣＰＵ１は、タブ譜３０２の処理対象の音符と、五線譜３０１の当該音符と対になる音符とのうち、少なくとも何れか一方が和音であるか否かを判定する。この判定の結果、タブ譜３０２の処理対象の音符と、五線譜３０１の当該音符と対になる音符との双方が和音でない場合には、後述するステップＳ１１１に進む。
一方、タブ譜３０２の処理対象の音符と、五線譜３０１の当該音符と対になる音符とのうち、少なくとも何れか一方が和音である場合には、ステップＳ１０６に進む。
【００４６】
ステップＳ１０６に進むと、ＣＰＵ１は、タブ譜３０２の処理対象の音符のノートナンバと、五線譜３０１の当該音符と対になる音符のノートナンバとの差が最も小さくなる音符の組み合わせを、例えば、順列・組み合わせの計算を行って検出する。
例えば、図３（ｂ）に示すように、タブ譜３０２の処理対象の和音の構成音の数が、五線譜３０１の当該和音と対になる和音の構成音の数と同じ場合、タブ譜３０２の音符３１２、３１３と、五線譜３０１の音符３１０、３１１とを組み合わせる。例えば、タブ譜３０２の音符３１３のノートナンバと、五線譜３０１の音符３１１のノートナンバとの差が、タブ譜３０２の音符３１２のノートナンバと、五線譜３０１の音符３１１のノートナンバとの差よりも小さく、タブ譜３０２の音符３１２のノートナンバと、五線譜３０１の音符３１０のノートナンバとの差が、タブ譜３０２の音符３１３のノートナンバと、五線譜３０１の音符３１０のノートナンバとの差よりも小さい場合には、タブ譜３０２の音符３１３と、五線譜３０１の音符３１１との組み合わせと、タブ譜３０２の音符３１２と、五線譜３０１の音符３１０との組み合わせとが検出される。
【００４７】
また、図３（ｃ）に示すように、タブ譜３０２の処理対象の和音の構成音の数が、五線譜３０１の当該和音と対になる和音の構成音の数よりも少ない場合、タブ譜３０２の音符３１６と、五線譜３０１の音符３１４、３１５の何れかとを組み合わせる。例えば、タブ譜３０２の音符３１６のノートナンバと、五線譜３０１の音符３１４のノートナンバとの差が、タブ譜３０２の音符３１６のノートナンバと、五線譜３０１の音符３１５のノートナンバとの差よりも小さい場合、タブ譜３０２の音符３１６と、五線譜３０１の音符３１４との組み合わせが検出される。
【００４８】
また、図３（ｄ）に示すように、タブ譜３０２の処理対象の和音の構成音の数が、五線譜３０１の当該和音と対になる和音の構成音の数よりも多い場合、タブ譜３０２の音符３１８、３１９の何れかと、五線譜３０１の音符３１７とを組み合わせる。例えば、タブ譜３０２の音符３１９のノートナンバと、五線譜３０１の音符３１７のノートナンバとの差が、タブ譜３０２の音符３１８のノートナンバと、五線譜３０１の音符３１７のノートナンバとの差よりも小さい場合、タブ譜３０２の音符３１９と、五線譜３０１の音符３１７との組み合わせが検出される。
【００４９】
以上のようにして、タブ譜３０２の処理対象の音符のノートナンバと、五線譜３０１の当該音符と対になる音符のノートナンバとの差が最も小さくなる音符の組み合わせが検出されると、ステップＳ１０７に進む。ステップＳ１０７に進むと、ＣＰＵ１は、検出された組み合わせに基づいて、五線譜３０１の音符のインデックス情報を、タブ譜３０２の当該音符と組み合わさった音符の情報に追加する。
【００５０】
尚、五線譜３０１の音符のインデックス情報は、タブ譜３０２の音符を識別できる情報であれば、必ずしもタブ譜３０２の音符の情報に追加しなくてもよい。
この場合、タブ譜３０２の処理対象の和音の構成音の１つの情報に、五線譜３０１の当該１つの構成音と組み合わさった音符のインデックス情報を追加することができる。このようにタブ譜３０２の処理対象の和音の構成音の１つの情報に、五線譜３０１の当該１つの構成音と組み合わさった音符のインデックス情報を追加することは、タブ譜３０２の処理対象の和音の構成音の数と、五線譜３０１の当該和音と対になる和音の構成音の数とが同じ場合であっても、違う場合であっても実現することができる。
【００５１】
次に、ステップＳ１０８において、ＣＰＵ１は、タブ譜３０２の処理対象の音符の情報に、処理済フラグを代入する。
次に、ステップＳ１０９において、ＣＰＵ１は、タブ譜３０２の全ての音符について処理を行ったか否かを判定する。この判定の結果、タブ譜３０２の全ての音符について処理を行っていない場合には、タブ譜３０２の次の処理対象の音符を選択してステップＳ１０１以降の処理を行う。一方、タブ譜３０２の全ての音符について処理を行った場合には、図８のフローチャートによる処理を終了する。
【００５２】
前述したように、ステップＳ１０４において、変数ｘＴと最短距離ｘＢとの差の絶対値（＝｜ｘＴ−ｘＢ｜）が閾値以下である音符が五線譜３０１から検出されなかったと判定された場合には、ステップＳ１１０に進む。ステップＳ１１０に進むと、ＣＰＵ１は、変数nMeasureTで特定される五線譜３０１の小節であって、処理対象の音符が属するタブ譜３０２と対になっている五線譜３０１の小節において、当該小節の右端からの最短距離ｘＢが変数ｘＴに最も近い"音符以外の音楽記号"を検出する。そして、ステップＳ１１１に進む。
ステップＳ１１１に進むと、ＣＰＵ１は、ステップＳ１０３又はＳ１１０で検出された音符又は音符以外の音楽記号のインデックス情報を、タブ譜３０２の"当該音符又は音符以外の音楽記号と対となる音符"の情報に代入する。そして、前述したステップＳ１０８に進む。
【００５３】
次に、図９のフローチャートを参照しながら、図６のステップＳ１６におけるチューニング情報修正処理の一例を説明する。
まず、ステップＳ２０１において、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２と対になる五線譜３０１の音符のノートナンバとの差が「０」と見なせるか否かを判定する。このステップＳ２０１の処理の具体例を説明すると、図７（ａ）に示したノートナンバ比較表７０１の領域７０１ｂに記憶されている値の全てが０である場合に、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２と対になる五線譜３０１の音符のノートナンバとの差が「０」と見なせると判定し、そうでない場合に、「０」と見なせないと判定する。
【００５４】
この判定の結果、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２と対になる五線譜３０１の音符のノートナンバとの差が「０」と見なせる場合には、図９のフローチャートによる処理を終了する。
一方、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２と対になる五線譜３０１の音符のノートナンバとの差が「０」と見なせない場合には、ステップＳ２０２に進む。ステップＳ２０２に進むと、ＣＰＵ１は、タブ譜３０２の弦を識別するための変数ｉに１を代入する。
【００５５】
次に、ステップＳ２０３において、ＣＰＵ１は、変数ｉにより識別される弦におけるノートナンバの差が閾値Ｔｈｒよりも小さいとみなせるか否かを判定する。このステップＳ２０３の処理の具体例を説明すると、ノートナンバ比較表７０１の領域７０１ｂのうち、変数ｉにより識別される弦に対応するセルに記憶されている値が閾値Ｔｈｒよりも小さい場合に、変数ｉにより識別される弦におけるノートナンバの差が閾値Ｔｈｒよりも小さいとみなせると判定し、そうでない場合にみなせないと判定する。閾値Ｔｈｒとしては、１や２を採用することができる。このようにすれば、パターンマッチングによる臨時記号や調号の誤認識等によってノートナンバに誤差が生じていても適切に処理を行うことができる。
【００５６】
この判定の結果、変数ｉにより識別される弦におけるノートナンバの差が閾値Ｔｈｒよりも小さいとみなせない場合には、ステップＳ２０４を省略して、後述するステップＳ２０５に進む。一方、変数ｉにより識別される弦におけるノートナンバの差が閾値Ｔｈｒよりも小さいとみなせる場合には、ステップＳ２０４に進む。
ステップＳ２０４に進むと、ＣＰＵ１は、タブ譜３０２に対して適用されているパートテンプレート４０１内のタブ譜チューニング情報４０８のうち、変数ｉにより識別される弦の情報に、変数ｉにより識別される弦におけるノートナンバの差（ノートナンバ比較表７０１の領域７０１ｂのうち、変数ｉにより識別される弦に対応するセルに記憶されている値）を加算する。
【００５７】
尚、ここでは、ノートナンバ比較表７０１の領域７０１ｂのうち、変数ｉにより識別される弦に対応するセルに記憶されている値を加算するようにしたが、必ずしもこのようにする必要はない。例えば、ノートナンバの差と、タブ譜チューニング情報４０８を変更すべき値とを相互に対応付けてライブラリとして記憶しておく。そして、変数ｉにより識別される弦に対応する"領域７０２ｂのセル"に記憶されている値に最も近いノートナンバの差を、このライブラリから検索する。そして、検索したノートナンバの差に対応付けられてライブラリに登録されている値を、タブ譜チューニング情報４０８に設定するようにしてもよい。
【００５８】
次に、ステップＳ２０５において、ＣＰＵ１は、変数ｉが、タブ譜３０２の弦に対応する横線の総数であるか否かを判定する。この判定の結果、変数ｉが、タブ譜３０２の弦に対応する横線の総数でない場合には、ステップＳ２０６に進み、変数ｉに１を加算して、ステップＳ２０３に戻る。一方、変数ｉが、タブ譜３０２の弦に対応する横線の総数である場合には、ステップＳ２０７に進む。尚、図３、図５に示した例では、タブ譜３０２の弦に対応する横線の総数は「６」になる。
【００５９】
ステップＳ２０７に進むと、ＣＰＵ１は、ステップＳ２０４で修正した後のタブ譜チューニング情報４０８が単純変化しているか否かを判定する。ここで、単純変化とは、図５に示すように、弦の番号の増加に伴い、タブ譜チューニング情報４０８の値が単純に変化（減少又は増加）していることをいう。尚、タブ譜チューニング情報４０８の複数の弦における値が同じである場合も、ステップＳ２０４で修正した後のタブ譜チューニング情報４０８が単純変化していないとする。この判定の結果、ステップＳ２０４で修正した後のタブ譜チューニング情報４０８が単純変化している場合には、図９のフローチャートによる処理を終了する。
【００６０】
一方、ステップＳ２０４で修正した後のタブ譜チューニング情報４０８が単純変化していない場合には、ステップＳ２０８に進む。ステップＳ２０８に進むと、ＣＰＵ１は、タブ譜チューニング情報４０８を修正前のものに戻すか否かを判定する。このステップＳ２０８の処理の具体例を説明すると、タブ譜３０２の弦の数が、タブ譜チューニング情報４０８が単純変化しないことが考えられる楽器（４弦ウクレレ）に対応する数である場合には、タブ譜チューニング情報４０８を修正前のものに戻さないと判定する。また、タブ譜３０２が、タブ譜３０２の弦の数が、タブ譜チューニング情報４０８が単純変化しないことが考えられる楽器に対応する数でない場合には、タブ譜チューニング情報４０８を修正前のものに戻すと判定する。
【００６１】
この判定の結果、タブ譜チューニング情報４０８を修正前のものに戻さない場合には、図９のフローチャートによる処理を終了する。一方、タブ譜チューニング情報４０８を修正前のものに戻す場合には、ステップＳ２０９に進む。ステップＳ２０９に進むと、ＣＰＵ１は、ステップＳ２０４で修正した後のタブ譜チューニング情報４０８を修正前の値に戻す。そして、図９のフローチャートによる処理を終了する。
【００６２】
次に、図１０のフローチャートを参照しながら、図６のステップＳ２３のタブ譜数字修正処理の一例を説明する。
まず、ＣＰＵ１は、タブ譜３０２の音符のノートナンバNoteTabと、図６のステップＳ１３（図８）の前パート参照情報取得処理で当該音符の情報に追加された"五線譜３０１の音符のノートナンバNoteBef"との差の絶対値が、閾値NoteDiffThrよりも大きいか否かを判定する。この判定の結果、タブ譜３０２の音符のノートナンバNoteTabと、五線譜３０１の音符のノートナンバNoteBefとの差の絶対値が、閾値NoteDiffThrよりも大きくない場合には、タブ譜３０２の数字の修正を行わず、後述するステップＳ３１１に進む。一方、タブ譜３０２の音符のノートナンバNoteTabと、五線譜３０１の音符のノートナンバNoteBefとの差の絶対値が、閾値NoteDiffThrよりも大きい場合には、ステップＳ３０２に進む。
【００６３】
尚、タブ譜３０２の音符が和音であり、当該音符の情報に、当該和音と対となる和音の構成音の１つの情報しか含まれていない場合には、図２のステップＳ４のパート認識処理等で得られる音符の出現タイミングを示す情報に基づいて、タブ譜３０２の和音の構成音と対になる五線譜３０１の和音の構成音のノートナンバを抽出する。そして、図３（ｃ）、図３（ｄ）に示すように、パート認識処理におけるパターンマッチングによる認識の結果、タブ譜３０２の和音の構成音と、当該和音と対になる五線譜３０１の和音の構成音とが異なる場合には、図８のステップＳ１０６で説明したように、例えば、順列・組み合わせの計算を行って、タブ譜３０２の処理対象の音符のノートナンバと、五線譜３０１の当該音符と対になる音符のノートナンバとの差が最も小さくなる音符の組み合わせを検出する。そして、検出した音符同士でノートナンバの差を算出する。ここで、タブ譜３０２の音符と対となる五線譜３０１の音符が存在しない場合には、当該タブ譜３０２の音符についての数字の変更は行わないようにする。
【００６４】
ステップＳ３０２に進むと、ＣＰＵ１は、五線譜３０１の音符のノートナンバNoteBefから、タブ譜３０２の処理対象の音符に適用されるタブ譜チューニング情報４０８（Tuning[Loc]）を減算した値を、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとする。尚、図６のステップＳ１６（図９）において、タブ譜チューニング情報４０８が修正された場合には、このステップＳ３０２において、修正された後のタブ譜チューニング情報４０８が用いられる。
次に、ステップＳ３０３において、ＣＰＵ１は、タブ譜３０２の処理対象の音符の新たな数字NewNumTabが０よりも大きく２８よりも小さいか否かを判定する。この判定の結果、タブ譜３０２の音符の新たなノートナンバNewNoteTabが０よりも大きく２８よりも小さい場合には、ステップＳ３０４を省略して後述するステップＳ３０５に進む。
【００６５】
一方、タブ譜３０２の処理対象の音符の新たな数字NewNumTabが０よりも大きくなく、２８よりも小さくない場合には、ステップＳ３０４に進む。ステップＳ３０４に進むと、ＣＰＵ１は、タブ譜３０２の処理対象の音符の新たな数字NewNumTabの十の位の値を削除する。そして、ステップＳ３０５に進む。
ステップＳ３０５に進むと、ＣＰＵ１は、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方を、桁毎に分解する。例えば、ノートナンバが１２の場合には、１と２にノートナンバを分解する。
【００６６】
次に、ステップＳ３０６において、ＣＰＵ１は、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が二桁か否かを判定する。この判定の結果、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が二桁でない場合には、後述するステップＳ３１２に進む。
一方、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が二桁である場合には、ステップＳ３０７に進む。ステップＳ３０７に進むと、ＣＰＵ１は、ＨＤＤ４等に予め記憶されているテーブル内に、修正前の数字に対応する修正後の数字が存在するか否かを、各桁でチェックする。
【００６７】
すなわち、このテーブルには、修正前の数字と修正後の数字とが相互に対応付けられて記憶されている。具体的に説明すると、このテーブルには、修正前のある数字と、当該修正前のある数字に対して、記号マッチングにより誤認識する可能性のある数字とが、夫々修正前、修正後の数字として相互に対応付けられて記憶されている。
ＣＰＵ１は、タブ譜３０２の処理対象の音符の元の数字OldNumTabの一の位の値と一致する修正前の数字と対応付けられている修正後の数字が、タブ譜３０２の処理対象の音符の新たな数字NewNumTabの一の位の値と一致するかどうかを判定する。この判定の結果、これらが一致する場合には、一の位については、修正前の数字に対応する修正後の数字が存在すると判定し、これらが一致しない場合には、一の位については、修正前の数字に対応する修正後の数字が存在しないと判定する。十の位についても、一の位と同様にしてチェックすることができる。
例えば、タブ譜３０２の処理対象の音符の元の数字OldNumTabの値が１２であり、タブ譜３０２の処理対象の音符の新たな数字NewNumTabの値が２１であり、テーブルには、修正前の数字として１、修正後の数字として２が記憶されているとする。この場合には、十の位については、修正前の数字に対応する修正後の数字が存在すると判定され、一の位については、修正前の数字に対応する修正後の数字が存在しないと判定とされる。
【００６８】
次に、ステップＳ３０８において、ＣＰＵ１は、全ての桁で、ＨＤＤ４等に予め記憶されているテーブル内に、修正前の数字に対応する修正後の数字が存在するか否かを判定する。この判定の結果、全ての桁で、ＨＤＤ４等に予め記憶されているテーブル内に、修正前の数字に対応する修正後の数字が存在しない場合には、後述するステップＳ３１１に進む。
一方、全ての桁で、ＨＤＤ４等に予め記憶されているテーブル内に、修正前の数字に対応する修正後の数字が存在する場合には、ステップＳ３０９に進む。ステップＳ３０９に進むと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabと、五線譜３０１の当該音符と対となる音符のノートナンバNoteBef"との差の絶対値が、閾値TabDiffThrよりも小さいか否かを判定する。尚、この閾値TabDiffThrとしては「０」、「１」、又は「２」等を採用することができる。このように閾値TabDiffThrとして「１」以上の値を採用した場合には、臨時記号等の誤認による多少のノートナンバの違いに過剰に反応して、タブ譜３０２の数字の意図しない変更がなされてしまうことを防止できる。
【００６９】
この判定の結果、タブ譜３０２の処理対象の音符の新たな数字NewNumTabと、五線譜３０１の当該音符と対となる音符のノートナンバNoteBef"との差の絶対値が、閾値TabDiffThrよりも小さい場合には、ステップＳ３１０を省略して後述するステップＳ３１１に進む。
一方、タブ譜３０２の処理対象の音符の新たな数字NewNumTabと、五線譜３０１の当該音符と対となる音符のノートナンバNoteBef"との差の絶対値が、閾値TabDiffThrよりも小さくない場合には、ステップＳ３１０に進む。ステップＳ３１０に進むと、ＣＰＵ１は、タブ譜３０２の処理対象の音符の情報に含まれる"タブ譜の数字の情報"に、タブ譜３０２の処理対象の音符の新たな数字NewNumTabを代入する。そして、ステップＳ３１１に進む。
【００７０】
ステップＳ３１１に進むと、ＣＰＵ１は、タブ譜３０２の全ての音符の数字をチェックしたか否かを判定する。この判定の結果、タブ譜３０２の全ての音符の数字をチェックしていない場合には、次の音符を指定してステップＳ３０１以降の処理を再度行う。一方、タブ譜３０２の全ての音符の数字をチェックした場合には、図１０のフローチャートによる処理を終了する。
【００７１】
前述したように、ステップＳ３０６において、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が二桁でないと判定された場合には、ステップＳ３１２に進む。ステップＳ３１２に進むと、ＣＰＵ１は、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が一桁であるか否かを判定する。この判定の結果、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が一桁である場合には、前述したステップＳ３０７に進む。この場合、ステップＳ３０７では、一の位についてのみチェックを行うことになる。
【００７２】
一方、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとの双方が一桁でない場合には、それらの一方が二桁であり他方が一桁であると判定して、ステップＳ３１３に進む。
ステップＳ３１３に進むと、ＣＰＵ１は、ＨＤＤ４等に予め記憶されているテーブル内に、修正前の数字に対応する修正後の数字が存在するか否かを、一桁の値と二桁の値との間でチェックする。すなわち、ＣＰＵ１は、タブ譜３０２の処理対象の音符の元の数字OldNumTabの一の位の値と一致する修正前の数字と対応付けられている修正後の数字が、タブ譜３０２の処理対象の音符の新たな数字NewNumTabの一の位の値と一致するかどうかを判定する。この判定の結果、これらが一致する場合には、一の位については、修正前の数字に対応する修正後の数字が存在すると判定し、これらが一致しない場合には、一の位については、修正前の数字に対応する修正後の数字が存在しないと判定する。
【００７３】
また、タブ譜３０２の処理対象の音符の元の数字OldNumTabと、タブ譜３０２の処理対象の音符の新たな数字NewNumTabとのうち、二桁の方の十の位の値と一致する修正前（修正後）の数字と対応付けられている修正後（修正前）の数字が、一桁の方の一の位の数字と一致するかどうかを判定する。この判定の結果、これらが一致する場合には、十の位については、修正前の数字に対応する修正後の数字が存在すると判定し、これらが一致しない場合には、十の位については、修正前の数字に対応する修正後の数字が存在しないと判定する。
【００７４】
例えば、タブ譜３０２の処理対象の音符の元の数字OldNumTabの値が１４であり、タブ譜３０２の処理対象の音符の新たな数字NewNumTabの値が２であり、テーブルには、修正前の数字として１、修正後の数字として２が記憶されているとする。この場合には、十の位については、修正前の数字に対応する修正後の数字が存在すると判定され、一の位については、修正前の数字に対応する修正後の数字が存在しないと判定される。
【００７５】
次に、ステップＳ３１４において、ＣＰＵ１は、何れかの桁で、ＨＤＤ４等に予め記憶されているテーブル内に、修正前の数字に対応する修正後の数字が存在するか否かを判定する。この判定の結果、何れかの桁で、修正前の数字に対応する修正後の数字が存在する場合には、前述したステップＳ３０９の処理を行う。一方、何れかの桁でも、修正前の数字に対応する修正後の数字が存在しない場合には、前述したステップＳ３１１に進む。
【００７６】
以上のように本実施形態では、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２の音符と対になっている五線譜３０１の音符のノートナンバとの差を算出する。算出したノートナンバが閾値NoteDiffThrよりも大きい場合に、当該五線譜３０１の音符のノートナンバから、当該タブ譜３０２の音符に適用されるタブ譜チューニング情報４０８を減算した値を、当該タブ譜３０２の音符の新たな数字NewNumTabとする（図１０のステップＳ３０１、Ｓ３０２を参照）。したがって、パターンマッチングによるタブ譜の認識に誤りがあっても、その誤りを修正することができる。
【００７７】
また、本実施形態では、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２の音符と対になっている五線譜３０１の音符のノートナンバとの差の代表値を弦毎、小節毎に求める。そして、求めたノートナンバの差の代表値が閾値よりも大きい小節が連続した場合、当該連続した小節における各弦のノートナンバの差の代表値の平均を求める。そして、当該連続した小節における各弦のノートナンバの差の代表値の平均の値のばらつきが所定の範囲にある場合には、当該連続した小節の先頭の音部記号誤認識領域に音部記号を追加する（図６のステップＳ１９〜Ｓ２２を参照）。したがって、パターンマッチングによる五線譜の認識に誤りがあった場合にも、その誤りを修正することができる。
以上のように、本実施形態では、タブ譜を含む楽譜を従来よりも正確に認識することができる。
【００７８】
また、本実施形態では、タブ譜３０２の音符のノートナンバと、当該タブ譜３０２の音符と対になっている五線譜３０１の音符のノートナンバとの差の値から第１の代表値を弦毎、小節毎に求める（図７（ａ）の領域７０１ａを参照）。そして、複数の小節（例えば全小節）における第１の代表値から第２の代表値を弦毎に求める（図７（ａ）の領域７０１ｂを参照）。そして、第２の代表値が閾値Ｔｈｒ以上である場合には、当該第２の代表値を用いて、該当する弦のタブ譜チューニング情報４０８を変更するようにした（図９のステップＳ２０３〜Ｓ２０５を参照）。したがって、タブ譜に対してチューニング情報を従来よりも適切に適用することができる。
【００７９】
また、本実施形態では、五線譜３０１の小節の中から、タブ譜３０２の処理対象の音符が属する小節の小節番号と同じ小節番号の小節を検索する。そして、検索した小節の音符のうち、当該タブ譜３０２の処理対象の音符の当該音符が属する小節における位置と同じ位置関係にある音符を、当該タブ譜３０２の音符と対になっている五線譜３０１の音符として検出するようにした（図８を参照）。したがって、五線譜３０１の小節とタブ譜３０２の小節とが横方向にずれている場合でも、タブ譜３０２の音符と対になっている五線譜３０１の音符を正確に検出することができる。
【００８０】
尚、本実施形態では、図６のステップＳ２０〜Ｓ２２において、ステップＳ１９で作成されたノートナンバ比較表７０２を用いて、五線譜３０１における音部記号の認識の結果を変更するようにしたが、必ずしもこのようにする必要はない。例えば、領域７０２ａに記憶した値が閾値以上である、連続した複数の小節がある場合（図７（ｂ）のグレーで表示されている部分を参照）、その小節については、図６のステップＳ２３においてタブ譜の数字の修正を行わないようにしてもよい。このようにすれば、パターンマッチングにおける臨時記号等が誤認識された場合に、タブ譜３０２の数字が不用意に修正されることを防止することができる。また、ステップＳ１９で作成されたノートナンバ比較表７０２を用いて、音部記号以外の調号を変更するようにしてもよい。
【００８１】
また、図６のステップＳ１６（図９）、ステップＳ２０〜Ｓ２２、及びステップＳ２３（図１０）、の少なくとも何れか１つを行うか否かをユーザに選択させ、行うことが選択された処理のみを実行するようにしてもよい。また、ステップＳ２３（図１０）において、タブ譜の数字の修正後の内容を表示し、ユーザによって修正が許可された場合に、該当するタブ譜の数字を修正するようにしてもよい。
【００８２】
また、図６のステップＳ２０〜Ｓ２２については、必ずしも行わなくてもよい。また、ステップＳ２０〜Ｓ２２をステップＳ１４の前に行ってもよい。更に、図１０のステップＳ３０５〜Ｓ３１０、Ｓ３１２〜Ｓ３１４については、必ずしも行わなくてもよい。
【００８３】
また、本実施形態のように、図２のステップＳ６の認識結果修正処理をステップＳ５の結合処理の後に行うようにすれば、楽譜の全体が完成してから図２のステップＳ６の認識結果修正処理を実行するので、パターンマッチングによる認識の結果をより正確に修正でき好ましいが、必ずしもこのようにする必要はない。例えば、ステップＳ４とステップＳ５の間で認識結果修正処理を行うようにしてもよい。
【００８４】
以上説明した本発明の実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体、又はかかるプログラムを伝送する伝送媒体も本発明の実施の形態として適用することができる。また、上記プログラムを記録したコンピュータ読み取り可能な記録媒体などのプログラムプロダクトも本発明の実施の形態として適用することができる。上記のプログラム、コンピュータ読み取り可能な記録媒体、伝送媒体及びプログラムプロダクトは、本発明の範疇に含まれる。
また、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施形態を示し、楽譜認識装置の構成の一例を示すブロック図である。
【図２】本発明の実施形態を示し、ＣＰＵの処理の一例を説明するメインフローチャートである。
【図３】本発明の実施形態を示し、楽譜認識装置に取り込まれる楽譜の一例を示す図である。
【図４】本発明の実施形態を示し、パートテンプレートの一例を示す図である。
【図５】本発明の実施形態を示し、タブ譜チューニング情報の一例を示す図である。
【図６】本発明の実施形態を示し、図２のステップＳ６における認識結果修正処理の一例を説明するフローチャートである。
【図７】本発明の実施形態を示し、ノートナンバ比較表の一例を示す図である。
【図８】本発明の実施形態を示し、図６のステップＳ１３の前パート参照情報取得処理の一例を説明するフローチャートである。
【図９】本発明の実施形態を示し、図６のステップＳ１６におけるチューニング情報修正処理の一例を説明するフローチャートである。
【図１０】本発明の実施形態を示し、図６のステップＳ２３のタブ譜数字修正処理の一例を説明するフローチャートである。
【符号の説明】
【００８６】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＨＤＤ
５  ＦＤＤ
６  ＭＩＤＩ
７  スキャナインタフェース回路
８  プリンタインタフェース回路
９  キーボードインタフェース回路
１０  ＣＲＴインタフェース回路
１１  スキャナ
１２  プリンタ
１３  キーボード
１４  ＣＲＴ
１００  楽譜認識装置
【図１】
2010102408.tif 000003
【図２】
2010102408.tif 000004
【図３】
2010102408.tif 000005
【図４】
2010102408.tif 000006
【図５】
2010102408.tif 000007
【図６】
2010102408.tif 000008
【図７】
2010102408.tif 000009
【図８】
2010102408.tif 000010
【図９】
2010102408.tif 000011
【図１０】
2010102408.tif 000012