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