(57)【特許請求の範囲】
【請求項１】
楽曲の拍子から小節規定時間を計算する小節規定時間計算手段と、
小節内の音符、休符の発音タイミング、音価から小節演奏時間を計算する小節演奏時間計算手段と、
計算された前記小節規定時間と小節演奏時間を比較する比較手段と、
前記小節規定時間と小節演奏時間が一致しない場合に小節内に連符が存在すると推定し、音符、休符の発音タイミング、音価を修正する音価修正手段とを備え、
前記音価修正手段は、
小節内の音符配列を記憶する小節音符配列記録手段と、
小節内の音符を拍毎にグルーピングするグルーピング手段と、
グルーピングされた音符の演奏時間と前記音符配列から算出される１拍分の基準時間とが一致しない場合に、グルーピングされた音符の音価を変更する連符化処理を行う連符化処理手段と
を備えたことを特徴とする楽譜演奏装置。
【請求項２】
前記連符化処理手段は、グルーピングされた音符の演奏時間が１拍分の基準時間より長い場合でグループ内に前記基準時間より長い音符がない場合、又は、グルーピングされた音符に前記基準時間より長い音符がある場合で演奏時間が前記基準時間の２倍を超える場合に、グルーピングされた音符の音価を変更して連符化処理を行う請求項１に記載の楽譜演奏装置。
【請求項３】
前記連符化処理手段は、グルーピングされた音符の演奏時間が１拍分の基準時間より短い場合であって、グループ内の１６分音符数が３つである場合または３２分音符が５つ又は７つの場合に、グルーピングされた音符の音価を変更して連符化処理を行う請求項１に記載の楽譜演奏装置。
【請求項４】
前記連符化処理手段による連符化処理は、前記グルーピングされた音符の音価の時間長に対して、グルーピングされた音符数に応じて予め設定された数を乗じて算出した時間長に音符数の合計音価を変更する請求項２又は請求項３に記載の楽譜演奏装置。
【請求項５】
グルーピングされた音符数が３である場合はグルーピングされた音符の音価の時間長を２倍した時間長に、
グルーピングされた音符数が５〜７である場合はグルーピングされた音符の音価の時間長を４倍した時間長に、
グルーピングされた音符数が９〜１５である場合はグルーピングされた音符の音価の時間長を８倍した時間長に、
グルーピングされた音符数が１７〜３１である場合はグルーピングされた音符の音価の時間長を１６倍した時間長に、
音符数の合計音価をそれぞれ変更する請求項４に記載の楽譜演奏装置。
【請求項６】
楽曲の拍子から小節規定時間を計算する小節規定時間計算ステップと、
小節内の音符、休符の発音タイミング、音価から小節演奏時間を計算する小節演奏時間計算ステップと、
計算された前記小節規定時間と小節演奏時間を比較する比較ステップと、
前記小節規定時間と小節演奏時間が一致しない場合に小節内に連符が存在すると推定し、小節内の音符配列を記憶し、小節内の音符を拍毎にグルーピングし、グルーピングされた音符の演奏時間と前記音符配列から算出される１拍分の基準時間とが一致しない場合に、グルーピングされた音符の音価を変更する連符化処理により、音符、休符の発音タイミング、音価を修正する音価修正ステップと
をコンピュータに実行させるための楽譜演奏プログラム。
【請求項７】
前記連符化処理は、グルーピングされた音符の演奏時間が１拍分の基準時間より長い場合でグループ内に前記基準時間より長い音符がない場合、又は、グルーピングされた音符に前記基準時間より長い音符がある場合で演奏時間が前記基準時間の２倍を超える場合に、グルーピングされた音符の音価を変更する処理を含む請求項６に記載の楽譜演奏プログラム。
【請求項８】
前記連符化処理は、グルーピングされた音符の演奏時間が１拍分の基準時間より短い場合であって、グループ内の１６分音符数が３つである場合または３２分音符が５つ又は７つの場合に、グルーピングされた音符の音価を変更する処理を含む請求項６に記載の楽譜演奏プログラム。
【請求項９】
前記連符化処理は、前記グルーピングされた音符の音価の時間長に対して、グルーピングされた音符数に応じて予め設定された数を乗じて算出した時間長に音符数の合計音価を変更する請求項７又は請求項８に記載の楽譜演奏プログラム。
【請求項１０】
グルーピングされた音符数が３である場合はグルーピングされた音符の音価の時間長を２倍した時間長に、
グルーピングされた音符数が５〜７である場合はグルーピングされた音符の音価の時間長を４倍した時間長に、
グルーピングされた音符数が９〜１５である場合はグルーピングされた音符の音価の時間長を８倍した時間長に、
グルーピングされた音符数が１７〜３１である場合はグルーピングされた音符の音価の時間長を１６倍した時間長に、
音符数の合計音価をそれぞれ変更する請求項９に記載の楽譜演奏プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子的に取り込まれた楽譜の音楽情報から演奏を行う楽譜演奏技術に関し、特に、楽譜に記述された音符形状から音価を決定するに際して、連符記号が記述されない場合でも正しい音価が求められる楽譜演奏装置及び楽譜演奏プログラムに関する。
【背景技術】
【０００２】
楽譜演奏装置は、ＰＤＦの楽譜ファイルや、スキャナで取り込まれた楽譜から抽出した音符の描画位置、発音開始時間、持続時間、小節線の描画位置などの楽譜情報から演奏情報を作成し、この演奏情報により自動的に演奏を行うものである。楽譜から楽譜情報を抽出して演奏情報を作成する手順は、例えば特許文献１に記載されている。
楽譜における３連符、５連符などの音価（音符の時間長）は、実際に記述されている音符で示される時間長と異なる。例えば図１７の第１小節の矢印部分に示されるように、３連符が８分音符で記述されているような場合、その時間長は８分音符の２／３となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１２９１５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
楽譜から演奏情報を生成するに際して、記述された音符形状から音価を決定する場合、図１７の第１小節の矢印部分のように３連符を示す連符記号（連符を示す数）がある場合は、その記号（数字）を認識できれば正しい音価を求めることができる。しかしながら、連符記号は図１７の第３小節の矢印部分のように省略されることが多く、この場合は楽譜を読み取って演奏情報を作成するに際して、通常の８分音符として音価を求めてしまうことになる。
また、連符記号の記載があったとしても、楽譜には指番号などが記載されている場合が多く、楽譜から演奏情報を生成するに際して、指番号と連符記号（連符を示す数）とを区別する必要があり、そのための読取技術が必要であった。
【０００５】
本発明は上記事情に鑑みて提案されたもので、楽譜において連符記号が記述されない場合であっても、正しい音価を有する演奏情報を作成して自動演奏を可能とした楽譜演奏装置及び楽譜演奏プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため本発明の楽譜演奏装置（請求項１）は、楽曲の拍子から小節規定時間を計算する小節規定時間計算手段と、小節内の音符、休符の発音タイミング、音価（GateTime）から小節演奏時間を計算する小節演奏時間計算手段と、計算された前記小節規定時間と小節演奏時間を比較する比較手段と、前記小節規定時間と小節演奏時間が一致しない場合に小節内に連符が存在すると推定し、音符、休符の発音タイミング、音価を修正する音価修正手段とを備え、前記音価修正手段は、小節内の音符配列を記憶する小節音符配列記録手段と、小節内の音符を拍毎にグルーピングするグルーピング手段と、グルーピングされた音符の演奏時間と前記音符配列から算出される１拍分の基準時間とが一致しない場合に、グルーピングされた音符の音価を変更する連符化処理を行う連符化処理手段とを備えたことを特徴としている。
【０００７】
請求項２は、請求項１の楽譜演奏装置において、前記連符化処理手段は、グルーピングされた音符の演奏時間が１拍分の基準時間より長い場合でグループ内に前記基準時間より長い音符がない場合、又は、グルーピングされた音符に前記基準時間より長い音符がある場合で演奏時間が前記基準時間の２倍を超える場合に、グルーピングされた音符の音価を変更して連符化処理を行うことを特徴としている。
【０００８】
請求項３は、請求項１の楽譜演奏装置において、前記連符化処理手段は、グルーピングされた音符の演奏時間が１拍分の基準時間より短い場合であって、グループ内の１６分音符数が３つである場合または３２分音符が５つ又は７つの場合に、グルーピングされた音符の音価を変更して連符化処理を行うことを特徴としている。
【０００９】
請求項４は、請求項２又は請求項３の楽譜演奏装置において、前記連符化処理手段による連符化処理は、前記グルーピングされた音符の音価の時間長に対して、グルーピングされた音符数に応じて予め設定された数を乗じて算出した時間長に音符数の合計音価を変更することを特徴としている。
【００１０】
請求項５は、請求項４の楽譜演奏装置において、グルーピングされた音符数が３である場合はグルーピングされた音符の音価の時間長を２倍した時間長に、グルーピングされた音符数が５〜７である場合はグルーピングされた音符の音価の時間長を４倍した時間長に、グルーピングされた音符数が９〜１５である場合はグルーピングされた音符の音価の時間長を８倍した時間長に、グルーピングされた音符数が１７〜３１である場合はグルーピングされた音符の音価の時間長を１６倍した時間長に、音符数の合計音価をそれぞれ変更することを特徴としている。
【００１１】
請求項６の楽譜演奏プログラムは、下記の各ステップをコンピュータに実行させることを特徴としている。
楽曲の拍子から小節規定時間を計算する小節規定時間計算ステップ。
小節内の音符、休符の発音タイミング、音価（GateTime）から小節演奏時間を計算する小節演奏時間計算ステップ。
計算された前記小節規定時間と小節演奏時間を比較する比較ステップ。
前記小節規定時間と小節演奏時間が一致しない場合に小節内に連符が存在すると推定し、小節内の音符配列を記憶し、小節内の音符を拍毎にグルーピングし、グルーピングされた音符の演奏時間と前記音符配列から算出される１拍分の基準時間とが一致しない場合に、グルーピングされた音符の音価を変更する連符化処理により、音符、休符の発音タイミング、音価を修正する音価修正ステップ。
【００１２】
請求項７は、請求項６の楽譜演奏プログラムにおいて、前記連符化処理は、グルーピングされた音符の演奏時間が１拍分の基準時間より長い場合でグループ内に前記基準時間より長い音符がない場合、又は、グルーピングされた音符に前記基準時間より長い音符がある場合で演奏時間が前記基準時間の２倍を超える場合に、グルーピングされた音符の音価を変更する処理を含むことを特徴としている。
【００１３】
請求項８は、請求項６の楽譜演奏プログラムにおいて、前記連符化処理は、グルーピングされた音符の演奏時間が１拍分の基準時間より短い場合であって、グループ内の１６分音符数が３つである場合または３２分音符が５つ又は７つの場合に、グルーピングされた音符の音価を変更する処理を含むことを特徴としている。
【００１４】
請求項９は、請求項７又は請求項８の楽譜演奏プログラムにおいて、前記連符化処理は、前記グルーピングされた音符の音価の時間長に対して、グルーピングされた音符数に応じて予め設定された数を乗じて算出した時間長に音符数の合計音価を変更することを特徴としている。
【００１５】
請求項１０は、請求項９の楽譜演奏プログラムにおいて、グルーピングされた音符数が３である場合はグルーピングされた音符の音価の時間長を２倍した時間長に、グルーピングされた音符数が５〜７である場合はグルーピングされた音符の音価の時間長を４倍した時間長に、グルーピングされた音符数が９〜１５である場合はグルーピングされた音符の音価の時間長を８倍した時間長に、グルーピングされた音符数が１７〜３１である場合はグルーピングされた音符の音価の時間長を１６倍した時間長に、音符数の合計音価をそれぞれ変更することを特徴としている。
【発明の効果】
【００１６】
本発明の楽譜演奏装置及び楽譜演奏プログラムによれば、楽譜において連符記号が記述されない場合であっても、小節規定時間と小節演奏時間が一致しない場合に小節内に連符部分を推定し、音符、休符の発音タイミング、音価を修正する連符化処理を行うことで、正しい音価を有する演奏情報を作成することができる。
連符化処理は、グルーピングされた音符の演奏時間が１拍分の基準時間より長い場合でグループ内に前記基準時間より長い音符がない場合、グルーピングされた音符に前記基準時間より長い音符がある場合で演奏時間が前記基準時間の２倍を超える場合、又は、グルーピングされた音符の演奏時間が１拍分の基準時間より短い場合でグループ内の音符数が３である場合に、それぞれグルーピングされた音符の音価を変更することで行われる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係る楽譜演奏装置が組み込まれた自動演奏装置の機能を示すブロック図である。
【図２】自動演奏装置のハードウエア構成例を示すブロック図である。
【図３】楽譜情報記憶手段が記憶する情報の詳細を説明するモデル図である。
【図４】演奏情報作成手段の構成を示す機能ブロック図である。
【図５】演奏情報作成手段による演奏情報の作成手順を示すフローチャート図である。
【図６】小節情報配列の一例を示すモデル図である。
【図７】楽譜例である。
【図８】図７の楽譜例の各音符から得た演奏情報を示す表である。
【図９】楽譜から小節演奏時間を算出する場合の手順を示すフローチャート図である。
【図１０】イベント種類の一例を示すモデル図である。
【図１１】連符推定を行う場合の全体の流れを示すフローチャート図である。
【図１２】連符推定を行う場合の詳細手順を示すフローチャート図である。
【図１３】楽譜例である。
【図１４】楽譜例の各音符に対して連符推定処理を行った場合の演奏情報を示す表である。
【図１５】楽譜例である。
【図１６】図１３の楽譜例に対して正しい連符記号が表示された楽譜例である。
【図１７】楽譜例である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら本発明の楽譜演奏装置について説明する。
図１は、コンピュータ上で動作し本発明の楽譜演奏装置（楽譜演奏プログラム）が組み込まれた自動演奏装置のブロック図であり、楽譜をスキャンした楽譜ファイルやＰＤＦ楽譜ファイルを記憶する楽譜ファイル記憶手段１と、楽譜ファイルを認識して楽譜情報を生成する楽譜情報生成手段２と、生成された楽譜情報を記憶する楽譜情報記憶手段３と、楽譜情報から演奏情報を作成する演奏情報作成手段４と、生成された演奏情報を記憶する演奏情報記憶手段５と、演奏情報を順次読み出し実際に音楽を演奏する楽音演奏手段６と、楽譜ファイルや楽譜情報を表示する楽譜表示手段７を備えて構成されている。
本発明の特徴的な構成は、演奏情報作成手段４において、楽譜情報から演奏情報を作成するに際し、連符の推定を行って正しい音価を求めるものであり、そのために必要な連符推定プログラムは演奏情報作成手段４の一部として機能する。
【００１９】
自動演奏装置のハードウエアは、パーソナルコンピュータ等の汎用情報処理装置によって実現することができる。図２は、コンピュータ上に構築された自動演奏装置のハードウエア構成を示すブロック図であり、バス１０に対して、ディスプレイ１１、マウス１２、キーボード１３、ＲＯＭ１４、ＲＡＭ１５、ＣＰＵ１６、ＨＤＤ１７、ディスクドライブ１８、ＭＩＤＩインターフェイス１９、オーディオインターフェイス２０、ネットワークインターフェイス２１を接続して構成されている。
【００２０】
コンピュータのＨＤＤ１７には、ＭＩＤＩインターフェイス１９、オーディオインターフェイス２０若しくはネットワークインターフェイス２１を介して楽譜ファイルを取り込んで演奏情報を作成し自動演奏を行うための楽譜演奏プログラムが、ディスクドライブ１８に装着された記録媒体からインストールされ、若しくはインターネットを介して所定のＵＲＬよりダウンロードされている。
ＣＰＵ１６は、上記の手順によりインストール又はダウンロードされた所定の制御プログラム（楽譜演奏プログラム）に従って各種処理（各ステップ）を実行し、楽譜演奏装置全体を制御するものであり、楽譜ファイル記憶手段１、楽譜情報生成手段２、楽譜情報記憶手段３を要部機能として備えることで、取り込んだ楽譜情報を電子情報として記憶し、記憶した情報を楽譜表示手段７に表示可能とするとともに、演奏情報作成手段４、演奏情報記憶手段５、楽音演奏手段６を備えることで、楽譜情報に応じて生成した演奏情報により楽音を自動的に演奏可能としている。
ＲＡＭ１５は、ＣＰＵ１６での処理に使用される情報を一時記憶するものである。
【００２１】
楽譜ファイル記憶手段１は、ＲＡＭ１５及びＨＤＤ１７で構成されている。楽譜ファイルは、上述したようにネットワークインターフェイス２１等から取り込んでもよいし、コンピュータに対して別途イメージスキャナを接続して取り込むようしてもよい。
楽譜情報生成手段２は、ＨＤＤ１７に記憶されたプログラムとそれを実行するＣＰＵ１６と、作業記憶領域として使用されるＲＡＭ１５などで構成されている。
楽譜情報記憶手段３は、ＲＡＭ１５及びＨＤＤ１７で構成される。
演奏情報作成手段４は、ＨＤＤ１７に記憶されたプログラムと、それを実行するＣＰＵ１６と、作業記憶領域として使用されるＲＡＭ１５などで構成される。
演奏情報記憶手段５は、ＲＡＭ１５及びＨＤＤ１７などで構成される。
楽音演奏手段６は、ＨＤＤ１７に記憶された楽譜演奏プログラムと、プログラムを実行するＣＰＵ１６と、作業記憶領域として使用されるＲＡＭ１５、音源装置及びオーディオインターフェイス２０などを含んで構成される。音源装置には、Ｄ／Ａ変換器、アンプ、スピーカを含むサウンドシステムが含まれている。
楽譜表示手段７は、ＨＤＤ１７に記憶された楽譜演奏プログラムと、プログラムを実行するＣＰＵ１６と、作業記憶領域として使用されるＲＡＭ１５、液晶ディスプレイ等のディスプレイ１１で構成される。
【００２２】
楽譜情報記憶手段３は、図３に示すように、ページ情報記憶手段３１とパート情報記憶手段３２を備えて構成されている。パート情報記憶手段３２は、パート数分のパート情報３３の配列として構成される。各パート情報３３には、音色、再生音量、再生定位情報などが含まれる。ページ情報記憶手段３１には、ページ数分のページ情報３４の配列として記録されている。各ページ情報３４には、少なくとも段落情報記憶手段３５と、五線情報記憶手段３６が含まれる。
【００２３】
段落情報記憶手段３５には、その段落に所属する全パートあるいは全五線共通に効力がある段落所属記号情報３５ａの配列として記録されている。各段落所属記号情報３５ａに記録される段落所属記号には、段落内でユニークな記号ID、記号カテゴリ情報、記号種類情報、記号カテゴリと記号種類に応じたパラメータ配列、ページ内での記号位置などが含まれる。記号カテゴリの例としては、繰り返し記号、小節線などが挙げられる。記号種類の例としては、D.C.、D.S.、繰り返し括弧など（カテゴリ＝繰り返し記号）、単線、二重線、繰り返し始点、繰り返し終点、終止線など（カテゴリ＝小節線）が挙げられる。
【００２４】
五線情報記憶手段３６には、ページ内の五線数分の五線情報３６ａの配列として記録されている。各五線情報３６ａには、所属パートID、所属段落ID、五線所属記号情報３６ｂなどが含まれる。五線所属記号情報３６ｂは、その五線に所属する五線所属記号の配列として記録されている。
五線所属記号情報３６ｂに記録される五線所属記号には、段落内でユニークな記号ID、記号カテゴリ情報、記号種類情報、OnTime、GateTime、記号カテゴリと記号種類に応じたパラメータ配列、ページ内での記号位置（ページの左上を原点とした座標）などが含まれる。
【００２５】
記号カテゴリの例としては、音符、休符、拍子記号、音部記号、調号、臨時記号などが挙げられる。
記号種類情報の例としては、全音符、４分音符、８分音符、１６分音符、３２分音符など（カテゴリ＝音符）、全休符、４分休符、８分休符、１６分休符、３２分休符など（カテゴリ＝休符）ト音記号、へ音記号など（カテゴリ＝音部記号）が挙げられる。
パラメータの例としては、音程（MIDIのNoteNo.）、付点の数、ChordID、TimingNo.、連桁IDなど（カテゴリ＝音符）、付点の数、ChordID、TimingNo.など（カテゴリID＝休符）、ChordID（同一タイミングに発音する音符グループのID）、TimingNo.（発音順番を示す番号）、GateTime（音符、休符の時間長を示す値）、OnTime（小節の先頭から発音開始までの時間）などが挙げられる。
【００２６】
演奏情報作成手段４は、図４に示すように、楽曲の拍子から小節規定時間を計算する小節規定時間計算手段４０１と、小節内の音符、休符の発音タイミング、音価（GateTime）から小節演奏時間を計算する小節演奏時間計算手段４０２と、計算された小節規定時間と小節演奏時間を比較する比較手段４０３と、小節規定時間と小節演奏時間が一致しない場合に小節内に連符が存在すると推定し、音符、休符の発音タイミング、音価を修正する音価修正手段４０４とを備えて構成されている。
そして、音価修正手段４０４は、楽譜における１拍分の時間となる基準時間設定手段４４１と、小節内の音符配列を記憶する小節音符配列記録手段４４２と、小節内の音符を拍毎にグルーピングするグルーピング手段４４３と、グルーピングされた音符の演奏時間と音符配列から算出される１拍分の基準時間との関係からグルーピングされた音符の音価を変更する連符化処理を行う連符化処理手段４４４とを備えている。
【００２７】
次に、楽譜演奏装置による楽譜作成の全体手順について、図５のフローチャートを参照しながら説明する。
先ず、楽譜情報生成手段２により楽譜情報の生成が行われる（ステップ４１）。楽譜情報生成手段２は、楽譜ファイル記憶手段１から楽譜ファイルを読み出し、そのファイルに含まれる描画情報から、ページ情報、パート情報、段落情報、段落所属記号情報、五線情報、五線所属記号情報が一般に知られている既存技術により生成される。ただし、五線所属記号情報のChordID、TimingNo.、GateTime、OnTimeは演奏情報作成手段４によって与えられる。
生成された楽譜情報は、楽譜情報記憶手段３に記録される。
【００２８】
続いて、演奏情報作成手段４によりステップ４２〜ステップ４６の手順で演奏情報が作成される。
【００２９】
ステップ４２では、図６に示すような小節情報配列を作成する。小節情報は各小節に対応するページ番号、段落番号、左側小節線の記号ID、右側小節線の記号ID、楽曲の拍子から求められる小節規定時間、小節番号を含んでいる。
小節規定時間は式（１）で求められる。
小節規定時間＝TimeBase×４／Den×Num        式（１）
ここでTimeBaseは、４分音符あたりのTickで、本実施例では480とする。
Denは楽曲の拍子の分母（１拍の長さ）、Numは楽曲拍子の分子（小節内の拍の数）を表す（小節規定時間計算手段４０１）。
【００３０】
次に、同一タイミングで発音される音符グループを示すChordIDを付与する（ステップ４３）。ChordIDは、横方向の位置及び同一の符尾に接しているかどうかによって決定される。
発音順番を示すTimingNo.を付与する（ステップ４４）。TimingNo.は、ChordID及び横方向の位置によって決定される。
GateTimeおよびOnTimeを付与する（ステップ４５）。GateTimeは音符の種類、付点の数によって決定され、OnTimeはGateTime及びTimingNo.によって決定される。
ステップ４２〜ステップ４５については、一般に知られている既存技術により行われる。
【００３１】
図７の楽譜に対してステップ４５までの手順で得られたChordID、TimingNo.、GateTime、OnTimeの演奏情報の一例を図８に示す。音符No.は、楽譜について上段左から右、続いて下段左から右に数字を順に付けたものである。カテゴリは、音符、休符別を表示する。この楽譜の場合、上段左から音符No.1〜No.10となり、下段左から音符No.11〜No.16となる。
本実施例では、GateTime及びOnTimeなどの時間はTickを用いて表す。４分音符の長さを480Tickと規定している。
【００３２】
図７の楽譜を例にOnTime及び小節演奏時間の算出手順について、図９のフローチャートを参照しながら説明する。
TimingNo.を１に初期化する（ステップ９１）。
EndTime配列を初期化する（ステップ９２）。
TimingNo.＝1の音符No.1を読み出す（ステップ９３）。
音符No.1のOnTimeを算出する（ステップ９４）。TimingNo.は１なので、OnTime=0となる。
音符No.1のEndTimeを計算する（ステップ９５）。音符1のOnTimeに音符No.1のGateTimeを加算し、EndTime＝240となる。このEndTimeをEndTime配列に加える。
同じTimingNo.の音符があるので、ステップ９３へ戻る（ステップ９６）。
【００３３】
音符No.11を読み出す（ステップ９３）。
音符No.11のOnTimeを算出する（ステップ９１）。これもTimingNo.は１なのでOnTime=0となる。
音符No.11のEndTimeを計算する（ステップ９５）。音符No.11のOnTimeに音符No.11のGateTimeを加算し、EndTime = 480となる。
EndTime配列には、240があるのみで、480は無いので480もEndTime配列へ追加する。
TimingNo＝１の音符の読み出しが終わったので、TimingNo.を２に更新し、次のTimingNo.の音符を読み出す。
【００３４】
音符No.2を読み出し（ステップ９３）、OnTimeを算出する（ステップ９４）。音符No.2のOnTimeは、EndTime配列の最も短い時間となる。この場合は240となる。
音符No.2のEndTimeを計算する（ステップ９５）。音符No.2のOnTimeに音符No.2のGateTimeを加算して、EndTime＝480となる。
480は既にEndTime配列に存在するので480はEndTime配列へは追加しない。さらにTimingNo.＝２の音符はもう存在しないので、今回音符No.2のOnTime割り当てた240をEndTime配列から削除する。
TimingNo.を３に更新し、次のTimingNo.の音符を読み出す。
【００３５】
音符No.3を読み出し（ステップ９３）、OnTimeを計算する（ステップ９４）。音符No.3のOnTimeはEndTime配列の最も短い値となる。この場合は480となる。
音符No.3のEndTimeを計算する（ステップ９５）。音符No.3のOnTimeに音符No.3のGateTimeを加算し、720となる。この値はEndTime配列にないのでEndTime配列に追加する。今回はTimingNo.3の音符がまだ存在するので、TimingNo.の更新は行われず、EndTime配列の480も削除しない。
【００３６】
ステップ９３で同じTimingNo.の音符No.12を読み出し、OnTimeを計算する（ステップ９４）。音符No.12のOnTimeはEndTime配列の最も小さい値の480となる。
音符No.12のEndTimeを計算する（ステップ９５）。音符No.12のOnTime+GateTime=960となる。この値はEndTime配列に無いので、EndTime配列に追加する。TimingNo.＝３の音符も他には無いので、EndTime配列の最も小さい値を削除する。
同様に処理を行うことで、全ての音符のOnTimeが算出されるとともにEndTime配列の更新が行われる。全ての音符の処理が終わったときにEndTime配列に残っている最も大きい値が小節演奏時間となる。
【００３７】
本発明の特徴的な構成は、ステップ４５に続くステップ４６で楽譜における連符推定を行い、ChordID、TimingNo.、GateTime、OnTimeの修正を行うことである。この部分についての詳細説明は後述する。
【００３８】
ステップ４６で連符推定を行った楽譜情報から演奏情報を作成する（ステップ４７）。演奏情報はMIDI規格のフォーマットを踏襲しており、以下のような演奏イベント情報の配列で構成される。
ノートイベント      ：音符の発音開始、発音停止のイベント
コントロールイベント：音量、定位、などを発音チャネルに設定するイベント
音色イベント        ：発音チャネルの音色を指定するイベント
テンポイベント      ：楽曲のテンポを設定するイベント
【００３９】
図１０に演奏イベント情報のフォーマットを示す。
イベント種類は、ノートイベント、コントロールイベント、テンポイベントなどを識別する番号である。
Data1は、ノートイベントであればその音程、コントロールイベントであれば、音量、定位などを識別する番号、テンポイベントであればテンポ値が入る。
Data2は、ノートイベントであればその発音強さ（０の場合発音停止を示す）、コントロールイベントであれば、音量、定位などの設定値が入る。
時間情報は楽曲開始からのそのイベント発生までの時間（Tick）が入る。
チャネル番号は、発音、音量などの制御対象となるチャネル番号が入る。
【００４０】
図５で示したステップ４６（連符推定）における大まかな流れについて、図１１のフローチャートを参照しながら説明する。
先ず、ステップ４２で作成した小節情報を読み出す（ステップ５１）。
この小節に含まれる音符情報を読み出し、音符配列に格納する（ステップ５２）。
【００４１】
音符上の読み出しは、以下の手順で行われる。
小節情報に記憶されたページ番号を元に、ページ情報を読み出す。
このページ情報から、小節情報の段落番号が示す段落情報を読み出す。
さらに段落情報から小節情報の左小節線の記号IDと一致する段落所属記号を読み出し、この横方向の位置を小節左端位置とする。同様に右小節線の段落所属記号を読み出し、小節右端位置とする。
ページ情報から小節情報の段落番号と所属段落IDが一致する五線情報を読み出す。
小節左端位置と小節右端位置の間に位置し、カテゴリが音符または休符である五線所属記号を小節音符配列に格納する。
【００４２】
小節音符配列から小節演奏時間を算出する（ステップ５３）。
小節演奏時間と小節情報の小節規定時間とを比較し（ステップ５４）、一致しない場合は連符推定を行う（ステップ５５）。ステップ５４で小節演奏時間と小節規定時間が一致する場合は、次の小節への処理へ移る（ステップ５６）。
【００４３】
次に、図１１で示したステップ５５における連符推定の詳細手順について、図１２のフローチャートを参照しながら、図１３の楽譜から図１４に示す演奏データを作成する場合を例に説明する。
先ず、音価修正手段４０４の基準時間設定手段４４１で基準時間を設定する（ステップ６１）。基準時間は１拍分の時間とする。図１３の楽譜の例では４／４拍子なので１拍は４分音符となり、480Tickである。
６／８拍子などの場合は、基準時間を８分音符３つ分とする。この場合の基準時間は720Tickである。
【００４４】
TimingNo.の配列を作成する（ステップ６２）。この場合、上段音符No.1〜No.12、及び、下段音符No.13〜No.16に対応する1〜16の数が配列に入る。
TimingNo.のインデックスの初期化、更新を行う（ステップ６３）。一番最初であればTimingNo.インデックスは０である。
TimingNo.インデックスが示すTimingNo.の音符を読み出す（ステップ６４）。この時点では音符No.1、No.13の音符が読み出される。
読み出した音符の内、音価（GateTime）が小さい音符を選択する（ステップ６５）。この場合、音符No.1が選択される。
選択した音符を拍グループに加える（ステップ６６）。
後述する所定の条件によってグルーピングが完了したかどうか判定し、完了すれば次のステップ６８へ進み、完了していなければステップ６３へ戻る（ステップ６７）。
【００４５】
ステップ６７におけるグループ化完了の条件は、以下のようになる。
・音符の場合
連桁がある場合
小節内最後の音符の場合（Ａ）→グループ化完了
上記以外の場合
後のタイミングに同じ連桁の音符がある（Ｂ）→グループ化継続
後のタイミングに同じ連桁の音符はない（Ｃ）→グループ化完了
連桁が無い場合（Ｄ）→グループ化完了
・休符の場合
拍グループ最初の音符の場合（Ｅ）→グループ化完了
上記以外の場合
小節内最後の音符の場合（Ｆ）→グループ化完了
上記以外の場合
この休符の前に連桁に属する音符が、拍グループにある場合
この休符の後に、上記音符と同じ連桁のある場合（Ｇ）→グループ化継続
上記以外（Ｈ）→グループ化完了
上記以外（Ｉ）→グループ化継続
【００４６】
図１３の楽譜についてグループ化を行う場合、先ず、音符No.1についてのグループ化を判断する。音符No.1は、音符で連桁があり、小節内最後の音符の場合以外の場合に該当し、後のタイミングに同じ連桁の音符があるので、上述した（Ｂ）のケースに該当し、グループ化を継続する。
次いでTimingNo.インデックスを更新し（ステップ６３）、TimingNo.2の音符No.2を読み出す（ステップ６４）。TimingNo.2に該当する音符は一つだけなので、音符No.2が選択され（ステップ６５）、拍グループに追加する（ステップ６６）。音符No.2は、ステップ６７においては、音符で連桁があり、小節内最後の音符の場合以外の場合に該当し、後のタイミングに同じ連桁の音符がないので（Ｃ）の条件に当てはまり、グループ化が完了する。ステップ６３〜ステップ６７でグルーピング手段４４３を構成している。
【００４７】
次に、小節演奏時間計算手段４０２を使用して拍グループの演奏時間を算出する（ステップ６８）。この場合、８分音符が２個であるので、480Tick となる。
続いて、算出された拍グループの演奏時間（480Tick）と基準時間（この楽譜の場合は４／４拍子なので１拍は４分音符となり480Tick）とを比較する（ステップ６９）。この拍グループでは、演奏時間と基準時間とが等しいので、拍グループの処理を連符でないと判断して完了する。拍グループの処理を完了する場合は、拍グループを初期化し（ステップ７０）、次の拍グループのグルーピングのためにステップ６３の処理へ移行する。
【００４８】
次に、TimingNo.インデックスを更新し（ステップ６３）、TimingNo.3の音符No.3及びNo.14を読み出す（ステップ６４）。音価が小さい音符No.3が選択され（ステップ６５）、拍グループに追加される（ステップ６６）。音符No.3は、ステップ６７においては、音符で連桁があり、小節内最後の音符の場合以外の場合に該当し、後のタイミングに同じ連桁の音符があるので（Ｂ）の条件でステップ６３の処理へ移行する。
【００４９】
TimingNo.インデックスを更新し（ステップ６３）、TimingNo.4の音符No.4が読み出され（ステップ６４）、拍グループへ追加される（ステップ６６）。音符No.4は、ステップ６７においては、音符で連桁があり、小節内最後の音符の場合以外の場合に該当し、後のタイミングに同じ連桁の音符があるので（Ｂ）の条件でステップ６３の処理へ移行する。
【００５０】
TimingNo.インデックスを更新し（ステップ６３）、TimingNo.5の音符No.5が読み出され（ステップ６４）、拍グループへ追加される（ステップ６６）。音符No.5は、ステップ６７においては、音符で連桁があり、小節内最後の音符の場合以外の場合に該当し、後のタイミングに同じ連桁の音符がないので（Ｃ）の条件に当てはまり、グループ化が完了する。
次に、拍グループの演奏時間（小節演奏時間計算手段を使用）を算出する（ステップ６８）。この場合、１６分音符が３個であるので、360Tick となる。
続いて、算出された拍グループの演奏時間（360Tick）と基準時間（この楽譜の場合は４／４拍子なので１拍は４分音符となり480Tick）とを比較する（ステップ６９）。この拍グループでは、演奏時間と基準時間とが等しくないので、ステップ７１に移行する。
【００５１】
ステップ７１では、拍グループの演奏時間（360Tick）が基準時間(480Tick）より短いかを判断し、演奏時間が基準時間より短い場合には、短い場合の処理が行われる（ステップ７２）。
【００５２】
ステップ７２では、拍グループの演奏時間が８分音符（240）になる場合の処理を行う。
本実施例では、楽曲で良く用いられる１６分音符の３連符の場合について説明する。ここでは以下のような条件ごとに処理を行う。
（Ｐ）拍グループ内の音符数が３の場合
８分音符処理フラグを反転させる。
連符化処理を行い（ステップ７３）、拍グループの初期化を行い（ステップ７４）、ステップ６３へ移行する。ステップ７３における連符化処理の詳細手順は後述する。
（Ｑ）拍グループ内の音符数が２であり、演奏時間が８分音符に等しい場合
８分音符処理フラグを反転させる。
拍グループ初期化の処理を行い（ステップ７５）、ステップ６３へ移行する。
（Ｒ）拍グループ内の音符数が１であり、その音符が８分音符であり、８分音符処理フラグが真である場合
８分音符処理フラグを偽にする。
拍グループ初期化処理を行い（ステップ７５）、ステップ６３へ移行する。
（Ｓ）（Ｐ）〜（Ｒ）のどれにも当てはまらない場合
拍グループ初期化処理を行うことなくステップ６３へ移行し、拍グループへ次の音符を追加する。
本実施例では、１６分音符が３つの場合について述べたが、３２分音符が５つ又は７つの場合、６４音符が１０個の場合なども同様の処理が行われる。
【００５３】
ステップ７２における８分音符処理フラグの処理は、図１５のＸ、Ｙなどのように、連桁の後の単独の８分休符を、拍グループとして成立させるためのものである。
【００５４】
今回（図１３の楽譜における音符No.3,4,5）の場合は、上述の（Ｐ）の条件（音符数が３）に当てはまるため、８分音符処理フラグを反転し（この場合は偽）、連符化処理を行い（ステップ７３）、拍グループの初期化を行い（ステップ７４）、ステップ６３に移行する。
【００５５】
音価修正手段４０４により連符化処理を行うステップ７３では、グルーピングされた音符のGateTimeの変更（連符化）を以下の手順で行う。
【００５６】
先ず、拍グループ内の連続した同一のGateTimeの音符を連符グループとしてまとめる。
【００５７】
連符グループの音符数に応じて、連符の全ての音符の合計GateTime値を以下の様に設定する。
音符数が３→連符グループの音符のGateTimeの２倍
音符数が５〜７→連符グループの音符のGateTimeの４倍
音符数が９〜１５→連符グループの音符のGateTimeの８倍
音符数が１７〜３１→連符グループの音符のGateTimeの１６倍
なお、音符数が２、４、８，１６の場合は、通常の音符（連符でない音符）で音価を表現可能であるので、連符化処理からは除かれる。
【００５８】
また、６／８拍子などの３連系の場合は、連符の全ての音符の合計GateTime値を以下の様に設定する。
音符数が２→連符グループの音符のGateTimeの１倍
音符数が４〜５→連符グループの音符のGateTimeの２倍
音符数が７〜１１→連符グループの音符のGateTimeの４倍
音符数が１２〜２３→連符グループの音符のGateTimeの８倍
音符数が２５〜４７→連符グループの音符のGateTimeの１６倍
６／８拍子などの３連系の場合、音符数が３、６、９、２４の場合は通常の音符（連符でない音符）で音価を表現可能であるので、連符化処理からは除かれる。
【００５９】
連符グループの音符のGateTimeを下記の式で計算する。
連符グループの最後以外の音符は、式（２）で算出する。
GateTime＝合計GateTime÷連符数        式（２）
連符グループ最後の音符は、式（３）で算出する。
GateTime＝合計GateTime−（合計GateTime÷連符数）×（連符数−１）  式（３）
最後の音符のみ式（３）で算出するのは、連符グループを構成する音符数で合計GateTimeが割りきれない場合に対処するためである。
【００６０】
今回の場合は、音符No.3〜音符No.5が連符グループにまとめられ、連符化される。
すなわち、音符No.3〜音符No.5は１６分音符なので、連符グループのGateTime（変換前）は120となり、合計GateTimeは、音符数が３であるので上述の算出方法により、連符グループの音符のGateTimeの２倍の240となる。また、変更後のそれぞれの音符のGateTimeは、式（２）及び（３）から80となる。
連符化処理が行われた後は、拍グループの初期化を行い（ステップ７４）、ステップ６３へ移行し、次の音符についての処理を行う。
【００６１】
これまでの手順と同様に、音符No.6と音符No.7が読み出され（ステップ６４）、拍グループに登録される（ステップ６６）。
グルーピング完了（ステップ６７）の後、ステップ６８で拍グループの演奏時間を計算する（小節演奏時間計算手段を使用）。この場合は、拍グループは１６分音符が２個であるので240となる。
拍グループの演奏時間(240)は、基準時間(480)より短いためステップ７２の処理に移行する（ステップ７１）。
短い場合の処理（ステップ７２）では、上述の（Ｑ）の条件（拍グループ内の音符数が２であり、演奏時間が８分音符に等しい）に当てはまるので、連符化を行うことなく、拍グループを初期化して（ステップ７５）、ステップ６３の処理へ移行する。
【００６２】
次に、音符No.8と音符No.16が読み出される（ステップ６４）。ステップ６５で音符No.8が選択され、ステップ６６で拍グループに追加される。
ステップ６７では条件（Ｂ）なので、ステップ６３の処理に移行し次の音符を読み出す。
【００６３】
音符No.9が読み出され（ステップ６４）、拍グループに追加される（ステップ６６）。ステップ６７では条件（Ｇ）なので、ステップ６３に移行し次の音符を読み出す。
【００６４】
音符No.10が読み出され（ステップ６４）、拍グループに追加される（ステップ６６）。ステップ６７では条件（Ｃ）なのでグループ化を終了する。
ステップ６８で拍グループの演奏時間を計算する。この場合は240×３で720となる。
演奏時間と基準時間を比較し、等しくないのでステップ７１へ移行する（ステップ６９）。
ステップ７１で、演奏時間(720)と基準時間(480)を比較し、演奏時間が基準時間より長いのでステップ７６へ移行する。
ステップ７６では、拍グループに基準時間（４分音符）より長い音符があるか調べる。この場合は無いので連符化処理を行う（ステップ７３）。
【００６５】
連符化処理（ステップ７３）では、音符No.8〜音符No.10が連符グループとしてまとめられる。連符グループの内の音符は８分音符なので、合計GateTimeは、音符数が３の場合で８分音符(240)の２倍の480となり、連符グループの各音符のGateTimeは式（２）及び式（３）から160となる。連符化処理が終わると、拍グループの初期化を行い（ステップ７４）、ステップ６３へ戻る。
【００６６】
音符No.11が読み出され（ステップ６４）、拍グループに追加される（ステップ６６）。
ステップ６７では、条件（Ｄ）によりグループ化を完了し、ステップ６８で拍グループの演奏時間を算出する。今回、演奏時間は240となる。
ステップ６９で演奏時間(240)と基準時間(480)を比較し、等しくないのでステップ７１へ移行する。
ステップ７１では、演奏時間(240)と基準時間(480)を比較し、演奏時間が基準時間より短いのでステップ７２へ移行して短い場合の処理を行う。
ステップ７２では、上述の（Ｓ）の条件（（Ｐ）〜（Ｒ）のどれにも当てはまらない）に該当するので、ステップ６３へ移行する。
【００６７】
音符No.12が読み出され（ステップ６４）、拍グループに追加する（ステップ６６）。ステップ６７では条件（Ｆ）によりグループ化が完了する。
ステップ６８で拍グループの演奏時間を算出する。この場合、演奏時間は480となる。
ステップ６９で拍グループの演奏時間(480)と基準時間(480)を比較し、演奏時間と基準時間が等しいので拍グループを初期化して（ステップ７０）、ステップ６３へ移行する。
【００６８】
ステップ６３では、図１３の楽譜における全てのTimingNo.(No.1~12)の処理が完了したので処理を終了する。連符化処理を行うことで、図１３の楽譜に連符番号を正しく表記した場合は図１６のようになることがわかる。
【００６９】
また、図１２のフローチャートにおけるステップ８１及びステップ８２は、図１５のＺのような楽譜（付点音符）に対応するためである。
拍グループに付点４分音符が読み込まれた場合は、付点４分音符の演奏時間は４分音符の１．５倍の720となる。演奏時間(720)は基準時間(480)より長いためステップ７１からステップ７６に移行する。ステップ７６では、基準時間(480)より長い音符(720)があるので、ステップ８１へ移行する。
【００７０】
ステップ８１では、演奏時間(720)と基準時間(480)を比較し、２倍ではないのでステップ８２へ移行する。
ステップ８２では演奏時間(720)と基準時間(480)を比較し、演奏時間(720)が基準時間(480)の２倍未満であるのでステップ６３へ移行し、TimingNo.を更新する。
ステップ６４で次の８分音符を読み、拍グループに追加する。
ステップ６７では条件（Ｄ）なのでグループ化を完了し、ステップ６８で演奏時間を算出する。この場合、演奏時間は、960(720+240)となる。
ステップ６９〜ステップ８１により、演奏時間(960)が基準時間(480)の２倍であるので、ステップ８１からステップ７０に移行し、最終的には連符化を行わずに処理を終える。
【００７１】
上述した連符化処理によれば、以下の（１）〜（３）の場合にグルーピングされた音符の音価を変更する連符化処理が行われる。
（１）グルーピングされた音符の演奏時間が１拍分の基準時間より長い場合でグループ内に基準時間より長い音符がない場合（ステップ７６でＮｏの場合）
（２）グルーピングされた音符の演奏時間が１拍分の基準時間より短い場合でグループ内の音符数が３である場合（ステップ７２で条件（Ｐ）を満足する時）
（３）グルーピングされた音符に基準時間より長い音符がある場合で演奏時間が基準時間の２倍を超える場合（ステップ８２でＮｏの場合）
したがって、グルーピングされた音符に対して、その演奏時間が１拍分の基準時間に等しい場合を除いて、演奏時間が基準時間に対して短い場合及び長い場合の両方について、連桁でつながった複数の音符（グルーピングされた音符）の連符推定を行って正しい音価に処理することができる。その際、音符をグルーピングすることで、３連符、５連符、７連符、１０連符などあらゆる連符に対応して処理することができる。
【符号の説明】
【００７２】
４…演奏情報作成手段、  ４０１…小節規定時間計算手段、  ４０２…小節演奏時間計算手段、  ４０３…比較手段、  ４０４…音価修正手段、  ４４１…基準時間設定手段、  ４４２…小節音符配列記録手段、  ４４３…グルーピング手段、  ４４４…連符化処理手段。
【図１】
0005988672.tif 000002
【図２】
0005988672.tif 000003
【図３】
0005988672.tif 000004
【図４】
0005988672.tif 000005
【図５】
0005988672.tif 000006
【図６】
0005988672.tif 000007
【図７】
0005988672.tif 000008
【図８】
0005988672.tif 000009
【図９】
0005988672.tif 000010
【図１０】
0005988672.tif 000011
【図１１】
0005988672.tif 000012
【図１２】
0005988672.tif 000013
【図１３】
0005988672.tif 000014
【図１４】
0005988672.tif 000015
【図１５】
0005988672.tif 000016
【図１６】
0005988672.tif 000017
【図１７】
0005988672.tif 000018