以下、図面を参照して本発明の実施形態について説明する。
図1は本発明の一実施形態に係る演奏システムの構成を示すブロック図である。
この演奏システムは、PC(パーソナルコンピュータ)10と電子楽器20とで構成される。PC10は、本発明の曲データ表示装置として用いられる。PC10には、主制御部であるCPU11と、このCPU11に接続されるROM12、RAM13、入力部14、表示部15、MIDIインタフェース(I/F)16、発音部17などが設けられている。
CPU11は、ROM12に記憶された各種プログラム12aを起動し、入力部14から入力されるイベントに従って各種処理を実行する。本実施形態において、このCPU11には、本発明の曲データ表示装置を実現するための各種機能が備えられている(図2参照)。
ROM12には、各種プログラム12aの他、後述する演奏指示用の鍵盤の画像データや押鍵マークの画像データなどが記憶されている。上記各種プログラム12aには、本発明の演奏指示制御用のプログラムも含まれる。RAM13には、CPU11の処理に必要な各種データが記憶される(図3参照)。
入力部14は、例えばキーボードやマウスなどの入力デバイスであり、ユーザの入力操作に対応したイベントを発生してCPU11に与える。表示部15は、例えばLCD(Liquid Crystal Display)等のカラー表示可能な表示デバイスからなり、所定サイズの画面を有する。
MIDIインタフェース16は、MIDI(musical instrument digital interface)規格の電子楽器20との間で信号の入出力処理を行う。発音部17は、サウンドシステムの音源を備え、演奏対象として指定された曲データを楽音に変換して再生出力する。
ここで、本実施形態では、電子楽器20としては電子ピアノが用いられる。この電子楽器20は、所定数分の鍵からなる鍵盤21を備える。この鍵盤21の各鍵を押鍵したしたときに信号(ノートオン/オフ信号)がMIDIインタフェース16を介してPC10に入力される。なお、発音部17が電子楽器20側に備えられる構成となっており、押鍵等の情報はMIDIインタフェース16を介してPC10に入力されるが、楽音の再生出力はこの電子楽器20側の発音部17から発音されることとしても良い。
なお、図1の例では、PC10に電子楽器20を接続して演奏する構成を示したが、例えば表示部15の画面に鍵盤の画像(ソフトキーボード)を表示して、入力部14の操作によって演奏するような構成であっても良い。
図2はCPU11の機能構成を示すブロック図である。CPU11には、本発明の曲データ表示装置に関わる機能構成として、曲データ読込み部11a、小節データ管理部11b、ピアノロール表示処理部11c、カーソル表示処理部11dが設けられている。
曲データ読込み部11aは、演奏対象とする曲データを読み込む。この曲データは、例えばPC10のROM12若しくはRAM13に保存されている曲データや、図示しないネットワーク等を介してPC10と接続されたサーバー装置などから読み込むことができる。
小節データ管理部11bは、曲データ読込み部11aによって読み込まれた曲データの小節毎に調を解析し、その解析結果として得られた調のデータを含む小節データを後述するRAM13の所定の領域に記憶して管理する。なお、この調データは、解析によって取得することとせず、あらかじめ曲データに組み込まれているものとしてもよい。
ピアノロール表示処理部(ピアノロール表示手段)11cは、読み込まれたに基づき該曲データを構成する各音を表す示すピアノロール画面を生成して表示部15に表示する。
カーソル表示処理部(カーソル表示手段)11dは、ピアノロール表示処理部11cによって表示されたピアノロール画面上の各位置の音高に対応させた画像を有する鍵盤カーソルを表示すると共に、曲データの再生に同期させて鍵盤カーソルを現在の再生位置と対応する位置に移動させて表示する。
さらに、CPU11には、カーソル表示モードを設定するモード設定部11eが設けられている。上記カーソル表示処理部11dは、このモード設定部11eによって設定されたカーソル表示モードに応じて、曲データの再生時に鍵盤カーソルと対応する位置に曲データの演奏をサポートするための表示処理を施す。具体的には、例えば基準音表示モードが設定された場合に鍵盤カーソルに移動ドの位置を示す基準音マークを表示するなどであるが、その詳細については後述する。
また、CPU11には、鍵盤カーソルの表示に応じて演奏者に押鍵入力させる演奏入力処理部(演奏入力手段)11fが設けられている。上記カーソル表示処理部11dは、鍵盤カーソルに対応する位置に、演奏入力処理部11fにより演奏者が入力した音に応じた入力音を表わす第1のマークと、曲データから得られるお手本の音を表わす第2のマークとを対比させて表示する。
図3はRAM13の構成を示す図である。
RAM13には、演奏対象となる曲データに関する各種データとして、お手本ピアノロールデータ13a、入力ピアノロールデータ13b、一時保存入力ピアノロールデータ13c、小節データ13d、入力音符データ13e、音高パートデータリスト13fが記憶される。これらのデータ13a〜13fの構成について、図4〜図7を参照して説明する。
(ピアノロールデータ)
図4はお手本ピアノロールデータ13aの構成を示す図、図5は入力ピアノロールデータ13bの構成を示す図である。
ピアノロールデータは、楽譜の各音符について、その発音タイミングを時系列に沿った形で表現したデータである。本実施形態では、お手本ピアノロールデータ13aと入力ピアノロールデータ13bがある。お手本ピアノロールデータ13aは、演奏のお手本用のデータである。これに対し、入力ピアノロールデータ13bは、ユーザの押鍵入力を反映させたデータである。どちらも基本的には同じデータ構成であり、音符毎に構成され、「発音時刻」,「発音時間」,「音高」,「推定パート」,「音量」の各データを有しており、また、お手本ピアノロール13aは、さらに「運指」のデータを有している。なお、入力ピアノロールデータ13bには「運指」のデータは無くても良い。
ここで、入力ピアノロールデータにおける「推定パート」とは、右手パートまたは左手パートのいずれであるかと推定されるかを表すデータである。お手本ピアノロールデータ13aでは、曲データによって、音符毎に左右のパートが予め決められている。一方、ユーザによる押鍵入力では、左右どちらで弾いたかは鍵盤側からでは分からない。そこで、ある再生時刻における押鍵入力に対しては、その時刻のお手本ピアノロールデータ13aの音符のパートを参照して、左右どちらのパートかを推定した結果をセットしていくものとする。
なお、入力ピアノロールデータに関しては、ユーザの押鍵入力による音符データを確定するまでの間(ノートオン/オフが確定するまでの間)、一時的に音符データを保存しておくための一時保存入力ピアノロールデータ13cがある。データ構成については入力ピアノロールデータ13bと同様である。入力ピアノロールデータ13bが入力確定後のデータとして用いられるのに対し、一時保存入力ピアノロールデータ13cは入力が確定するまでの一時保存用として用いられる。
(小節データ)
図6は小節データ13dの構成を示す図である。
小節データ13dは、曲データを小節単位で管理しているデータであり、「開始時刻」,「拍分子」,「拍分母」,「調」のデータからなる。「開始時刻」は、当該小節の部分の再生が開始されたときの時刻である。ピアノロールデータは小節単位で呼び出すことができるので、その小節毎の開始時刻がセットされる。また、「調」のデータは、曲データが読み込まれたときに、CPU11(小節データ管理部11b)によって小節毎に解析される。
なお、「拍」のデータについては、予め設定されていても良いし、プログラム的にその都度算出してセットしても良い。この拍データはピアノロールに拍を反映させるために用いる。
(入力音符データ)
図7は入力音符データ13eの構成を示す図である。
入力音符データ13eは、ユーザの押鍵入力によって生成される音符データである。この入力音符データ13eは、電子楽器20の鍵盤21の操作(押鍵、離鍵)を検出して、検出された入力音符ごとに所定のデータ形式で格納される。
なお、図中の「システム時刻」は当該音符がユーザによって押鍵入力されたときのシステムの時刻(リアルタイム)を表し、「再生時刻」は再生開始時をゼロとしてカウンタされる相対時刻を表している。
ここで、本システムの動作を説明する前に理解を容易にするため、本発明の演奏指示方法について具体例を挙げて説明する。
図8はピアノロール形式の演奏練習画面の一例を示す図である。
ピアノ演奏を練習する場合に、PC10の表示部15に図8に示すようなピアノロール形式の演奏練習画面30が表示される。この演奏練習画面30の縦方向は時間軸(曲の進行)、横方向は音階を表しており、曲データの各音の構成を視覚的に把握できる構成になっている。
図中の31は鍵盤画像である。この鍵盤画像31は、例えば電子楽器20の鍵域等、曲データの最低音から最高音を包含する音域の鍵盤を模式化した画像であり、演奏練習画面30の最下部にユーザが実際の鍵盤を見下ろしたようなイメージで横向きに表示されている。
図中の32はピアノロール表示エリアであり、4つの小節区分エリア32a〜32dで構成されている。また、図中の33および34は現在の再生位置を示すカーソルである。カーソル33は、1小節分の長さを有する縦長のバーからなり、演奏練習画面30の片側(この例では左側)に設けられている。カーソル34は、矩形状のカーソルであり、半透明の色(例えば水色)で演奏練習画面30上に表示される。
この矩形状のカーソル34には鍵盤の絵が描かれ、移動型の鍵盤画像として利用することができる。以後、カーソル33のことを「縦バーカーソル」、カーソル34のことを「鍵盤カーソル」と称して両者を区別する。
縦バーカーソル33と鍵盤カーソル34は、演奏練習画面30の中で曲データの進行に伴って移動する。なお、図8の例では、鍵盤カーソル34が演奏練習画面30の最下部の位置にあり、そこに固定的に設けられている鍵盤画像31上に重ねて表示されている状態を示している。
曲データを再生すると、ピアノロール表示エリア32の小節区分エリア32a〜32dに帯状の押鍵指示マーク35,36を有するピアノロール37が小節単位で表示される。押鍵指示マーク35,36は、鍵盤の各鍵に対応させて、演奏者が押鍵する位置と時間を表したものである。押鍵指示マーク35,36は、曲データに応じて右手パートと左手パートに分けられており、例えば押鍵指示マーク35は左手パートとして赤色で表示され、押鍵指示マーク36は右手パートとして青色で表示される。
この押鍵指示マーク35,36を含んだピアノロール37は、図4のお手本ピアノロールデータ13aに基づいて演奏のお手本用として4小節分表示される。図8の例では、1小節目〜4小節目に対応したピアノロール37が表示されている。曲データの再生に伴い、縦バーカーソル33と鍵盤カーソル34がピアノロール37上を移動する。
図9は縦バーカーソル33と鍵盤カーソル34が3小節目に移動した状態を示している。このとき、ピアノロール37の表示内容は図8と同様に曲データの1小節目〜4小節目の楽譜を表している。つまり、4小節分の演奏が終了するまでの間はピアノロール37の表示内容は固定であり、縦バーカーソル33と鍵盤カーソル34のみが1小節ずつ移動する。
ここで、縦バーカーソル33と鍵盤カーソル34が移動したときに、現在の再生位置から過去の楽譜範囲が別の表示形態(例えばグレー表示など)で表示される。ここでは2小節分の過去の楽譜範囲が表示されている例を示している。4小節分の演奏が終了すると、ピアノロール37の表示内容が更新される。この場合、図10に示すように、過去の2小節分を残しながら次の2小節分が新たに表示される。
図10は更新後のピアノロール37とカーソル33,34との関係を説明するための図である。この例では、4小節目と5小節が過去の小節として例えばグレー表示され、縦バーカーソル33と鍵盤カーソル34が現在の再生位置として6小節目を示している。
ユーザが押鍵するタイミングは、鍵盤カーソル34の中にピアノロール37上の押鍵指示マーク35,36が入ったときである。また、押鍵の操作時間は当該押鍵指示マーク35,36の長さで指示されている。つまり、鍵盤カーソル34の位置に押鍵指示マーク35,36が表示されている間は押鍵を続け、押鍵指示マーク35,36が消えたときに離鍵することで、正しい長さで弾くことができる。
図11はユーザの入力後のピアノロール37の状態を示す図である。
ユーザが鍵盤カーソル34の位置でピアノロール37上の押鍵指示マーク35,36に合わせて押鍵すると、入力マーク38がピアノロール37上に表示される。押鍵のタイミングが合っていれば、演奏のお手本として表示されている押鍵指示マーク35または36に入力マーク38が重ねて表示されることになる。実際には、例えば色などを変える等して表示しても良い。
その際、お手本ピアノロールデータ13aの音符のパートを参照して左右どちらのパートが推定され、その推定されたパートに対応した色で入力マーク38が表示される。さらに、押鍵から離鍵までの長さ分の帯状の音長バー39が当該入力マーク38に付加される。
なお、実際にはピアノロール37上の押鍵指示マーク35,36が鍵盤カーソル34に到達したタイミングで正確に押鍵入力することは難しく、多少の時間ずれが生じる。そこで、「クォンタイズ(quantize)」の機能を利用して、多少の時間ずれであれば、ジャストのタイミングで入力したとみなして、押鍵指示マーク35または36に入力マーク38を重ねて表示するものとする。
ここで、本システムでは、ユーザの演奏操作をサポートするために、カーソル表示モードとして、以下のような複数種類のモードを有する。これらのモードは、所定のキー操作などによって表示される図示せぬモード設定画面を通じてユーザが任意選択的に設定することができる。
(基準音表示モード)
図12は基準音表示モードを説明するための図である。
所定の操作により基準音表示モードが設定されると、鍵盤カーソル34の中の現在再生中の小節の調に対応した移動ドの位置に基準音マーク41が例えば赤色で表示される。この例はハ長調の場合である。
このような基準音マーク41を鍵盤カーソル34上に表示しておくことにより、ピアノの演奏に不慣れなユーザであっても、鍵盤の基準音(現在の小節の調の主音)がどこにあるのかを理解して演奏することができる。
(鍵盤基準位置表示モード)
図13は鍵盤基準位置表示モード(オクターブ表示モード)を説明するための図である。
所定の操作により鍵盤基準位置モードが設定されると、鍵盤カーソル34の中の鍵盤の基準位置に基準位置マーク42が例えば赤色で表示される。この基準位置マーク42は、調が変わっても固定の位置、例えばドの鍵盤の左等に1オクターブ間隔で表示され、ド〜シの1オクターブの鍵盤の位置が区切られるように表示される。
このような基準位置マーク42を鍵盤カーソル34上に表示しておくことにより、鍵盤の基準位置がどこにあるのかを確認しながら演奏することができる。
(調表示モード)
図14は調表示モードを説明するための図である。
所定の操作により調表示モードが設定されると、鍵盤カーソル34の下段の現在再生中の小節の調に対応した位置に矩形マーク43,44,45がそれぞれに所定の色で表示される。矩形マーク43は白鍵の位置を表しており、矩形マーク44は現在の調についての移動ドの位置に矩形マーク43とは異なる色で表示される。矩形マーク45は黒鍵の位置を表している。なお、本例では、矩形マーク44は「ソ」の位置に表示されており、現在の調が「ト長調」であることを示している。そして、矩形マーク45は、ファ#の位置に表示されており、これは、現在の調「ト長調」で用いられる黒鍵「ファ#」の位置を示している。
また、先行表示モードが設定されている場合には、鍵盤カーソル34の上段に別の矩形マーク46,47,48がそれぞれに所定の色で表示される。これらの矩形マーク46,47,48は、次の小節で転調がある場合に先行して表示されるものである。矩形マーク46が白鍵の位置、矩形マーク47は転調後の調についての移動ドの位置を表わしている。矩形マーク48は転調後の黒鍵の位置を表している。本例では、次の小節で「ニ長調」に転調する場合の例を示している。従って、矩形マーク47は「レ」の位置に表示されている。また、矩形マーク48は、「ニ長調」で用いられる黒鍵である「ファ#」と「ド#」の位置に表示されている。
これらの矩形マーク46,47,48は曲の調が変わることをユーザに事前に知らせるためにあり、現在の調に対応した矩形マーク43,44,45とは別の表示形態で鍵盤カーソル34の上段に表示される。図14の例では、矩形マーク46,47,48が点線で表示されているが、特にこの表示形態に限らず、例えば表示色を変えることなどでも良い。
また、この図14では、白鍵すべてに加えて現在の調あるいは転調後の調で用いられる黒鍵を表示しているが、単に、現在の調で用いられる音階の音や、転調後の調で用いられる音階の音のみをマーキングするようにしても良い。この場合、例えば現在の調である「ト長調」の音階に含まれない白鍵の「ファ」の位置には、矩形マーク43を表示しないようにし、また、転調後の調である「ニ長調」の音階に含まれない白鍵の「ファ」と「ド」の位置には、矩形マーク46を表示しないようにする。
このように、現在の調に対応した鍵盤の各鍵の位置に矩形マーク46,47,48を鍵盤カーソル34上に表示しておくことにより、ピアノの演奏に不慣れなユーザであっても、現在の調と鍵盤の各鍵との対応関係を理解して演奏することができる。
さらに、次の小節で転調がある場合には、その転調後の調に対応した位置に別の矩形マーク46,47,48を先行表示しておくことで、次の小節で転調があることを意識して演奏を続けることができ、また、現在の調や転調後の調で用いる音階の音を視覚的に認識できるため、ミスタッチ等を減らすことが可能となる。
(音高・音量表示モード)
図15は音高・音量表示モードを説明するための図である。
所定の操作により音高・音量表示モードが設定されると、鍵盤カーソル34の下段に円マーク51が表示されると共に、鍵盤カーソル34の中段に円マーク52が表示される。
下段の円マーク51は、ユーザの入力音の位置(音高)を表わしており、ユーザが押鍵を開始したときに鍵盤カーソル34の下段に所定の色(例えば黄色)で表示される。この円マーク51は、ユーザの入力に応じて一時的に表示される。つまり、この円マーク51は、ユーザが押鍵したときに表示され、離鍵したときには消えてしまう。
これに対し、中段の円マーク52は、曲データの再生時に演奏のお手本として発生される音の位置(音高)を表している。この円マーク52は、お手本上、ノートオンしてからノートオフまでの間、鍵盤カーソル34の中段に左右パート別の色(例えば左パートは赤色、右パートは緑色)で表示される。
さらに、先行表示モードが設定されている場合には、鍵盤カーソル34の上段に円マーク53が表示されると共に、鍵盤カーソル34の上段枠外に円マーク54が表示される。これらの円マーク53,54は、次の小節のお手本の音の位置(音高)を先行表示したものであり、それぞれに左右パート別の色(例えば左パートは赤色、右パートは緑色)で表示される。このうち、円マーク54は、次の小節の中で最初に弾く音に対応して表示される。
このように、再生中のお手本の音表示(中段の円マーク52)と入力の音表示(下段の円マーク51)を区別して表示することで、ユーザはお手本と自分の演奏との違いをリアルタイムで視認でき、入力が誤っている場合に次の行動ですぐに修正することができる。
さらに、次の小節の音を別の円マーク53,54で先行表示しておけば、小節の音の位置を先読みしながら、スムーズに指を動かして演奏することができる。
次に、音量の表示方法について説明する。音量の表示は、図15の音高・音量表示モードの表示形態で、各音符の円マークにおいて表示される。
図16は先行表示する音の音量表示方法を説明するための図である。
先行表示で用いられる上段の円マーク53,54は、2つの円形状の音量マーク55,56を有する。音量マーク55の大きさ(直径)は比較用の基準音量を表しており、音量マーク56の大きさ(直径)はお手本データ(お手本ピアノロールデータの略)の音量を表わしている。なお、音量マーク55は例えばオレンジ色、音量マーク56は赤色(左パートの場合)または緑色(右パートの場合)で表示される。
ここで、円の中心に基準音量を表わす音量マーク55を配置しておくのは、基準音量が分からないと、どのくらいの強さで弾いていいのか分からないからである。例えば音の強弱を示すベロシティが「0〜127」の範囲であるとすると、音量マーク55の基準音量はベロシティ「64」の音量である。
図17は再生中の音の音量表示方法を説明するための図である。
本システムでは、曲データの再生中にユーザが入力した音とお手本の音が発生する。再生中に表示される中段の円マーク52は、この2種類の音の音量を反映させた円形状の音量マーク57,58を有する。
音量マーク57はユーザの入力音の音量を表しており、音量マーク58はお手本データ(お手本ピアノロールデータの略)の音量を表わしている。円の直径が大きいほど、音量が大きいことを意味する。なお、入力音の音量マーク57は例えばオレンジ色で表示され、お手本の音量マーク58は赤色(左パートの場合)または緑色(右パートの場合)で表示される。
ここで、入力音がお手本の音量と一致すれば、図18(a)に示すように、お手本の音量マーク58と同じ大きさの音量マーク57が表示される。一方、入力音がお手本の音量より小さい場合には、図18(b)に示すように、お手本の音量マーク58の中に音量マーク57が表示される。逆に、入力音がお手本の音量より大きい場合には、図18(c)に示すように、お手本の音量マーク58の外側に音量マーク57が表示されることになる。このように、入力音量とお手本の音量を視覚的に分かるようにしておくことで、ユーザは音の強弱についても意識しながら演奏することができる。
(運指表示モード)
図19は運指表示モードを説明するための図である。
所定の操作により運指表示モードが設定されると、鍵盤カーソル34の下段に現在再生中の小節に対応した各音の位置に運指番号61が左右パート別に表示される。この運指番号61は、現在再生中の小節の各音に対応した指の運びを表しており、親指=1,人差し指=2,中指=3,薬指=4,小指=5といった数字で表される。
また、鍵盤カーソル34の上段には、次の小節の各音に対応させて運指番号62,63が運指番号61とは別の表示形態で表示される。運指番号62,63のうち、最上段に表示されている運指番号63は、次の小節の中で最初に弾く音に対応している。この例では、運指番号62,63が点線で表示されているが、特にこの表示形態に限らず、例えば表示色を変えるなどしても良い。
このように、現在再生中の小節の各音に対する運指番号61を鍵盤カーソル34に付加しておくことにより、ピアノの演奏に不慣れなユーザであっても、運指番号61を見ながら指を正しく動かして演奏することができる。
さらに、次の小節に対応した運指番号62,63を先行表示しておくことで、次の小節を弾くときに慌てることなくスムーズに指を動かして演奏することができる。
(パート境界線表示モード)
図20はパート境界線表示モードを説明するための図である。
所定の操作によりパート境界線表示モードが設定されると、鍵盤カーソル34の中に現在再生中の小節に対する左右パートの境界線71が所定の色で表示される。この境界線71の左側が左手パート、右側が右手パートである。なお、左手パートと右手パートの境界は、あらかじめ曲データに付随して設定されていることとしても良いし、あるいは曲データに応じて自動的に判別されることとしても良い。自動的に判別する場合、小節中の最も右側にある左手パートの音符の音高と小節中の最も左側にある右手パートの音符の音高とを比較して、以下のようにして判断するものとする。
・小節中の最も右側にある左手パートの音符の音高<小節中の最も左側にある右手パートの音符の音高の場合
境界の音高=小節中の最も右側にある左手パートの音符の音高+(小節中の最も左側にある右手パートの音符の音高−最も右側にある左手パートの音符の音高)
・小節中の最も右側にある左手パートの音符の音高>小節中の最も左側にある右手パートの音符の音高
境界の音高=なし(判定不能)
・小節中の最も右側にある左手パートの音符の音高=小節中の最も左側にある右手パートの音符の音高の場合
境界の音高=小節中の最も右側にある左手パートの音符の音高=小節中の最も左側にある右手パートの音符の音高。
また、1つ先の小節に対する左右パートの境界線72が現在の境界線71とは別の表示形態で表示される。この例では境界線72が白抜きの点線で表示されているが、特にこの表示形態に限らず、例えば表示色を変えるなどしても良い。
このように、現在再生中の小節に対する左右パートの境界線71を鍵盤カーソル34に付加しておくことで、そのときに弾く曲に合わせて左手と右手の配置を決めて演奏することができる。
さらに、次の小節に対応した左右パートの境界線72を先行表示しておくことで、次の小節を弾くときに左手と右手をスムーズに移動させて演奏することができる。
次に、本システムの動作について、(a)メイン処理、(b)ピアノ演奏練習処理に分けて説明する。なお、以下のフローチャートで示される処理は、PC10に設けられたCPU11がROM12に記憶されたプログラム12aを読み込むことにより実行される。
(a)メイン処理
図21は本システムにおけるPC10(CPU11)によって実行されるメイン処理を示すフローチャートである。
CPU11は、演奏対象となる楽譜の曲データを読み込むと(ステップA10)、以下のような処理を実行する。なお、曲データは、予めRAM13などに記憶されていても良いし、電子楽器20あるいは図示せぬ外部機器から入力されることでも良い。
まず、CPU11は、曲データを小節毎に調を含めて解析し、その解析結果を図6の小節データ13dにセットする(ステップA11)。
ここで、ユーザの指示に従ってピアノロールの作成開始小節と終了小節がセットされる(ステップA12)。CPU11は、そのセットされた小節範囲分のお手本ピアノロールデータ13aを作成し、これをRAM13の所定のエリアに展開しながら、図8に示したような演奏練習画面30を表示部15に表示し、ユーザにピアノ演奏を練習させる(ステップA13)。詳しい処理については、後に図22を参照して説明する。
ユーザにより練習場所(ピアノロールの範囲)の変更指示があると(ステップA14のYes)、CPU11は、その変更指示に従って上記ステップA12からの処理を繰り返す。また、ユーザによりカーソル表示モードの設定指示があると(ステップA15のYes)、CPU11は、図示せぬモード設定画面を表示部15に表示し、予めカーソル表示モードとして用意されている各種モードをユーザに設定させる(ステップA16)。
上記各種モードとは、上述した基準音表示モード、鍵盤基準位置表示モード、音高表示モード、音量表示モード、運指表示モード、パート境界線表示モードなどである。これらのモードを任意選択的に組み合わせて設定することができる。
ユーザにより終了指示があると(ステップA17のYes)、CPU11は、ここでの一連の処理を終了する。なお、ユーザの指示は、PC10に備えられた入力部14などを通じて行われるものとする。
(b)ピアノ演奏練習処理
図22は上記図21のステップA13で実行されるピアノ演奏練習処理を示すフローチャートである。このピアノ演奏練習処理は、ユーザによる再生開始から終了の指示があるまでの間、繰り返し実行される。
まず、CPU11は、表示部15にピアノロール形式の演奏練習画面30を表示部15に表示する(ステップB11)。この演奏練習画面30には、鍵盤画像31とピアノロール表示エリア32が設けられている。
ここで、CPU11は、再生コントロールを行う(ステップB12)。再生コントロールとは、ユーザの指示に従って曲データの再生、停止、小節スキップ、先頭に戻るなど、再生時刻に関連した処理を行うもの。なお、再生処理は一般的なので、その詳しい説明は省略する。また、再生処理自体は別のスレッドで行われていて、本フローチャート上での再生時刻はそのスレッドから随時更新されているものとし、各処理での再生時刻は最新の時刻を用いることができるものとする。
今、曲データの再生が指示されたものとして説明する。
CPU11は、現在時刻から表示する小節の番号を所定小節数分決めて、図示せぬ表示小節番号リストに保存する(ステップB13)。この表示小節番号リストは、例えばRAM13のワークエリアに設けられる。例えば、ピアノロール表示エリア32に一度に表示できる小節数が4小節であれば、ユーザが指定した再生開始小節を基準にして、そこから4小節分の番号を表示小節番号リストに保存することになる。
(お手本ピアノロール表示処理)
ここで、曲データが再生されると、CPU11は、図23に示すようなお手本ピアノロール表示処理を実行し、演奏練習画面30に設けられたピアノロール表示エリア32にピアノロール37の表示を行う(ステップB14)。
図23は上記図22のステップB14で実行されるお手本ピアノロール表示処理を示すフローチャートである。
まず、現在時刻に対応した小節番号が記憶されている表示小節番号リストの要素番号をi=0とし、i=0に初期化した状態で処理を開始する(ステップC11)。CPU11は、表示小節番号リストのi番目の要素で示される小節(簡単に「小節i」という)に対応したお手本ピアノロールデータ13aを取得し(ステップC12)、当該小節iに存在する各音符の発音時刻と発音時間を演奏練習画面30の座標データに変換する(ステップC13)。
CPU11は、その座標変換された各音符の発音時刻と発音時間に基づいて、演奏練習画面30のピアノロール表示エリア32に演奏のお手本用としてのピアノロール37を表示する(ステップC14)。
具体的には、各音符の発音時刻と発音時間に基づいて演奏練習画面30のピアノロール表示エリア32に帯状の押鍵指示マーク35,36を表示する。図8に示したように、例えば押鍵指示マーク35は左手パートとして赤色で表示され、押鍵指示マーク36は右手パートとして青色で表示される。
iをインクリメントしながら(ステップC15)、iの値が上記表示小節番号リストの要素数(ここでは4つ)になるまで、上記同様の処理を繰り返す(ステップC16)。これにより、ピアノロール表示エリア32に所定小節数分のピアノロール37が表示されることになる。このピアノロール37の表示は小節単位で更新され、上記図21のステップA12でユーザが指定した終了小節まで表示されることになる。
(入力ピアノロール生成処理)
演奏者であるユーザは、演奏練習画面30のピアノロール表示エリア32に表示されたピアノロール37を見ながら、電子楽器20の鍵盤21を押鍵してピアノ演奏の練習を行う。このときの押鍵入力された信号はMIDIインタフェース16を介してCPU11に与えられる。これにより、CPU11では、入力ピアノロール生成処理を実行する(ステップB15)。
この「入力ピアノロール生成処理」は、ユーザの押鍵操作によって入力された音符をピアノロールに反映させるためにある。入力ピアノロールデータは、図5で説明したように、入力ピアノロールデータ13bと一時保存入力ピアノロールデータ13cの2種類が用意されている。一時保存入力ピアノロールデータ13cは、入力ピアノロールデータ13bと同じデータ構造であり、想定音高入力数分(例えば、電子楽器20の鍵盤数など)の一時的なリストとして用いられる。これに対し、入力ピアノロールデータ13bは、入力確定リストとして用いられる。
ノートオン信号が入力されると、一時的なリスト(一時保存入力ピアノロールデータ13c)の入力音高に対応する場所に発音時刻、推定パート、音量が入力される。ノートオン継続状態では、一時的なリストで、入力音高に対応する場所の発音時間に、現在の再生時刻に対応する値が代入され続ける。
ここで、ノートオフ信号が入力されると、一時的なリストで入力音高に対応するアドレスの発音時間が確定し、入力確定リスト(入力ピアノロールデータ13b)にコピーされる。このとき、一時的なリストの入力音高に対応する場所のデータを初期化しておく。
このようして、ユーザが押鍵入力した音符に関する入力ピアノロールデータ13bが生成される。この入力ピアノロールデータ13bは、ユーザが押鍵入力した音符の位置とタイミングを示す入力マーク38を表示するために用いる。
すなわち、CPU11は、入力ピアノロールデータ13bの入力音符の発生時刻と音高のデータに基づいて、入力マーク38を演奏練習画面30のピアノロール表示エリア32の中の該当する位置に表示する。その際、CPU11は、入力ピアノロールデータ13bの推定パートのデータに基づいて、入力マーク38を左右パート別の色で表示する。さらに、CPU11は、入力ピアノロールデータ13bの入力音符の発音時間のデータに基づいて、押鍵から離鍵までの長さを表す帯状の音長バー39を当該入力マーク38に付加して表示する(ステップB16)。
この状態が図11である。
ユーザが押鍵入力した音符の入力マーク38と音長バー39がピアノロール37上に表示されている。ユーザがピアノロール37を見ながら正しく押鍵していれば、帯状の押鍵指示マーク35または36に入力マーク38と音長バー39が重なって表示されることになる。
(カーソル表示処理)
演奏練習画面30において、ピアノロール37は小節単位で順次表示される。CPU11は、このようなピアノロール37の表示に連動させて縦バーカーソル33と鍵盤カーソル34を表示する(ステップB17)。このときのカーソル表示処理について、図24乃至図26を参照して詳しく説明する。
図24乃至図26は上記図22のステップB17で実行されるカーソル表示処理を示すフローチャートである。
まず、CPU11は、先行表示時刻を設定する(ステップD11)。これは、先行表示を行う際に、現在の時刻からどのくらい先の時刻の小節を表示するのかを決めておく処理である。また、CPU11は、曲データの再生時間から縦バーカーソル33と鍵盤カーソル34を表示する演奏練習画面30上の座標を求める(ステップD12)。
次に、CPU11は、現在時刻で発音されている入力音符の音高と音量を図5の一時保存入力ピアノロールデータ13cから取り出し、図示せぬ入力音高音量リストL1にセットする(ステップD13)。この処理は、図15で説明した入力の音表示(下段の円マーク51の表示)を行うための準備として行われる。
また、CPU11は、現在の再生時刻における音符データを図4のお手本ピアノロールデータ13aから取り出し、図示せぬ現在音符データリストL2にセットする(ステップD14)。さらに、CPU11は、現在再生時刻から上記先行表示時刻までに発生する音符データを図4のお手本ピアノロールデータ13aから取り出し、図示せぬ先行音符データリストL3にセットする(ステップD15)。これらの処理は、図15で説明した再生中の音表示(中段の円マーク52の表示)と先行表示(上段の円マーク53,54)を行うための準備として行われる。
なお、上記リストL1〜L3はRAM13のワークエリアに設けられており、CPU11によって適宜参照される。また、以下の処理で参照される各種フラグは、上記図21のステップA16のカーソル表示モードとして適宜設定され、その設定情報(フラグのオン/オフ)がRAM13のワークエリアに記憶されているものとする。
ここで、CPU11は、鍵盤絵表示フラグが設定(フラグオン)されているか否かを確認する(ステップD16)。鍵盤絵表示フラグが設定されていれば(ステップD16のYes)、CPU11は、表示レイアウトとして「レイアウトパターン1」を設定する(ステップD17)。鍵盤絵表示フラグが設定されていなければ(ステップD16のNo)、CPU11は、表示レイアウトとして「レイアウトパターン2」を設定する(ステップD18)。
「レイアウトパターン1」は、鍵盤カーソル34に鍵盤の絵柄ありのパターンである。「レイアウトパターン2」は、鍵盤カーソル34に鍵盤の絵柄なしのパターンである。鍵盤の絵柄とは、演奏練習画面30の最下部に固定表示されている鍵盤画像31と同様に鍵盤を模式化した画像のことであり、ピアノロール37上の各音に対応させて配置される。「レイアウトパターン1」では、鍵盤の絵柄ありとして白鍵、黒鍵の位置が定められるので、鍵盤カーソル34の表示および以後の表示処理において、これらの白鍵黒鍵の位置に対応した表示処理を行う。「レイアウトパターン2」では、鍵盤の絵柄なしで、単なる矩形の横並びを表示することになるので、以後の表示処理もこれに応じた表示処理を行う。
演奏練習画面30の最下部には鍵盤画像31が標準的に表示されているので、ユーザによっては、鍵盤カーソル34に鍵盤の絵柄を必要としないこともある。そこで、初期設定時に鍵盤の絵柄を表示するか否かを任意に設定できるようにしている。
CPU11は、「レイアウトパターン1」または「レイアウトパターン2」に対応した鍵盤カーソル34の背景を表示する(ステップD19)。「レイアウトパターン1」であれば、鍵盤カーソル34に鍵盤の絵柄を描くことになる。
以下では、説明を簡単にするため、鍵盤カーソル34に鍵盤の絵柄ありの場合を想定して説明する。なお、鍵盤カーソル34と共に縦バーカーソル33も演奏練習画面30上に表示されているものとする。
鍵盤カーソル34が表示されると、以後、上記カーソル表示モードとして適宜設定される各種フラグに基づいて、この鍵盤カーソル34上にユーザの演奏をガイド(支援)するための所定の表示処理がなされる。
すなわち、基準音表示フラグが設定されていれば(ステップD20のYes)、CPU11は、図6に示した小節データ13dに基づいて現在再生中の小節の調を判断し、鍵盤カーソル34に現在再生中の小節の調に対応した移動ドの位置を表示する(ステップD21)。具体的には、図12に示したように、鍵盤カーソル34の中の現在再生中の小節の調に対応した移動ドの位置に基準音マーク41を所定の色(例えば赤色)で表示する。
鍵盤位置表示フラグが設定されていれば(ステップD22のYes)、CPU11は、鍵盤カーソル34に鍵盤の基準位置を表示する(ステップD23)。具体的には、図13に示したように、鍵盤カーソル34の中の鍵盤の基準位置に基準位置マーク42を所定の色(例えば赤色)で表示する(ステップD23)。
ここで、入力音高表示フラグと音量表示フラグが設定されていれば(ステップD24のYes→D25のYes)、CPU11は、まず、入力音量表示をONにする(ステップD26)。「入力音量表示」とは、図17および図18示した入力音の音量マーク57を表示することを言う。なお、入力音高表示フラグが設定されているものの音量表示フラグが設定されていない場合は(ステップD24のYes→D25のNo)、入力音量表示はOFFとされる。
CPU11は、上記入力音高音量リストL1を参照して鍵盤カーソル34にユーザが入力した音の位置(音高)を表示する(ステップD27,D28)。具体的には、図15に示したように、鍵盤カーソル34の下段にユーザの入力音を表わす円マーク51を表示する。この円マーク51の表示位置は、ユーザが押鍵した位置(音高)に対応している。また、この際、入力音量表示がONであれば、ユーザの押鍵の強さ(ベロシティ)に応じて、円マーク51の大きさを変化させて表示する。
運指表示フラグが設定されていれば(ステップD29のYes)、CPU11は、上記現在音符データリストL2を参照して鍵盤カーソル34に現在再生中の小節の各音に対応させて運指の表示を行う(ステップD31)。さらに、その先行表示フラグが設定されていれば(ステップD32のYes)、CPU11は、上記先行音符データリストL3を参照して鍵盤カーソル34に次の小節の各音に対応させて運指番号を先行表示する(ステップD33,34)。
具体的には、図19に示したように、鍵盤カーソル34の下段に現在再生中の小節の各音の位置に運指番号61を表示し、鍵盤カーソル34の上段に次の小節の各音の位置に運指番号62を運指番号61とは別の表示形態で表示する。
また、発音中の音表示フラグと音量表示フラグが設定されていれば(ステップD35のYes→D36のYes)、CPU11は、まず、発音中音量表示をONにする(ステップD37)。なお、音量表示フラグが設定されていない場合は(ステップD25のYes→D36のNo)、発音中音量表示はOFFとされる。そして、CPU11は、上記現在音符データリストL2を参照して鍵盤カーソル34に発音中の音を表示する(ステップD38,D39)。
「発音中の音」とは、現在演奏すべきお手本の音のことである。具体的には、図15に示したように、鍵盤カーソル34の中段に、そのお手本の音を表わす円マーク52を表示する。このとき、「発音中音量表示」がONしていれば、図17および図18で説明したように、お手本の音量マーク58とともに入力音の音量マーク57を表示して、入力音量の状態を確認できるようにする。
さらに、先行表示フラグと音量表示フラグが設定されていれば(ステップD40のYes→D41のYes)、CPU11は、まず、先行音量表示をONにする(ステップD42)。なお、音量表示フラグが設定されていない場合は(ステップD40のYes→D41のNo)、先行音量表示はOFFとされる。そして、CPU11は、上記先行音符データリストL3を参照して鍵盤カーソル34に先行音についての表示を行う(ステップD43,D44)。
「先行音についての表示」とは、次の小節のお手本の音を先行して表示することである。具体的には、図15に示したように、鍵盤カーソル34の上段と上段枠外に、次の小節のお手本の音を表わす円マーク53,54を再生中の円マーク52とは別の表示形態で表示する。さらに、先行音量表示がONの場合には、図16に示したように、これらの円マーク53,54を2つの円形状の音量マーク55,56で表示する。音量マーク55は比較用の基準音量、音量マーク56はお手本データの音量を示す。
また、右手左手の境目表示フラグが設定されていれば(ステップD45のYes)、CPU11は、上記現在音符データリストL2を参照して鍵盤カーソル34に現在再生中の小節の各音に対応した右手左手の境目表示を行う(ステップD46,D47)。さらに、その先行表示フラグが設定されていれば(ステップD48のYes)、CPU11は、上記先行音符データリストL3を参照して鍵盤カーソル34に次の小節の各音に対応した右手左手の境目を先行表示する(ステップD49,D50)。
具体的には、図20に示したように、鍵盤カーソル34の下方に現在再生中の小節に対する左右パートの境界線71を表示し、鍵盤カーソル34の上方に次の小節に対する左右パートの境界線72を境界線71とは別の表示形態で表示する。
また、調表示フラグが設定されていれば(ステップD51のYes)、CPU11は、図6に示した小節データ13dに基づいて現在再生中の小節の調を判断し、鍵盤カーソル34にその調の表示を行う(ステップD52,D53)。さらに、その先行表示フラグが設定されていれば(ステップD54のYes)、CPU11は、上記小節データ13dから次の小節の調を判断し、鍵盤カーソル34にその次の小節の調を先行表示する(ステップD55,D56)。
具体的には、図14に示したように、鍵盤カーソル34の下段に、現在再生中の小節の調に対応する位置に白鍵と黒鍵を表わす矩形マーク43,44,45を表示する。さらに、鍵盤カーソル34の上段に、次の小節の調に対応する位置に同様の矩形マーク46,47,48を矩形マーク43,44,45とは別の表示形態で表示する。
以上のように本実施形態によれば、ピアノロール37上の各音に対応させて鍵盤の絵柄を有する鍵盤カーソル34が表示され、曲データの再生に同期して移動する。したがって、この鍵盤カーソル34の位置を基準に押鍵入力すれば、ピアノロール37の譜面と鍵盤カーソル34の鍵盤との位置関係を把握しながら、実際の楽譜を用いた演奏に近いプロセスで練習を行うことができる。
さらに、カーソル表示モードの設定により、鍵盤カーソル34の中に現在再生中の小節の調に対応した基準音マーク41を表示するなど、演奏サポート用のマークを任意選択的に表示することができる。したがって、演奏に不慣れなユーザでも、これらのマークを見ることで、現在の基準音の位置などを把握して正しく演奏することができる。
なお、上記実施形態では、各種モードで先行表示を行う場合に、先行表示用のマークを現在のマークと同じタイミングで鍵盤カーソル34に表示していたが、例えば先行表示用のマークについては、切り替えを必要とする少し前に現在表示中のマークに代えて徐々に表示することでも良い。
例えば、図14に示した調表示モードであれば、先行表示用の矩形マーク46,47,48については、曲データの進行に伴い、次の調の切替えに近付いたときに現在表示中の矩形マーク43,44,45に代えて徐々に表示する。これにより、鍵盤カーソル34がマーク表示で煩雑になることを回避できる。また、この際、上記で表示形態を変えるものとして説明している部分、例えば先行表示と現在の表示で表示形態を変えるとしている各種マークについて、同じ表示形態で表示しても差し支えない。例えば表示される位置や鍵盤カーソル34の表示などから、ユーザは、どれが現在の表示で、どれが先行表示、あるいは過去の表示であるかなどが判るからである。
また、図15に示した音量・音高表示モードにおいて、図22のステップB11の「再生コントロール」の処理でテンポを調整すれば、再生中のお手本の音表示(中段の円マーク52)と入力の音表示(下段の円マーク51)をスローモーション状態で確かめながら練習することができるといった利点がある。
また、上記実施形態では、曲データの再生時にお手本データの音とユーザの押鍵入力した音の両方が発生するものとして説明したが、お手本データの音は発生させずに、上記図15に示したように、そのお手本データの音の位置を表わす円マーク52の表示のみを行うようにしても良い。
また、お手本データの音とユーザの押鍵入力した音の両方を発生する場合には、例えばお手本データの音はストリングの音で発生し、ユーザが入力した音はピアノの音で発生するなど音色を変えて発生することが好ましい。
また、上記で説明した図9や図19の表示については、必ずしもこの表示形態に限られない。例えば、横スクロールのピアノロール画面を用いても良い。また、図9、図10の表示では、鍵盤カーソル34がピアノロールを一部隠して表示しても良いし、例えば半透過で下のピアノロールが透けるように表示しても良い。さらに、鍵盤カーソル34がピアノロールを全く隠さず、鍵盤カーソル34の上辺と下辺でピアノロール表示が連続であるように表示することとしても良い。
要するに、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
さらに、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレシキブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
読み込まれた曲データに基づき該曲データを構成する各音を表すピアノロール画面を生成して表示部に表示するピアノロール表示手段と、
このピアノロール表示手段によって表示された上記ピアノロール画面上の各位置の音高に対応させた画像を有するカーソルを表示すると共に、上記曲データの再生に同期させて上記カーソルを現在の再生位置と対応する位置に移動させて表示させるカーソル表示手段と、
を具備したことを特徴とする曲データ表示装置。
[2]
上記カーソル表示手段は、
上記曲データの再生時に上記カーソルと対応する位置に、上記曲データの演奏をサポートするための表示処理を施すことを特徴とする請求項[1]記載の曲データ表示装置。
[3]
上記カーソルの表示に応じて演奏者に押鍵入力させる演奏入力手段をさらに有し、
上記カーソル表示手段は、
上記カーソルに対応する位置に、上記演奏入力手段により演奏者が入力した音に応じた入力音を表わす第1のマークと、上記曲データから得られるお手本の音を表わす第2のマークとを対比させて表示することを特徴とする請求項[1]または[2]記載の曲データ表示装置。
[4]
上記カーソル表示手段は、
上記曲データの現在の調に基づいて、上記カーソルに対応する位置に、現在再生中の小節の調に対応した白鍵と黒鍵を表わすマークを表示するとともに、上記曲データの現在の次の小節の調に基づいて、上記カーソルに対応する位置に、現在再生中の次の小節の調に対応した白鍵と黒鍵を表わすマークを表示することを特徴とする請求項[1]から[3]のいずれかに記載の曲データ表示装置。
[5]
上記カーソル表示手段は、
上記カーソルに対応する位置に、現在再生中の小節に対する左右パートの境界線を表示するとともに、現在再生中の次の小節に対する左右パートの境界線を表示することを特徴とする請求項[1]から[4]のいずれかに記載の曲データ表示装置。
[6]
上記カーソル表示手段は、
上記カーソルに対応する位置に、現在再生中の小節の各音に対応する運指番号を表示するとともに、現在再生中の次の小節の各音に対応する運指番号を表示することを特徴とする請求項[1]から[5]のいずれかに記載の曲データ表示装置。
[7]
上記カーソル表示手段は、
上記曲データの現在の調に基づいて、上記カーソルの中の現在再生中の小節の調に対応した移動ドの位置、若しくは、予め定められた鍵盤の基準位置を示す、所定のマークを表示することを特徴とする請求項[1]から[6]のいずれかに記載の曲データ表示装置。
[8]
上記カーソル表示手段は、
上記カーソルに対応する位置に、現在再生中の次の小節のお手本の音を表わす第3のマークを表示することを特徴とする請求項[3]に記載の曲データ表示装置。
[9]
上記カーソル表示手段は、
上記第1のマークおよび上記第2のマークに上記演奏者の入力音の音量と上記お手本の音の音量とを反映させて表示するとともに、上記第3のマークに、上記お手本の音の音量と、予め設定された基準音量とを反映させて表示することを特徴とする請求項[8]記載の曲データ表示装置。
[10]
カーソル表示モードを設定するモード設定手段をさらに備え、
上記カーソル表示手段は、上記曲データの再生時に上記ピアノロール画面上に、上記モード設定手段によって設定されたカーソル表示モードに応じた、上記曲データの演奏をサポートするための表示処理を施すことを特徴とする請求項[1]から[9]のいずれかに記載の曲データ表示装置。
[11]
曲データ表示装置が実行する曲データ表示方法であって、
該曲データ表示装置が、
読み込まれた曲データに基づき該曲データを構成する各音を表すピアノロール画面を生成して表示部に表示するステップと、
上記ピアノロール画面上の各位置の音高に対応させた画像を有するカーソルを表示すると共に、上記曲データの再生に同期させて上記カーソルを現在の再生位置と対応する位置に移動させて表示させるステップと
を実行することを特徴とする曲データ表示方法。
[12]
コンピュータによって実行される演奏指示のためのプログラムであって、
上記コンピュータに、
読み込まれた曲データに基づき該曲データを構成する各音を表すピアノロール画面を生成して表示部に表示する機能と、
上記ピアノロール画面上の各位置の音高に対応させた画像を有するカーソルを表示すると共に、上記曲データの再生に同期させて上記カーソルを現在の再生位置と対応する位置に移動させて表示させる機能と
を実現させることを特徴とするプログラム。