以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の実施の形態にかかる演奏教習装置の概略を示す図である。図1に示すように、本実施の形態にかかる演奏教習装置10は、電子鍵盤楽器の形態をとり、鍵盤11を有する。鍵盤11は、複数の鍵(たとえば、符号16、17参照)を有し、ある鍵の押鍵にしたがって後述するように、押鍵された鍵に対応する音高の楽音を発生することができる。また、演奏教習装置10は、スイッチ(たとえば符号18参照)やテンキー(符号19参照)を有するとともに、その中央上側に液晶表示装置14を有する。
図2は、本実施の形態にかかる演奏教習装置の構成を示すブロックダイヤグラムである。図2に示すように、本実施の形態にかかる演奏教習装置10は、CPU21、ROM22、RAM23、サウンドシステム24、鍵盤11、入力部12および表示部13を備える。
入力部12は、音色指定スイッチ、レッスンスイッチ、スタート・ストップスイッチ、パート選択スイッチ、YES・NOスイッチなどを有する。表示部13は、液晶表示装置14およびLED群15を有する。液晶表示装置14には、後述するように、楽曲のフレーズにおいて小節ごとに、各パートの演奏者による演奏を評価したレッスン画面を表示することが可能である。LED群15は、たとえば、スイッチに隣接して配置され、スイッチがオン状態であるときに点灯する。
CPU21は、演奏教習装置10全体の制御、鍵盤11の鍵の押鍵や入力部12を構成するスイッチの操作の検出、鍵やスイッチの操作にしたがったサウンドシステム24の制御、鍵の操作にしたがった演奏データの生成、液晶表示装置14に表示するレッスン画面の生成など種々の処理を実行する。
ROM22は、CPU21に実行させる種々の処理、たとえば、鍵盤11の鍵の押鍵や入力部12を構成するスイッチの操作の検出、鍵やスイッチの操作にしたがったサウンドシステム24の制御、鍵の操作にしたがった演奏データの生成、液晶表示装置14に表示するレッスン画面の生成などの処理プログラムを格納する。また、ROM22は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した波形データエリアを有する。また、ROM22は、パートごとの模範演奏のイベントのレコードおよびタイムのレコードから構成される楽曲データを格納する。
RAM23は、ROM22から読み出されたプログラムや楽曲データ、処理の過程で生成されたパラメータやデータを記憶する。また、本実施の形態においては、RAM23は、演奏者のパートごとの演奏に基づくイベントのレコードおよびタイムのレコードから構成される演奏データを格納する。
サウンドシステム24は、音源部26、オーディオ回路27およびスピーカ28を有する。音源部26は、たとえば、ノートオンイベントをCPU21から受信すると、ROM22の波形データエリアから所定の波形データを読み出して、ノートオンイベントに含まれる音高情報にしたがった音高の楽音データを生成して出力する。オーディオ回路27は、楽音データをD/A変換して増幅する。これによりスピーカ28から音響信号が出力される。
図3は、本実施の形態にかかる演奏教習装置のメインフローの概略を示すフローチャートである。電源の投入とともに、メインフローは起動し、イニシャライズ処理(ステップ301)の後、ステップ302以降の処理が繰り返し実行される。イニシャライズ処理においては、RAM23中のデータのクリア、液晶表示装置14の画像のクリアおよびLED群15のクリアなどが実行される。イニシャライズ処理(ステップ301)が終了すると、CPU21は、入力部12を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する(ステップ302)。図4は、本実施の形態にかかるスイッチ処理の例を示すフローチャートである。
スイッチ処理において、CPU21は、レッスンスイッチの操作にしたがった処理を実行するレッスンスイッチ処理(ステップ401)、パート選択スイッチの操作にしたがった処理を実行するパート選択スイッチ処理(ステップ402)、スタート・ストップスイッチの操作にしたがった処理を実行するスタート・ストップスイッチ処理(ステップ403)、確認スイッチの操作にしたがった処理を実行する確認スイッチ処理(ステップ404)、音色指定スイッチなど他のスイッチの操作にしたがった処理を実行する他のスイッチ処理(ステップ405)をそれぞれ実行する。
図5は、本実施の形態にかかるレッスンスイッチ処理の例を示すフローチャートである。図5に示すように、CPU21は、レッスンスイッチがオンされたかを判断する(ステップ501)。ステップ501でYesと判断された場合には、CPU21は、スタートフラグSTFが「0」であるかを判断する(ステップ502)。スタートフラグが「0」である場合(ステップ502でYes)、つまり、レッスン実施中ではない場合には、CPU21は、レッスンフラグLFを反転させる(ステップ503)。ここに、フラグの反転とは、フラグが「1」であるときには「0」にすること、また、フラグが「0」であるときには「1」にすることである。次いで、CPU21は、反転されたレッスンフラグLFが「1」であるかを判断する(ステップ504)。
ステップ504でYesと判断された場合には、CPU21は、後述するレッスン画面を液晶表示装置14の画面上に表示する(ステップ505)。その一方、ステップ504でNoと判断された場合には、CPU21は、レッスン画面を、液晶表示装置14から消去する(ステップ506)。
図6は、本実施の形態にかかるパート選択スイッチの例を示すフローチャートである。図6に示すように、CPU21は、パート選択スイッチがオンされたかを判断する(ステップ601)。ステップ601でYesと判断された場合には、CPU21は、レッスンフラグLFが「1」であるかを判断する(ステップ602)。ステップ602でYesと判断された場合には、第1の確認フラグAFが「1」であるかを判断する(ステップ603)。なお、第1の確認フラグAFについては、後に出てくる第2の確認フラグBFとともに後述する。
ステップ603でYesと判断された場合には、CPU21は、選択されたパート番号を、パラメータPとして設定する(ステップ604)。パート番号は、たとえば、テンキーの操作により入力することができる。したがって、ステップ604において、CPU21は、テンキーの入力に基づいてパート番号を特定する。パラメータPは、RAM23に格納される。次いで、CPU21は、レッスン画面の表示エリア中、フレーズ表示領域における評価記入欄DISP[1,n]〜DISP[L,n]をクリアする(ステップ605)。
図13は、本実施の形態にかかる液晶表示装置の画面上に表示されるレッスン画面の例を示す図である。図13に示すように、レッスン画面1300は、パート表示領域1301、フレーズ表示領域1302および得点表示領域1303を有する。パート表示領域には、フレーズ番号欄1311、および、パート表示欄(たとえば、符号1312参照)が含まれる。本実施の形態においては、パート表示欄には、ピアノ(piano)、ギター(guitar)、ベース(bass)およびドラム(drum)の4つのパートが表示されている。
また、フレーズ表示領域1302において、左側に位置するフレーズ開始線(符号1321参照)および右端に位置するフレーズ終了線(符号1322参照)が含まれる。また、フレーズ表示領域1302においては、パートごとに、単位エリアごとの評価記入欄が配置される(たとえば、符号1323、1324参照)。本実施の形態において、単位エリアは1小節である。また、フレーズとは、フレーズ開始線で示される単位エリア(小節)の先頭から、フレーズ終了線で示される単位エリア(小節)の最後までを言う。 図13に示す例では、フレーズ開始線1321とフレーズ終了線1322との間に、パートごとに5つの単位エリアが存在し、フレーズが5小節からなることが示されている。単位エリアの評価記入欄DISP[]には、後述する演奏者によるフレーズの演奏に対する評価が表示されるようになっている。
さらに、フレーズ表示領域1302の左端には、レッスンパート選択表示欄(たとえば符号1325参照)が含まれる。図13の例では、ピアノ、ギター、ベース、ドラムの全てのパートが黒塗りの三角印となっている。これは、何れのパートも選択されていない状態を示す。後述するように、いずれかのパートが選択されると、選択されたパートについて、レッスンパート選択欄が黒塗りの丸印となる(図19〜21参照)。また、得点表示領域1303には、パートごとに、フレーズの演奏結果に基づく得点を表示する得点表示欄が設けられている。
本実施の形態においては、レッスンが開始された場合には、進行中のフレーズの現在位置を示す進行バー1326が、時間の経過にともなって、フレーズ表示領域1302のフレーズ開始線1321とフレーズ終了線1322との間を移動する。図13に示す例は、進行バー1326は、初期位置(フレーズ開始線1321と一致する位置)に配置される。
また、図13のフレーズ表示領域1302の評価記入欄1323は、DISP[0,0]、評価記入欄1324は、DISP[1,0]と表され得る。すなわち、DISP[i,n]とは、第n番のパートのフレーズにおける第i番の単位エリア(小節)の評価記入欄を意味している。なお、第n番のパートに対応する音色の情報、各単位エリアの評価記入欄の印に対応する評価値、得点表示領域の各得点表示欄の得点などはRAM23に格納されている。
ステップ605の後、CPU21は、第n番のパートにおける上記DISP[1、n]〜DISP[L,n]に対応する演奏データをクリアする(ステップ606)。演奏データの構成については後に詳細に説明する。また、CPU21は、第n番のパートの対応する得点表示欄およびRAM23に格納された対応する値(評価値の平均値)をクリアする(ステップ607)。その後、CPU21は、第1の確認フラグAFを「0」にリセットする。
図7および図8は、本実施の形態にかかるスタート・ストップスイッチ処理の例を示すフローチャートである。図7に示すように、CPU21は、スタート・ストップスイッチがオンされたかを判断する(ステップ701)。ステップ701でYesと判断された場合には、CPU21は、レッスンフラグLFが「1」であるかを判断する(ステップ702)。ステップ702でYesと判断された場合には、CPU21は、スタートフラグSTFを反転して(ステップ703)、反転されたスタートフラグが「0」であるかを判断する(ステップ704)。
ステップ704でYesと判断された場合には、CPU21は、音源部26に対して発音中の楽音データの消音を指示する(ステップ705)。また、CPU21は、液晶表示装置14の画面上に表示されたフレーズ表示領域の評価記入欄DISP[]をクリアする(ステップ706)。また、CPU21は、RAM23中の評価記入欄DISP[]に対応付けられた評価値や評価値の平均値をクリアする(ステップ707)。また、CPU21は、タイマインタラプトを禁止して(ステップ708)、処理を終了する。なお、タイマインタラプトの禁止とは、後述する、一定の時間間隔で起動され、タイマ値tを更新するタイマインタラプトが起動されない状態にすることを言う。その一方、タイマインタラプトが起動可能な状態にすることを、タイマインタラプトの解除と称する。
ステップ704でNoと判断された場合、つまり、スタートフラグが「0」ではない場合には、CPU21は、小節番号を特定する小節パラメータl、フレーズ番号を特定するフレーズパラメータm、および、パート番号を特定するパートパラメータnを、それぞれ「1」に初期化する(ステップ801)。次いで、CPU21は、ROM22に格納された楽曲データ中、フレーズパラメータmで特定される第m番のフレーズ(「フレーズ(m)」とも称する。)のレコード群を、RAM23に格納する(ステップ802)。以下、本実施の形態にかかる楽曲データについて説明する。
図9は、本実施の形態にかかる楽曲データのデータ構造の例を示す図である。図9に示すように、楽曲データ900には、曲ごとの楽曲データのレコード群が含まれる。図9において、楽曲データ(1)のレコード群(符号901参照)は、第1番の楽曲データのレコード群であることを示している。ある曲番号を有する楽曲データのレコード群は、複数(図9ではM個)のフレーズのレコード群910を有する。フレーズ(1)のレコード群(符号911参照)、フレーズ(2)のレコード群(符号912参照)、・・・フレーズ(m)のレコード群(符号913参照)は、それぞれ、第1番、第2番、・・・、第m番のフレーズのレコード群であることを示している。
各フレーズのレコード群、たとえば、フレーズ(m)のレコード群(符号913参照)は、複数個の小節(図9ではL小節)についてのレコード群920を有する。小節(1)のレコード群(符号921参照)、小節(2)のレコード群(符号922参照)、・・・、小節(l)のレコード群(符号923参照)は、それぞれ、第1番、第2番、・・・、第l番の小節のレコード群であることを示している。
各小節のレコード群、たとえば、小節(l)のレコード群(符号923参照)は、複数個のパート(図9ではNパート)についてのレコード群930を有する。パート(1)のレコード群(符号931参照)、パート(2)のレコード群(符号932参照)、・・・、パート(n)のレコード群(符号933参照)は、それぞれ、第1番、第2番、・・・、第n番のパートのレコード群であることを示している。
各パートのレコード群、たとえば、パート(n)のレコード群(符号933参照)は、タイムおよびイベントからなるレコード群(符号940参照)を有する。タイムのレコード(たとえば、符号941、943参照)は、次のイベントが生じるまでの時間間隔を示す。また、イベント(たとえば符号942参照)は、発音すべきことを示すノートオンイベントと、消音すべきことを示すノートオフイベントを含む。ノートオンイベントには、発音すべき楽音の音高およびベロシティが含まれる。その一方、ノートオフイベントには、消音すべき楽音の音高が含まれる。
また、後述するように演奏者が鍵を押鍵することにより、演奏者の演奏状態を示す演奏データのレコードが、RAM23に格納される。この演奏データも、楽曲データと同様のデータ構造を有している。図10は、本実施の形態にかかる演奏データのデータ構造の例を示す図である。図10に示すように、楽曲データ1000には、曲ごとの演奏データのレコード群が含まれる。図10において、演奏データ(1)のレコード群(符号1001参照)は、第1番の演奏データのレコード群であることを示している。ある曲番号を有する演奏データのレコード群は、複数(図10ではM個)のフレーズのレコード群1010を有する。フレーズ(1)のレコード群(符号1011参照)、フレーズ(2)のレコード群(符号1012参照)、・・・、フレーズ(m)のレコード群(符号1013参照)は、それぞれ、第1番、第2番、・・・、第m番のフレーズのレコード群であることを示している。
各フレーズのレコード群、たとえば、フレーズ(m)のレコード群(符号1013参照)は、複数個の小節(図10ではL小節)についてのレコード群1020を有する。小節(1)のレコード群(符号1021参照)、小節(2)のレコード群(符号1022参照)、・・・、小節(l)のレコード群(符号1023参照)は、それぞれ、第1番、第2番、・・・、第l番の小節のレコード群であることを示している。
各小節のレコード群、たとえば、小節(l)のレコード群(符号1023参照)は、複数個のパート(図10ではNパート)についてのレコード群1030を有する。パート(1)のレコード群(符号1031参照)、パート(2)のレコード群(符号1032参照)、・・・、パート(n)のレコード群(符号1033参照)は、それぞれ、第1番、第2番、・・・、第n番のパートのレコード群であることを示している。
各パートのレコード群、たとえば、パート(n)のレコード群(符号1033参照)は、タイムおよびイベントからなるレコード群(符号1040参照)を有する。タイムのレコード(たとえば、符号1041、1043参照)は、次のイベントが生じるまでの時間間隔を示す。また、イベント(たとえば符号1042参照)は、発音すべきことを示すノートオンイベントと、消音すべきことを示すノートオフイベントを含む。
CPU21は、RAMに格納されたフレーズ(m)のレコード群(符号913参照)において、第l番の小節(l)のレコード群(符号923参照)に含まれる第n番のパート(n)(符号933)のレコードの先頭アドレスを、AD(n)としてRAM23に格納する(ステップ803)。CPU11は、アドレスAD(n)を用いてRAM23のデータを読み出し、パート(n)のレコード群(符号933参照)のうち、先頭のレコードであるタイムT1のレコード(符号941)を取得する。CPU21は、取得したレコードを、時間情報T(n)としてRAM23に格納する(ステップ804)。
CPU21は、パラメータnをインクリメントして(ステップ805)、パラメータnがパート最大数N以下であれば(ステップ806でNo)、ステップ803に戻る。ステップ806でYesと判断された場合には、CPU21は、液晶表示装置14の画面上のレッスン画面のフレーズ表示領域(図13の符号1302)の左端において、進行バーをフレーズ開始線と一致する位置に表示する(ステップ807)。その後、CPU21は、タイマインタラプトを解除し(ステップ808)、タイマ値tに「0」を与える(ステップ809)。
図11および12は、本実施の形態にかかる確認スイッチ処理の例を示すフローチャートである。確認スイッチの操作に伴う処理については、伴奏処理(ステップ303)〜評価処理(ステップ305)において再度説明する。ここでは、処理フローに沿った概略のみを説明する。
図11に示すように、CPU21は、確認スイッチがオンされたかを判断する(ステップ1101)。ステップ1101でYesと判断された場合には、CPU21は、第2の確認フラグBFが「1」であるかを判断する(ステップ1102)。ステップ1102でYesと判断されると、CPU21は、確認スイッチにおいて操作されたスイッチの種別を判断する(ステップ1103)。図21を参照して後述するように、液晶表示装置16上のレッスン画面においては、「YES」対応スイッチおよび「NO」対応スイッチを含む確認画面が重ねられて表示され得る。演奏者は、この確認画面を参照して、カーソルキーなどを利用して、「YES」対応スイッチ或いは「NO」対応スイッチの何れかを選択することができる。
「YES」対応スイッチが操作されていた場合には、CPU21は、パラメータlおよびnを「1」にリセットする(ステップ1107)。また、CPU21は、液晶表示装置14上のレッスン画面のフレーズ表示領域において、評価記入欄DISP[]の内容をクリアする(ステップ1108)とともに、得点表示領域の得点表示欄の内容をクリアする(ステップ1109)。
ステップ1103において、「NO」対応スイッチが操作されたと判断された場合には、CPU21は、液晶表示装置14上のレッスン画面において表示されていた確認画面をクリアする(ステップ1104)。この確認画面については、図21を参照して後述する。また、CPU21は、第1の確認フラグAFを「0」にリセットする(ステップ1105)とともに、第2の確認フラグBFも「0」にリセットする(ステップ1106)。
ステップ1109の後、CPU21は、フレーズ番号を特定するパラメータmをインクリメントする(ステップ1201)。次いで、CPU21は、パラメータmが、フレーズ数の最大数Mより大きいかを判断する(ステップ1202)。ステップ1202でYesと判断された場合には、CPU21は、RAM23に格納されていた演奏データを構成する全レコードを統合して、RAM23に再度格納する(ステップ1203)。
本実施の形態においては、図17および図18に示す評価処理において説明するように、選択されたパートについて、ある単位エリア(本実施の形態では小節)の演奏を行い、その演奏に対する評価値が第2の所定値Bより大きい場合のみ、演奏者の押鍵に基づく演奏データが保持される。つまり、図17のステップ1709に示すように、評価値が第2の所定値B以下である場合には、その小節の演奏にかかる演奏データのレコードはクリアされる。したがって、ステップ1203において得られる演奏データは、フレーズを構成する単位エリア(小節)の全てにおいて、評価値が所定レベルより大きいものとなる。
次いで、CPU21は、レッスンフラグLFを「0」にリセットするとともに、液晶表示装置14上のレッスン画面をクリアする(ステップ1205)。また、CPU21は、第2の確認フラグBFを「0」にリセットする(ステップ1206)。
スイッチ処理(ステップ302)が終了すると、CPU21は伴奏処理を実行する(ステップ303)。図14は、本実施の形態にかかる伴奏処理の例を示すフローチャートである。図14に示すように、CPU21は、スタートフラグが「1」であるかを判断する(ステップ1401)。CPU21は、ステップ1401でYesと判断された場合には、パート番号を特定するパラメータnを「1」に初期化する(ステップ1402)。
タイマ値tが、パラメータnで特定されるパートの、楽曲データの所定のタイムを示すレコード値T(n)より大きい場合(ステップ1403でYes)、つまり、タイマ値tが、上記所定のタイムが示す時間間隔以上となった場合には、CPU21は、楽曲データのアドレスAD(n)を進めて、次のレコードを読み出せる状態とする(ステップ1404)。次いで、CPU21は、アドレスAD(n)を用いて、楽曲データのレコードを読み出す(ステップ1405)。なお、タイマ値tは、タイマインタラプトが解除されたときに実行されるタイマインタラプト処理によりインクリメントされる。このタイマインタラプト処理は、図22を参照して後述する。
次いで、CPU21は、読み出されたレコードのデータ種別を判断する(ステップ1406)。レコードに時間間隔の情報であるタイムが格納されていた場合には、CPU21は、当該レコード値を、T(n)に格納する(ステップ1407)。また、パラメータnをインクリメントする(ステップ1407)。その後、CPU21は、パラメータnがパート数Nより大きいを判断し(ステップ1409)、ステップ1409でYesと判断された場合には、処理を終了する。
その一方、ステップ1406において、レコードにイベントが格納されていた場合、つまり、データ種別がイベントと判断された場合には、CPU21は、パラメータnが、ステップ604で設定されたパラメータPと異なるかを判断する(ステップ1410)。ステップ1410でYesと判断された場合には、CPU21は、レコードに示すイベント(ノートオンイベント或いはノートオフイベント)にしたがった処理を実行する(ステップ1411)。ステップ1410、1411では、パート選択スイッチ処理において選択されたパート以外のパートについては、楽曲データのレコードにしたがったノートオン(発音)やノートオフ(消音)が行なわれる。ステップ1409でNoと判断された場合、或いは、ステップ1410またはステップ1411の後、ステップ1402に戻る。その後、ステップ1402において、レコードのアドレスAD(n)が進められて、次のアドレスのレコードが読み出される。図14に示す伴奏処理においては、タイマ値tに基づいて、選択されたパートP以外のパートの楽音の発音および消音、および、次のイベントまでの時間間隔T(n)の更新が実行される。
伴奏処理(ステップ303)が終了すると、CPU21は、鍵盤処理を実行する(ステップ304)。図15および図16は、本実施の形態にかかる鍵盤処理の例を示すフローチャートである。図15に示すように、CPU21は、鍵を特定するキーナンバーKNを「0」に初期化して(ステップ1501)、KNが示す鍵の状態を判断する(ステップ1502)。鍵の状態は、「変化なし」、「オン(新規オン)」および「オフ(新規オフ)」の何れかとなる。鍵の状態が「オン」と判断された場合には、CPU21は、音高情報KEYとして、キーナンバーKNをセットし(ステップ1503)、音色パラメータPにしたがった所定の音色で、かつ、音高情報KEYが示す音高での発音を音源部26に指示する(ステップ1504)。その後、CPU21は、スタートフラグSTFが「1」であるかを判断する(ステップ1505)。
ステップ1505でYesと判断された場合には、CPU21は、演奏データにおいて、フレーズ(m)、小節(l)およびパート(P)のレコードに、タイムとして、タイマ値tを格納する(ステップ1506)。つまり、パート選択処理において選択されたパート(P)に関する演奏データのレコードが生成される。また、CPU21は、音高情報KEYに基づくノートオンイベントを生成する(ステップ1507)。その後、CPU21は、上記タイムのレコードに引き続いて、演奏データにおいて、フレーズ(m)、小節(l)およびパート(P)のレコードに、イベントとして、ステップ1508で生成されたノートオンイベントを格納する(ステップ1508)。キーナンバーKNが鍵の最大数以下であれば(ステップ 1509でNo)、CPU21は、KNをインクリメントして(ステップ1510)、ステップ1502に戻る。
ステップ1502において、鍵の状態が「オフ」と判断された場合には、CPU21は、音高情報KEYとして、キーナンバーKNをセットし(ステップ1601)、音高情報KEYが示す音高の楽音の消音を音源部26に指示する(ステップ1602)。その後、CPU21は、スタートフラグSTFが「1」であるかを判断する(ステップ1603)。ステップ1603でYesと判断された場合には、CPU21は、演奏データにおいて、フレーズ(m)、小節(l)およびパート(P)のレコードに、タイムとして、タイマ値tを格納する(ステップ1604)。また、CPU21は、音高情報KEYに基づくノートオフイベントを生成する(ステップ1605)。その後、CPU21は、上記タイムのレコードに引き続いて、演奏データにおいて、フレーズ(m)、小節(l)およびパート(P)のレコードに、イベントとして、ステップ1508で生成されたノートオフイベントを格納する(ステップ1606)。
鍵盤処理(ステップ304)が終了すると、CPU21は、評価処理を実行する(ステップ305)。図17および図18は、本実施の形態にかかる評価処理の例を示すフローチャートである。図17に示すように、CPU21は、スタートフラグSTFが「1」であるかを判断する(ステップ1701)。ステップ1701でYesと判断された場合には、CPU21は、タイマ値tが、「小節時間×(m×(L−1)+l)」以上になったかを判断する(ステップ1702)。小節時間とは、1小節に要する時間を意味する。「小節時間×(m×(L−1))は、第(m−1)番のフレーズまでの全小節が終了した時間を示し、これに、(小節時間×l)を加えることで、第m番のフレーズの、第l番の小節が終了したことが示される。
ステップ1702でYesと判断された場合には、CPU21は、楽曲データにおける、第mフレーズ、第l小節、第nパートの一連のレコード(レコード(m,l,n)とも称する)と、演奏データにおける、第mフレーズ、第l小節、第nパートの一連のレコード(m,l,n)とを、それぞれ比較する(ステップ1703)。図9に示すように、楽曲データの上記一連のレコード(m,l,n)(符号933参照)は、タイムおよびイベントのレコードを含む(符号940参照)。また、図10に示すように、演奏データの上記一連のレコード(m,l,n)(符号1033)も、タイムおよびイベントのレコードを含む(符号1040)。したがって、ステップ1703においては、楽曲データのレコードと、演奏データの対応するレコード(たとえば、レコード941とレコード1041、レコード942とレコード1042、レコード943とレコード1043)とが比較される。
次いで、CPU21は、レコードの比較に基づく評価値を算出する(ステップ1704)。たとえば、CPU21は、タイムに関して、楽曲データのレコード値と演奏データの対応するレコード値との差の絶対値に所定の重みを与えた誤差値、イベントに関して、楽曲データのレコードの値と演奏データの対応するレコードの値との差の絶対値に、他の所定の重みを与えた誤差値を算出する。それぞれの値は、基準となる楽曲データと実際の演奏荷に基づく演奏データとの間の誤差を表す指標となるため、これを累算することにより、小節内の演奏者による演奏の、楽曲データに基づく模範演奏に対する誤差の総和が得られる。
CPU21は、評価値として、所定の最大値から上記累算された誤差値を減じた値を得ることができる。演奏データのレコード値と、楽曲データのレコード値が一致すれば、累算された誤差値は「0」であるため、評価値は上記最大値を示す。その一方、レコード値の不一致が大きくなるのにしたがって、評価値は減少する。CPU21は、得られた評価値が、どの範囲に属するかを判断する(ステップ1705)。
評価値が、所定値Aより大きい場合には、CPU21は、液晶表示装置14の画面上のフレーズ表示領域中、評価記入欄DISP[l,n]に良好の演奏であったことを示す印(たとえば二重丸)を表示するとともに、DISP[l,n]と対応付けて評価値をRAM23に格納する(ステップ1706)。また、評価値が、第2の所定値Bより大きく、所定値A以下である場合には、CPU21は、液晶表示装置14の画面上のフレーズ表示領域中、評価記入欄DISP[l,n]にほぼ良好の演奏であったことを示す印(たとえば丸)を表示するとともに、DISP[l,n]と対応付けて評価値をRAM23に格納する(ステップ1707)。
その一方、評価値が、第2の所定値B以下である場合には、CPU21は、液晶表示装置14の画面上のフレーズ表示領域中、評価記入欄DISP[l,n]に、あまり良好ではない演奏であったことを示す印(たとえば×印)を表示するとともに、DISP[l,n]と対応付けて評価値をRAM23に格納する(ステップ1708)。また、評価値が第2の所定値B以下である場合には、CPU21は、評価に用いられた演奏データの一連のレコード(m,l,n)をクリアする(ステップ1709)。
次いで、CPU21は、小節を示すパラメータlをインクリメントして(ステップ1801)、パラメータlが、フレーズ内小節数Lより大きいかを判断する(ステップ1802)。ステップ1802でNoと判断された場合には、CPU21は、フレーズ表示領域の評価記入欄DISP[1,n]〜DISP[l−1,n]に関連付けられた評価値の平均値を算出する(ステップ1803)。CPU21は、算出された評価値を、対応する得点表示領域の得点表示欄に表示する(ステップ1804)。
図19〜図21は、本実施の形態にかかる液晶表示装置の画面上に表示されるレッスン画面の例を示す図である。図19に示す例においては、フレーズ表示領域1901において、現在進行中の単位エリアに進行バー1921が位置している。進行バー1921は、後述するタイマインタラプト処理において、時間の経過に伴ってその位置が移動する。また、パート表示欄1903において、ギターのパートが選択スイッチの操作により選択されていることが示されている(符号1911参照)。フレーズ表示領域1901においては、既に演奏がなされ、演奏データのレコードが生成されたパートおよび小節については、その評価値に基づく印が表示されている(たとえば、ピアノパートの評価記入欄1912、1913、ギターパートの評価記入欄1914)。また、評価値が得られたパートについて、その平均点が、得点表示領域の得点欄(たとえば、符号1915参照)に表示されている。選択スイッチの操作によりギターのパートが選択され、ギターパートの所定の小節の演奏が終了すると、進行バーは、図20に示すように、その小節の末尾まで移動する(符号2001参照)。また、評価処理において、当該小節の演奏についての評価値が算出され、フレーズ表示領域の所定の表下記入欄に印が表示される(符号2002参照)。
ステップ1804の後、CPU21は、スタートフラグSTFを「0」にリセットする(ステップ1806)とともに、タイマインタラプトを禁止する(ステップ1806)。次いで、あるフレーズ(第m番のフレーズであるフレーズ(m))に関して、CPU21は、全てのパート(第1番のパート〜第N番のパート)についての演奏が終了したかを判断する(ステップ1807)。ステップ1807でNoと判断された場合には、CPU21は、第1の確認フラグAFを「1」にセットし(ステップ1809)、また、パラメーラlを「0」にリセットして(ステップ1810)処理を終了する。ステップ1807でNoと判断された場合には、CPU21は、フレーズ表示領域の評価記入欄DISP[]に関連付けられた全ての評価値が、閾値(たとえば、前述した第2の所定値B)より大きいかを判断する(ステップ1808)。ステップ1808でNoと判断された場合にも、CPU21は、第1の確認フラグAFを「1」にセットする(ステップ1809)とともに、パラメータlを「0」にリセットして(ステップ1810)処理を終了する。
この第1の確認フラグAFは、あるパートについて1フレーズ分の演奏が終了しているが、全パートの演奏は終了しておらず(ステップ1807でNo)、或いは、全パートが終了していても、閾値以下の評価値がある場合(ステップ1808でNo)に「1」にセットされる。すなわち、あるパートについて1フレーズ分の演奏が終了しているが、次のフレーズには進めない場合に、第1の確認フラグAFは「1」となる。この第1の確認フラグAFは、パート選択スイッチ処理(図6)のステップ603において参照され、ステップ603において、AF=1であるときに、パートの選択が可能となっている。つまり、1フレーズ分の演奏が終了した段階で、パートの選択が可能となる。
ステップ1808でYesと判断された場合には、CPU21は、レッスン画面上に確認画面を重ねて表示する(ステップ1811)。図21は、本実施の形態にかかる液晶表示装置の画面上に表示されるレッスン画面の例を示す図であり、レッスン画面上に確認画面が重ねられている状態を示している。レッスン画面上に確認画面が重ねられるのに先立って、評価処理において、当該小節の演奏についての評価値が算出され、フレーズ表示領域の所定の表下記入欄に印が表示される(符号2102参照)。また、評価値に基づく平均点が算出され、得点表示領域の対応する得点表示欄(符号2103参照)に評価点の平均点が表示される。
レッスン画面2100において、フレーズに関して全てのパートが終了し、かつ、全ての評価値が閾値より大きいことが示されている。この場合に、「YES」対応スイッチ2111および「NO」対応スイッチ2112を含む確認画面2101が表示される。「YES」対応スイッチ2111および「NO」対応スイッチ2112のオンは、確認スイッチ処理(図11および図12)で検出される。ステップ1810の後、CPU21は、第2の確認フラグBFを「1」にセットする(ステップ1812)。
第2の確認フラグBFは、全パートについて1フレーズ分の演奏が終了しており(ステップ1807でYes)、かつ、全ての評価値が閾値より大きい場合(ステップ1808)に「1」にセットされる。すなわち、あるフレーズにおいて、全パートが一定の演奏レベルとなったときに、第2の確認フラグBFが「1」となる。この状態で、以下に述べるように、確認スイッチ処理(図11)において、「YES」対応スイッチをオンにすることが可能となり、さらに、「YES」対応スイッチがオンされることにより、次のフレーズの演奏教習に進むことが可能となる。
次に、本実施の形態にかかるタイマインタラプト処理について説明する。図22は、本実施の形態にかかるタイマインタラプト処理の例を示すフローチャートである。タイマインタラプト処理は所定の時間間隔で実行される。図22に示すように、タイマインタラプト処理においては、CPU21は、まず、タイマ値tをインクリメントする(ステップ2201)。次いで、CPU21は、前回のインタラプトとの時間間隔を小節時間に換算した値Δtを算出する(ステップ2202)。その後、CPU21は、レッスン画面のフレーズ表示領域に表示された進行バーを、ステップ2202で算出されたΔtに基づく位置に移動させる。
以下、上記処理を実行することによる具体的な演奏教習について説明する。パートン選択処理において、演奏者によりパート(たとえばギター)が選択され、スタートスイッチが操作されることにより、選択されたパート(ギター)の演奏教習が開始される。伴奏処理においては、選択されたパート(ギター)以外のパートの楽曲データのレコードが読み出され、楽曲データにしたがった楽音データの発音、消音が行なわれる(図14のステップ1405〜ステップ1411)。
鍵盤処理においては、演奏者の演奏にしたがって選択されたパートの音色の楽音が発音・消音される(図15のステップ1504、図16のステップ1602)。また、鍵盤処理においては、演奏者の演奏にしたがって、フレーズ(m)、小節(l)、パート(P)の演奏データのレコードが順次生成される(図15のステップ1507〜1509、図16のステップ1604〜1606)。
評価処理においては、CPU21は、選択されたパートの演奏が、1小節分終了すると、その小節について、楽曲データのレコードと、演奏データの対応するレコードとをそれぞれ比較して誤差値を算出し、誤差値に基づく評価値を算出する(図15のステップ1702〜1704)。評価値の範囲にしたがって、演奏者による当該1小節分の演奏が、「良好」、「ほぼ良好」、「良好ではない」と判断され、フレーズ表示領域の評価記入欄に、評価に対応する印が表示される。さらに、演奏家による、選択されたパートでのフレーズの演奏が終了すると、当該パートの各小節に対応付けられた評価点の平均点が算出される。
全てのパートについてフレーズの演奏が終了すると、全てのパートについて、各小節の評価点が所定の閾値(たとえば、第2の所定値B)より大きいかが判断され、評価点が閾値より大きい場合には、次のフレーズの演奏教習に進むことができるため、確認画面を表示して、演奏者に入力を求める(図18のステップ1807〜1808、1811〜1812)。「YES」対応スイッチがオンされた場合には、レッスン画面において、フレーズ表示領域および得点表示領域がクリアされ、かつ、フレーズを特定するパラメータmがインクリメントされるとともに、パートおよび小節を特定するパラメータn、lがそれぞれ初期化されて、次のフレーズについての演奏教習が可能な状態となる(図11のステップ1107〜1109、図12のステップ1201)。
このように、本実施の形態においては、楽曲のフレーズにおいて、パートごとの演奏教習が可能となる。また、パートごとの演奏教習において、単位エリアである小節ごとに、評価値が算出され、評価値に基づく判定(本実施の形態においては、「良好」、「ほぼ良好」、「良好ではない」という3つの判定)がなされ、液晶表示装置14上のレッスン画面において、小節ごとの判定結果(評価内容)が表示される。また、楽曲のフレーズの演奏が終了すると、当該終了したフレーズにおいて、演奏されたパートの評価値の平均値が算出され、液晶表示装置14上のレッスン画面において、得られた平均値が表示される。
本実施の形態においては、フレーズごとに、選択されたパートの当該フレーズ内の楽曲データと、当該フレーズ内の、鍵操作に基づく演奏データとが比較され評価値が算出される。全てのパートについて、全ての評価値が所定の閾値より大きいときに、次のフレーズの演奏教習が可能となる。したがって、あるフレーズにおいて複数パートの全ての演奏が
一定レベルになって初めて次のフレーズに進むことができ、演奏者はパート間の関係や複数パートによる全体構成を把握することが可能となる。
また、本実施の形態においては、選択されたパートについてフレーズの演奏が終了した場合に、選択スイッチの受付が可能となり、他のパートの選択が可能となる。したがって、少なくともフレーズの演奏が完了するまで、選択されたパートの演奏をする必要がある。したがって、一定の区間は連続的に演奏するため、フレーズ練習の効果を高めることができる。
また、本実施の形態においては、フレーズの楽曲データは、複数の単位エリア(たとえば小節)のデータから構成され、単位エリアごとの評価値が算出される。したがって、よりきめの細かい評価値を算出することが可能となる。また、単位エリアごとの評価値の全てが閾値より大きい(良好である)場合に、所定のレベルに達していると判断している。したがって、たとえば、小節ごとに良好な演奏ができた時点で初めて所定のレベルに達していることになり、より高度な演奏が実現可能となる。
さらに、本実施の形態においては、パートごとに、単位エリアにおける評価値に基づき、その演奏レベルを示す表示を、表示装置の画面上に表示する。これにより、演奏者は、小節などの細かい単位で、自己の演奏レベルを知ることが可能となる。
また、本実施の形態においては、単位エリアにおいて評価値が前記所定値より良好である場合のみ、当該単位エリアにおける演奏データが記憶装置に保持される。また、全てのパートについて評価値が所定レベルに達している場合に、単位エリアにおける演奏データを組み合わせて、当該フレーズにおける演奏データとして記憶装置に格納される。したがって、単位エリアごとに良好な演奏に基づく演奏データを保持することが可能となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。