JP4016594B2 - 楽譜表示装置、及び記録媒体 - Google Patents
楽譜表示装置、及び記録媒体 Download PDFInfo
- Publication number
- JP4016594B2 JP4016594B2 JP2000370079A JP2000370079A JP4016594B2 JP 4016594 B2 JP4016594 B2 JP 4016594B2 JP 2000370079 A JP2000370079 A JP 2000370079A JP 2000370079 A JP2000370079 A JP 2000370079A JP 4016594 B2 JP4016594 B2 JP 4016594B2
- Authority
- JP
- Japan
- Prior art keywords
- note
- display
- data
- scroll
- image
- 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.)
- Expired - Fee Related
Links
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、楽譜をそれが表す演奏の内容に沿ってスクロール表示するための技術に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
現在では、楽譜をLCDなどの表示装置上に表示させる楽譜表示装置が製品化されている。その楽譜は楽器を練習するうえで必要不可欠である。このことから、多くの楽譜表示装置は電子楽器や自動演奏装置(シーケンサー)などの楽音発生装置に搭載されるか、或いはそれに接続させて用いられるようになっている。それ以外には、専用のソフトウェアをパーソナル・コンピュータ(以降、パソコンと略記する)などのデータ処理装置に実行させることにより実現されるものもある。
【0003】
楽譜表示装置のなかには、楽譜のスクロール表示、即ちそれまで表示させている部分の楽譜のなかで最も早く演奏すべき部分(音符やその周辺)を消去させつつ、その消去に合わせて、表示させている部分の最後に続く部分を新たに表示させるということを行えるようになっているものがある。そのスクロール表示を行うことで、楽譜を表示できる面積が小さくとも、楽器を演奏するユーザに対して楽譜のなかで演奏すべき箇所を常に提示できるようになる。
【0004】
楽譜の表示は、その画像データを描画するか、或いは音符や変化記号(嬰記号や変記号)などの表示すべきシンボルの種類を示すデータやその表示位置を指定するデータなどからなるデータの組み合わせに従って、シンボルの画像データを配置することで行われる。
【0005】
楽譜のスペーシング(譜割り)は、演奏上、先行する音符の直前からそれに続く音符の直前までの間隔(以降、音符間隔と呼ぶ)がその先行する音符の音の長さ(音符長)に正比例している(例えば4分音符の音符間隔は8分音符の音符間隔の2倍となっている)リニアスペーシングと、その音符間隔が先行する音符の音長に必ずしも正比例していないノンリニアスペーシングと、に大別される。パソコン用のソフトウェアなどでは普通、前者の方法で楽譜を表示するようになっており、一般的に印刷されて流通している楽譜は後者の方法で記譜されている。なお、ノンリニアスペーシングに関しては、その記譜法に厳密な規則が存在しているわけではなく、楽譜浄書家が自身の経験則や美的感覚などを基に行っているのが実情である。
【0006】
従来の楽譜表示装置は、リニアスペーシングで作成された楽譜を対象にスクロール表示を行っていた。そのために、スクロールは、小節線間の幅や拍子、及びテンポなどからスクロールの速度を予め決定し、その決定した速度で行うようになっていた。
【0007】
リニアスペーシングとノンリニアスペーシングとを比較すると、読みやすさという点でノンリニアスペーシングの方が優れている。このことから、ノンリニアスペーシングで作成された楽譜を表示するほうが望ましい。しかし、ノンリニアスペーシングで作成された楽譜では、上述したように、音符間隔が音符の音符長と必ずしも正比例していない。このため、予め定めた速度でスクロールを行うと、演奏すべきタイミングとなる前に音符を消去させたり、或いはそのタイミングのときに先行する音符が消去されていないといったことが起こってしまい、ユーザが楽譜の内容を正確に読み取れなくなるという問題点が生じてしまう。
【0008】
その問題点は、従来の楽譜表示装置ではノンリニアスペーシングで作成された楽譜を適切な形でスクロールさせることができないということを意味する。このため、ノンリニアスペーシングで作成された楽譜のスクロール表示には、それに合った手法で行う必要があるということになる。
【0009】
本発明の課題は、楽譜のスペーシングに係わらず、それが表す演奏内容に沿ってスクロール表示を行うことができる楽譜表示装置を提供することにある。
【0010】
【課題を解決するための手段】
本発明の楽譜表示装置は、先行する音符の直前からそれに続く音符の直前までの音符の表示間隔がその先行する音符の音符長に正比例しておらず、かつ少なくとも一部の音符の表示間隔が等間隔でない楽譜を表示するために、夫々音符画像及び座標からなる複数の音符データを記憶する音符データ記憶手段と、音符データ記憶手段に記憶された複数の音符データの少なくとも一部を読み出し、当該音符データに含まれる音符画像を対応する座標にて指定される表示手段の表示画面上の位置に表示させる表示制御手段と、この表示制御手段にて前記表示手段に表示された音符画像の表示位置を設定された速度で所定方向にスクロールさせるスクロール手段と、このスクロール手段によりスクロールされた音符画像の表示位置を表わす前記スクロール方向に対応する座標が、前記表示手段の表示画面上に設定された位置の座標に到達したか否かを判別する判別手段と、この判別手段により到達したと判別された場合に、当該到達した音符画像が表わす音符の音符長と、前記到達した音符画像の表示位置とこれに続く音符画像の表示位置との前記スクロール方向における差分とに基づいて前記スクロール手段にてスクロールさせる速度を変更するスクロール速度変更手段と、
を具備する。
【0011】
なお、前記スクロール速度変更手段は、前記到達した音符画像の表示位置とこれに続く音符画像の表示位置との前記スクロール方向における差分に基づいてスクロールさせる速度を算出し、前記到達した音符画像が表わす音符の音符長の長さに応じて前記算出されたスクロール速度を増減させる、ことが望ましい。
【0012】
本発明のコンピュータ読み取り可能な記録媒体は、コンピューターに、先行する音符の直前からそれに続く音符の直前までの音符の表示間隔がその先行する音符の音符長に正比例しておらず、かつ少なくとも一部の音符の表示間隔が等間隔でない楽譜を表示するための夫々音符画像及び座標からなる複数の音符データを記憶する音符データ記憶手段から複数の音符データの少なくとも一部を読み出し、当該音符データに含まれる音符画像を対応する座標にて指定される表示手段の表示画面上の位置に表示させる表示制御機能と、前記表示手段に表示された音符画像の表示位置を設定された速度で所定方向にスクロールさせるスクロール機能と、このスクロールされた音符画像の表示位置を表わす前記スクロール方向に対応する座標が、前記表示手段の表示画面上に設定された位置の座標に到達したか否かを判別する判別機能と、この判別機能により到達したと判別された場合に、当該到達した音符画像が表わす音符の音符長と、前記到達した音符画像の表示位置とこれに続く音符画像の表示位置との前記スクロール方向における差分とに基づいて前記スクロール手段にてスクロールさせる速度を変更するスクロール速度変更機能と、を実現させるためのプログラムを記録している。
【0013】
本発明では、楽譜上に配置される音符(或いは休符)毎に、その音符の種類に基づいて、その音符、及びそれから次の音符(休符、或いは小節線などの場合もある)の直前までの部分を消去していくスクロールに要する時間を決定し、その決定した時間で対応する部分を消去していくスクロールを行う。
【0014】
上記のような方法でスクロールを行う場合、音符(或いは休符)の種類が同じであれば、その音符の直前から次の音符(休符、或いは小節線などの場合もある)の直前までの間隔が異なっていても、その間隔部分を消去していくスクロールに要する時間は一定となる。この結果、楽譜のスペーシングに係わらず、それが表す演奏内容に沿った形でのスクロール表示が実現されることになる。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態による楽譜表示装置を搭載した電子楽器の回路ブロック図である。
【0016】
図1に示すように、その電子楽器は、楽器全体の制御を実行するCPU201と、そのCPU201が実行するプログラムや各種制御用データ、及び楽譜表示用データなどを格納したROM102と、そのCPU101がワーク用に使用するRAM103と、多数の鍵を備えた鍵盤104と、楽譜の表示、或いはその終了をユーザが指示するためのスイッチ(SW)105と、CPU101の指示に従って楽音を放音するサウンドシステム106と、楽譜を表示するLCD107と、そのLCD107に表示すべき内容を表示させるLCDコントローラ(LCDC)108と、を備えて構成されている。
【0017】
上記サウンドシステム106は、例えばCPU101が発音を指示した楽音の波形データを生成する音源、その音源が出力する波形データをD/A変換するD/Aコンバータ、そのコンバータが出力するアナログのオーディオ信号の増幅を行うアンプ、及びそのアンプが出力するオーディオ信号を音声に変換するスピーカを備えたものである。
【0018】
上記スイッチ105は、その状態を検出する検出回路を合わせて表したものである。そのスイッチ105以外にもユーザの操作の対象となるものは存在するが、ここでは、説明上、便宜的にそれらについては言及しないことにする。なお、それ以外のスイッチとしては、例えばテンポを変更するためのものや表示する楽譜(曲)の種類を選択するためのもの、音色を選択するためのもの、及びテンキーなどがある。
【0019】
以上の構成において動作を説明する。
CPU101は、電源がオンされると、ROM102に格納されたプログラムを読み出して実行することにより、楽器全体の制御を開始する。その制御は、ユーザの鍵盤104、或いはスイッチ105への操作に対応する形で行う。
【0020】
上記鍵盤104は、例えば各鍵の走査を行うことで状態の変化した鍵、及びその変化の内容(押鍵、或いは離鍵)を特定し、それらを表す情報(以降、操作情報と呼ぶ)を生成してCPU101に送出する。他方のスイッチ105でも同様に、その検出回路はスイッチ105の走査を行うことでそれの状態変化(例えば押下)の有無を検出し、状態変化を検出すればそれを表す情報(以降、同様に走査情報と呼ぶ)を生成してそれをCPU101に送出する。CPU101は、鍵盤104、及びスイッチ105からそれぞれ送出される操作情報を解析することで、ユーザの指示内容を認識し、その認識結果に応じた処理を行う。それにより、楽器をユーザの指示に応じて動作させる。なお、CPU101は、鍵盤104から操作情報を受け取ると、その内容に応じて、楽音の発音開始、或いは消音を指示するコマンドを生成してそれをサウンドシステム106に送出する。この結果、ユーザの鍵盤104への操作に応じて楽音がリアルタイムで発音される。
【0021】
一方、CPU101は、制御の開始時に、ROM102から表示の対象となる楽譜表示用データを読み出してRAM103に格納し、それを用いてビットマップの画像データを生成し、それをRAM103内に確保した領域に書き込む。それにより、LCD107に楽譜を表示させるうえでの準備を行う。
【0022】
LCDC108は、それが備えたVRAMに書き込まれた画像データに従ってLCD107を駆動することにより、その画像データをLCD107に表示させる。このことから、楽譜の表示は、CPU101が、その画像データをLCDC108の備えたVRAMに書き込むことで実現される。
【0023】
図2及び図3は、RAM103に格納されたデータの内容を説明する図である。楽譜の表示に係わるデータに着目して、RAM103内に割り当てられた領域(エリア)に格納されるデータの種類、及びその構成を表したものである。
図2或いは図3に示すように、楽譜の表示に係わるデータとして、バックグランド(BG)画面表示用のデータ(以降、BG画面データと呼ぶ)が格納されるエリア(以降、BG画面エリアと呼ぶ)201、五線譜上に配置すべき音符や変化記号等を配置するためのデータ(以降、音符データと呼ぶ)が格納されるエリア(以降、音符エリアと呼ぶ)202、LCD107に表示させる画像データが格納されるLCD VRAMエリア203、及び、そのエリア203に格納すべき画像データを生成するために用いるワーク用エリアであるVRAM1エリア204及びVRAM2エリア205がRAM103内に確保されている。
【0024】
上記BG画面データは、五線譜や音部記号、拍子記号、調記号(調号)、及び五線譜を区切る小節線などのシンボル毎に、その画像データ、及びそれの配置を指定するX、Yの各座標値を持つデータである。そのシンボルとして、図4に示すマーカー401、及び402が含まれている。シンボルのなかで、例えば五線譜の画像データはその形状を表すデータであり、他のシンボルのはビットマップの画像データである。
【0025】
一方、音符データも、五線譜上に配置すべき音符や変化記号などのシンボル毎に、そのビットマップの画像データ、及びそれの配置を指定するX、Yの各座標値を持つデータである。なお、図3中の「(連)」は、それが連桁、即ち符鉤が隣の音符の符鉤とつながった音符であることを表している(図4、或いは図5参照)。音符の画像データは、符頭の左端のXY座標値が、配置を指定するXY座標値とそれぞれ一致するように配置されるようになっている。
【0026】
CPU101は、楽譜を表示させるためのビットマップの画像データを、上記BG画面データ、及び音符データを用いて作成する。しかし、図4に示すように、LCD107に一度に表示できる楽譜はその一部だけである。このことから、その作成は、楽譜のなかで画像データを作成するX座標上の範囲を決定し、その決定した範囲内に画像データの一部でも配置されるシンボルをX座標値、及びその画像データから特定し、その特定したシンボルの画像データをXY座標値に従って配置していくことで作成する。なお、そのようにしてBG画面データ、及び音符データから作成した楽譜の画像データについては、以降、楽譜データと呼ぶことにする。
【0027】
図5は、楽譜の表示方法を説明する図である。ここで、上述したようにして作成される楽譜データをLCD107に表示させる方法について、図5を参照して詳細に説明する。
CPU101は、2つの範囲を決定し、範囲別に楽譜データを作成して(楽譜データ全体から一部を切り出すことに対応する)、一方をVRAM1エリア204に、他方をVRAM2エリア205に格納する。電源がオンされたときには、楽譜の先頭部分の楽譜データはVRAM1エリア204に格納し、それに続く部分の楽譜データはVRAM2エリア205に格納する。
【0028】
VRAM1エリア204に格納した楽譜データのLCD107への表示は、ユーザがスイッチ105を操作するのを待って行う。その表示は、VRAM1エリア204に格納された楽譜データ中の先頭部分を切り出してLCDC108のVRAMに書き込むことにより実現される。
【0029】
LCD107に表示させた楽譜データは、予め定めたタイミングでスクロールを開始させる。そのスクロールは、最初は、VRAM1エリア204に格納された楽譜データ中から切り出す範囲を順次、変更しながら、それから切り出した楽譜データをLCDC108のVRAMに書き込むことで行う。
【0030】
VRAM1エリア204を対象とした範囲を変更しながらの楽譜データの切り出しが終了すると、その対象をVRAM2エリア205に変更して、範囲を変更しながらの切り出しを同様に行う。それまで対象としていたVRAM1エリア204には、VRAM2エリア205に格納された楽譜データに続く部分の楽譜データを作成して格納する。そのようにして、切り出しの対象とするエリアの変更や、それまで切り出しの対象としていたエリアへの新たな楽譜データの格納を行いつつ、楽譜のスクロール表示を実現させる。そのスクロールは、ユーザが再度スイッチ105を操作してスクロールの終了を指示するか、或いは楽譜を全てスクロールするまで行う。
【0031】
楽譜の先頭には、音部記号や拍子記号が少なくとも存在する。それらの記号は楽譜が表す演奏内容を把握するうえで必要な情報である。このことから、本実施の形態では、それらは常に表示させるようにしている。それに合わせて、常に表示させている部分とそうでない部分(スクロールを行う部分)との区別をユーザが容易に行えるようにするために、図4に示すマーカー401を表示させている。それにより、スクロールは、マーカー401の左側(音部記号が存在しない側)に表示されている楽譜のみを対象に行っている。それ以外には、押鍵すべき鍵の音高をより容易に把握できるように、次に処理すべき音符の符頭の近傍にマーカー402を表示させている。なお、マーカー401は表示位置を移動させないことから、以降、便宜的に固定マーカー401と呼ぶことにする。
【0032】
本実施の形態では、ノンリニアスペーシングで作成された楽譜を表示するようにしている。そのノンリニアスペーシングで作成された楽譜では、先行する音符(或いは休符)の直前からそれに続く音符(休符、或いは小節線の場合もある)の直前までの音符間隔(表示間隔)がその先行する音符の音符長に正比例していない。このことから、スクロールの速度は一定とせず、先行する音符の種類、その音符間隔(先行する音符の直前から次の音符の直前までのX座標上の間隔)に応じて個々に決定している。例えば同じ音符間隔であっても、先行する音符が4分音符であれば速度は8分音符のときの1/2倍とし、その音符が16分音符であれば8分音符のときの2倍としている。
【0033】
そのようにして、演奏上、隣り合う音符間を単位にスクロールの速度を決定し、その決定した速度でスクロールを行うことにより、音符間隔部分を消去するスクロールに要する時間は先行する音符の種類に対応する長さとしている。言い換えれば、その時間は先行する音符が表す音の長さ(音符長)に正比例させている。このため、スペーシングに係わらず、楽譜が表す演奏内容に沿った形でのスクロール表示が実現されることになる。それにより、ユーザは正確な演奏の進行を視認することができる。
【0034】
次に、図6〜図13に示す各種フローチャートを参照して、上記CPU101の動作について詳細に説明する。
図6、及び図7は、全体処理のフローチャートである。楽譜の表示に注目して、それに特に係わる処理を抜粋してその流れを表したものである。始めに、図6及び図7を参照して、全体処理について詳細に説明する。なお、その全体処理は、CPU101が、RAM103をワーク用に使用しながら、ROM102から読み出したプログラムを実行することにより実現される。
【0035】
先ず、ステップ601では、イニシャライズを行う。それにより、サウンドシステム106を含めて予め定められた状態に設定した後はステップ602に移行して、LCD107に楽譜を表示させるうえでの前処理を実行する。その実行が終了すると、ステップ603に移行する。その前処理を実行することで、新たに作成すべき楽譜データのX座標上の範囲を示す値が変数XA、及びXBにそれぞれ代入される。
【0036】
ステップ603では、スイッチ105が操作されたか否か判定する。そのスイッチ105の検出回路からユーザが操作を行ったことを表す操作情報を受け取った場合、判定はYESとなり、ステップ604で変数STFの値を反転、即ちその値が1であれば0を代入し、その値が0であれば1を代入した後、ステップ605に移行する。そうでない場合には、判定はNOとなって後述するステップ607に移行する。
【0037】
ステップ605では、変数STFの値が1か否か判定する。ユーザが楽譜の表示を指示、言い換えれば、LCD107に楽譜が表示されていない状態でユーザがスイッチ105を操作した場合、変数STFにはステップ604の実行時に楽譜表示中を表す値の1が代入されることから、判定はYESとなり、ステップ606に移行して、楽譜の表示を開始するための開始処理を実行した後、ステップ607に移行する。そうでない場合には、判定はNOとなってステップ610に移行する。
【0038】
ステップ607では、変数STFの値が1か否か判定する。現在、楽譜を表示中であった場合、判定はYESとなってステップ608に移行する。そうでない場合には、判定はNOとなって上記ステップ603に戻る。
ステップ608では、変数MFの値が1か否か判定する。その変数MFは、楽譜データを切り出す対象となるエリアを変更するタイミングを管理するために用意した変数であり、1はそのタイミングであることを表し、0はそのタイミングでないことを表している。このことから、切り出す対象となるエリアを変更するタイミングであった場合、判定はYESとなってステップ609に移行する。そうでない場合には、判定はNOとなって上記ステップ603に戻る。
【0039】
ステップ609では、RAM103のBG画面エリア201、及び音符エリア202にそれぞれ格納されているデータのなかで、X座標値が変数XAの値に1を加算した値から変数XBの値までの範囲に画像データの一部でも配置されるシンボルの画像データをそのXY座標値に従って配置することにより、新たに楽譜データを作成する。その作成を行った後には図7のステップ612に移行する。なお、上記変数MF、XA、及びXBは、後述するタイマインタラプト処理の実行時に値の書き換えの対象となる変数であり、その実行時に変数MFに1を代入した場合には、変数XA、及びXBの値も更新するようになっている。
【0040】
図7のステップ612では、変数SELの値が1か否か判定する。その変数SELはLCD107に表示させる楽譜データの切り出し先を管理するために用意した変数であり、1はVRAM1エリア204、2はVRAM2エリア205をそれぞれ表している。このことから、楽譜データの切り出し先をVRAM1エリア204に変更した場合、判定はYESとなり、ステップ613に移行して、ステップ609で作成した楽譜データをVRAM2エリア205に書き込み、更にステップ614で変数MFに0を代入した後、図6のステップ603に戻る。そうでない場合には、判定はNOとなってステップ615に移行し、ステップ609で作成した楽譜データをVRAM1エリア204に書き込んだ後、ステップ614に移行する。
【0041】
一方、図6のステップ605の判定がNOとなって移行するステップ610では、後述するタイマインタラプト処理の実行を禁止させる。続くステップ611では、VRAM1エリア204、VRAM2エリア205、及びLCD VRAMエリア203に格納されたデータのクリアを行う。その後は上記ステップ602に戻る。なお、例えばタイマインタラプト処理の実行の禁止は、特には図示しない割り込みフラグレジスタの対応するビットの値を0にすることで行われる。その禁止解除は、そのビットの値を1にすることで行われる。
【0042】
次に、上記全体処理内で実行されるサブルーチン処理について説明する。
図8及び図9は、上記ステップ602として実行される前処理のフローチャートである。全体処理内で実行されるサブルーチン処理については、始めに図8及び図9を参照して、その前処理について詳細に説明する。
【0043】
先ず、ステップ801では、ROM102から表示の対象とする楽譜のBG画面データ、及び音符データを読み出してRAM103に確保したBG画面エリア201、及び音符エリア202にそれぞれ書き込んだ後、BG画面エリア201に書き込んだBG画面データのなかで、配置を指定するX座標値が固定マーカー401のX座標値以下となっているシンボルの画像データを配置することにより、楽譜の先頭から固定マーカー401(図4参照)までの部分の画像データを生成する。それ以外には、そのようにして生成した画像データの横方向(X軸上)のドット数をカウントして、そのカウント値を変数XHに代入する。
【0044】
ステップ801に続くステップ802では、生成したX座標上の位置が0〜XHまでの画像データをLCD VRAMエリア203に先頭から書き込むとともに、それをLCDC108のVRAMに先頭から書き込む。それにより、ステップ801で生成した画像データを、LCD107のドットのX座標上の位置が0〜XHまでの表示エリアに表示させる。その後はステップ803に移行する。なお、ステップ801で生成した画像データはユーザがスイッチ105を操作する前に表示させるようになっているが、ユーザがスイッチ105を操作してから表示させるようにしても良い。
【0045】
ステップ803では、変数XAに変数XHの値を代入するとともに、変数SELに1を代入する。次に移行するステップ804では、変数XBに、変数XAの値に640を加算した値を代入する。なお、変数XAに640を加算した値を変数XBに代入するのは、楽譜の固定マーカー401以降の部分は、一度に表示できるX座標上のドット数を最大で320ドットとしているためである。
【0046】
上記変数XBへの値の代入が終了すると、ステップ805に移行する。そのステップ805では、RAM103のBG画面エリア201、及び音符エリア202にそれぞれ格納されているデータのなかで、X座標値が変数XAの値に1を加算した値から変数XBの値までの範囲に画像データの一部でも配置されるシンボルの画像データをそのXY座標値に従って配置することにより、新たに楽譜データを作成する。続くステップ806では、作成した楽譜データをVRAM1エリア204に書き込む。その次に移行するステップ807では、変数XAに、それまでの値に320を加算した値を新たに代入する。
【0047】
その変数XAへの値の代入が終了した後は、ステップ808〜図9のステップ810を上記ステップステップ804〜806と同様に実行することにより、ステップ805で作成した楽譜データに続く部分の楽譜データを作成してVRAM2エリア205に書き込む。その書き込みを行うと、ステップ811に移行して、タイマインタラプト処理の実行間隔(周期)を指定する値を算出し、その算出した値を変数Tに代入する。一連の処理はその後に終了する。
【0048】
上記実行間隔を示す値は、例えば、固定マーカー401のX座標値から最初の小節線のX座標値までの間隔(ドット数)、拍子記号が表す拍子、及びテンポ値を用いて算出する。具体的には、その間隔が200ドット、拍子が4/4拍子、テンポ値が120であれば、4分音符の音長は0.5秒、1小節の長さは2秒となり、その2秒間で200ドット、スクロールさせれば良いことから、0.01(=2/200)を実行間隔として、それに対応する値を変数Tに代入する。その変数Tに代入した値は、CPU101に搭載された割り込み信号発生用のタイマにセットする。それにより、タイマインタラプト処理は、LCD107に表示させた楽譜を1ドット、右から左にスクロールさせるべきタイミングで実行するようにしている。
【0049】
図10は、図6及び図7に示す全体処理内でステップ606として実行される開始処理のフローチャートである。次に、図10を参照して、開始処理について詳細に説明する。この開始処理を実行することにより、固定マーカー401に続く部分の楽譜が図4に示すようにLCD107に表示される。
【0050】
先ず、ステップ1001では、VRAM1エリア204に格納された楽譜データのX座標上の先頭から320ドット分だけ切り出し、LCD VRAMエリア203のX座標上の位置が変数XHの値に1を加算した値以降のエリアに格納するとともに、そのVRAMエリア203に格納したデータをLCDC108のVRAMに先頭から書き込む。LCD VRAMエリア203には、図8及び図9に示す前処理の実行時に、その先頭から楽譜の先頭部分(音部記号や拍子記号、調号、及びマーカー401及び402を含む部分)の楽譜データが書き込まれている。X座標上でのその範囲は、0〜XHである。このことから、LCD VRAMエリア203に格納されたデータをLCDC108のVRAMに先頭から書き込むことにより、LCD107には固定マーカー401前後の部分を含む楽譜が表示されることになる。
【0051】
ステップ1001に続くステップ1002では、変数X、EF、及びYEFにそれぞれ0を代入する。その次に実行するステップ1003では、タイマインタラプト処理の実行禁止の解除を行う。その解除を行った後は、ステップ1004に移行する。なお、変数Xは、VRAM1エリア204、或いはVRAM2エリア204に格納された楽譜データのなかから切り出すべき部分を管理するために用意した変数である。変数YEFは新たに楽譜データを作成する必要性の有無を判定するために用意した変数であり、変数EFは、楽譜データを切り出すエリアを変更する必要性の有無を判定するために用意した変数である。
【0052】
ステップ1004では、変数Nに1を代入する。その代入を行った後はステップ1005に移行して、マーカー402を配置するY座標値を変数Nの値で指定される音符のY座標値に変更し、その変更に合わせてLCD VRAM203に格納された楽譜データ中におけるマーカー402の画像データの位置を変更し、その変更を行った後の楽譜データをLCDC108のVRAMに書き込む。その書き込みは、例えばX座標上の位置が0〜XHの範囲の楽譜データのみを対象に行う。その書き込みを行った後、一連の処理を終了する。
【0053】
上記開始処理を実行することにより、LCD107に図4に示すように楽譜が表示される。以降は、その後のスクロール表示を実現させるためのタイマインタラプト処理について、図11〜図13に示すそのフローチャートを参照して詳細に説明する。なお、上述したように、そのタイマインタラプト処理は、変数Tの値に対応する時間間隔で発生する割り込み信号によって実行される。
【0054】
先ず、ステップ1101では、変数EFの値が0か否か判定する。変数EFには、楽譜データを切り出すエリアを変更する必要が無くなったときに、言い換えれば、1エリアに格納された楽譜データのスクロール表示によって全てのスクロール表示が終了する状況となったときに、1が代入される。このことから、その状況ではない場合、判定はYESとなってステップ1102に移行する。そうでない場合には、判定はNOとなって図13のステップ1127に移行する。
【0055】
ステップ1102では、変数Xの値が320以上か否か判定する。VRAM1エリア204及びVRAM2エリア205に格納する楽譜データはX座標上で640ドット分であり、固定マーカー401以降の一度に表示する範囲はX座標上で320ドット分である。変数Xの値はエリア204或いは205に格納された楽譜データから切り出す部分のX座標上の先頭位置を示している。このことから、変数SELの値で指定されるエリアに格納された楽譜データのスクロール表示が終了した場合、判定はYESとなってステップ1103に移行する。そうでない場合には、判定はNOとなって図12のステップ1114に移行する。
【0056】
ステップ1103では、変数YEFの値が1か否か判定する。その変数YEFには、新たに楽譜データを作成する必要が無くなったときに、言い換えれば、2つのエリア204及び205に格納された楽譜データのスクロール表示によって全てのスクロール表示が終了する状況となったときに、1が代入される。このことから、その状況となった場合、判定はYESとなり、ステップ1104で変数EFに1、更にステップ1105で変数YEFに0を代入した後、ステップ1106に移行する。そうでない場合には、判定はNOとなってそのステップ1106に移行する。
【0057】
ステップ1106では、変数SELの値が1か否か判定する。変数SELの値が1、即ちスクロール表示が終了した楽譜データを格納していたのがVRAM1エリア204であった場合、判定はYESとなり、ステップ1107で変数SELに2を代入した後、ステップ1109に移行する。そうでない場合には、判定はNOとなり、ステップ1108で変数SELに1を代入した後、そのステップ1109に移行する。
【0058】
ステップ1109では、変数Xに0を代入するとともに、変数MFに1を代入する。続くステップ1110では、変数XAに、それまでの値に320を加算した値を代入する。その次に実行するステップ1111では、変数XBに、変数XAの値に640を加算した値を代入する。その代入を行った後はステップ1112に移行する。上記変数MFに1を代入することにより、全体処理の図6に示すステップ609が実行される。その結果、変数XA及びXBの値で指定される範囲の楽譜データが新たに生成され、その楽譜データが、変数SELの値が1であればVRAM2エリア205に、その値が2であればVRAM1エリア204に書き込まれることになる。
【0059】
ステップ1112では、変数XBの値が、BG画面データ(図2参照)によって表示されるシンボルのなかでX座標値の最大値(通常、最後の小節線のX座標値)以上か否か判定する。BG画面データ、及び音符データから新たに作成する楽譜データが楽譜の最後の部分である場合、判定はYESとなり、ステップ1113で変数YEFに1を代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
【0060】
このようにして、上記ステップ1103〜1113では、スクロール表示のために楽譜データを切り出すエリアの変更やその変更に合わせた準備を行うための処理を実行するようになっている。
上記ステップ1102の判定がNOとなって移行する図12のステップ1114では、変数Xの値をインクリメントする。続くステップ1115では、変数SELの値が1か否か判定する。スクロール表示のために楽譜データを切り出しているエリアがVRAM1エリア204であった場合、判定はYESとなり、ステップ1116に移行して、VRAM1エリア204に格納された楽譜データから、X座標上の位置がX(変数Xの値)〜X+320の範囲内となっている部分を切り出し、それをLCD VRAMエリア203のX座標上の位置がXH(変数XHの値)+1〜XH+321であるエリアに書き込むとともに、それによる更新に合わせて、LCDC108のVRAMに格納された楽譜データの更新を行った後、ステップ1118に移行する。そうでない場合には、判定はNOとなってステップ1117に移行し、VRAM2エリア205を対象に同様の処理を実行した後、そのステップ1118に移行する。
【0061】
上記ステップ1116、或いは1117の処理を実行することにより、固定マーカー401に続く部分は全体的に1ドット、右から左に移動する。その移動に伴い、固定マーカー401の直後に位置する1ドットの列の表示内容は消去され、最も右側の1ドットの列には、それまで表示されていた最後の部分に続く内容が新たに表示される。最後の部分に続く内容がなければ、単に固定マーカー401以降の部分の表示内容が1ドットの列単位で消去されていくことになる。
【0062】
ステップ1118では、音符データ(図3参照)のなかで変数Nの値によって指定される音符(休符を含む)のX座標値が、変数XAの値から320を引き、その結果に変数Xの値を加算した値(=XA−320+X)と等しいか否か判定する。変数Nの値で指定される音符が図4に示す4分音符のように固定マーカー401の直後に表示されているような場合、判定はYESとなってステップ1118に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
【0063】
ステップ1119では、音符データを参照することにより、変数Nで指定される音符(或いは休符)の音符長を抽出する。続くステップ1120では、変数Nの値で指定される音符(或いは休符)と、変数Nの値に1を加算した値で指定される音符との間のX座標上の差分(ドット数)S(=変数Nの値で指定される音符のX座標値−変数Nの値に1を加算した値で指定される音符のX座標値)を検出する。それらの音符の間に小節線が存在している場合は、その小節線までの差分Sを検出する。そのような差分Sを検出した後はステップ1121に移行する。なお、上記音符長の抽出は、例えば音符(或いは休符)の形状から種類を特定することで行っても良いが、その種類を示すデータを音符データ中に予め用意しておいても良い。
【0064】
ステップ1121では、検出した差分Sに基づきタイマインタラプト処理の周期(実行間隔)を算出し変数Tに代入する。その算出は、例えば60をテンポの値に2を掛けた値で割り、その割った値を差分Sで更に割ることで行う(=60/(テンポの値×2)/S)。それにより、変数Nの値で指定される音符が8分音符であった場合に、その音符長で差分Sのスクロールを行う際の周期を算出する。
【0065】
ステップ1121に続くステップ1122では、ステップ1119で抽出した音符長、即ち変数Nの値で指定される音符の種類を判定する。その音符が8分音符であった場合、その旨を判定してステップ1125に移行する。その音符が4分音符であった場合には、その旨を判定してステップ1123に移行し、変数Tの値をそれまでの2倍に変更するとともに、その変更後の値を割り込み信号発生用のタイマにセットした後、ステップ1125に移行する。その音符が16分音符であった場合には、その旨を判定してステップ1124に移行し、変数Tの値をそれまでの1/2倍に変更するとともに、その変更後の値を割り込み信号発生用のタイマにセットした後、ステップ1125に移行する。
【0066】
上述したようにして算出した変数Tの値をタイマにセットすることにより、スクロールは変数Nの値で指定される音符の種類、及び差分Sに応じた速度で行われることになる。その結果、LCD107に表示された楽譜が表す演奏内容に沿った形でのスクロール表示が実現される。
【0067】
ステップ1125では、マーカー402のY座標上の表示位置を変数Nの値で指定される音符のY座標値に変更し、その変更に合わせて、LCD VRAM203、及びLCDC108のVRAMにそれぞれ格納された楽譜データのなかでX座標上の位置が0〜XH(変数XHの値)となっている部分の書き換えを行う。そのようにして、図4に示すように、マーカー402のY座標上の表示位置を固定マーカー401の直後に位置する音符の符頭に合わせると、ステップ1126に移行して、変数Nの値のインクリメントを行う。一連の処理はそのインクリメントを行った後に終了する。
【0068】
一方、図11に示すステップ1101の判定がNOとなって移行する図13のステップ1127では、変数Xの値が640以上か否か判定する。上記したように、エリア204、205にはX座標上で640ドット分の楽譜データを書き込むようになっている。変数Xの値は楽譜データを切り出すX座標上の先頭位置を指定する。変数EFに代入された値は、変数SELの値が指定するエリアに格納された楽譜データがスクロール表示すべき最後のデータであることを表している。このことから、楽譜のスクロール表示が全て終了した場合、判定はYESとなり、ステップ1128で変数STFに0を代入し、更にステップ1129で変数EFに0を代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、図15のステップ1114に移行して、それ以降の処理を同様に実行する。
【0069】
なお、本実施の形態では、音符間隔、即ち演奏上、先行する音符(或いは休符)の直前からそれに続く次の音符(休符、或いは小節線の可能性もある)の直前までの間の部分を消去するスクロールは同じ速度で行うようになっているが、その速度は変動させても良い。例えば音符(或いは休符)を消去するスクロールは比較的に遅い速度で行い、それを消去した後は比較的に速い速度でスクロールを行うようにしても良い。その音符間隔部分のスクロールによる消去に要する時間(本実施の形態では、先行する音符(或いは休符)の種類、及びテンポ値から算出)を変化させない範囲内で、その部分を消去していく際のスクロールの速度は任意に変動させることができる。
【0070】
本発明を適用する楽譜表示装置は、電子楽器やシーケンサなどの楽音発生装置に搭載される、或いは接続して用いられるものに限定されるものではない。表示装置を備えたものに限定されるものでもない。本発明は、そのような形態に係わらず、幅広く適用できるものである。
【0071】
楽譜の表示については、本実施の形態ではシンボル毎にその画像データを配置していくことで行えるようになっているが、楽譜の表示を行うためのデータはそのようなものに限定されるものではない。別な構成、或いは内容のものであっても良い。五線譜など、必ず表示されるシンボルについては予め印刷するなどして、それの表示用のデータは省略するようにしても良い。
【0072】
上述したような楽譜表示装置、或いはその変形例の動作を実現させるようなプログラムは、ROM、CD−ROM、フロッピーディスク、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザはプログラムを取得して楽譜表示装置、或いはコンピュータなどのデータ処理装置にロードすることにより、それをロードした装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【0073】
【発明の効果】
以上、説明したように本発明は、楽譜上に配置される音符(或いは休符)毎に、その音符の種類に基づいて、その音符、及びそれから次の音符(休符、或いは小節線などの場合もある)の直前までの部分を消去していくスクロールに要する時間を決定し、その決定した時間で対応する部分を消去していくスクロールを行う。このため、楽譜のスペーシングに係わらず、それが表す演奏内容に沿った形でスクロール表示を行うことができる。
【図面の簡単な説明】
【図1】本実施の形態による楽譜表示装置を搭載した電子楽器の回路ブロック図である。
【図2】RAMに格納されたデータの内容を説明する図である(その1)。
【図3】RAMに格納されたデータの内容を説明する図である(その2)。
【図4】LCDに表示された楽譜例を示す図である。
【図5】楽譜の表示方法を説明する図である。
【図6】全体処理のフローチャートである。
【図7】全体処理のフローチャートである(続き)。
【図8】前処理のフローチャートである。
【図9】前処理のフローチャートである(続き)。
【図10】開始処理のフローチャートである。
【図11】タイマインタラプト処理のフローチャートである。
【図12】タイマインタラプト処理のフローチャートである(続き1)。
【図13】タイマインタラプト処理のフローチャートである(続き2)。
【符号の説明】
101 CPU
102 ROM
103 RAM
105 スイッチ
107 LCD
108 LCDC
201 BG画面エリア
202 音符エリア
203 LCD VRAMエリア
204 VRAM1エリア
205 VRAM2エリア
401、402 マーカー
Claims (3)
- 先行する音符の直前からそれに続く音符の直前までの音符の表示間隔がその先行する音符の音符長に正比例しておらず、かつ少なくとも一部の音符の表示間隔が等間隔でない楽譜を表示するために、夫々音符画像及び座標からなる複数の音符データを記憶する音符データ記憶手段と、
音符データ記憶手段に記憶された複数の音符データの少なくとも一部を読み出し、当該音符データに含まれる音符画像を対応する座標にて指定される表示手段の表示画面上の位置に表示させる表示制御手段と、
この表示制御手段にて前記表示手段に表示された音符画像の表示位置を設定された速度で所定方向にスクロールさせるスクロール手段と、
このスクロール手段によりスクロールされた音符画像の表示位置を表わす前記スクロール方向に対応する座標が、前記表示手段の表示画面上に設定された位置の座標に到達したか否かを判別する判別手段と、
この判別手段により到達したと判別された場合に、当該到達した音符画像が表わす音符の音符長と、前記到達した音符画像の表示位置とこれに続く音符画像の表示位置との前記スクロール方向における差分とに基づいて前記スクロール手段にてスクロールさせる速度を変更するスクロール速度変更手段と、
を具備することを特徴とする楽譜表示装置。 - 前記スクロール速度変更手段は、前記到達した音符画像の表示位置とこれに続く音符画像の表示位置との前記スクロール方向における差分に基づいてスクロールさせる速度を算出し、前記到達した音符画像が表わす音符の音符長の長さに応じて前記算出されたスクロール速度を増減させる、ことを特徴とする請求項1記載の楽譜表示装置。
- コンピューターに、
先行する音符の直前からそれに続く音符の直前までの音符の表示間隔がその先行する音符の音符長に正比例しておらず、かつ少なくとも一部の音符の表示間隔が等間隔でない楽譜を表示するための夫々音符画像及び座標からなる複数の音符データを記憶する音符データ記憶手段から複数の音符データの少なくとも一部を読み出し、当該音符データに含まれる音符画像を対応する座標にて指定される表示手段の表示画面上の位置に表示させる表示制御機能と、
前記表示手段に表示された音符画像の表示位置を設定された速度で所定方向にスクロールさせるスクロール機能と、
このスクロールされた音符画像の表示位置を表わす前記スクロール方向に対応する座標が、前記表示手段の表示画面上に設定された位置の座標に到達したか否かを判別する判別機能と、
この判別機能により到達したと判別された場合に、当該到達した音符画像が表わす音符の音符長と、前記到達した音符画像の表示位置とこれに続く音符画像の表示位置との前記スクロール方向における差分とに基づいて前記スクロール手段にてスクロールさせる速度を変更するスクロール速度変更機能と、
を実現させるためのプログラムを記録したコンピューター読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000370079A JP4016594B2 (ja) | 2000-12-05 | 2000-12-05 | 楽譜表示装置、及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000370079A JP4016594B2 (ja) | 2000-12-05 | 2000-12-05 | 楽譜表示装置、及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002169540A JP2002169540A (ja) | 2002-06-14 |
JP4016594B2 true JP4016594B2 (ja) | 2007-12-05 |
Family
ID=18840017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000370079A Expired - Fee Related JP4016594B2 (ja) | 2000-12-05 | 2000-12-05 | 楽譜表示装置、及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4016594B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014058845A1 (en) * | 2012-10-08 | 2014-04-17 | The Johns Hopkins University | Method and device for training a user to sight read music |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4226313B2 (ja) * | 2002-12-19 | 2009-02-18 | 株式会社ソニー・コンピュータエンタテインメント | 楽音再生装置及び楽音再生プログラム |
JP2007086571A (ja) * | 2005-09-26 | 2007-04-05 | Yamaha Corp | 曲情報表示装置及びプログラム |
EP2919228B1 (en) * | 2014-03-12 | 2016-10-19 | NewMusicNow, S.L. | Method, device and computer program for scrolling a musical score. |
-
2000
- 2000-12-05 JP JP2000370079A patent/JP4016594B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014058845A1 (en) * | 2012-10-08 | 2014-04-17 | The Johns Hopkins University | Method and device for training a user to sight read music |
US9767704B2 (en) | 2012-10-08 | 2017-09-19 | The Johns Hopkins University | Method and device for training a user to sight read music |
Also Published As
Publication number | Publication date |
---|---|
JP2002169540A (ja) | 2002-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6545208B2 (en) | Apparatus and method for controlling display of music score | |
EP2498248B1 (en) | Musical-score information generating apparatus, music-tone generation controlling apparatus, musical-score information generating method, and music-tone generation controlling method | |
US7166792B2 (en) | Storage medium containing musical score displaying data, musical score display apparatus and musical score displaying program | |
US6078004A (en) | Electronic musical instrument with graphic representation of note timings | |
JPH0784574A (ja) | 電子楽器 | |
JP4016594B2 (ja) | 楽譜表示装置、及び記録媒体 | |
US7895517B2 (en) | Electronic musical apparatus for displaying character | |
JP3980888B2 (ja) | 電子楽器 | |
JP2005249844A (ja) | 演奏指示装置および演奏指示プログラム | |
JP3267777B2 (ja) | 電子楽器 | |
US6534699B2 (en) | Instruction input device for electronic musical instrument | |
JP3463515B2 (ja) | 楽譜表示方法、楽譜表示装置、及びプログラムを記録した記録媒体 | |
JP3998461B2 (ja) | 演奏練習装置、演奏練習方法、プログラム及び記録媒体 | |
JP2000338965A (ja) | Midiデータの表示方法および表示装置ならびにmidiデータを表示した楽譜 | |
JP3717651B2 (ja) | 歌詞表示装置、同装置に適用されるコンピュータ読み取り可能な記録媒体及び歌詞表示方法 | |
JPH1185145A (ja) | 譜面作成装置 | |
JP3482355B2 (ja) | 演奏再開制御に特徴を有するカラオケ装置 | |
JP4509298B2 (ja) | 楽譜表示装置 | |
JP4453233B2 (ja) | 楽譜表示制御装置及び楽譜表示処理のプログラム | |
JP7107720B2 (ja) | 運指表示プログラム | |
JP4093001B2 (ja) | 楽譜表示データを記憶した記憶媒体、その楽譜表示データを用いた楽譜表示装置及びプログラム | |
JP2570214B2 (ja) | 演奏情報入力装置 | |
JP4093000B2 (ja) | 楽譜表示データを記憶した記憶媒体、その楽譜表示データを用いた楽譜表示装置及びプログラム | |
JP3812519B2 (ja) | 楽譜表示データを記憶した記憶媒体、その楽譜表示データを用いた楽譜表示装置及びプログラム | |
JP7092537B2 (ja) | 運指表示装置及び運指表示プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050822 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070518 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070529 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070618 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070828 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070910 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4016594 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100928 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100928 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110928 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120928 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130928 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |