(57)【要約】【課題】ラインの帰属を判りやすく楽譜表示する楽譜表示装置を実現する。【解決手段】ステップＳＫ５〜ＳＫ９では、ノートポインタｍｅで指定される曲データ［ｍｅ］と同じラインであって、かつ発音時刻および音長が共通する和音構成音（曲データ［ｎｅ］）の内、曲データ［ｍｅ］より音高の低い和音構成音（曲データ［ｎｅ］）を探し出す。そして、該当する和音構成音（曲データ［ｎｅ］）を曲データ［ｍｅ］とは異なるラインに分離する。この結果、楽譜化する曲データが和音を形成する場合であっても、ラインの帰属を判りやすく楽譜表示することができる。【選択図】      図１５
2008009448.tif 000002
【特許請求の範囲】
【請求項１】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索手段と、
前記曲データ記憶手段に記憶される曲データを順次指定する指定手段と、
前記和音検索手段により検索される和音構成音の内、前記指定手段により指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離手段と
を具備することを特徴とする楽譜表示装置。
【請求項２】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから挿入すべき休符を判定する休符判定手段と、
前記休符判定手段が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索手段と、
前記検索手段が該当する音を検索した場合、前記前記休符判定手段が判定した挿入すべき休符を省略する休符省略手段と
を具備することを特徴とする楽譜表示装置。
【請求項３】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第１および第２のラインに分離するライン分離手段と、
前記ライン分離手段により第１および第２のラインに分離された曲データの音高に応じて、当該第１および第２のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当手段と
を具備することを特徴とする楽譜表示装置。
【請求項４】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データにおいて第１のラインを形成する各音の平均音高を表す第１平均音高と、第２のラインを形成する各音の平均音高を表す第２平均音高とを小節毎に抽出する抽出手段と、
前記曲データ記憶手段に記憶される曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第１平均音高との差分を表す第１差分と、当該独立音と前記第２平均音高との差分を表す第２差分とを発生する差分発生手段と、
前記差分発生手段により生成される第１差分と第２差分との大小比較結果に応じて、その独立音を第１のライン又は第２のラインのいずれかに含めるかを調整する調整手段と
を具備することを特徴とする楽譜表示装置。
【請求項５】
曲を構成する各音を表す曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索処理と、
曲を構成する各音を表す曲データを順次指定する指定処理と、
前記和音検索処理により検索される和音構成音の内、前記指定処理にて指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項６】
曲を構成する各音を表す曲データから挿入すべき休符を判定する休符判定処理と、
前記休符判定処理が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索処理と、
前記検索処理が該当する音を検索した場合、前記前記休符判定処理にて判定された挿入すべき休符を省略する休符省略処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項７】
曲を構成する各音を表す曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第１および第２のラインに分離するライン分離処理と、
前記ライン分離処理にて第１および第２のラインに分離された曲データの音高に応じて、当該第１および第２のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項８】
曲を構成する各音を表す曲データにおいて第１のラインを形成する各音の平均音高を表す第１平均音高と、第２のラインを形成する各音の平均音高を表す第２平均音高とを小節毎に抽出する抽出処理と、
曲を構成する各音を表す曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第１平均音高との差分を表す第１差分と、当該独立音と前記第２平均音高との差分を表す第２差分とを発生する差分発生処理と、
前記差分発生処理にて生成される第１差分と第２差分との大小比較結果に応じて、その独立音を第１のライン又は第２のラインのいずれかに含めるかを調整する調整処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライン（演奏パート）の帰属を判りやすく楽譜表示する楽譜表示装置および楽譜表示プログラムに関する。
【背景技術】
【０００２】
曲を構成する各音を表す曲データを楽譜化して表示する楽譜表示装置が知られている。この種の装置としては、例えば特許文献１には、色彩と楽曲の演奏の仕方に関する指示との対応関係を示す関係情報を用いて、楽譜中で演奏指示する部分を指定色で表示して演奏練習を効果的に行えるようにした楽譜表示装置が開示され、また特許文献２には、連桁（ビーム）で繋ぐ音の両端の音の符頭表示位置の差を検出し、検出した符頭表示位置の差（音高差）が所定値より小さければ、連桁の傾きを水平に設定し、一方、符頭表示位置の差（音高差）が所定値より大きければ、連桁の傾きを所定に傾きに設定することによって、連桁で繋ぐ両端の音の音程が小さい場合や音程が極端に大きい場合でも演奏者が見易いように連桁を表示する楽譜表示方法が開示されている。
【０００３】
【特許文献１】特開２００３−５７４３号公報
【特許文献２】特開平１０−７４０８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、従来の楽譜表示装置には、次のような問題がある。
（１）楽譜化する曲データが和音を形成する場合、ライン（演奏パート）の帰属が判り難い楽譜になるという弊害がある。
（２）休符をライン毎に設けることから、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという弊害がある。
（３）複数のラインが存在する小節の中に単独に存在する音符があると、どのラインに帰属するのかが不明な判り難い楽譜になるという弊害がある。
（４）両手各パートに対応するラインが混在した曲データの場合、ライン（演奏パート）の帰属が判り難い楽譜になるという弊害がある。
【０００５】
そこで本発明は、このような事情に鑑みてなされたもので、ライン（演奏パート）の帰属を判りやすく楽譜表示することができる楽譜表示装置および楽譜表示プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索手段と、前記曲データ記憶手段に記憶される曲データを順次指定する指定手段と、前記和音検索手段により検索される和音構成音の内、前記指定手段により指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離手段とを具備することを特徴とする。
【０００７】
請求項２に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから挿入すべき休符を判定する休符判定手段と、前記休符判定手段が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索手段と、前記検索手段が該当する音を検索した場合、前記前記休符判定手段が判定した挿入すべき休符を省略する休符省略手段とを具備することを特徴とする。
【０００８】
請求項３に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第１および第２のラインに分離するライン分離手段と、前記ライン分離手段により第１および第２のラインに分離された曲データの音高に応じて、当該第１および第２のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当手段とを具備することを特徴とする。
【０００９】
請求項４に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データにおいて第１のラインを形成する各音の平均音高を表す第１平均音高と、第２のラインを形成する各音の平均音高を表す第２平均音高とを小節毎に抽出する抽出手段と、前記曲データ記憶手段に記憶される曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第１平均音高との差分を表す第１差分と、当該独立音と前記第２平均音高との差分を表す第２差分とを発生する差分発生手段と、前記差分発生手段により生成される第１差分と第２差分との大小比較結果に応じて、その独立音を第１のライン又は第２のラインのいずれかに含めるかを調整する調整手段とを具備することを特徴とする。
【００１０】
請求項５に記載の発明では、曲を構成する各音を表す曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索処理と、曲を構成する各音を表す曲データを順次指定する指定処理と、前記和音検索処理により検索される和音構成音の内、前記指定処理にて指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離処理とをコンピュータで実行させることを特徴とする。
【００１１】
請求項６に記載の発明では、曲を構成する各音を表す曲データから挿入すべき休符を判定する休符判定処理と、前記休符判定処理が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索処理と、前記検索処理が該当する音を検索した場合、前記前記休符判定処理にて判定された挿入すべき休符を省略する休符省略処理とをコンピュータで実行させることを特徴とする。
【００１２】
請求項７に記載の発明では、曲を構成する各音を表す曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第１および第２のラインに分離するライン分離処理と、前記ライン分離処理にて第１および第２のラインに分離された曲データの音高に応じて、当該第１および第２のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当処理とをコンピュータで実行させることを特徴とする。
【００１３】
請求項８に記載の発明では、曲を構成する各音を表す曲データにおいて第１のラインを形成する各音の平均音高を表す第１平均音高と、第２のラインを形成する各音の平均音高を表す第２平均音高とを小節毎に抽出する抽出処理と、曲を構成する各音を表す曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第１平均音高との差分を表す第１差分と、当該独立音と前記第２平均音高との差分を表す第２差分とを発生する差分発生処理と、前記差分発生処理にて生成される第１差分と第２差分との大小比較結果に応じて、その独立音を第１のライン又は第２のラインのいずれかに含めるかを調整する調整処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１４】
請求項１、５に記載の発明によれば、曲を構成する各音を表す曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索し、検索される和音構成音の内、指定処理にて順番に指定される曲データより音高の低い和音構成音を抽出し、抽出した和音構成音を当該曲データとは異なるラインに分離するので、楽譜化する曲データが和音を形成する場合であっても、ラインの帰属を判りやすく楽譜表示することができる。
【００１５】
請求項２、６に記載の発明によれば、曲を構成する各音を表す曲データから挿入すべき休符を判定し、判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する。該当する音が検索された場合に挿入すべき休符を省略する。したがって、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することができる。
【００１６】
請求項３、７に記載の発明によれば、曲を構成する各音を表す曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第１および第２のラインに分離し、第１および第２のラインに分離された曲データの音高に応じて、当該第１および第２のラインに分離された曲データを左手パートもしくは右手パートに割り当てるので、両手各パートに対応するラインが混在した曲データの場合、ラインの帰属が判り難い楽譜になるという弊害を回避し、ラインの帰属を判りやすく楽譜表示することができる。
【００１７】
請求項４、８に記載の発明によれば、曲を構成する各音を表す曲データにおいて第１のラインを形成する各音の平均音高を表す第１平均音高と、第２のラインを形成する各音の平均音高を表す第２平均音高とを小節毎に抽出する。そして、曲を構成する各音を表す曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第１平均音高との差分を表す第１差分と、当該独立音と前記第２平均音高との差分を表す第２差分とを発生し、この第１差分と第２差分との大小比較結果に応じて、その独立音を第１のライン又は第２のラインのいずれかに含めるかを調整する。この結果、複数のラインが存在する小節の中に単独に存在する音符があると、どのラインに帰属するのかが不明な判り難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することができる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明の実施の形態について説明する。
［第１実施形態］
Ａ．構成
図１は、本発明の実施の一形態による楽譜表示装置の構成を示すブロック図である。この図において、操作部１０は、電源スイッチの他、キー入力用のキーボードやマウス等の入力操作子を備え、入力操作に対応したイベントを発生する。このイベントはＣＰＵ１１に取り込まれる。ＣＰＵ１１は、ＲＯＭ１２に記憶される各種制御プログラムを実行し、操作部１０が発生するイベントに対応して装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。
【００１９】
ＲＯＭ１２は、プログラムエリアおよびデータエリアを備える。ＲＯＭ１２のプログラムエリアには、ＣＰＵ１１にロードされる各種制御プログラムが記憶される。各種制御プログラムとは、後述するメインルーチン、楽譜情報生成処理、個別情報生成処理、和音処理、連桁グループ処理、連桁処理、楽譜表示処理およびライン分離処理を含む。ＲＯＭ１２のデータエリアには、音符や休符、譜表などを表示するための楽譜表示データやＧＵＩ画面を形成する各種画面データが記憶される。
【００２０】
ＲＡＭ１３は、ワークエリアおよびデータエリアを備える。ＲＡＭ１３のワークエリアには、ＣＰＵ１１の処理に用いられる各種レジスタ／フラグデータが一時記憶される。ＲＡＭ１３のデータエリアは、曲データエリアおよび楽譜情報エリアから構成される。ＲＡＭ１３の曲データエリアには複数曲分の曲情報が格納される。曲情報は、図２に図示するように、演奏パートに対応する複数の演奏トラック［０］〜［Ｎ］から構成される。１つの演奏トラックは、対応する演奏パートを形成する各音を表す曲データ［０］〜［Ｎ］を有し、その終端には曲の終わりを表すＥＮＤデータを備える。曲データは、演奏開始時点からの経過時間（絶対時間）で表される発音開始時刻ＩＴｉｍｅ、音長ｌＧａｔｅ、音高Ｐｉｔｃｈおよび次の曲データを指定するポインタｐＮｅｘｔから構成される。
【００２１】
ＲＡＭ１３の楽譜情報エリアには、後述する楽譜情報生成処理によって上述の曲データ［０］〜［Ｎ］から派生される音符データ［０］〜［Ｎ］が格納される。曲データ［０］〜［Ｎ］に対応して生成される音符データ［０］〜［Ｎ］は、図３に図示するように、ポインタｎｅｘｔ、ポインタｐｒｅｖ、ポインタｍＥｖｅｎｔ、発音開始時刻ＩＴｉｍｅ、小節番号ｓＭｅａｓ、拍番号ｓＢｅａｔ、座標（ｉｘ，ｉｙ）、ノートタイプｃＮｏｔｅＴｙｐｅ、コードｃＣｈｏｒｄ、連桁パターン始点ｃＲｅｎＫｏｕＳ、連桁パターン終点ｃＲｅｎＫｏｕＥ、ライン番号ｃＬｉｎｅおよび段交叉フラグｃＤａｎＣｒｏｓｓから構成される。
【００２２】
ポインタｎｅｘｔは、次の音符データを指定する。ポインタｐｒｅｖは、１つ前の音符データを指定する。ポインタｍＥｖｅｎｔは、対応する曲データ［ｍＥｖｅｎｔ］を指定する。発音開始時刻ＩＴｉｍｅは、音符データの発音タイミングを演奏開始時点からの経過時間で表す。小節番号ｓＭｅａｓは、音符データが含まれる小節の番号を表す。拍番号ｓＢｅａｔは、音符データの拍番号を表す。座標（ｉｘ，ｉｙ）は、背景画像となる五線譜上における音符データの表示位置を表す。ノートタイプｃＮｏｔｅＴｙｐｅは、音符の種類を表す。例えば、「１」の場合には全音符、「２」の場合には２分音符、「４」の場合には４分音符を表す。
【００２３】
コードｃＣｈｏｒｄは、「０」の場合に非和音を、「１」の場合に和音開始音を、「２」の場合に和音開始音および和音終了音以外の和音構成音を意味する和音途中音を、「３」の場合に和音終了音を表す。連桁パターン始点ｃＲｅｎｋｏｕＳは、選択された連桁パターン（後述する）の始点を表す。連桁パターン終点ＲｅｎｋｏｕＥは、選択された連桁パターンの終点を表す。ライン番号ｃＬｉｎｅは、ラインの番号を表す。段交叉フラグＤａｎＣｒｏｓｓは、段交叉の有無を表すフラグである。
【００２４】
図１において、音源１４は、周知の波形メモリ読み出し方式で構成され、ＲＡＭ１３の曲データエリアからＣＰＵ１１が読み出す曲データを、指定テンポに同期して再生して楽音信号を出力する。サウンドシステム１５は、音源１４から出力される楽音信号をＤ／Ａ変換した後に増幅してスピーカＳＰから発音する。表示部１６は、ＣＰＵ１１から供給される表示制御信号に応じて楽譜表示したり、装置の動作状態を表示する。インタフェース（Ｉ／Ｆ）部１７は、ＣＰＵ１１の制御の下に外部ＭＩＤＩ機器とＭＩＤＩ形式の曲データを授受するＭＩＤＩインタフェースを備える。なお、図１には図示していないが、インタフェース（Ｉ／Ｆ）部１７のＭＩＤＩインタフェースに、外部ＭＩＤＩ機器としてキーボード装置が接続される場合、当該キーボード装置の押離鍵操作に対応して生じる曲データは、ＭＩＤＩインタフェースを介してＲＡＭ１３の曲データエリアに格納されるようになっている。
【００２５】
Ｂ．動作
次に、図４〜図１３を参照して第１実施形態の動作について説明する。以下では、先ず最初に全体動作としてメインルーチンの動作を説明した後、続いてメインルーチンからコールされる楽譜情報生成処理および楽譜表示処理の各動作並びに楽譜情報生成処理を構成する個別情報生成処理、和音処理、連桁グループ処理、連桁処理およびライン分離処理の各動作を説明する。
【００２６】
（１）メインルーチンの動作
装置電源の投入に応じて、ＣＰＵ１１は図４に図示するメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ１３のワークエリアに設けられる各種レジスタ／フラグ類をリセットしたり、初期値セットする初期化を実行する。この後、ステップＳＡ２に進み、ユーザによるキー操作入力待ち状態となる。そして、ステップＳＡ３〜ＳＡ５では、キー操作入力待ち状態下で「曲選択」、「設定」および「再生」の実行を指示するキー操作入力の有無を判断する。
【００２７】
「曲選択」を指示するキー操作入力、すなわちＲＡＭ１３の曲データエリアに記憶される複数曲の曲情報のいずれかを選択すると、ステップＳＡ３の判断結果が「ＹＥＳ」になり、ステップＳＡ６を介して楽譜情報生成処理（後述する）を実行した後、ステップＳＡ９を介して楽譜表示処理（後述する）を実行する。そして、上述のステップＳＡ２に処理を戻してキー操作入力待ちの状態に復帰する。
【００２８】
「設定」を指示するキー操作入力が行われた場合には、ステップＳＡ４の判断結果が「ＹＥＳ」になり、ステップＳＡ７を介して設定処理を実行する。設定処理では、曲選択された曲データを楽譜として表示するための小節情報を設定する。小節情報とは、例えば音部記号や拍子記号、調記号を指定する他、曲選択された曲データの各小節位置および各段位置を指定する情報である。こうした設定処理を実行した後は、ステップＳＡ９を介して楽譜表示処理（後述する）を実行してから上述のステップＳＡ２に処理を戻し、キー操作入力待ちの状態に復帰する。
【００２９】
「再生」を指示するキー操作入力が行われた場合には、ステップＳＡ５の判断結果が「ＹＥＳ」になり、ステップＳＡ８に進む。ステップＳＡ８では、上記ステップＳＡ３にて選択された曲データを再生する再生処理を実行する。この後、ステップＳＡ９を介して楽譜表示処理（後述する）を実行してから上述のステップＳＡ２に処理を戻してキー操作入力待ち状態に復帰する。
【００３０】
（２）楽譜情報生成処理の動作
次に、図５を参照して楽譜情報生成処理の動作を説明する。上述したメインルーチンのステップＳＡ６（図４参照）を介して本処理が実行されると、ＣＰＵ１１はステップＳＢ１に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ［０］〜［Ｎ］について周知のクオンタイズ（時間軸の量子化）を施す。クオンタイズにより、曲データ［０］〜［Ｎ］の発音開始時刻ＩＴｉｍｅのずれが補正される。次いで、ステップＳＢ２では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。
【００３１】
続いて、ステップＳＢ３〜ＳＢ８では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて「個別情報生成処理（ステップＳＢ４）」、「和音処理（ステップＳＢ５）」、「連桁グループ処理（ステップＳＢ６）」および「連桁処理（ステップＳＢ７）」を施す。そして、全ての演奏トラックについて処理し終え、ステップＳＢ８において歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＢ３の判断結果が「ＹＥＳ」になり、ステップＳＢ９に進む。
【００３２】
ステップＳＢ９では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。次いで、ステップＳＢ１０〜ＳＢ１２では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて「ライン分離処理（ステップＳＢ１１）」を施す。そして、全ての演奏トラックについて「ライン分離処理（ステップＳＢ１１）」を行い、ステップＳＢ１２で歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＢ１０の判断結果が「ＹＥＳ」になり、本処理を完了させる。
【００３３】
（３）個別情報生成処理の動作
次に、図６を参照して個別情報生成処理の動作を説明する。上述した楽譜情報生成処理のステップＳＢ４（図５参照）を介して本処理が実行されると、ＣＰＵ１１は図６に図示するステップＳＣ１に処理を進め、曲データ［０］〜［Ｎ］を指定するノートポインタｎｐｔｒをゼロリセットする。続いて、ステップＳＣ２では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＣ３に進む。
【００３４】
ステップＳＣ３では、ノートポインタｎｐｔｒで現在指定される曲データ［ｎｐｔｒ］中の発音開始時刻ＩＴｉｍｅに音長ｌＧａｔｅを加算した時刻と、ポインタｐＮｅｘｔで指定される次の曲データ［ｐＮｅｘｔ］中の発音開始時刻ＩＴｉｍｅとの時間差から休符が必要か否かを判断する。休符が必要ならば、判断結果は「ＹＥＳ」になり、ステップＳＣ４に進み、上記ステップＳＣ３で得た時間差に対応する休符を決定し、続くステップＳＣ５では、決定した休符を表示する小節内での表示位置を決めた後、ステップＳＣ６に進む。
【００３５】
一方、休符が不必要な場合には、上記ステップＳＣ３の判断結果が「ＮＯ」になり、ステップＳＣ６に進む。ステップＳＣ６では、ノートポインタｎｐｔｒで現在指定される曲データ［ｎｐｔｒ］中の音長ｌＧａｔｅに対応するノートタイプｃＮｏｔｅＴｙｐｅ（音符種類）を決定する。ステップＳＣ７では、その決定したノートタイプｃＮｏｔｅＴｙｐｅ（音符種類）を表示する小節内での表示位置を決定する。そして、ステップＳＣ８では、例えば次の音符とタイで繋ぐ等の、その他の付帯情報を設定する。次いで、ステップＳＣ９では、ノートポインタｎｐｔｒを歩進させた後、上記ステップＳＣ２に処理を戻す。以後、ノートポインタｎｐｔｒが曲終端ｅｎｄに達する迄、上記ステップＳＣ２〜ＳＣ９を繰り返し、ノートポインタｎｐｔｒが曲終端ｅｎｄに達すると、ステップＳＣ２の判断結果が「ＹＥＳ」になり、本処理を終える。
【００３６】
（４）和音処理の動作
次に、図７を参照して和音処理の動作を説明する。上述した楽譜情報生成処理のステップＳＢ５（図５参照）を介して本処理が実行されると、ＣＰＵ１１は図７に図示するステップＳＤ１に処理を進め、曲データ［０］〜［Ｎ］を指定するノートポインタｎｐｔｒをゼロリセットする。続いて、ステップＳＤ２では、和音検出の有無を表すフラグＩｎＣｈｏｒｄに「０」をセットして未検出状態を表す。次いで、ステップＳＤ３では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＤ４に進む。
【００３７】
ステップＳＤ４では、ノートポインタｎｐｔｒで現在指定される曲データ［ｎｐｔｒ］中の発音開始時刻ＩＴｉｍｅと、当該曲データ［ｎｐｔｒ］中のポインタｐＮｅｘｔで指定される次の曲データ［ｐＮｅｘｔ］中の発音開始時刻ＩＴｉｍｅとが同一であるか否かを判断する。以下、次の音の発音時刻と同一の場合と、そうでない場合とに分けて動作説明を進める。
【００３８】
＜次の音の発音時刻と同一の場合＞
次の音の発音時刻と同一であると、ステップＳＤ４の判断結果が「ＹＥＳ」になり、ステップＳＤ５に進む。ステップＳＤ５では、上述したフラグＩｎＣｈｏｒｄが「０」、つまり和音未検出状態であるか否かを判断する。和音未検出状態であると、判断結果は「ＹＥＳ」になり、ステップＳＤ７に進み、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］に対応して派生する音符データ［ｎｐｔｒ］中のコードｃＣｈｏｒｄに、和音開始音を表す値「１」をストアする。次いで、ステップＳＤ８では、和音の検出に伴い、フラグＩｎＣｈｏｒｄに「１」をセットする。そして、ステップＳＤ９に進み、ノートポインタｎｐｔｒをインクリメントして歩進させた後、上述のステップＳＤ３に処理を戻す。
【００３９】
一方、すでに和音を検出した状態であると、上記ステップＳＤ５の判断結果は「ＮＯ」になり、ステップＳＤ６に進む。ステップＳＤ６では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］に対応して派生する音符データ［ｎｐｔｒ］中のコードｃＣｈｏｒｄに、和音途中音を表す値「２」をストアする。そして、ステップＳＤ８に進み、フラグＩｎＣｈｏｒｄに「１」をセットした後、ステップＳＤ９においてノートポインタｎｐｔｒを歩進させてから上述のステップＳＤ３に処理を戻す。
【００４０】
＜次の音の発音時刻と同一でない場合＞
次の音の発音時刻と同一でなければ、前述したステップＳＤ４の判断結果は「ＮＯ」になり、ステップＳＤ１０に進む。ステップＳＤ１０では、フラグＩｎＣｈｏｒｄが「１」、つまり和音検出状態であるか否かを判断する。和音検出状態であると、判断結果が「ＹＥＳ」になり、ステップＳＤ１１に進み、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］に対応して派生する音符データ［ｎｐｔｒ］中のコードｃＣｈｏｒｄに、和音終了音を表す値「３」をストアする。そして、ステップＳＤ１３に進み、フラグＩｎＣｈｏｒｄをゼロリセットし、続くステップＳＤ９において、ノートポインタｎｐｔｒをインクリメントして歩進させてから上述のステップＳＤ３に処理を戻す。
【００４１】
一方、和音未検出状態であれば、上記ステップＳＤ１０の判断結果が「ＮＯ」になり、ステップＳＤ１２に進む。ステップＳＤ１２では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］に対応して派生する音符データ［ｎｐｔｒ］中のコードｃＣｈｏｒｄに、非和音を表す値「０」をストアする。そして、ステップＳＤ１３に進み、フラグＩｎＣｈｏｒｄをゼロリセットした後、ステップＳＤ９においてノートポインタｎｐｔｒを歩進させてから上述のステップＳＤ３に処理を戻す。以後、ノートポインタｎｐｔｒが曲終端ｅｎｄに達する迄、ステップＳＤ３以降の処理を繰り返し、歩進されたノートポインタｎｐｔｒが曲終端ｅｎｄに達すると、ステップＳＤ３の判断結果が「ＹＥＳ」になり、本処理を終える。
【００４２】
（５）連桁グループ処理の動作
次に、図８を参照して連桁グループ処理の動作を説明する。上述した楽譜情報生成処理のステップＳＢ６（図５参照）を介して本処理が実行されると、ＣＰＵ１１は図８に図示するステップＳＥ１に処理を進め、曲データ［０］〜［Ｎ］を指定するノートポインタｎｐｔｒをゼロリセットする。続いて、ステップＳＥ２では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］をレジスタｖｎにストアする。次いで、ステップＳＥ３では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＥ４に進む。
【００４３】
ステップＳＥ４では、レジスタｖｎに格納される曲データ［ｎｐｔｒ］が連桁の先頭音となる先頭音条件を満たすかどうかを判断する。ここで言う先頭音条件とは、直前の音の旗（符尾）の無い音符長、つまり４分音符長以上であって、今回判定対象とする音が旗のある８分音符長以下であることを指す。こうした先頭音条件を満たさない場合には、ここでの判断結果は「ＮＯ」になり、ステップＳＥ１２に進む。ステップＳＥ１２では、連桁開始音をサーチし始める音を指定するポインタをノートポインタｎｐｔｒにセットする。つまり、先頭音条件を満たさずにステップＳＥ１２に進んだ場合には、次の音を指定させるべく、ノートポインタｎｐｔｒを歩進させた後、上述のステップＳＥ２に処理を戻す。
【００４４】
そして、歩進されたノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達しておらず、しかも連桁の先頭音となる条件を満たしたとする。そうすると、ステップＳＥ３、ＳＥ４の各判断結果はいずれも「ＹＥＳ」になり、ステップＳＥ５に進む。ステップＳＥ５では、レジスタｖｎに格納される曲データ［ｎｐｔｒ］を連桁バッファに保存する。
【００４５】
続いて、ステップＳＥ６では、レジスタｖｎに格納される曲データ［ｎｐｔｒ］中のポインタｐＮｅｘｔで指定される次の曲データ［ｐＮｅｘｔ］をレジスタｖｎｘにストアする。次に、ステップＳＥ７では、レジスタｖｎｘに格納された曲データ［ｐＮｅｘｔ］が、レジスタｖｎに格納される曲データ［ｎｐｔｒ］に対して連桁音条件を満たしているか否かを判断する。連桁音条件とは、直前および直後の音と今回判定対象の音とがいずれも旗のある音符長であることを指す。この連桁音条件を満たしていると、ここでの判断結果は「ＹＥＳ」になり、ステップＳＥ８に進む。ステップＳＥ８では、レジスタｖｎｘに格納された曲データ［ｐＮｅｘｔ］を連桁バッファに保存すると共に、レジスタｖｎｘに格納された曲データ［ｐＮｅｘｔ］をレジスタｖｎにストアした後、ステップＳＥ９に進む。
【００４６】
これに対し、レジスタｖｎｘに格納された曲データ［ｐＮｅｘｔ］が、レジスタｖｎに格納される曲データ［ｎｐｔｒ］に連桁する条件を満たしていないと、上記ステップＳＥ７の判断結果は「ＮＯ」になり、ステップＳＥ９に進む。ステップＳＥ９では、レジスタｖｎｘに格納された曲データ［ｐＮｅｘｔ］が連桁の終端音となる連桁終端条件を満たすか否かを判断する。連桁終端条件とは、直前の音と今回判定対象の音とがいずれも旗のある音符長であって、直後の音が旗の無い音符長であることを指す。そして、この連桁終端条件を満たさなければ、判断結果は「ＮＯ」になり、上記ステップＳＥ６に処理を戻す。
【００４７】
以後、連桁の終端となる音が検索される迄、ステップＳＥ６〜ＳＥ９を繰り返し、連桁の先頭音に続いて連桁される音を検索し、該当する音（曲データ）を連桁バッファに保存する。そして、連桁の終端となる音が検索されると、ステップＳＥ９の判断結果が「ＹＥＳ」になり、ステップＳＥ１０に進む。ステップＳＥ１０では、予め設定される各種連桁パターン（連桁形状）の内、連桁バッファに保存された連桁の先頭音から終端音に適合する連桁パターンを選択する。そして、ステップＳＥ１１では、連桁バッファに保存された連桁の先頭音に対応する音符データ中の連桁パターン始点ｃＲｅｎｋｏｕＳ（図３参照）に、選択された連桁パターンを表す値をセットする一方、連桁バッファに保存された連桁の後端音に対応する音符データ中の連桁パターン終点ｃＲｅｎｋｏｕＥ（図３参照）に、選択された連桁パターンを表す値をセットする。
【００４８】
この後、ステップＳＥ１２に進み、次の連桁開始音をサーチし始める音を指定するポインタをノートポインタｎｐｔｒにセットする。すなわち、この場合、連桁の後端音の次の音を指定するポインタをノートポインタｎｐｔｒにセットした後、ステップＳＥ２に処理を戻す。以後、ノートポインタｎｐｔｒが曲終端ｅｎｄに達する迄、上述したステップＳＥ３以降を繰り返す。そして、曲データ［０］〜［Ｎ］から探し出された連桁グループ（連桁の開始音から終端音までの一連の音列）毎の連桁パターン始点ｃＲｅｎｋｏｕＳおよび連桁パターン終点ｃＲｅｎｋｏｕＥを対応する音符データに設定し終えると、ステップＳＥ３の判断結果が「ＹＥＳ」になり、本処理を終える。
【００４９】
（６）連桁処理の動作
次に、図９〜図１０を参照して連桁処理の動作を説明する。上述した楽譜情報生成処理のステップＳＢ７（図５参照）を介して本処理が実行されると、ＣＰＵ１１は図９に図示するステップＳＦ１に処理を進め、曲データ［０］〜［Ｎ］を指定するノートポインタｎｐｔｒをゼロリセットする。続いて、ステップＳＦ２では、連桁フラグＩｎＲｅｎｋｏｕをゼロリセットする。連桁フラグＩｎＲｅｎｋｏｕは、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が連桁される音であるか否かを表すフラグであり、「１」の場合に連桁音を表し、「０」の場合に非連桁音を表す。
【００５０】
そして、ステップＳＦ３では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＦ４に進む。ステップＳＦ４以降では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が非連桁音、連桁開始音、連桁中の音および連桁終了音のいずれであるかを判断した結果に応じた処理を実行する。以下、非連桁音、連桁開始音、連桁中の音および連桁終了音の各場合の処理に分けて動作説明を進める。
【００５１】
＜非連桁音の場合＞
非連桁音とは、連桁の対象とならない音を指す。そのような音の場合には、後述するステップＳＦ４、ＳＦ８、ＳＦ９の各判断結果が「ＮＯ」になり、図１０に図示するステップＳＦ１２に進み、ノートポインタｎｐｔｒをインクリメントして歩進させた後、図９に図示するステップＳＦ３に処理を戻す。
【００５２】
＜連桁開始音の場合＞
ステップＳＦ４では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が連桁開始音であるか否かを判断する。具体的には、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］に対応する音符データ中の連桁パターン始点ｃＲｅｎｋｏｕＳ（図３参照）に、連桁パターンを表す値がセットされているかどうかを判断する。そして、連桁開始音であると、このステップＳＦ４の判断結果が「ＹＥＳ」になり、ステップＳＦ５に進み、連桁フラグＩｎＲｅｎｋｏｕに「１」をセットする。次いで、ステップＳＦ６では、連桁開始音を指定するノートポインタｎｐｔｒをレジスタｖｎｓにストアする。そして、ステップＳＦ７では、連桁傾き補正値を一時記憶するレジスタｉＳｌｏｐｅＡｄｊ（以後、連桁傾き補正値ｉＳｌｏｐｅＡｄｊと称す）をゼロリセットした後、図１０に図示するステップＳＦ８に進む。
【００５３】
＜連桁中の音の場合＞
ステップＳＦ８では、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が連桁終了音であるか否かを判断する。具体的には、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］に対応する音符データ中の連桁パターン始点ｃＲｅｎｋｏｕＥ（図３参照）に、連桁パターンを表す値がセットされているかどうかを判断する。連桁終了音ではなく、連桁中の音であると、判断結果は「ＮＯ」になり、ステップＳＦ９に進む。ステップＳＦ９では、連桁フラグＩｎＲｅｎｋｏｕが「１」であるか否か、つまり連桁中の音であるかどうかを判断する。
【００５４】
連桁中の音であると、ここでの判断結果が「ＹＥＳ」になり、ステップＳＦ１０に進む。ステップＳＦ１０では、次音との音高差が正であるか否かを判断する。次音との音高差が正であると、判断結果は「ＹＥＳ」になり、ステップＳＦ１５に進み、連桁傾き補正値ｉＳｌｏｐｅＡｄｊをインクリメントした後、ステップＳＦ１２に進み、ノートポインタｎｐｔｒをインクリメントして歩進させてから図９のステップＳＦ３に処理を戻す。
【００５５】
一方、次音との音高差が正でない場合には、上記ステップＳＦ１０の判断結果が「ＮＯ」になり、ステップＳＦ１１に進む。ステップＳＦ１１では、次音との音高差が負であるか否かを判断する。次音との音高差が負であると、判断結果は「ＹＥＳ」になり、ステップＳＦ１６に進み、連桁傾き補正値ｉＳｌｏｐｅＡｄｊをデクリメントした後、ステップＳＦ１２に進み、ノートポインタｎｐｔｒをインクリメントして歩進させてから図９のステップＳＦ３に処理を戻す。これに対し、次音との音高差が負でない場合、つまり次音との音高差が無ければ、上記ステップＳＦ１１の判断結果は「ＮＯ」になり、ステップＳＦ１２に進み、ノートポインタｎｐｔｒをインクリメントして歩進させてから図９のステップＳＦ３に処理を戻す。
【００５６】
＜連桁終了音の場合＞
さて、歩進されたノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が連桁終了音になると、上述したステップＳＦ８の判断結果が「ＹＥＳ」になり、ステップＳＦ１３に進み、連桁の傾きを算出する。連桁の傾きは、連桁開始音と連桁終了音との音高差と、レジスタｉＳｌｏｐｅＡｄｊの連桁傾き補正値とを勘案して算出する。すなわち、連桁する音列において、隣り合う音同士の音高差の正負に応じてインクリメント又はデクリメントされる連桁傾き補正値ｉＳｌｏｐｅＡｄｊを、連桁開始音と連桁終了音との音高差に乗算して得た値が「０」以下の場合に、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値ｉＳｌｏｐｅＡｄｊにて補正する。これにより、簡単な処理で自然な傾きの連桁にすることが可能になる。なお、ステップＳＦ１３にて算出される連桁傾きは、連桁開始音および連桁終了音の属性として、これら各音に対応する音符データに登録されるようになっている。
【００５７】
また、上記ステップＳＦ１３では、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値ｉＳｌｏｐｅＡｄｊにて補正するようにしたが、これに替えて、連桁開始音から連桁終了音までの連桁グループを形成する各音の音高に基づき最小自乗近似を施して連桁の傾きを算出する態様としても自然な傾きの連桁にすることも可能である。
【００５８】
さて、こうした連桁傾き算出を終えると、ＣＰＵ１１はステップＳＦ１４に処理を進め、連桁フラグＩｎＲｅｎｋｏｕをゼロリセットしてからステップＳＦ１２に進み、ノートポインタｎｐｔｒをインクリメントして歩進させてから図９のステップＳＦ３に処理を戻す。以後、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達する迄、上述したステップＳＦ３以降の処理を繰り返す。そして、ノートポインタｎｐｔｒで指定される曲データ［ｎｐｔｒ］が曲終端ｅｎｄに達すると、ステップＳＦ３の判断結果が「ＹＥＳ」になり、本処理を終える。
【００５９】
（７）楽譜表示処理の動作
次に、図１１〜図１２を参照して楽譜表示処理の動作を説明する。前述したメインルーチンのステップＳＡ９（図４参照）を介して楽譜表示処理が実行されると、ＣＰＵ１１は図１１に図示するステップＳＧ１に進み、背景画像（五線譜）を表示部１６の表示面に描画する。続いて、ステップＳＧ２では、小節数を計数する小節カウンタを初期化する。次いで、ステップＳＧ３では、小節カウンタの値が終端ｅｎｄに達したか否か、つまり曲を形成する全ての小節について楽譜表示し終えたかどうかを判断する。全ての小節について楽譜表示し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＧ４に進む。ステップＳＧ４では、五線譜上で小節カウンタの値で指定される小節情報に基づき、例えば五線譜上に音部記号や調記号、小節線などを描画する。
【００６０】
そして、ステップＳＧ５では、音符データを指定するノートポインタｎｐｔｒをゼロリセットする。続いて、ステップＳＧ６では、ノートポインタｎｐｔｒが１小節分の音を指定し終えた否かを判断する。１小節分の音を指定し終えていなければ、判断結果は「ＮＯ」になり、ステップＳＧ７に進み、ノートポインタｎｐｔｒが現在指定する音符データの表示位置を計算する。次いで、ステップＳＧ８では、上記ステップＳＧ７にて算出した表示位置に、ノートポインタｎｐｔｒが現在指定する音符データを描画する。この後、ステップＳＧ９に進み、ノートポインタｎｐｔｒを歩進させてから上記ステップＳＧ６に処理を戻す。
【００６１】
こうして、小節カウンタの値で指定される小節を形成する各音の表示位置を順次算出し、それら表示位置に各音符を描画し終えると、上記ステップＳＧ６の判断結果が「ＹＥＳ」になり、ステップＳＧ１０に進み、小節カウンタを歩進させた後、上述のステップＳＧ３に処理を戻す。以後、各小節毎に音符の表示位置を算出し、算出した表示位置に対応する音符を描画して行き、全ての小節について音符を描画し終えると、上記ステップＳＧ３の判断結果が「ＹＥＳ」になり、本処理を終える。
【００６２】
なお、音符描画に際しては、対応する音符データが備える属性を参照する。音符データが備える属性とは、前述したノートタイプｃＮｏｔｅＴｙｐｅ、連桁パターン始点ｃＲｅｎｋｏｕＳおよび連桁パターン終点ＲｅｎｋｏｕＥの他、上述した連桁処理（図９〜図１０参照）において算出される連桁傾きを含む。
【００６３】
図１２は、楽譜表示処理によって画面表示される楽譜の一例を示す図である。図１２（ａ）は、前述した連桁処理による連桁傾きの補正を行わない場合の譜例である。この譜例では、連桁傾きの補正が行われず、連桁開始音と連桁終了音との音高差だけで連桁の傾きを決めるため、不揃いとなり連桁する音符が見難いものとなっている。これに対し、同図（ｂ）は、前述した連桁処理による連桁傾きの補正を行った譜例である。この譜例では、前述した補正により連桁の傾きが不揃いにならず、連桁する音符を見易く表示できるようになっている。
【００６４】
（８）ライン分離処理の動作
次に、図１３を参照してライン分離処理の動作を説明する。前述した楽譜情報生成処理のステップＳＢ１１（図５参照）を介して本処理が実行されると、ＣＰＵ１１は図１３に図示するステップＳＨ１に処理を進め、曲データ［０］〜［Ｎ］を指定するノートポインタｍｅをゼロリセットする。続いて、ステップＳＨ２では、ノートポインタｍｅで指定される曲データ［ｍｅ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＨ３に進む。ステップＳＨ３では、ノートポインタｍｅで指定される曲データ［ｍｅ］の次のノート（曲データ［ｍｅ＋１］）を指定するポインタ値を、ノートポインタｎｅにストアする。
【００６５】
次いで、ステップＳＨ４では、ノートポインタｍｅで指定される曲データ［ｍｅ］の発音時刻ｍｅ（ＯＮ）がノートポインタｎｅで指定される曲データ［ｎｅ］の発音時刻ｎｅ（ＯＮ）に一致しないか、あるいはノートポインタｍｅで指定される曲データ［ｍｅ］の消音時刻ｍｅ（ＯＦＦ）がノートポインタｎｅで指定される曲データ［ｎｅ］の発音時刻ｎｅ（ＯＦＦ）に一致しないか、つまり隣り合う音同士が同時発音するかどうかを判断している。同時発音する場合には、ここでの判断結果は「ＮＯ」になり、後述するステップＳＨ１２に進む。
【００６６】
一方、隣り合う音同士が同時発音しなければ、上記ステップＳＨ４の判断結果は「ＹＥＳ」になり、ステップＳＨ５に進む。ステップＳＨ５〜ＳＨ７では、ノートポインタｍｅで指定される曲データ［ｍｅ］の発音時刻ｍｅ（ＯＮ）から消音時刻ｍｅ（ＯＦＦ）まで、つまり曲データ［ｍｅ］の音が発音中に、次の音（曲データ［ｎｅ］）が発音あるいは消音したかどうかを判断する。この条件に合致する場合には、ステップＳＨ６又はステップＳＨ７のいずれかの判断結果が「ＹＥＳ」になり、ステップＳＨ８に進む。これに対し、曲データ［ｍｅ］の音が発音中に、次の音（曲データ［ｎｅ］）が発音あるいは消音しない場合には、ステップＳＨ６又はステップＳＨ７のいずれかの判断結果が「ＮＯ」になり、ステップＳＨ１２に進む。
【００６７】
そして、ステップＳＨ８では、フラグｃＰｏｌｙに「１」をセットする。次いで、ステップＳＨ９では、曲データ［ｍｅ］の音高Ｐｉｔｃｈが曲データ［ｎｅ］の音高Ｐｉｔｃｈより高いか否かを判断する。曲データ［ｍｅ］の音高Ｐｉｔｃｈが曲データ［ｎｅ］の音高Ｐｉｔｃｈより高ければ、判断結果は「ＹＥＳ」になり、ステップＳＨ１０に進み、曲データ［ｍｅ］に対応する音符データのライン番号ｃＬｉｎｅとして、フラグｃＰｏｌｙの値をセットする。
【００６８】
一方、曲データ［ｎｅ］の音高Ｐｉｔｃｈが曲データ［ｍｅ］の音高Ｐｉｔｃｈより高ければ、上記ステップＳＨ９の判断結果は「ＮＯ」になり、ステップＳＨ１１に進み、曲データ［ｎｅ］に対応する音符データのライン番号ｃＬｉｎｅとして、フラグｃＰｏｌｙの値をセットする。
【００６９】
この後、ステップＳＨ１２に進み、曲データ［ｍｅ］の消音時刻ｍｅ（ＯＦＦ）が曲データ［ｎｅ］の発音時刻ｎｅ（ＯＮ）より先か否かを判断する。ここで、消音時刻ｍｅ（ＯＦＦ）が発音時刻ｎｅ（ＯＮ）より後であると、判断結果は「ＮＯ」になり、ステップＳＨ１４に進み、ノートポインタｎｅを歩進させた後、上述のステップＳＨ４に処理を戻し、歩進されたノートポインタｎｅにて指定される曲データ［ｎｅ］について、曲データ［ｍｅ］との発音重複の有無を再度判定する。
【００７０】
一方、消音時刻ｍｅ（ＯＦＦ）が発音時刻ｎｅ（ＯＮ）より先であると、上記ステップＳＨ１２の判断結果が「ＹＥＳ」になり、ステップＳＨ１３に進み、ノートポインタｍｅをインクリメントして歩進させた後、上述のステップＳＨ２に処理を戻す。以後、ノートポインタｍｅで指定される曲データ［ｍｅ］が曲終端ｅｎｄに達する迄、上述したステップＳＨ３以降の処理を繰り返して上述した発音重複の判定を行い、曲データ［ｍｅ］の音が発音中に、次の音（曲データ［ｎｅ］）が発音あるいは消音する場合、すなわち発音期間が重複すれば、音高の大小に応じて異なるラインとして分離する。そして、ノートポインタｍｅで指定される曲データ［ｍｅ］が曲終端ｅｎｄに達すると、ステップＳＨ２の判断結果が「ＹＥＳ」になり、本処理を終える。
【００７１】
このように、第１実施形態では、発音時刻（オン時刻）又は消音時刻（オフ時刻）の少なくともいずれか一方が異なり、発音期間が重複する音符同士を、音高の大小に応じて２つのラインに分離するようにしたので、ライン（演奏パート）の帰属を判りやすく楽譜表示することが可能になっている。
【００７２】
Ｃ．第２実施形態
次に、図１４〜図１６を参照して第２実施形態について説明する。第２実施形態の構成は、上述した第１実施形態と共通するので、その説明を省略する。以下では、第１実施形態と相違する楽譜情報生成処理および和音分離処理の動作について説明する。
【００７３】
（１）楽譜情報生成処理の動作
第１実施形態と同様にメインルーチンのステップＳＡ６（図４参照）を介して本処理が実行されると、ＣＰＵ１１は図１４に図示するステップＳＪ１に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ［０］〜［Ｎ］について周知のクオンタイズ（時間軸の量子化）を施す。クオンタイズにより、曲データ［０］〜［Ｎ］の発音開始時刻ＩＴｉｍｅのずれが補正される。次いで、ステップＳＪ２では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。
【００７４】
続いて、ステップＳＪ３〜ＳＪ８では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて、ステップＳＪ４を介して前述した個別情報生成処理（図６参照）、ステップＳＪ５を介して前述した和音処理（図７参照）、ステップＳＪ６を介して前述した連桁グループ処理（図８参照）およびステップＳＪ７を介して前述した連桁処理（図９〜図１０参照）を実行する。そして、全ての演奏トラックについて処理し終え、ステップＳＪ８において歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＪ３の判断結果が「ＹＥＳ」になり、ステップＳＪ９に進む。
【００７５】
ステップＳＪ９では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。次いで、ステップＳＪ１０〜ＳＪ１２では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて「和音分離処理（ステップＳＪ１１）」を施す。そして、全ての演奏トラックについて「和音分離処理（ステップＳＪ１１）」を行い、ステップＳＪ１２で歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＪ１０の判断結果が「ＹＥＳ」になり、本処理を完了させる。
【００７６】
（２）和音分離処理の動作
次に、図１５を参照して和音分離処理の動作を説明する。上述した第２実施形態による楽譜情報生成処理のステップＳＪ１１を介して本処理が実行されると、ＣＰＵ１１は図１５に図示するステップＳＫ１に進み、曲データ［０］〜［Ｎ］を指定するノートポインタｍｅをゼロリセットする。次いで、ステップＳＫ２では、ノートポインタｍｅで指定される曲データ［ｍｅ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＫ３に進む。ステップＳＫ３では、ノートポインタｍｅで指定される曲データ［ｍｅ］の次のノート（曲データ［ｍｅ＋１］）を指定するポインタ値を、ノートポインタｎｅにストアする。
【００７７】
続いて、ステップＳＫ４では、ノートポインタｎｅで指定される曲データ［ｎｅ］が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達した場合には、判断結果が「ＹＥＳ」になり、ステップＳＫ１１に進み、ノートポインタｍｅをインクリメントして歩進させた後、上述のステップＳＫ２に処理を戻す。一方、ノートポインタｎｅで指定される曲データ［ｎｅ］が曲終端ｅｎｄに達していなければ、上記ステップＳＫ４の判断結果は「ＮＯ」になり、ステップＳＫ５に進む。
【００７８】
ステップＳＫ５以降では、ノートポインタｎｅを歩進させながら、ノートポインタｍｅで指定される曲データ［ｍｅ］と同じラインであって、かつ発音時刻および音長が共通する和音構成音（曲データ［ｎｅ］）の内、曲データ［ｍｅ］より音高の低い和音構成音（曲データ［ｎｅ］）を探し出し、該当する和音構成音（曲データ［ｎｅ］）を曲データ［ｍｅ］とは異なるラインに分離する。すなわち、先ずステップＳＫ５では、ノートポインタｎｅで指定される曲データ［ｎｅ］のライン番号ｃＬｉｎｅが「０」であるか否かを判断する。ここで、ライン番号ｃＬｉｎｅが「０」であると、判断結果は「ＹＥＳ」になり、次のステップＳＫ６に進むが、ライン番号ｃＬｉｎｅが「０」でなければ、判断結果は「ＮＯ」となり、後述のステップＳＫ１０に進む。
【００７９】
次に、ステップＳＫ６では、ノートポインタｍｅで指定される曲データ［ｍｅ］の発音開始時刻ＩＴｉｍｅと、ノートポインタｎｅで指定される曲データ［ｎｅ］の発音開始時刻ＩＴｉｍｅとが一致するか否かを判断する。一致する場合には、判断結果が「ＹＥＳ」になり、次のステップＳＫ７に進むが、不一致であれば、判断結果は「ＮＯ」となり、後述のステップＳＫ１０に進む。続いて、ステップＳＫ７では、ノートポインタｍｅで指定される曲データ［ｍｅ］の音長ｌＧａｔｅと、ノートポインタｎｅで指定される曲データ［ｎｅ］の音長ｌＧａｔｅとが一致するか否かを判断する。一致する場合には、判断結果が「ＹＥＳ」になり、次のステップＳＫ７に進むが、不一致であれば、判断結果は「ＮＯ」となり、後述のステップＳＫ１０に進む。
【００８０】
次いで、ステップＳＫ８では、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈが、ノートポインタｎｅで指定される曲データ［ｎｅ］の音高Ｐｉｔｃｈより低いか否かを判断する。ここで、曲データ［ｎｅ］の音高Ｐｉｔｃｈが曲データ［ｍｅ］より高いと、判断結果が「ＹＥＳ」になり、次のステップＳＫ９に進むが、低ければ、判断結果は「ＮＯ」となり、後述のステップＳＫ１０に進む。そして、ステップＳＫ９では、ノートポインタｎｅで指定される曲データ［ｎｅ］のライン番号ｃＬｉｎｅに「１」をセットし、続くステップＳＫ１０では、ノートポインタｎｅをインクリメントして歩進させた後、上述のステップＳＫ４に処理を戻す。
【００８１】
このように、第２実施形態では、ノートポインタｍｅで指定される曲データ［ｍｅ］と同じラインであって、かつ発音時刻および音長が共通する和音構成音（曲データ［ｎｅ］）の内、曲データ［ｍｅ］より音高の低い和音構成音（曲データ［ｎｅ］）を探し出し、該当する和音構成音（曲データ［ｎｅ］）を曲データ［ｍｅ］とは異なるラインに分離するので、楽譜化する曲データが和音を形成する場合であっても、ラインの帰属を判りやすく楽譜表示することができる。例えば図１６（ａ）に図示する譜例のように、和音分離をしないと、第７音目の和音のラインの帰属が不明瞭であるが、上述した和音分離処理を施すことにより、同図（ｂ）に図示する通り、第７音目の和音のラインの帰属が明確になる。
【００８２】
Ｄ．第３実施形態
次に、図１７〜図１９を参照して第３実施形態について説明する。第３実施形態の構成は、上述した第１実施形態と共通するので、その説明を省略する。以下では、第１実施形態と相違する楽譜情報生成処理および休符省略処理の動作について説明する。
【００８３】
（１）楽譜情報生成処理の動作
第１実施形態と同様にメインルーチンのステップＳＡ６（図４参照）を介して本処理が実行されると、ＣＰＵ１１は図１７に図示するステップＳＬ１に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ［０］〜［Ｎ］について周知のクオンタイズ（時間軸の量子化）を施す。クオンタイズにより、曲データ［０］〜［Ｎ］の発音開始時刻ＩＴｉｍｅのずれが補正される。次いで、ステップＳＬ２では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。
【００８４】
続いて、ステップＳＬ３〜ＳＬ８では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて、ステップＳＬ４を介して前述した個別情報生成処理（図６参照）、ステップＳＬ５を介して前述した和音処理（図７参照）、ステップＳＬ６を介して前述した連桁グループ処理（図８参照）およびステップＳＪ７を介して前述した連桁処理（図９〜図１０参照）を実行する。そして、全ての演奏トラックについて処理し終え、ステップＳＬ８において歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＬ３の判断結果が「ＹＥＳ」になり、ステップＳＬ９に進む。
【００８５】
ステップＳＬ９では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。次いで、ステップＳＬ１０〜ＳＬ１２では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて「休符省略処理（ステップＳＬ１１）」を施す。そして、全ての演奏トラックについて「休符省略処理（ステップＳＬ１１）」を行い、ステップＳＬ１２で歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＬ１０の判断結果が「ＹＥＳ」になり、本処理を完了させる。
【００８６】
（２）休符省略処理の動作
次に、図１８を参照して休符省略処理の動作を説明する。上述した第３実施形態による楽譜情報生成処理のステップＳＬ１１を介して本処理が実行されると、ＣＰＵ１１は図１８に図示するステップＳＭ１に進み、小節ポインタＢｒｐｔｒをゼロリセットする。続いて、ステップＳＭ２では、全ての小節について処理し終えたかどうかを判断する。全ての小節について処理し終えたならば、判断結果は「ＹＥＳ」になり、本処理を終えるが、そうでなければ、判断結果が「ＮＯ」になり、ステップＳＭ３に進む。ステップＳＭ３では、小節ポインタＢｒｐｔｒで指定される小節の休符省略フラグｉＯｍｉｔ［Ｂｒｐｔｒ］をゼロリセットする。
【００８７】
次いで、ステップＳＭ４では、レジスタｉＭには、小節ポインタＢｒｐｔｒで指定される小節最初の休符時刻をストアする。休符時刻は、前述した個別情報生成処理（図６参照）にて得られる。続いて、ステップＳＭ５では、休符の次の音のオン時刻（発音開始時刻ｌＴｉｍｅ）をレジスタｉＭＮにストアする。そして、ステップＳＭ６では、レジスタｉＭの休符時刻とレジスタｉＭＮのオン時刻が一致するか否かを判断する。不一致ならば、休符省略する必要がないので、判断結果は「ＮＯ」になり、ステップＳＭ１３に進み、小節ポインタＢｒｐｔｒをインクリメントして歩進させた後、上記ステップＳＭ２に処理を戻す。
【００８８】
一方、休符時刻と次の音のオン時刻とが一致した場合には、上記ステップＳＭ６の判断結果が「ＹＥＳ」になり、ステップＳＭ７に進む。ステップＳＭ７では、レジスタｉＭの休符時刻を有する休符と同じライン上で最初に発音される音のノートポインタを、ノートポインタｍｅに設定する。続いて、ステップＳＭ８では、対のラインの音を指定するノートポインタｍｍをゼロリセットする。そして、ステップＳＭ９〜ＳＭ１１では、ノートポインタｍｍを歩進させながら、休符の次の音の発音時刻と同じ時刻に発音する音を対のラインから探し出す。
【００８９】
すなわち、ステップＳＭ９では、ノートポインタｍｍで指定される対のラインの音が曲終端ｅｎｄに達したかどうかを判断する。曲終端ｅｎｄに達すると、判断結果は「ＹＥＳ」になり、ステップＳＭ１３に進み、小節ポインタＢｒｐｔｒをインクリメントして歩進させた後、上記ステップＳＭ２に処理を戻す。これに対し、曲終端ｅｎｄに達していなければ、上記ステップＳＭ９判断結果は「ＮＯ」になり、ステップＳＭ１０に進む。
【００９０】
ステップＳＭ１０では、ノートポインタｍｍで指定される対のラインの音の発音時刻と、ノートポインタｍｅで指定される音の発音時刻とが一致するかどうかを判断する。そして、不一致ならば、判断結果は「ＮＯ」になり、ステップＳＭ１１に進み、ノートポインタｍｍを歩進させた後、上述のステップＳＭ９に処理を戻す。一方、一致する場合には、判断結果が「ＹＥＳ」になり、ステップＳＭ１２に進み、小節ポインタＢｒｐｔｒで指定される小節の休符省略フラグｉＯｍｉｔ［Ｂｒｐｔｒ］に「１」をセットして休符省略する旨を表す。この後、ステップＳＭ１３にて小節ポインタＢｒｐｔｒを歩進させてから上述のステップＳＭ２に処理を戻す。以後、小節ポインタＢｒｐｔｒが最終小節に達するまで上述した過程を繰り返す。
【００９１】
したがって、例えば図１９（ａ）は、休符省略しない譜例であるが、これに本処理を適用すると、同図（ｂ）に図示する通り、第１小節第１音目および第２小節第１音目に対応する休符が省略される。これにより、休符をライン毎に設けることから、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという従来の弊害を解消でき、ライン（演奏パート）の帰属を判りやすく楽譜表示することが可能になっている。
【００９２】
Ｅ．第４実施形態
次に、図２０〜図２１を参照して第４実施形態について説明する。第４実施形態の構成は、上述した第１実施形態と共通するので、その説明を省略する。以下では、第１実施形態と相違する楽譜情報生成処理および両手分離処理の動作について説明する。
【００９３】
（１）楽譜情報生成処理の動作
第１実施形態と同様にメインルーチンのステップＳＡ６（図４参照）を介して本処理が実行されると、ＣＰＵ１１は図２０に図示するステップＳＮ１に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ［０］〜［Ｎ］について周知のクオンタイズ（時間軸の量子化）を施す。クオンタイズにより、曲データ［０］〜［Ｎ］の発音開始時刻ＩＴｉｍｅのずれが補正される。次いで、ステップＳＮ２では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。
【００９４】
続いて、ステップＳＮ３〜ＳＮ８では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて、ステップＳＮ４を介して前述した個別情報生成処理（図６参照）、ステップＳＮ５を介して前述した和音処理（図７参照）、ステップＳＮ６を介して前述した連桁グループ処理（図８参照）およびステップＳＮ７を介して前述した連桁処理（図９〜図１０参照）を実行する。そして、全ての演奏トラックについて処理し終え、ステップＳＮ８において歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＮ３の判断結果が「ＹＥＳ」になり、ステップＳＮ９に進む。
【００９５】
ステップＳＮ９では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。次いで、ステップＳＮ１０〜ＳＮ１２では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて「両手分離処理（ステップＳＮ１１）」を施す。そして、全ての演奏トラックについて「両手分離処理（ステップＳＮ１１）」を行い、ステップＳＬ１２で歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＬ１０の判断結果が「ＹＥＳ」になり、本処理を完了させる。
【００９６】
（２）両手分離処理の動作
次に、図２１を参照して両手分離処理の動作を説明する。上述した第４実施形態による楽譜情報生成処理のステップＳＮ１１を介して本処理が実行されると、ＣＰＵ１１は図２１に図示するステップＳＰ１に進み、第１実施形態によるライン分離処理（図１３参照）を実行する。ライン分離処理では、前述したように、発音時刻（オン時刻）又は消音時刻（オフ時刻）の少なくともいずれか一方が異なり、発音期間が重複する音符同士を、音高の大小に応じて２つのラインに分離する。
【００９７】
そして、ステップＳＰ２以降では、上記ステップＳＰ１にて分離されたラインを左右パートに選り分ける。すなわち、ステップＳＰ２では、ノートポインタｍｅをゼロリセットする。次いで、ステップＳＰ３では、ノートポインタｍｅにて指定される曲データ［ｍｅ］が曲終端ｅｎｄに達したか否かを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＰ４に進む。ステップＳＰ４では、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈが所定値Ａより大きいか否かを判断する。所定値Ａより大きい場合には、判断結果が「ＹＥＳ」になり、ステップＳＰ７に進み、その音を右手パートにアサインする。そして、ステップＳＰ９に進み、ノートポインタｍｅをインクリメントして歩進させた後、上述のステップＳＰ３に処理を戻す。
【００９８】
一方、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈが所定値Ａより小さければ、上記ステップＳＰ４の判断結果は「ＮＯ」になり、ステップＳＰ５に進む。ステップＳＰ５では、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈが所定値Ｂより小さいか否かを判断する。所定値Ｂより小さいと、判断結果は「ＹＥＳ」になり、ステップＳＰ８に進み、その音を右手パートにアサインする。そして、ステップＳＰ９に進み、ノートポインタｍｅをインクリメントして歩進させた後、上述のステップＳＰ３に処理を戻す。
【００９９】
これに対し、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈが所定値Ｂより大きいと、上記ステップＳＰ５の判断結果が「ＮＯ」になり、ステップＳＰ６に進む。ステップＳＰ６では、ノートポインタｍｅで指定される曲データ［ｍｅ］のライン番号ｃＬｉｎｅが「１」であるかどうかを判断する。ライン番号ｃＬｉｎｅが「１」であると、判断結果は「ＹＥＳ」になり、ステップＳＰ７に進み、右手パートにアサインする。一方、ライン番号ｃＬｉｎｅが「０」ならば、上記ステップＳＰ６の判断結果は「ＮＯ」になり、ステップＳＰ８に進み、左手パートにアサインする。
【０１００】
この後、ステップＳＰ９にてノートポインタｍｅを歩進させてから、上述のステップＳＰ３に処理を戻す。以後、歩進されたノートポインタｍｅが曲終端ｅｎｄに達する迄、上述したステップＳＰ４以降を繰り返す。こうして、各音を左右パートにアサインすることによって、両手各パートに対応するラインが混在した曲データの場合、ラインの帰属が判り難い楽譜になるという弊害を回避することができる。
【０１０１】
Ｆ．第５実施形態
次に、図２２〜図２５を参照して第５実施形態について説明する。第５実施形態の構成は、上述した第１実施形態と共通するので、その説明を省略する。以下では、第１実施形態と相違する楽譜情報生成処理およびライン間調整処理の動作について説明する。
【０１０２】
（１）楽譜情報生成処理の動作
第１実施形態と同様にメインルーチンのステップＳＡ６（図４参照）を介して本処理が実行されると、ＣＰＵ１１は図２２に図示するステップＳＱ１に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ［０］〜［Ｎ］について周知のクオンタイズ（時間軸の量子化）を施す。クオンタイズにより、曲データ［０］〜［Ｎ］の発音開始時刻ＩＴｉｍｅのずれが補正される。次いで、ステップＳＱ２では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。
【０１０３】
続いて、ステップＳＱ３〜ＳＱ８では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて、ステップＳＱ４を介して前述した個別情報生成処理（図６参照）、ステップＳＱ５を介して前述した和音処理（図７参照）、ステップＳＱ６を介して前述した連桁グループ処理（図８参照）およびステップＳＱ７を介して前述した連桁処理（図９〜図１０参照）を実行する。そして、全ての演奏トラックについて処理し終え、ステップＳＱ８において歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＱ３の判断結果が「ＹＥＳ」になり、ステップＳＱ９に進む。
【０１０４】
ステップＳＱ９では、演奏トラックを指定するトラックポインタＴｒｐｔｒをゼロリセットする。次いで、ステップＳＱ１０〜ＳＱ１２では、全ての演奏トラックを指定し終える迄、トラックポインタＴｒｐｔｒを歩進させつつ、その歩進されるトラックポインタＴｒｐｔｒで指定される演奏トラックの曲データについて「ライン間調整処理（ステップＳＱ１１）」を施す。そして、全ての演奏トラックについて「ライン間調整処理（ステップＳＱ１１）」を行い、ステップＳＱ１２で歩進されるトラックポインタＴｒｐｔｒの値がｅｎｄになると、ステップＳＱ１０の判断結果が「ＹＥＳ」になり、本処理を完了させる。
【０１０５】
（２）ライン間調整処理の動作
次に、図２３を参照してライン間調整処理の動作を説明する。上述した第５実施形態による楽譜情報生成処理のステップＳＱ１１を介して本処理が実行されると、ＣＰＵ１１は図２３に図示するステップＳＲ１に進み、小節カウンタｉＭを初期化する。次いで、ステップＳＲ２では、小節カウンタｉＭにてカウントされる小節番号が曲終端ｅｎｄに達したか否かを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＲ３に進む。ステップＳＲ３では、小節カウンタｉＭの値で指定される小節（ｉＭ）先端の時刻をレジスタｌＴｉｃｋＳに、当該小節（ｉＭ）後端の時刻をレジスタｌＴｉｃｋＥにそれぞれストアする。
【０１０６】
続いて、ステップＳＲ４では、レジスタｉＳｕｍ０、レジスタｉＳｕｍ１、レジスタｉＮｏｔｅＮ０およびレジスタｉＮｏｔｅＮ１をそれぞれゼロリセットする。次に、ステップＳＲ５に進み、ノートポインタｍｅをゼロリセットする。ステップＳＲ６では、ノートポインタｍｅで指定される曲データ［ｍｅ］が曲終端ｅｎｄに達したか否かを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＲ７に進む。ステップＳＲ７では、ノートポインタｍｅで指定される曲データ［ｍｅ］が、小節カウンタｉＭの値で指定される小節（ｉＭ）に含まれるか否かを判断する。曲データ［ｍｅ］が小節（ｉＭ）に含まれていなければ、判断結果は「ＮＯ」になり、ステップＳＲ１１に進み、ノートポインタｍｅを歩進させた後、上述のステップＳＲ６に処理を戻す。
【０１０７】
一方、曲データ［ｍｅ］が小節（ｉＭ）に含まれていれば、上記ステップＳＲ７の判断結果は「ＹＥＳ」になり、ステップＳＲ８に進む。ステップＳＲ８では、ノートポインタｍｅで指定される曲データ［ｍｅ］のライン番号ｃＬｉｎｅが「０」であるか否かを判断する。ライン番号ｃＬｉｎｅが「０」であると、判断結果は「ＹＥＳ」になり、ステップＳＲ９に進み、当該曲データ［ｍｅ］の音高ＰｉｔｃｈをレジスタｉＳｕｍ０に加算すると共に、レジスタｉＮｏｔｅＮ０をインクリメントした後、ステップＳＲ１１にてノートポインタｍｅを歩進させてから上述のステップＳＲ６に処理を戻す。
【０１０８】
これに対し、ノートポインタｍｅで指定される曲データ［ｍｅ］のライン番号ｃＬｉｎｅが「０」でなければ、上記ステップＳＲ８の判断結果が「ＮＯ」になり、ステップＳＲ１０に進む。ステップＳＲ１０では、当該曲データ［ｍｅ］の音高ＰｉｔｃｈをレジスタｉＳｕｍ１に加算すると共に、レジスタｉＮｏｔｅＮ１をインクリメントした後、ステップＳＲ１１にてノートポインタｍｅを歩進させてから上述のステップＳＲ６に処理を戻す。
【０１０９】
こうして、小節カウンタｉＭの値で指定される小節（ｉＭ）において、ライン番号ｃＬｉｎｅ「０」の音の音高累算値ｉＳｕｍ０およびその音数ｉＮｏｔｅＮ０と、ライン番号ｃＬｉｎｅ「１」の音の音高累算値ｉＳｕｍ１およびその音数ｉＮｏｔｅＮ１とを求めた後、ステップＳＲ６の判断結果が「ＹＥＳ」になると、図２４に図示するステップＳＲ１２に処理を進める。ステップＳＲ１２では、ライン番号ｃＬｉｎｅ「０」の音数ｉＮｏｔｅＮ０と、ライン番号ｃＬｉｎｅ「１」の音数ｉＮｏｔｅＮ１とが共に「０」より大きいか否かを判断する。音数ｉＮｏｔｅＮ０もしくは音数ｉＮｏｔｅＮ１のいずれか又は双方が「０」であると、判断結果は「ＮＯ」になり、ステップＳＲ２３に進み、小節カウンタｉＭを歩進させた後、前述したステップＳＲ２（図２３参照）に処理を戻す。
【０１１０】
一方、ライン番号ｃＬｉｎｅ「０」の音数ｉＮｏｔｅＮ０およびライン番号ｃＬｉｎｅ「１」の音数ｉＮｏｔｅＮ１が共に「０」より大きければ、上記ステップＳＲ１２の判断結果は「ＹＥＳ」になり、ステップＳＲ１３に進み、ノートポインタｍｅをゼロリセットする。そして、ステップＳＲ１４では、ノートポインタｍｅで指定される曲データ［ｍｅ］が曲終端ｅｎｄに達したか否かを判断する。曲終端ｅｎｄに達していなければ、判断結果は「ＮＯ」になり、ステップＳＲ１５に進む。ステップＳＲ１５では、ノートポインタｍｅで指定される曲データ［ｍｅ］が、小節カウンタｉＭの値で指定される小節（ｉＭ）に含まれるか否かを判断する。
【０１１１】
曲データ［ｍｅ］が小節（ｉＭ）に含まれていなければ、判断結果は「ＮＯ」になり、ステップＳＲ２２に進み、ノートポインタｍｅを歩進させた後、上述のステップＳＲ１４に処理を戻す。一方、曲データ［ｍｅ］が小節（ｉＭ）に含まれていれば、上記ステップＳＲ１５の判断結果は「ＹＥＳ」になり、ステップＳＲ１６に進む。ステップＳＲ１６では、ノートポインタｍｅで指定される曲データ［ｍｅ］と発音重複する音の有無を判断する。ノートポインタｍｅで指定される曲データ［ｍｅ］と発音重複する音が有ると、判断結果は「ＮＯ」になり、ステップＳＲ２２に進み、ノートポインタｍｅを歩進させた後、上述のステップＳＲ１４に処理を戻す。
【０１１２】
これに対し、ノートポインタｍｅで指定される曲データ［ｍｅ］と発音重複する音が無ければ、上記ステップＳＲ１６の判断結果が「ＹＥＳ」になり、ステップＳＲ１７に進む。ステップＳＲ１７〜ＳＲ１８では、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈと平均音高ｉＳｕｍ０／ｉＮｏｔｅＮ０との差分ｉＤｅｖ０と、ノートポインタｍｅで指定される曲データ［ｍｅ］の音高Ｐｉｔｃｈと平均音高ｉＳｕｍ１／ｉＮｏｔｅＮ１との差分ｉＤｅｖ１とを算出する。
【０１１３】
ここで、平均音高ｉＳｕｍ０／ｉＮｏｔｅＮ０は、ライン番号ｃＬｉｎｅ「０」の音の音高累算値ｉＳｕｍ０およびその音数ｉＮｏｔｅＮ０から得られる。したがって、差分ｉＤｅｖ０は、ライン番号ｃＬｉｎｅ「０」の音の平均音高との差分を表す。また、平均音高ｉＳｕｍ１／ｉＮｏｔｅＮ１は、ライン番号ｃＬｉｎｅ「１」の音の音高累算値ｉＳｕｍ１およびその音数ｉＮｏｔｅＮ１から得られる。したがって、差分ｉＤｅｖ１は、ライン番号ｃＬｉｎｅ「１」の音の平均音高との差分を表す。
【０１１４】
そして、ステップＳＲ１９では、差分ｉＤｅｖ０が差分ｉＤｅｖ１より小さいか否かを判断する。差分ｉＤｅｖ０が差分ｉＤｅｖ１より小さければ、判断結果は「ＹＥＳ」になり、ステップＳＲ２０に進み、ライン番号ｃＬｉｎｅを「０」にセットした後、ステップＳＲ２２に進む。一方、差分ｉＤｅｖ０が差分ｉＤｅｖ１より大きいと、上記ステップＳＲ２１の判断結果が「ＮＯ」になり、ステップＳＲ２２に進み、ライン番号ｃＬｉｎｅを「１」にセットした後、ステップＳＲ２２に進む。
【０１１５】
このように、ライン間調整処理では、小節毎にライン番号ｃＬｉｎｅ「０」の音の平均音高と、ライン番号ｃＬｉｎｅ「１」の音の平均音高とを求めておき、小節中に他音と重複せずに単独で存在する独立音が有る場合、その独立音とライン番号ｃＬｉｎｅ「０」の音の平均音高との差分ｉＤｅｖ０と、独立音とライン番号ｃＬｉｎｅ「１」の音の平均音高との差分ｉＤｅｖ１との大小比較結果に応じて、その独立音をライン番号ｃＬｉｎｅ「０」又は「１」のいずれかにするのかを調整する。これにより、例えば図２５（ａ）に図示する譜例であれば、同図（ｂ）に図示するようにライン間調整される。この結果、複数のラインが存在する小節の中に単独に存在する音符があると、どのラインに帰属するのかが不明な判り難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することが可能になっている。
【図面の簡単な説明】
【０１１６】
【図１】本発明による第１実施形態の構成を示すブロック図である。
【図２】曲データの構成を示す図である。
【図３】音符データの構成を示す図である。
【図４】第１実施形態によるメインルーチンの動作を示すフローチャートである。
【図５】第１実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図６】第１実施形態による個別情報生成処理の動作を示すフローチャートである。
【図７】第１実施形態による和音処理の動作を示すフローチャートである。
【図８】第１実施形態による連桁グループ処理の動作を示すフローチャートである。
【図９】第１実施形態による連桁処理の動作を示すフローチャートである。
【図１０】第１実施形態による連桁処理の動作を示すフローチャートである。
【図１１】第１実施形態による楽譜表示処理の動作を示すフローチャートである。
【図１２】第１実施形態による楽譜表示処理によって画面表示される楽譜の一例を示す図である。
【図１３】第１実施形態によるライン分離処理の動作を示すフローチャートである。
【図１４】第２実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図１５】第２実施形態による和音分離処理の動作を示すフローチャートである。
【図１６】和音分離処理の動作を説明するための楽譜の一例である。
【図１７】第３実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図１８】第３実施形態による休符省略処理の動作を示すフローチャートである。
【図１９】休符省略処理の動作を説明するための楽譜の一例である。
【図２０】第４実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図２１】第４実施形態による両手分離処理の動作を示すフローチャートである。
【図２２】第５実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図２３】第５実施形態によるライン間調整処理の動作を示すフローチャートである。
【図２４】第５実施形態によるライン間調整処理の動作を示すフローチャートである。
【図２５】ライン間調整処理の動作を説明するための楽譜の一例である。
【符号の説明】
【０１１７】
１０  操作部
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  音源
１５  サウンドシステム
１６  表示部
１７  インタフェース部
【図１】
2008009448.tif 000003
【図２】
2008009448.tif 000004
【図３】
2008009448.tif 000005
【図４】
2008009448.tif 000006
【図５】
2008009448.tif 000007
【図６】
2008009448.tif 000008
【図７】
2008009448.tif 000009
【図８】
2008009448.tif 000010
【図９】
2008009448.tif 000011
【図１０】
2008009448.tif 000012
【図１１】
2008009448.tif 000013
【図１２】
2008009448.tif 000014
【図１３】
2008009448.tif 000015
【図１４】
2008009448.tif 000016
【図１５】
2008009448.tif 000017
【図１６】
2008009448.tif 000018
【図１７】
2008009448.tif 000019
【図１８】
2008009448.tif 000020
【図１９】
2008009448.tif 000021
【図２０】
2008009448.tif 000022
【図２１】
2008009448.tif 000023
【図２２】
2008009448.tif 000024
【図２３】
2008009448.tif 000025
【図２４】
2008009448.tif 000026
【図２５】
2008009448.tif 000027
【手続補正書】
【提出日】平成19年8月24日(2007.8.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから挿入すべき休符を判定する休符判定手段と、
前記休符判定手段が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索手段と、
前記検索手段が該当する音を検索した場合、前記前記休符判定手段が判定した挿入すべき休符を省略する休符省略手段と
を具備することを特徴とする楽譜表示装置。
【請求項２】
曲を構成する各音を表す曲データから挿入すべき休符を判定する休符判定処理と、
前記休符判定処理が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索処理と、
前記検索処理が該当する音を検索した場合、前記前記休符判定処理にて判定された挿入すべき休符を省略する休符省略処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】削除
【補正の内容】
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上記目的を達成するため、請求項１に記載の発明では、曲を構成する各音を
表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから挿入すべき休符を判定する休符判定手段と、前記休符判定手段が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索手段と、前記検索手段が該当する音を検索した場合、前記前記休符判定手段が判定した挿入すべき休符を省略する休符省略手段とを具備することを特徴とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
請求項２に記載の発明では、曲を構成する各音を表す曲データから挿入すべき休符を判定する休符判定処理と、前記休符判定処理が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索処理と、前記検索処理が該当する音を検索した場合、前記前記休符判定処理にて判定された挿入すべき休符を省略する休符省略処理とをコンピュータで実行させることを特徴とする。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
請求項１、２に記載の発明によれば、曲を構成する各音を表す曲データから挿入すべき休符を判定し、判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する。該当する音が検索された場合に挿入すべき休符を省略する。したがって、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することができる。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】削除
【補正の内容】
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】削除
【補正の内容】