JP2007178640A - 楽譜表示装置および楽譜表示プログラム - Google Patents
楽譜表示装置および楽譜表示プログラム Download PDFInfo
- Publication number
- JP2007178640A JP2007178640A JP2005375951A JP2005375951A JP2007178640A JP 2007178640 A JP2007178640 A JP 2007178640A JP 2005375951 A JP2005375951 A JP 2005375951A JP 2005375951 A JP2005375951 A JP 2005375951A JP 2007178640 A JP2007178640 A JP 2007178640A
- Authority
- JP
- Japan
- Prior art keywords
- score
- note
- resolution
- specified
- musical score
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させたり、音符以外の運指や歌詞も楽譜に表示する楽譜表示装置を実現する。
【解決手段】曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示装置において、表示された楽譜中で指定された小節をユーザ指定の分解能にクオンタイズするので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させることができる。また、表示された楽譜中で指定された音符に対応して押鍵操作する指を表す運指情報を入力したり、歌詞を入力するので、音符以外の運指や歌詞も楽譜に表示することができるようになっている。
【選択図】図20
【解決手段】曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示装置において、表示された楽譜中で指定された小節をユーザ指定の分解能にクオンタイズするので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させることができる。また、表示された楽譜中で指定された音符に対応して押鍵操作する指を表す運指情報を入力したり、歌詞を入力するので、音符以外の運指や歌詞も楽譜に表示することができるようになっている。
【選択図】図20
Description
本発明は、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させたり、音符以外の運指や歌詞も楽譜に表示する楽譜表示装置および楽譜表示プログラムに関する。
曲を構成する各音を表す曲データを楽譜化して表示する楽譜表示装置が知られている。この種の装置としては、例えば特許文献1には、色彩と楽曲の演奏の仕方に関する指示との対応関係を示す関係情報を用いて、楽譜中で演奏指示する部分を指定色で表示して演奏練習を効果的に行えるようにした楽譜表示装置が開示され、また特許文献2には、連桁(ビーム)で繋ぐ音の両端の音の符頭表示位置の差を検出し、検出した符頭表示位置の差(音高差)が所定値より小さければ、連桁の傾きを水平に設定し、一方、符頭表示位置の差(音高差)が所定値より大きければ、連桁の傾きを所定に傾きに設定することによって、連桁で繋ぐ両端の音の音程が小さい場合や音程が極端に大きい場合でも演奏者が見易いように連桁を表示する楽譜表示方法が開示されている。
ところで、従来の楽譜表示装置には、単に曲を構成する各音を表す曲データを楽譜化して表示するだけなので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させたり、音符以外の運指や歌詞も楽譜に表示することができない、という問題がある。
本発明は、このような事情に鑑みてなされたもので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させたり、音符以外の運指や歌詞も楽譜に表示することができる楽譜表示装置および楽譜表示プログラムを提供することを目的としている。
本発明は、このような事情に鑑みてなされたもので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させたり、音符以外の運指や歌詞も楽譜に表示することができる楽譜表示装置および楽譜表示プログラムを提供することを目的としている。
上記目的を達成するため、請求項1に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示手段と、前記楽譜表示手段により画面表示される楽譜中の小節を指定する小節指定手段と、前記小節指定手段により指定された楽譜中の小節をユーザ指定の分解能にクオンタイズするクオンタイズ手段とを具備することを特徴とする。
上記請求項1に従属する請求項2に記載の発明では、前記クオンタイズ手段は、前記小節指定手段により楽譜中で指定された小節の分解能がユーザ指定の分解能と異なる場合、曲を構成する全ての小節の分解能をユーザ指定の分解能にクオンタイズすることを特徴とする。
上記請求項1に従属する請求項3に記載の発明では、前記クオンタイズ手段は、前記小節指定手段により楽譜中で指定された小節の分解能がユーザ指定の分解能と一致する場合、その楽譜中で指定された小節の分解能とは異なる分解能を有する小節をユーザ指定の分解能にクオンタイズすることを特徴とする。
請求項4に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示手段と、前記楽譜表示手段により画面表示される楽譜中の音符を指定する音符指定手段と、前記音符指定手段により指定された楽譜中の音符に対応して押鍵操作する指を表す運指情報を入力する運指入力手段と、前記運指入力手段により入力された運指情報を前記楽譜情報と共に保存する保存手段とを具備することを特徴とする。
請求項5に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示手段と、前記楽譜表示手段により画面表示される楽譜中の音符を指定する音符指定手段と、前記音符指定手段により指定された楽譜中の音符に対応して歌詞情報を入力する歌詞入力手段と、前記歌詞入力手段により入力された歌詞情報を前記楽譜情報と共に保存する保存手段とを具備することを特徴とする。
請求項6に記載の発明では、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示処理と、前記楽譜表示処理により画面表示される楽譜中の小節を指定する小節指定処理と、前記小節指定処理にて楽譜中で指定された小節をユーザ指定の分解能にクオンタイズするクオンタイズ処理とをコンピュータで実行させることを特徴とする。
上記請求項6に従属する請求項7に記載の発明では、前記クオンタイズ処理は、前記小節指定処理により楽譜中で指定された小節の分解能がユーザ指定の分解能と異なる場合、曲を構成する全ての小節の分解能をユーザ指定の分解能にクオンタイズすることを特徴とする。
上記請求項6に従属する請求項8に記載の発明では、前記クオンタイズ処理は、前記小節指定処理により楽譜中で指定された小節の分解能がユーザ指定の分解能と一致する場合、その楽譜中で指定された小節の分解能とは異なる分解能を有する小節をユーザ指定の分解能にクオンタイズすることを特徴とする。
請求項9に記載の発明では、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示処理と、前記楽譜表示処理により画面表示される楽譜中の音符を指定する音符指定処理と、前記音符指定処理により楽譜中で指定された音符に対応して押鍵操作する指を表す運指情報を入力する運指入力処理と、前記運指入力処理により入力された運指情報を前記楽譜情報と共に保存する保存処理とをコンピュータで実行させることを特徴とする。
請求項10に記載の発明では、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示処理と、前記楽譜表示処理により画面表示される楽譜中の音符を指定する音符指定処理と、前記音符指定処理により楽譜中で指定された音符に対応して歌詞情報を入力する歌詞入力処理と、前記歌詞入力処理により入力された歌詞情報を前記楽譜情報と共に保存する保存処理とをコンピュータで実行させることを特徴とする。
請求項1、6に記載の発明によれば、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示し、画面表示される楽譜中の小節を指定すると、指定された小節をユーザ指定の分解能にクオンタイズするので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させることができる。
請求項4、9に記載の発明によれば、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示し、画面表示される楽譜中の音符を指定すると、指定された音符に対応して押鍵操作する指を表す運指情報を入力する。そして、入力された運指情報を前記楽譜情報と共に保存するので、音符以外に運指も楽譜に表示することができる。
請求項5、10に記載の発明によれば、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示し、画面表示される楽譜中の音符を指定すると、指定された音符に対応して歌詞情報を入力する。そして、入力された歌詞情報を前記楽譜情報と共に保存するので、音符以外に歌詞も楽譜に表示することができる。
以下、図面を参照して本発明の実施の形態について説明する。
A.構成
図1は、本発明の実施の一形態による楽譜表示装置の構成を示すブロック図である。この図において、操作部10は、電源スイッチの他、キー入力用のキーボードやマウス等の入力操作子を備え、入力操作に対応したイベントを発生する。このイベントはCPU11に取り込まれる。CPU11は、ROM12に記憶される各種制御プログラムを実行し、操作部10が発生するイベントに対応して装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。
A.構成
図1は、本発明の実施の一形態による楽譜表示装置の構成を示すブロック図である。この図において、操作部10は、電源スイッチの他、キー入力用のキーボードやマウス等の入力操作子を備え、入力操作に対応したイベントを発生する。このイベントはCPU11に取り込まれる。CPU11は、ROM12に記憶される各種制御プログラムを実行し、操作部10が発生するイベントに対応して装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。
ROM12は、プログラムエリアおよびデータエリアを備える。ROM12のプログラムエリアには、CPU11にロードされる各種制御プログラムが記憶される。各種制御プログラムとは、後述するメインルーチン、楽譜情報生成処理、個別情報生成処理、和音処理、連桁グループ処理、連桁処理、楽譜表示処理および設定処理を含む。ROM12のデータエリアには、音符や休符、譜表などを表示するための楽譜表示データやGUI画面を形成する各種画面データが記憶される。
RAM13は、ワークエリアおよびデータエリアを備える。RAM13のワークエリアには、CPU11の処理に用いられる各種レジスタ/フラグデータが一時記憶される。RAM13のデータエリアは、曲データエリアおよび楽譜情報エリアから構成される。RAM13の曲データエリアには複数曲分の曲情報が格納される。曲情報は、図2に図示するように、演奏パートに対応する複数の演奏トラック[0]〜[N]から構成される。1つの演奏トラックは、対応する演奏パートを形成する各音を表す曲データ[0]〜[N]を有し、その終端には曲の終わりを表すENDデータを備える。曲データは、演奏開始時点からの経過時間(絶対時間)で表される発音開始時刻ITime、音長lGate、音高Pitchおよび次の曲データを指定するポインタpNextから構成される。
RAM13の楽譜情報エリアには、後述する楽譜情報生成処理によって上述の曲データ[0]〜[N]から派生される音符データ[0]〜[N]と、後述の設定処理にて生成されるメタ情報とが格納される。曲データ[0]〜[N]に対応して生成される音符データ[0]〜[N]は、図3に図示するように、ポインタnext、ポインタprev、ポインタmEvent、発音開始時刻ITime、小節番号sMeas、拍番号sBeat、座標(ix,iy)、ノートタイプcNoteType、コードcChord、連桁パターン始点cRenKouS、連桁パターン終点cRenKouE、ライン番号cLineおよび段交叉フラグcDanCrossから構成される。
ポインタnextは、次の音符データを指定する。ポインタprevは、1つ前の音符データを指定する。ポインタmEventは、対応する曲データ[mEvent]を指定する。発音開始時刻ITimeは、音符データの発音タイミングを演奏開始時点からの経過時間で表す。小節番号sMeasは、音符データが含まれる小節の番号を表す。拍番号sBeatは、音符データの拍番号を表す。座標(ix,iy)は、背景画像となる五線譜上における音符データの表示位置を表す。ノートタイプcNoteTypeは、音符の種類を表す。例えば、「1」の場合には全音符、「2」の場合には2分音符、「4」の場合には4分音符を表す。
コードcChordは、「0」の場合に非和音を、「1」の場合に和音開始音を、「2」の場合に和音開始音および和音終了音以外の和音構成音を意味する和音途中音を、「3」の場合に和音終了音を表す。連桁パターン始点cRenkouSは、選択された連桁パターン(後述する)の始点を表す。連桁パターン終点RenkouEは、選択された連桁パターンの終点を表す。ライン番号cLineは、ラインの番号を表す。段交叉フラグDanCrossは、段交叉の有無を表すフラグである。後述の設定処理にて生成されるメタ情報は、上述した音符データに対応して付加されるものであり、演奏開始時点からの経過時間で表す発音開始時刻ITime、メタ情報の内容を識別する識別データおよびメタデータを含む。メタデータとは、具体的には各音符に対応して設けられ、押鍵操作する指の番号を表す運指情報や歌詞情報などを指す。
図1において、音源14は、周知の波形メモリ読み出し方式で構成され、RAM13の曲データエリアからCPU11が読み出す曲データを、指定テンポに同期して再生して楽音信号を出力する。サウンドシステム15は、音源14から出力される楽音信号をD/A変換した後に増幅してスピーカSPから発音する。表示部16は、CPU11から供給される表示制御信号に応じて楽譜表示したり、装置の動作状態を表示する。インタフェース(I/F)部17は、CPU11の制御の下に外部MIDI機器とMIDI形式の曲データを授受するMIDIインタフェースを備える。なお、図1には図示していないが、インタフェース(I/F)部17のMIDIインタフェースに、外部MIDI機器としてキーボード装置が接続される場合、当該キーボード装置の押離鍵操作に対応して生じる曲データは、MIDIインタフェースを介してRAM13の曲データエリアに格納されるようになっている。
B.動作
次に、図4〜図23を参照して上記構成による実施形態の動作について説明する。以下では、先ず最初に全体動作としてメインルーチンの動作を説明した後、続いてメインルーチンからコールされる楽譜情報生成処理、楽譜表示処理および設定処理の各動作について説明する。
次に、図4〜図23を参照して上記構成による実施形態の動作について説明する。以下では、先ず最初に全体動作としてメインルーチンの動作を説明した後、続いてメインルーチンからコールされる楽譜情報生成処理、楽譜表示処理および設定処理の各動作について説明する。
(1)メインルーチンの動作
装置電源の投入に応じて、CPU11は図4に図示するメインルーチンを実行してステップSA1に処理を進め、RAM13のワークエリアに設けられる各種レジスタ/フラグ類をリセットしたり、初期値セットする初期化を実行する。この後、ステップSA2に進み、ユーザによるキー操作入力待ち状態となる。そして、ステップSA3〜SA5では、キー操作入力待ち状態下で「曲選択」、「設定」および「再生」の実行を指示するキー操作入力の有無を判断する。
装置電源の投入に応じて、CPU11は図4に図示するメインルーチンを実行してステップSA1に処理を進め、RAM13のワークエリアに設けられる各種レジスタ/フラグ類をリセットしたり、初期値セットする初期化を実行する。この後、ステップSA2に進み、ユーザによるキー操作入力待ち状態となる。そして、ステップSA3〜SA5では、キー操作入力待ち状態下で「曲選択」、「設定」および「再生」の実行を指示するキー操作入力の有無を判断する。
「曲選択」を指示するキー操作入力、すなわちRAM13の曲データエリアに記憶される複数曲の曲情報のいずれかを選択すると、ステップSA3の判断結果が「YES」になり、ステップSA6を介して楽譜情報生成処理(後述する)を実行した後、ステップSA9を介して楽譜表示処理(後述する)を実行する。そして、上述のステップSA2に処理を戻してキー操作入力待ちの状態に復帰する。
「設定」を指示するキー操作入力が行われた場合には、ステップSA4の判断結果が「YES」になり、ステップSA7を介して設定処理(後述する)を実行する。設定処理では、曲選択された曲データを楽譜として表示するための小節情報を設定する。小節情報とは、例えば音部記号や拍子記号、調記号を指定する他、曲選択された曲データの各小節位置および各段位置を指定する情報である。また、設定処理では、小節単位でクオンタイズを行ってユーザ好みの分解能に設定したり、曲データから派生させる音符データに対応させて運指情報や歌詞情報を設定する処理を行うようになっている。こうした設定処理を実行した後は、ステップSA9を介して楽譜表示処理(後述する)を実行してから上述のステップSA2に処理を戻し、キー操作入力待ちの状態に復帰する。
「再生」を指示するキー操作入力が行われた場合には、ステップSA5の判断結果が「YES」になり、ステップSA8に進む。ステップSA8では、上記ステップSA3にて選択された曲データを再生する再生処理を実行する。この後、ステップSA9を介して楽譜表示処理(後述する)を実行してから上述のステップSA2に処理を戻してキー操作入力待ち状態に復帰する。
(2)楽譜情報生成処理の動作
次に、図5を参照して楽譜情報生成処理の動作を説明する。上述したメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11はステップSB1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSB2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
次に、図5を参照して楽譜情報生成処理の動作を説明する。上述したメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11はステップSB1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSB2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
続いて、ステップSB3〜SB8では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「個別情報生成処理(ステップSB4)」、「和音処理(ステップSB5)」、「連桁グループ処理(ステップSB6)」および「連桁処理(ステップSB7)」を施す。そして、全ての演奏トラックについて処理し終え、ステップSB8において歩進されるトラックポインタTrptrの値がendになると、ステップSB3の判断結果が「YES」になり、本処理を完了させる。
(3)個別情報生成処理の動作
次に、図6を参照して個別情報生成処理の動作を説明する。上述した楽譜情報生成処理のステップSB4(図5参照)を介して本処理が実行されると、CPU11は図6に図示するステップSC1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSC2では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSC3に進む。
次に、図6を参照して個別情報生成処理の動作を説明する。上述した楽譜情報生成処理のステップSB4(図5参照)を介して本処理が実行されると、CPU11は図6に図示するステップSC1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSC2では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSC3に進む。
ステップSC3では、ノートポインタnptrで現在指定される曲データ[nptr]中の発音開始時刻ITimeに音長lGateを加算した時刻と、ポインタpNextで指定される次の曲データ[pNext]中の発音開始時刻ITimeとの時間差から休符が必要か否かを判断する。休符が必要ならば、判断結果は「YES」になり、ステップSC4に進み、上記ステップSC3で得た時間差に対応する休符を決定し、続くステップSC5では、決定した休符を表示する小節内での表示位置を決めた後、ステップSC6に進む。
一方、休符が不必要な場合には、上記ステップSC3の判断結果が「NO」になり、ステップSC6に進む。ステップSC6では、ノートポインタnptrで現在指定される曲データ[nptr]中の音長lGateに対応するノートタイプcNoteType(音符種類)を決定する。ステップSC7では、その決定したノートタイプcNoteType(音符種類)を表示する小節内での表示位置を決定する。そして、ステップSC8では、例えば次の音符とタイで繋ぐ等の、その他の付帯情報を設定する。次いで、ステップSC9では、ノートポインタnptrを歩進させた後、上記ステップSC2に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、上記ステップSC2〜SC9を繰り返し、ノートポインタnptrが曲終端endに達すると、ステップSC2の判断結果が「YES」になり、本処理を終える。
(4)和音処理の動作
次に、図7を参照して和音処理の動作を説明する。上述した楽譜情報生成処理のステップSB5(図5参照)を介して本処理が実行されると、CPU11は図7に図示するステップSD1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSD2では、和音検出の有無を表すフラグInChordに「0」をセットして未検出状態を表す。次いで、ステップSD3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSD4に進む。
次に、図7を参照して和音処理の動作を説明する。上述した楽譜情報生成処理のステップSB5(図5参照)を介して本処理が実行されると、CPU11は図7に図示するステップSD1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSD2では、和音検出の有無を表すフラグInChordに「0」をセットして未検出状態を表す。次いで、ステップSD3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSD4に進む。
ステップSD4では、ノートポインタnptrで現在指定される曲データ[nptr]中の発音開始時刻ITimeと、当該曲データ[nptr]中のポインタpNextで指定される次の曲データ[pNext]中の発音開始時刻ITimeとが同一であるか否かを判断する。以下、次の音の発音時刻と同一の場合と、そうでない場合とに分けて動作説明を進める。
<次の音の発音時刻と同一の場合>
次の音の発音時刻と同一であると、ステップSD4の判断結果が「YES」になり、ステップSD5に進む。ステップSD5では、上述したフラグInChordが「0」、つまり和音未検出状態であるか否かを判断する。和音未検出状態であると、判断結果は「YES」になり、ステップSD7に進み、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音開始音を表す値「1」をストアする。次いで、ステップSD8では、和音の検出に伴い、フラグInChordに「1」をセットする。そして、ステップSD9に進み、ノートポインタnptrをインクリメントして歩進させた後、上述のステップSD3に処理を戻す。
次の音の発音時刻と同一であると、ステップSD4の判断結果が「YES」になり、ステップSD5に進む。ステップSD5では、上述したフラグInChordが「0」、つまり和音未検出状態であるか否かを判断する。和音未検出状態であると、判断結果は「YES」になり、ステップSD7に進み、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音開始音を表す値「1」をストアする。次いで、ステップSD8では、和音の検出に伴い、フラグInChordに「1」をセットする。そして、ステップSD9に進み、ノートポインタnptrをインクリメントして歩進させた後、上述のステップSD3に処理を戻す。
一方、すでに和音を検出した状態であると、上記ステップSD5の判断結果は「NO」になり、ステップSD6に進む。ステップSD6では、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音途中音を表す値「2」をストアする。そして、ステップSD8に進み、フラグInChordに「1」をセットした後、ステップSD9においてノートポインタnptrを歩進させてから上述のステップSD3に処理を戻す。
<次の音の発音時刻と同一でない場合>
次の音の発音時刻と同一でなければ、前述したステップSD4の判断結果は「NO」になり、ステップSD10に進む。ステップSD10では、フラグInChordが「1」、つまり和音検出状態であるか否かを判断する。和音検出状態であると、判断結果が「YES」になり、ステップSD11に進み、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音終了音を表す値「3」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットし、続くステップSD9において、ノートポインタnptrをインクリメントして歩進させてから上述のステップSD3に処理を戻す。
次の音の発音時刻と同一でなければ、前述したステップSD4の判断結果は「NO」になり、ステップSD10に進む。ステップSD10では、フラグInChordが「1」、つまり和音検出状態であるか否かを判断する。和音検出状態であると、判断結果が「YES」になり、ステップSD11に進み、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音終了音を表す値「3」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットし、続くステップSD9において、ノートポインタnptrをインクリメントして歩進させてから上述のステップSD3に処理を戻す。
一方、和音未検出状態であれば、上記ステップSD10の判断結果が「NO」になり、ステップSD12に進む。ステップSD12では、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、非和音を表す値「0」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットした後、ステップSD9においてノートポインタnptrを歩進させてから上述のステップSD3に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、ステップSD3以降の処理を繰り返し、歩進されたノートポインタnptrが曲終端endに達すると、ステップSD3の判断結果が「YES」になり、本処理を終える。
(5)連桁グループ処理の動作
次に、図8を参照して連桁グループ処理の動作を説明する。上述した楽譜情報生成処理のステップSB6(図5参照)を介して本処理が実行されると、CPU11は図8に図示するステップSE1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSE2では、ノートポインタnptrで指定される曲データ[nptr]をレジスタvnにストアする。次いで、ステップSE3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSE4に進む。
次に、図8を参照して連桁グループ処理の動作を説明する。上述した楽譜情報生成処理のステップSB6(図5参照)を介して本処理が実行されると、CPU11は図8に図示するステップSE1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSE2では、ノートポインタnptrで指定される曲データ[nptr]をレジスタvnにストアする。次いで、ステップSE3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSE4に進む。
ステップSE4では、レジスタvnに格納される曲データ[nptr]が連桁の先頭音となる先頭音条件を満たすかどうかを判断する。ここで言う先頭音条件とは、直前の音の旗(符尾)の無い音符長、つまり4分音符長以上であって、今回判定対象とする音が旗のある8分音符長以下であることを指す。こうした先頭音条件を満たさない場合には、ここでの判断結果は「NO」になり、ステップSE12に進む。ステップSE12では、連桁開始音をサーチし始める音を指定するポインタをノートポインタnptrにセットする。つまり、先頭音条件を満たさずにステップSE12に進んだ場合には、次の音を指定させるべく、ノートポインタnptrを歩進させた後、上述のステップSE2に処理を戻す。
そして、歩進されたノートポインタnptrで指定される曲データ[nptr]が曲終端endに達しておらず、しかも連桁の先頭音となる条件を満たしたとする。そうすると、ステップSE3、SE4の各判断結果はいずれも「YES」になり、ステップSE5に進む。ステップSE5では、レジスタvnに格納される曲データ[nptr]を連桁バッファに保存する。
続いて、ステップSE6では、レジスタvnに格納される曲データ[nptr]中のポインタpNextで指定される次の曲データ[pNext]をレジスタvnxにストアする。次に、ステップSE7では、レジスタvnxに格納された曲データ[pNext]が、レジスタvnに格納される曲データ[nptr]に対して連桁音条件を満たしているか否かを判断する。連桁音条件とは、直前および直後の音と今回判定対象の音とがいずれも旗のある音符長であることを指す。この連桁音条件を満たしていると、ここでの判断結果は「YES」になり、ステップSE8に進む。ステップSE8では、レジスタvnxに格納された曲データ[pNext]を連桁バッファに保存すると共に、レジスタvnxに格納された曲データ[pNext]をレジスタvnにストアした後、ステップSE9に進む。
これに対し、レジスタvnxに格納された曲データ[pNext]が、レジスタvnに格納される曲データ[nptr]に連桁する条件を満たしていないと、上記ステップSE7の判断結果は「NO」になり、ステップSE9に進む。ステップSE9では、レジスタvnxに格納された曲データ[pNext]が連桁の終端音となる連桁終端条件を満たすか否かを判断する。連桁終端条件とは、直前の音と今回判定対象の音とがいずれも旗のある音符長であって、直後の音が旗の無い音符長であることを指す。そして、この連桁終端条件を満たさなければ、判断結果は「NO」になり、上記ステップSE6に処理を戻す。
以後、連桁の終端となる音が検索される迄、ステップSE6〜SE9を繰り返し、連桁の先頭音に続いて連桁される音を検索し、該当する音(曲データ)を連桁バッファに保存する。そして、連桁の終端となる音が検索されると、ステップSE9の判断結果が「YES」になり、ステップSE10に進む。ステップSE10では、予め設定される各種連桁パターン(連桁形状)の内、連桁バッファに保存された連桁の先頭音から終端音に適合する連桁パターンを選択する。そして、ステップSE11では、連桁バッファに保存された連桁の先頭音に対応する音符データ中の連桁パターン始点cRenkouS(図3参照)に、選択された連桁パターンを表す値をセットする一方、連桁バッファに保存された連桁の後端音に対応する音符データ中の連桁パターン終点cRenkouE(図3参照)に、選択された連桁パターンを表す値をセットする。
この後、ステップSE12に進み、次の連桁開始音をサーチし始める音を指定するポインタをノートポインタnptrにセットする。すなわち、この場合、連桁の後端音の次の音を指定するポインタをノートポインタnptrにセットした後、ステップSE2に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、上述したステップSE3以降を繰り返す。そして、曲データ[0]〜[N]から探し出された連桁グループ(連桁の開始音から終端音までの一連の音列)毎の連桁パターン始点cRenkouSおよび連桁パターン終点cRenkouEを対応する音符データに設定し終えると、ステップSE3の判断結果が「YES」になり、本処理を終える。
(6)連桁処理の動作
次に、図9〜図10を参照して連桁処理の動作を説明する。上述した楽譜情報生成処理のステップSB7(図5参照)を介して本処理が実行されると、CPU11は図9に図示するステップSF1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSF2では、連桁フラグInRenkouをゼロリセットする。連桁フラグInRenkouは、ノートポインタnptrで指定される曲データ[nptr]が連桁される音であるか否かを表すフラグであり、「1」の場合に連桁音を表し、「0」の場合に非連桁音を表す。
次に、図9〜図10を参照して連桁処理の動作を説明する。上述した楽譜情報生成処理のステップSB7(図5参照)を介して本処理が実行されると、CPU11は図9に図示するステップSF1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSF2では、連桁フラグInRenkouをゼロリセットする。連桁フラグInRenkouは、ノートポインタnptrで指定される曲データ[nptr]が連桁される音であるか否かを表すフラグであり、「1」の場合に連桁音を表し、「0」の場合に非連桁音を表す。
そして、ステップSF3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSF4に進む。ステップSF4以降では、ノートポインタnptrで指定される曲データ[nptr]が非連桁音、連桁開始音、連桁中の音および連桁終了音のいずれであるかを判断した結果に応じた処理を実行する。以下、非連桁音、連桁開始音、連桁中の音および連桁終了音の各場合の処理に分けて動作説明を進める。
<非連桁音の場合>
非連桁音とは、連桁の対象とならない音を指す。そのような音の場合には、後述するステップSF4、SF8、SF9の各判断結果が「NO」になり、図10に図示するステップSF12に進み、ノートポインタnptrをインクリメントして歩進させた後、図9に図示するステップSF3に処理を戻す。
非連桁音とは、連桁の対象とならない音を指す。そのような音の場合には、後述するステップSF4、SF8、SF9の各判断結果が「NO」になり、図10に図示するステップSF12に進み、ノートポインタnptrをインクリメントして歩進させた後、図9に図示するステップSF3に処理を戻す。
<連桁開始音の場合>
ステップSF4では、ノートポインタnptrで指定される曲データ[nptr]が連桁開始音であるか否かを判断する。具体的には、ノートポインタnptrで指定される曲データ[nptr]に対応する音符データ中の連桁パターン始点cRenkouS(図3参照)に、連桁パターンを表す値がセットされているかどうかを判断する。そして、連桁開始音であると、このステップSF4の判断結果が「YES」になり、ステップSF5に進み、連桁フラグInRenkouに「1」をセットする。次いで、ステップSF6では、連桁開始音を指定するノートポインタnptrをレジスタvnsにストアする。そして、ステップSF7では、連桁傾き補正値を一時記憶するレジスタiSlopeAdj(以後、連桁傾き補正値iSlopeAdjと称す)をゼロリセットした後、図10に図示するステップSF8に進む。
ステップSF4では、ノートポインタnptrで指定される曲データ[nptr]が連桁開始音であるか否かを判断する。具体的には、ノートポインタnptrで指定される曲データ[nptr]に対応する音符データ中の連桁パターン始点cRenkouS(図3参照)に、連桁パターンを表す値がセットされているかどうかを判断する。そして、連桁開始音であると、このステップSF4の判断結果が「YES」になり、ステップSF5に進み、連桁フラグInRenkouに「1」をセットする。次いで、ステップSF6では、連桁開始音を指定するノートポインタnptrをレジスタvnsにストアする。そして、ステップSF7では、連桁傾き補正値を一時記憶するレジスタiSlopeAdj(以後、連桁傾き補正値iSlopeAdjと称す)をゼロリセットした後、図10に図示するステップSF8に進む。
<連桁中の音の場合>
ステップSF8では、ノートポインタnptrで指定される曲データ[nptr]が連桁終了音であるか否かを判断する。具体的には、ノートポインタnptrで指定される曲データ[nptr]に対応する音符データ中の連桁パターン始点cRenkouE(図3参照)に、連桁パターンを表す値がセットされているかどうかを判断する。連桁終了音ではなく、連桁中の音であると、判断結果は「NO」になり、ステップSF9に進む。ステップSF9では、連桁フラグInRenkouが「1」であるか否か、つまり連桁中の音であるかどうかを判断する。
ステップSF8では、ノートポインタnptrで指定される曲データ[nptr]が連桁終了音であるか否かを判断する。具体的には、ノートポインタnptrで指定される曲データ[nptr]に対応する音符データ中の連桁パターン始点cRenkouE(図3参照)に、連桁パターンを表す値がセットされているかどうかを判断する。連桁終了音ではなく、連桁中の音であると、判断結果は「NO」になり、ステップSF9に進む。ステップSF9では、連桁フラグInRenkouが「1」であるか否か、つまり連桁中の音であるかどうかを判断する。
連桁中の音であると、ここでの判断結果が「YES」になり、ステップSF10に進む。ステップSF10では、次音との音高差が正であるか否かを判断する。次音との音高差が正であると、判断結果は「YES」になり、ステップSF15に進み、連桁傾き補正値iSlopeAdjをインクリメントした後、ステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。
一方、次音との音高差が正でない場合には、上記ステップSF10の判断結果が「NO」になり、ステップSF11に進む。ステップSF11では、次音との音高差が負であるか否かを判断する。次音との音高差が負であると、判断結果は「YES」になり、ステップSF16に進み、連桁傾き補正値iSlopeAdjをデクリメントした後、ステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。これに対し、次音との音高差が負でない場合、つまり次音との音高差が無ければ、上記ステップSF11の判断結果は「NO」になり、ステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。
<連桁終了音の場合>
さて、歩進されたノートポインタnptrで指定される曲データ[nptr]が連桁終了音になると、上述したステップSF8の判断結果が「YES」になり、ステップSF13に進み、連桁の傾きを算出する。連桁の傾きは、連桁開始音と連桁終了音との音高差と、レジスタiSlopeAdjの連桁傾き補正値とを勘案して算出する。すなわち、連桁する音列において、隣り合う音同士の音高差の正負に応じてインクリメント又はデクリメントされる連桁傾き補正値iSlopeAdjを、連桁開始音と連桁終了音との音高差に乗算して得た値が「0」以下の場合に、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値iSlopeAdjにて補正する。これにより、簡単な処理で自然な傾きの連桁にすることが可能になる。なお、ステップSF13にて算出される連桁傾きは、連桁開始音および連桁終了音の属性として、これら各音に対応する音符データに登録されるようになっている。
さて、歩進されたノートポインタnptrで指定される曲データ[nptr]が連桁終了音になると、上述したステップSF8の判断結果が「YES」になり、ステップSF13に進み、連桁の傾きを算出する。連桁の傾きは、連桁開始音と連桁終了音との音高差と、レジスタiSlopeAdjの連桁傾き補正値とを勘案して算出する。すなわち、連桁する音列において、隣り合う音同士の音高差の正負に応じてインクリメント又はデクリメントされる連桁傾き補正値iSlopeAdjを、連桁開始音と連桁終了音との音高差に乗算して得た値が「0」以下の場合に、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値iSlopeAdjにて補正する。これにより、簡単な処理で自然な傾きの連桁にすることが可能になる。なお、ステップSF13にて算出される連桁傾きは、連桁開始音および連桁終了音の属性として、これら各音に対応する音符データに登録されるようになっている。
また、上記ステップSF13では、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値iSlopeAdjにて補正するようにしたが、これに替えて、連桁開始音から連桁終了音までの連桁グループを形成する各音の音高に基づき最小自乗近似を施して連桁の傾きを算出する態様としても自然な傾きの連桁にすることも可能である。
さて、こうした連桁傾き算出を終えると、CPU11はステップSF14に処理を進め、連桁フラグInRenkouをゼロリセットしてからステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。以後、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達する迄、上述したステップSF3以降の処理を繰り返す。そして、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達すると、ステップSF3の判断結果が「YES」になり、本処理を終える。
(7)楽譜表示処理の動作
次に、図11〜図12を参照して楽譜表示処理の動作を説明する。前述したメインルーチンのステップSA9(図4参照)を介して楽譜表示処理が実行されると、CPU11は図11に図示するステップSG1に進み、背景画像(五線譜)を表示部16の表示面に描画する。続いて、ステップSG2では、小節数を計数する小節カウンタを初期化する。次いで、ステップSG3では、小節カウンタの値が終端endに達したか否か、つまり曲を形成する全ての小節について楽譜表示し終えたかどうかを判断する。全ての小節について楽譜表示し終えていなければ、判断結果は「NO」になり、ステップSG4に進む。ステップSG4では、五線譜上で小節カウンタの値で指定される小節情報に基づき、例えば五線譜上に音部記号や調記号、小節線などを描画する。
次に、図11〜図12を参照して楽譜表示処理の動作を説明する。前述したメインルーチンのステップSA9(図4参照)を介して楽譜表示処理が実行されると、CPU11は図11に図示するステップSG1に進み、背景画像(五線譜)を表示部16の表示面に描画する。続いて、ステップSG2では、小節数を計数する小節カウンタを初期化する。次いで、ステップSG3では、小節カウンタの値が終端endに達したか否か、つまり曲を形成する全ての小節について楽譜表示し終えたかどうかを判断する。全ての小節について楽譜表示し終えていなければ、判断結果は「NO」になり、ステップSG4に進む。ステップSG4では、五線譜上で小節カウンタの値で指定される小節情報に基づき、例えば五線譜上に音部記号や調記号、小節線などを描画する。
そして、ステップSG5では、音符データを指定するノートポインタnptrをゼロリセットする。続いて、ステップSG6では、ノートポインタnptrが1小節分の音を指定し終えた否かを判断する。1小節分の音を指定し終えていなければ、判断結果は「NO」になり、ステップSG7に進み、ノートポインタnptrが現在指定する音符データの表示位置を計算する。次いで、ステップSG8では、上記ステップSG7にて算出した表示位置に、ノートポインタnptrが現在指定する音符データを描画する。この後、ステップSG9に進み、ノートポインタnptrを歩進させてから上記ステップSG6に処理を戻す。
こうして、小節カウンタの値で指定される小節を形成する各音の表示位置を順次算出し、それら表示位置に各音符を描画し終えると、上記ステップSG6の判断結果が「YES」になり、ステップSG10に進み、小節カウンタを歩進させた後、上述のステップSG3に処理を戻す。以後、各小節毎に音符の表示位置を算出し、算出した表示位置に対応する音符を描画して行き、全ての小節について音符を描画し終えると、上記ステップSG3の判断結果が「YES」になり、本処理を終える。
なお、音符描画に際しては、対応する音符データが備える属性を参照する。音符データが備える属性とは、前述したノートタイプcNoteType、連桁パターン始点cRenkouSおよび連桁パターン終点RenkouEの他、上述した連桁処理(図9〜図10参照)において算出される連桁傾きを含む。
図12は、楽譜表示処理によって画面表示される楽譜の一例を示す図である。図12(a)は、前述した連桁処理による連桁傾きの補正を行わない場合の譜例である。この譜例では、連桁傾きの補正が行われず、連桁開始音と連桁終了音との音高差だけで連桁の傾きを決めるため、不揃いとなり連桁する音符が見難いものとなっている。これに対し、同図(b)は、前述した連桁処理による連桁傾きの補正を行った譜例である。この譜例では、前述した補正により連桁の傾きが不揃いにならず、連桁する音符を見易く表示できるようになっている。
(8)設定処理の動作
次に、図13〜図14を参照して設定処理の動作を説明する。前述したメインルーチンのステップSA7(図4参照)を介して設定処理が実行されると、CPU11は図13に図示するステップSH1に進み、メニュー画面を表示部16に画面表示する。ここで、図14を参照してメニュー画面の一例について説明する。この図に図示するメニュー画面は、小節情報の生成を指示するアイコンIC1、運指情報の入力を指示するアイコンIC2、歌詞情報の入力を指示するアイコンIC3、小節単位のクオンタイズを指示するアイコンIC4および設定した情報の保存を指示するアイコンIC5を有する。メニュー画面に配設されるアイコンIC1〜IC5は、操作部10のマウス操作(クリック)にて選択される。
次に、図13〜図14を参照して設定処理の動作を説明する。前述したメインルーチンのステップSA7(図4参照)を介して設定処理が実行されると、CPU11は図13に図示するステップSH1に進み、メニュー画面を表示部16に画面表示する。ここで、図14を参照してメニュー画面の一例について説明する。この図に図示するメニュー画面は、小節情報の生成を指示するアイコンIC1、運指情報の入力を指示するアイコンIC2、歌詞情報の入力を指示するアイコンIC3、小節単位のクオンタイズを指示するアイコンIC4および設定した情報の保存を指示するアイコンIC5を有する。メニュー画面に配設されるアイコンIC1〜IC5は、操作部10のマウス操作(クリック)にて選択される。
こうしたメニュー画面が表示部16に画面表示されると、CPU11はステップSH2に進み、メニュー画面においてアイコンクリック操作が為されるまで待機する。そして、メニュー画面においてアイコンクリック操作が行われると、ステップSH2の判断結果が「YES」になり、ステップSH3に進む。ステップSH3〜SH7では、メニュー画面に配設されるアイコンIC1〜IC5のいずれがクリック操作されたかを判断する。すなわち、アイコンIC1がクリックされた場合には、ステップSH3の判断結果が「YES」になり、ステップSH8に進み、音部記号や拍子記号、調記号を指定する他、曲選択された曲データの各小節位置および各段位置を指定する小節情報を生成する小節情報生成処理を実行してから本処理を終える。
アイコンIC2がクリックされた場合には、ステップSH4の判断結果が「YES」になり、ステップSH9に進み、後述する運指情報入力処理を実行してから本処理を終える。アイコンIC3がクリックされた場合には、ステップSH5の判断結果が「YES」になり、ステップSH10に進み、後述する歌詞情報入力処理を実行してから本処理を終える。アイコンIC4がクリックされた場合には、ステップSH6の判断結果が「YES」になり、ステップSH11に進み、後述する小節クオンタイズ処理を実行してから本処理を終える。アイコンIC5がクリックされた場合には、ステップSH7の判断結果が「YES」になり、ステップSH12に進み、後述する保存処理を実行してから本処理を終える。
(8)運指情報入力処理の動作
次に、図15を参照して運指情報入力処理の動作を説明する。前述した設定処理のステップSH9(図13参照)を介して運指情報入力処理が実行されると、CPU11は図15に図示するステップSJ1を介して音符ポイント処理を実行する。そして、ステップSJ2を介して運指入力処理を実行して本処理を終える。
次に、図15を参照して運指情報入力処理の動作を説明する。前述した設定処理のステップSH9(図13参照)を介して運指情報入力処理が実行されると、CPU11は図15に図示するステップSJ1を介して音符ポイント処理を実行する。そして、ステップSJ2を介して運指入力処理を実行して本処理を終える。
(9)音符ポイント処理の動作
上述したステップSJ1(図15参照)を介して本処理が実行されると、CPU11は図16に図示するステップSK1に進み、画面表示されている楽譜上において操作部10のマウスによりポインティングされている位置座標(x,y)を取得する。次いで、ステップSK2では、音符データを指定するノートポインタnptrをゼロリセットする。続いて、ステップSK3では、ノートポインタnptrが曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSK4に進む。
上述したステップSJ1(図15参照)を介して本処理が実行されると、CPU11は図16に図示するステップSK1に進み、画面表示されている楽譜上において操作部10のマウスによりポインティングされている位置座標(x,y)を取得する。次いで、ステップSK2では、音符データを指定するノートポインタnptrをゼロリセットする。続いて、ステップSK3では、ノートポインタnptrが曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSK4に進む。
ステップSK4では、マウスのポインティング座標(x,y)と、ノートポインタnptrで指定される音符データ[nptr]の座標(ix,iy)とを比較する。そして、ステップSK5では、両座標(x,y)、(ix,iy)が一致したか否か、つまり現在のノートポインタnptrで指定される音符データ[nptr]の符頭位置をマウスのポインティングしているかどうかを判断する。符頭位置をポインティングしていなければ、判断結果は「NO」になり、ステップSK6に進み、ノートポインタnptrをインクリメントして歩進させた後、上述のステップSK3に処理を戻す。
以後、マウスでポインティングされた位置座標(x,y)に一致する符頭の座標(ix,iy)を有する音符が見つかるまでステップSK3〜SK6を繰り返す。そして、マウスでポインティングされた位置座標(x,y)に一致する符頭の座標(ix,iy)を有する音符が見つかると、ステップSK5の判断結果が「YES」になり、ステップSK7に進み、該当する音符データ中のポインタmEventをレジスタmeorgをストアして本処理を終える。これにより、画面表示された楽譜上にてマウスでポインティングされた音符に対応する曲データ[meorg]が指定される。一方、マウスでポインティングされた位置座標(x,y)に一致する符頭の座標(ix,iy)を有する音符が見つからないまま、ノートポインタnptrが曲終端endに達した場合には、上記ステップSK3の判断結果が「YES」になり、ステップSK8に進み、レジスタmeorgをゼロリセットして本処理を終える。
(10)運指入力処理の動作
上述したステップSJ2(図15参照)を介して本処理が実行されると、CPU11は図17に図示するステップSL1に進み、ユーザ操作に応じて入力される運指情報をレジスタcFigにストアする。なお、ここで言う運指情報とは、具体的には押鍵操作する指を表す指番号である。次いで、ステップSL2では、レジスタmeorgに格納されるポインタmEventを、曲データを指定するポインタmeにセットする。したがって、ポインタmeは、マウスでポインティングされた音符に対応する曲データ[me]を指定する。そして、ステップSL3では、曲データ[me]中の発音開始時刻lTimeと同じタイミングのメタ情報として、レジスタcFigの運指情報(指番号)をRAM13の楽譜情報エリア(図3参照)に格納して本処理を終える。
上述したステップSJ2(図15参照)を介して本処理が実行されると、CPU11は図17に図示するステップSL1に進み、ユーザ操作に応じて入力される運指情報をレジスタcFigにストアする。なお、ここで言う運指情報とは、具体的には押鍵操作する指を表す指番号である。次いで、ステップSL2では、レジスタmeorgに格納されるポインタmEventを、曲データを指定するポインタmeにセットする。したがって、ポインタmeは、マウスでポインティングされた音符に対応する曲データ[me]を指定する。そして、ステップSL3では、曲データ[me]中の発音開始時刻lTimeと同じタイミングのメタ情報として、レジスタcFigの運指情報(指番号)をRAM13の楽譜情報エリア(図3参照)に格納して本処理を終える。
(11)歌詞情報入力処理の動作
次に、図18を参照して歌詞情報入力処理の動作を説明する。前述した設定処理のステップSH10(図13参照)を介して歌詞情報入力処理が実行されると、CPU11は図18に図示するステップSM1を介して音符ポイント処理(図16参照)を実行し、画面表示された楽譜上にてマウスでポインティングされた音符に対応する曲データ[meorg]を指定する。そして、ステップSM2を介して歌詞入力処理を実行して本処理を終える。
次に、図18を参照して歌詞情報入力処理の動作を説明する。前述した設定処理のステップSH10(図13参照)を介して歌詞情報入力処理が実行されると、CPU11は図18に図示するステップSM1を介して音符ポイント処理(図16参照)を実行し、画面表示された楽譜上にてマウスでポインティングされた音符に対応する曲データ[meorg]を指定する。そして、ステップSM2を介して歌詞入力処理を実行して本処理を終える。
(12)歌詞入力処理の動作
上述のステップSM2(図18参照)を介して本処理が実行されると、CPU11は図19に図示するステップSN1に進み、ユーザ操作に応じて入力される歌詞情報(文字データ)をレジスタstrにストアする。次いで、ステップSN2では、レジスタmeorgに格納されるポインタmEventを、曲データを指定するポインタmeにセットする。したがって、ポインタmeは、マウスでポインティングされた音符に対応する曲データ[me]を指定する。そして、ステップSN3では、曲データ[me]中の発音開始時刻lTimeと同じタイミングのメタ情報として、レジスタstrの歌詞情報をRAM13の楽譜情報エリア(図3参照)に格納して本処理を終える。
上述のステップSM2(図18参照)を介して本処理が実行されると、CPU11は図19に図示するステップSN1に進み、ユーザ操作に応じて入力される歌詞情報(文字データ)をレジスタstrにストアする。次いで、ステップSN2では、レジスタmeorgに格納されるポインタmEventを、曲データを指定するポインタmeにセットする。したがって、ポインタmeは、マウスでポインティングされた音符に対応する曲データ[me]を指定する。そして、ステップSN3では、曲データ[me]中の発音開始時刻lTimeと同じタイミングのメタ情報として、レジスタstrの歌詞情報をRAM13の楽譜情報エリア(図3参照)に格納して本処理を終える。
(13)小節クオンタイズ処理の動作
次に、図20を参照して小節クオンタイズ処理の動作を説明する。前述した設定処理のステップSH11(図13参照)を介して小節クオンタイズ処理が実行されると、CPU11は図20に図示するステップSP1を介して小節ポイント処理を実行する。そして、ステップSP2を介してクオンタイズ処理を実行して本処理を終える。
次に、図20を参照して小節クオンタイズ処理の動作を説明する。前述した設定処理のステップSH11(図13参照)を介して小節クオンタイズ処理が実行されると、CPU11は図20に図示するステップSP1を介して小節ポイント処理を実行する。そして、ステップSP2を介してクオンタイズ処理を実行して本処理を終える。
(14)小節ポイント処理の動作
上述したステップSP1(図20参照)を介して本処理が実行されると、CPU11は図21に図示するステップSQ1に進み、画面表示されている楽譜上において操作部10のマウスによりポインティングされている位置座標(x,y)を取得する。次いで、ステップSQ2では、小節カウンタをゼロリセットする。続いて、ステップSQ3では、小節カウンタが曲の終わりの小節endに達したか否かを判断する。小節endに達していなければ、判断結果は「NO」になり、ステップSQ4に進む。
上述したステップSP1(図20参照)を介して本処理が実行されると、CPU11は図21に図示するステップSQ1に進み、画面表示されている楽譜上において操作部10のマウスによりポインティングされている位置座標(x,y)を取得する。次いで、ステップSQ2では、小節カウンタをゼロリセットする。続いて、ステップSQ3では、小節カウンタが曲の終わりの小節endに達したか否かを判断する。小節endに達していなければ、判断結果は「NO」になり、ステップSQ4に進む。
ステップSQ4では、マウスのポインティング座標(x,y)と、小節カウンタの値で指定される小節の座標(ix,iy)とを比較する。そして、ステップSQ5では、両座標(x,y)、(ix,iy)が一致したか否か、つまり現在の小節カウンタの値で指定される小節の位置がマウスでポインティングされているかどうかを判断する。小節カウンタの値で指定される小節の位置がポインティングされていなければ、判断結果は「NO」になり、ステップSQ6に進み、小節カウンタをインクリメントして歩進させた後、上述のステップSQ3に処理を戻す。
以後、マウスでポインティングされた位置座標(x,y)に一致する座標(ix,iy)を有する小節が見つかるまでステップSQ3〜SQ6を繰り返す。そして、マウスでポインティングされた位置座標(x,y)に一致する座標(ix,iy)の小節が見つかると、ステップSQ5の判断結果が「YES」になり、ステップSQ7に進み、該当する小節の小節番号iMeasNoをレジスタiCurMeasにストアして本処理を終える。これにより、画面表示された楽譜上にてマウスでポインティングされた小節の小節番号iMeasNoが指定される。一方、マウスでポインティングされた位置座標(x,y)に一致する座標(ix,iy)を有する小節が見つからないまま、小節カウンタの値が小節endに達した場合には、上記ステップSK3の判断結果が「YES」になり、ステップSQ8に進み、レジスタiCurMeasに小節番号として“−1”をストアして本処理を完了させる。
(15)クオンタイズ処理の動作
次に、図22を参照してクオンタイズ処理の動作について説明する。上述した小節クオンタイズ処理のステップSP2(図20参照)を介して本処理が実行されると、CPU11は図22に図示するステップSR1に進み、ユーザ操作で指定されるクオンタイズの分解能(例えば、16分音符長、32分音符長および64分音符長のいずれか)をレジスタiQにストアする。次いで、ステップSR2では、上述した小節ポイント処理にてレジスタiCurMeasに格納された小節番号iMeasNoが所定値より大きいか否かでポインティングされた小節のみのクオンタイズか、あるいは曲全体に対するクオンタイズかを判断する。
次に、図22を参照してクオンタイズ処理の動作について説明する。上述した小節クオンタイズ処理のステップSP2(図20参照)を介して本処理が実行されると、CPU11は図22に図示するステップSR1に進み、ユーザ操作で指定されるクオンタイズの分解能(例えば、16分音符長、32分音符長および64分音符長のいずれか)をレジスタiQにストアする。次いで、ステップSR2では、上述した小節ポイント処理にてレジスタiCurMeasに格納された小節番号iMeasNoが所定値より大きいか否かでポインティングされた小節のみのクオンタイズか、あるいは曲全体に対するクオンタイズかを判断する。
ここで、レジスタiCurMeasに格納された小節番号iMeasNoが所定値より大きい場合、つまりポインティングされた小節に対するクオンタイズ指定であると、判断結果は「YES」になり、ステップSR3に進む。ステップSR3では、レジスタiQに格納されたユーザ指定の分解能を、ポインティングされた小節の分解能を保持するレジスタiBResolution[iResolution]にストアして本処理を終える。これにより、クオンタイズしたい小節をポインティングするだけでその小節の分解能を変更させることが可能になる。
一方、レジスタiCurMeasに格納された小節番号iMeasNoが0より小さい場合、つまり曲全体に対するクオンタイズ指定であると、上記ステップSR2の判断結果は「NO」になり、ステップSR4に進む。ステップSR4では、各小節の分解能を保持するレジスタiBResolution[N](Nは0〜n)の各値が曲全体の現在の分解能iResolutionとが一致するか否かを判断する。そして、一致する場合には、判断結果が「YES」となり、ステップSR5に進み、レジスタiQに格納されたユーザ指定の分解能を、各小節の分解能を保持するレジスタiBResolution[N]のすべてにストアする。次にステップSR6に進み、レジスタiQに格納されたユーザ指定の分解能を、曲全体の現在の分解能iResolutionにストアして本処理を終える。
これに対し、レジスタiQに格納されたユーザ指定の分解能と、レジスタiOldに格納された現在の分解能iResolutionとが一致しないと、上記ステップSR4の判断結果が「NO」となり、ステップSR7に進む。ステップSR7では、小節カウンタJを初期化する。次いで、ステップSR8〜SR11では、曲終端の小節に達するまで小節カウンタJを歩進させながら、レジスタiResolutionと同じ分解能を有する小節、すなわちを検索し、該当する小節の分解能を保持するレジスタiBResolution[J]にレジスタiQに格納されたユーザ指定の分解能をストアする。つまりSR9で「NO」と判断された小節は曲全体のクオンタイズを決めた後でさらにその小節だけのクオンタイズを変更した小節であるので、一括書き換えの対象からは外すのである。そして、曲終端の小節に達するまで検索し終えると、ステップSR8の判断結果が「YES」となり、ステップSR6に進み、レジスタiQに格納されたユーザ指定の分解能を、曲全体の現在の分解能iResolutionにストアして本処理を終える。
(16)保存処理の動作
次に、図23を参照して保存処理の動作について説明する。前述した設定処理のステップSH12(図13参照)を介して本処理が実行されると、CPU11は図23に図示するステップSS1に進み、レジスタlPrevTimeを初期化する。続いて、ステップSS32では、レジスタlPrevTimeに格納される時刻が曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSS3に進む。ステップSS3では、レジスタlPrevTimeに格納される時刻に対応したデータ(RAM13の楽譜情報エリアに格納される音符データもしくはメタ情報)の種類を調べる。
次に、図23を参照して保存処理の動作について説明する。前述した設定処理のステップSH12(図13参照)を介して本処理が実行されると、CPU11は図23に図示するステップSS1に進み、レジスタlPrevTimeを初期化する。続いて、ステップSS32では、レジスタlPrevTimeに格納される時刻が曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSS3に進む。ステップSS3では、レジスタlPrevTimeに格納される時刻に対応したデータ(RAM13の楽譜情報エリアに格納される音符データもしくはメタ情報)の種類を調べる。
次いで、ステップSS4では、レジスタlPrevTimeに格納される時刻に対応したデータ(音符データもしくはメタ情報)の発音開始時刻lTimeを、レジスタlCurTimeにストアする。そして、ステップSS5では、レジスタlCurTimeの時刻からレジスタlPrevTimeの時刻を減算してステップタイムlStepTimeを算出する。次いで、ステップSS6では、算出したステップタイムlStepTimeを保存する。次に、ステップSS7では、上記ステップSS3にて調べたデータ種が音符データであるか否かを判断する。
音符データであれば、判断結果は「YES」になり、ステップSS8に進み、その音符データを保存する。一方、メタ情報ならば、上記ステップSS7の判断結果が「NO」になり、ステップSS9に進み、そのメタ情報を保存する。そして、ステップSS10に進み、レジスタlCurTimeの値を、レジスタlPrevTimeに更新した後、上記ステップSS2に処理を戻す。以後、レジスタlPrevTimeの時刻が曲終端endに達するまで上記ステップSS2〜SS10を繰り返すことによって、音符データおよびメタ情報をそれぞれ時刻順に保存する一方、各データ間隔に相当するステップタイムlStepTimeも保存するようになっている。こうして、レジスタlPrevTimeの時刻が曲終端endに達すると、ステップSS2の判断結果が「YES」になり、本処理を終える。
以上のように、本実施の形態では、曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示装置において、表示された楽譜中で指定された小節をユーザ指定の分解能にクオンタイズするので、小節単位でクオンタイズを行ってユーザ好みの分解能で楽譜を表示させることができる。また、表示された楽譜中で指定された音符に対応して押鍵操作する指を表す運指情報を入力したり、歌詞を入力するので、音符以外の運指や歌詞も楽譜に表示することができるようになっている。
10 操作部
11 CPU
12 ROM
13 RAM
14 音源
15 サウンドシステム
16 表示部
17 インタフェース部
11 CPU
12 ROM
13 RAM
14 音源
15 サウンドシステム
16 表示部
17 インタフェース部
Claims (10)
- 曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示手段と、
前記楽譜表示手段により画面表示される楽譜中の小節を指定する小節指定手段と、
前記小節指定手段により指定された楽譜中の小節をユーザ指定の分解能にクオンタイズするクオンタイズ手段と
を具備することを特徴とする楽譜表示装置。 - 前記クオンタイズ手段は、前記小節指定手段により楽譜中で指定された小節の分解能がユーザ指定の分解能と異なる場合、曲を構成する全ての小節の分解能をユーザ指定の分解能にクオンタイズすることを特徴とする請求項1記載の楽譜表示装置。
- 前記クオンタイズ手段は、前記小節指定手段により楽譜中で指定された小節の分解能がユーザ指定の分解能と一致する場合、その楽譜中で指定された小節の分解能とは異なる分解能を有する小節をユーザ指定の分解能にクオンタイズすることを特徴とする請求項1記載の楽譜表示装置。
- 曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示手段と、
前記楽譜表示手段により画面表示される楽譜中の音符を指定する音符指定手段と、
前記音符指定手段により指定された楽譜中の音符に対応して押鍵操作する指を表す運指情報を入力する運指入力手段と、
前記運指入力手段により入力された運指情報を前記楽譜情報と共に保存する保存手段と
を具備することを特徴とする楽譜表示装置。 - 曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示手段と、
前記楽譜表示手段により画面表示される楽譜中の音符を指定する音符指定手段と、
前記音符指定手段により指定された楽譜中の音符に対応して歌詞情報を入力する歌詞入力手段と、
前記歌詞入力手段により入力された歌詞情報を前記楽譜情報と共に保存する保存手段と
を具備することを特徴とする楽譜表示装置。 - 曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示処理と、
前記楽譜表示処理により画面表示される楽譜中の小節を指定する小節指定処理と、
前記小節指定処理にて楽譜中で指定された小節をユーザ指定の分解能にクオンタイズするクオンタイズ処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。 - 前記クオンタイズ処理は、前記小節指定処理により楽譜中で指定された小節の分解能がユーザ指定の分解能と異なる場合、曲を構成する全ての小節の分解能をユーザ指定の分解能にクオンタイズすることを特徴とする請求項6記載の楽譜表示プログラム。
- 前記クオンタイズ処理は、前記小節指定処理により楽譜中で指定された小節の分解能がユーザ指定の分解能と一致する場合、その楽譜中で指定された小節の分解能とは異なる分解能を有する小節をユーザ指定の分解能にクオンタイズすることを特徴とする請求項1記載の楽譜表示プログラム。
- 曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示処理と、
前記楽譜表示処理により画面表示される楽譜中の音符を指定する音符指定処理と、
前記音符指定処理により楽譜中で指定された音符に対応して押鍵操作する指を表す運指情報を入力する運指入力処理と、
前記運指入力処理により入力された運指情報を前記楽譜情報と共に保存する保存処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。 - 曲を構成する各音を表す曲データを楽譜として表示する楽譜情報に変換して画面表示する楽譜表示処理と、
前記楽譜表示処理により画面表示される楽譜中の音符を指定する音符指定処理と、
前記音符指定処理により楽譜中で指定された音符に対応して歌詞情報を入力する歌詞入力処理と、
前記歌詞入力処理により入力された歌詞情報を前記楽譜情報と共に保存する保存処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005375951A JP2007178640A (ja) | 2005-12-27 | 2005-12-27 | 楽譜表示装置および楽譜表示プログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005375951A JP2007178640A (ja) | 2005-12-27 | 2005-12-27 | 楽譜表示装置および楽譜表示プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2007178640A true JP2007178640A (ja) | 2007-07-12 |
Family
ID=38303902
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2005375951A Pending JP2007178640A (ja) | 2005-12-27 | 2005-12-27 | 楽譜表示装置および楽譜表示プログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2007178640A (ja) |
-
2005
- 2005-12-27 JP JP2005375951A patent/JP2007178640A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3567123B2 (ja) | 歌詞文字を利用した歌唱採点装置 | |
| JP4650182B2 (ja) | 自動伴奏装置及びプログラム | |
| JP3684774B2 (ja) | 演奏指示装置及びプログラムを記録した媒体 | |
| JP2007178640A (ja) | 楽譜表示装置および楽譜表示プログラム | |
| JP3613935B2 (ja) | 演奏練習装置及びプログラムを記録した媒体 | |
| JP6252826B2 (ja) | 演奏練習装置、楽譜表示装置、電子楽器、演奏練習方法、楽譜表示方法およびプログラム | |
| JP4547719B2 (ja) | 楽譜表示装置および楽譜表示プログラム | |
| JP4301125B2 (ja) | 運指情報生成装置、及びプログラム | |
| JP2007316666A (ja) | 楽譜表示装置および楽譜表示プログラム | |
| JP2006259401A (ja) | カラオケ装置 | |
| JP4534926B2 (ja) | 画像表示装置及びプログラム | |
| JP2014052421A (ja) | 演奏評価装置およびプログラム | |
| JP2014191331A (ja) | 楽器音出力装置及び楽器音出力プログラム | |
| JP2007171672A (ja) | 楽譜表示装置および楽譜表示プログラム | |
| JP5163928B2 (ja) | 演奏情報補正装置および演奏情報補正プログラム | |
| JP4626851B2 (ja) | 曲データ編集装置および曲データ編集プログラム | |
| JP2008009448A (ja) | 楽譜表示装置および楽譜表示プログラム | |
| JP2000259154A (ja) | コード判定装置 | |
| JP5413484B2 (ja) | 演奏情報補正装置および演奏情報補正プログラム | |
| JP4816930B2 (ja) | 演奏支援情報生成装置および演奏支援情報生成プログラム | |
| JP5029770B2 (ja) | 演奏支援情報生成装置および演奏支援情報生成プログラム | |
| JP2007225916A (ja) | オーサリング装置、オーサリング方法およびプログラム | |
| JP4508196B2 (ja) | 曲編集装置および曲編集プログラム | |
| JP4760348B2 (ja) | 楽曲選択装置および楽曲選択用コンピュータプログラム | |
| JP4748395B2 (ja) | 楽曲構造分析装置および楽曲構造分析処理プログラム |