A.第1実施形態
a.全体構成
本発明の第1実施形態を図面を用いて説明すると、図1はコンピュータ装置を含む音楽教習システムを概略的に示している。
コンピュータ装置は、バス10に接続されたCPU11、ROM12、RAM13、キーボード14及びディスプレイ15からなるコンピュータ本体部を備えている。キーボード14は、テンキー、文字キーなどの複数の入力操作子及び各入力操作子の操作をそれぞれ検出する複数の操作子スイッチからなり、各操作子スイッチはキーインターフェース14aを介してバス10に接続されている。ディスプレイ15は楽譜、文字などを表示するもので、表示インターフェース15aを介してバス10に接続されている。
このコンピュータ装置は、大容量の内部記憶装置としてのハードディスク16も備えており、同ディスク16はプログラム記憶エリア、ユーザ情報記憶エリアなどを有している。プログラム記憶エリアには、図2,4〜14にフローチャート又は表形式で表したプログラムが記憶される。ユーザ情報記憶エリアには、図15に示すように、このコンピュータ装置を利用するユーザ(演奏練習者)の人数nを表すユーザ人数データ、及び各ユーザに関するユーザ情報i(i=1〜n)が記憶される。ユーザ情報iは、ユーザの名前を表すユーザ名データ、使用時間に応じてユーザに課される料金を表す課金データ、後述するユーザモデルデータ、ユーザが練習中の曲数を表す曲数データ、及び後述する練習曲データ1,2などからなる。
ユーザモデルデータは、図16に示すように、読譜力及び演奏技能からなりユーザ(演奏練習者)の総合的な演奏能力を表す演奏能力データ、ユーザの性向を表す個人性向データとからなる。読譜力を表す演奏能力データとしては、単音旋律及び複音旋律における幹音及び派生音の認識の正確さ及び速さの能力を表すデータ、ト音記号、ヘ音記号、ハ音記号などの音部記号及びシャープ、フラットなどの調号の認識の正確さ及び速さの能力を表すデータなどが上げられる。演奏技能を表す演奏能力データとしては、右手及び左手による単音及び和音(複音)の打鍵の指力均等性、敏捷性、伸長性、方向順応性、黒鍵打鍵の正確性などの能力を表すデータ、リズム表現(テンポ維持)及び両手のコンビネーションの能力を表すデータなどが上げられる。なお、これらの演奏能力を表すデータは、満点を100点とした点数で表される。個人性向データは、ユーザの曲の好み、レッスンに関する希望、性格などを表す自由な書式(フォーマット)のデータで構成されている。
練習曲データ1,2は、図15に示すように、練習中の曲に関するデータであって、曲名データ、練習計画データ、楽譜データ、演奏データ、運指データ及び属性データからなる。なお、ユーザが1曲のみを練習中であれば練習曲データは1曲分のみであり、複数曲を同時に練習中であればその曲数分だけ用意される。図15は、2曲を練習中とした場合を例示している。
曲名データは楽曲名を表すものである。練習計画データは、図17に示すように、練習内容(音階練習、各種テンポの右手、左手、両手演奏練習など)、実施日、成功率、終了認定の有無、予定時間、消費時間など、練習内容の計画及び練習結果を表すデータからなる。楽譜データは、この楽曲に関する五線譜上の各音符、休符などをディスプレイ15に視覚表示するためのイメージデータである。演奏データは、この楽曲の演奏テンポを表すデータ、及び各音符の音高、符長、休符などを表す楽曲の進行に従ったデータからなる。運指データは、この楽曲の各音符を押鍵すべき手及び指を表すデータである。属性データは、図18に示すように、この楽曲を演奏するために必要な読譜力及び演奏技能を表す各要求レベルを表す点数(100点を満点とする)、及びこの楽曲の各練習内容(図17に示す練習内容)を修得するのに必要な標準時間を表すデータからなる。
バス10には、曲データインターフェース17aを介して非常に大容量のハードディスクで構成された内部データベース17が接続されている。内部データベース17には、多数の楽曲にそれぞれ対応した多数曲分の曲データが記憶されるようになっている。各曲データは、前述した曲名データ、楽譜データ、演奏データ、運指データ及び属性データ(図15参照)からなる。また、同バス10には、公共の電話回線、専用回線に接続される通信インターフェース18も接続されている。この通信インターフェース18は、外部に設けられて多数曲分の曲データを記憶した外部データベース21から前記回線を介して必要な曲データを入力できるようになっている。また、通信インターフェース18は、外部に設けたホストコンピュータ22などと交信可能となっている。
また、このコンピュータ装置には、バス10に接続されたディスクドライバ23a,24aも接続されており、各ドライバ23a,24aはフレキシブルディスク23及びコンパクトディスク24に対するデータ又はプログラムの書き込み及び読み出しを行う。フレキシブルディスク23及びコンパクトディスク24は外部記録装置として利用されるもので、前述した図2,4〜14のプログラムを予め記録しておき、ハードディスク16へ前記プログラムをインストールするために利用される。また、これらのディスク23,24は、予め記録しておいた曲データを内部データベース17に記憶させたり、予め記録しておいた各種データをハードディスク16へ記憶させたり、同ディスク16に記憶されている各種データの保存にも利用される。
さらに、バス10には、楽器インターフェース25aを介して練習用の電子楽器25が接続されるようになっている。この場合、電子楽器25は、例えば鍵盤型電子楽器で構成され、音高を指定するための複数の鍵、各鍵の押離鍵を検出する複数の鍵スイッチ、各鍵の鍵タッチ(鍵押圧力)を検出する複数の鍵タッチ検出回路、楽音の音色及び音量などを指定するための楽音制御操作子、各楽音制御操作子の操作を検出するための複数の楽音制御操作子スイッチ、並びに楽音信号を形成する楽音信号形成回路を備え、鍵の押離鍵及び楽音制御操作子の操作に応じて楽音信号を出力するようになっている。
このように構成した音楽教習システムは、CPU11がROM12に記憶されたプログラム(図示しない)及びハードディスク16などに記憶された前述したプログラムを実行することにより作動する。この作動前には、図示しないプログラムの実行により、フレキシブルディスク23又はコンパクトディスク24に予め記録又は記憶されている前記プログラムの一部又は全部をハードディスク16にインストールするとともに、外部データベース21、フレキシブルディスク23又はコンパクトディスク24内に記憶されている曲データを内部データベース17に転送するようにする。
b.全体作動
上記のように構成した音楽教習システムにおいては、ユーザが図2のメインプログラムを起動させると、CPU11は図2のステップ100にてメインプログラムの実行を開始し、ステップ102の初期設定処理を実行する。
そして、ステップ104にて、起動オブジェクトプログラム(図4)の実行により、演奏練習の準備を行う。この演奏準備においては、ユーザが登録済みのユーザであれば、登録ユーザ情報中のユーザ名データに基づいてディスプレイ15にユーザ名を表示し、その中からユーザにユーザ名を選択させておく。一方、ユーザが新規であれば、ユーザ名をキーボード14を用いて入力するとともに、ディスプレイ15を用いてユーザに対して演奏能力を表すユーザレベル(初級/中級/上級)を自己申告させる。この場合も、ユーザは、キーボード14を用いて、ユーザレベルを入力する。そして、前記起動オブジェクトプログラム(図4)の実行により診断オブジェクト(図7)が呼び出されて、診断オブジェクトプログラム(図7)の実行によりユーザレベルが診断される。
このユーザレベルの診断においては、前記申告ユーザレベルに応じた課題であって図16に示す種々の診断項目を診断するための複数種類の課題がディスプレイ15に順次表示される。ユーザはキーボード14又は電子楽器25を用いて前記課題に対して順次回答し、コンピュータ装置はこの回答に応答して種々の課題に対して診断する。こり診断結果は一次的にRAM13に記憶されるとともに、同診断結果と自己申告によるユーザレベルを判定して、両者が大きく違わなければ、ハードディスク16にユーザ情報の一部を構成するユーザモデルデータとしてユーザ名と共に書き込まれる。また、診断結果と自己申告とが大きくずれていれば、申告レベルを修正した上で前記診断が再度行われる。このように、ユーザの演奏能力に応じて各種項目について診断されるので、診断結果が的確なものになる。また、この診断中においては、タイマオブジェクトプログラム(図8)の実行により、診断時間が管理され途中結果の有無などによって診断時間が延長されたり、診断開始から所定時間が経過すれば診断結果の有無とは無関係に次の項目の診断に移る。これにより、診断が時間管理のためにむやみに途中で中断されることがなくなるとともに、一つの項目に留まることなく効率よくユーザの診断がなされる。
次に、以前からの練習曲を継続して練習する場合にはレッスン予定内容を決定するための後述するステップ106の処理にプログラムを進め、練習曲を新たに選択する場合には、前記起動オブジェクトプログラム(図4)の継続した実行により、ディスプレイ15を用いてユーザに練習曲に関する希望を問い合わせる。ユーザは、キーボード14を用いて希望を入力する。そして、候補曲選択ルーチン(図10)の実行により、ユーザが要望する練習内容をディスプレイ15を用いて問い合わせ、ユーザはキーボード14を用いて同問い合わせに対して答える。そして、前記診断結果を表すユーザモデルデータ及び前記ユーザの要望に応じた練習曲を内部データベース17より複数曲分選択して、ディスプレイ15に表示する。ユーザは、前記複数の練習曲の中からキーボード14を用いて一つの練習曲を選択する。その後、前記選択した練習曲に関する曲データ中の属性データとユーザモデルデータとの比較により、このユーザにとって難しい演奏箇所及び練習時間をディスプレイ15に表示して、ユーザに選択曲の決定を問い合わせる。ユーザがこの選択曲を否定すれば、前記複数の曲の表示ステップからの選択動作が繰り返される。なお、練習曲は通常一曲であるが、複数曲でもよい。このように、ユーザの要望も取り入れた上で、ユーザレベルに応じて練習曲が決定されるので、決定される練習曲がユーザにとって適切なものとなるとともにユーザも楽しみながら演奏練習を行うことができる。。
この練習曲の決定後、ユーザモデルデータにより表された演奏能力に応じて練習曲に対する練習計画が作成され、ディスプレイ15に表示されるとともにユーザに同練習計画に対する要望が問い合わされる。ユーザはキーボード14を用いて要望を入力し、この要望に応じて練習計画が一部修正された後に最終的に練習計画データとしてハードディスク16にユーザ情報の一部として記憶される。このように、練習曲に対する練習計画が、ユーザの演奏能力及びユーザの要望に応じて決定されるので、ユーザは後述する演奏練習を無理なくかつ楽しみながら行うことができる。
ふたたび、図2のメインプログラムの説明に戻ると、コンピュータ装置は、ステップ106にて、レッスン内容決定オブジェクトプログラム(図5)の実行により、ユーザの希望も考慮して、ウォーミングアップ、復習及び練習曲の演奏練習の有無及びこれらの各練習時間からなる今回のレッスン予定内容を決定する。これにより、ユーザの希望も考慮された演奏練習が行われるようになる。
そして、ステップ108にて前記決定したレッスン予定内容からウォーミングアップ、復習及び練習曲の演奏練習の各練習時間を順次取り出して、同予定内容に従ってステップ110にてレッスンオブジェクトプログラム(図6)を実行することにより、ウォーミングアップ、復習及び練習曲の演奏練習を順次行う。練習曲の演奏練習においては、読譜練習及びメトロノームステップ練習に対する時間配分をした後、練習曲を小節毎、フレーズ毎などに分割するとともに分割した複数の練習部分がディスプレイ15に順次表示されて、読譜練習及びメトロノームステップ練習が前記作成した練習計画に従って行われる。読譜練習は譜読みに重きが置かれて鍵盤にて正しい押鍵がなされることを期待するもので、メトロノームステップ練習は押鍵タイミングに重きが置かれて正しいタイミングで正しい鍵が押鍵されることを期待するものである。
そして、このような演奏練習の結果は所定の基準に従って評価されるとともに採点され、この評価及び採点は前記複数の練習部分毎及び練習曲全体の両者についてなされ、各採点結果が良好でなければ、前記複数の練習部分の順次表示及び前記練習計画にしたがった練習の進行が停止されるなど、採点結果に応じて練習の進度が制御される。これにより、ユーザによる演奏修得の度合いに応じて練習の進度が決定されるので、ユーザは確実かつ効率的に楽器演奏の練習を行うことができる。また、このような演奏練習中においては、タイマオブジェクトプログラム(図8)の実行により練習時間が管理され、途中結果の有無などによって練習時間が延長されたり、練習開始から所定時間が経過すれば、演奏練習の終了とは無関係に次の練習課題に移される。これにより、演奏練習が時間管理のためにむやみに途中で中断されることがなくなるとともに、一つの練習課題に留まることなく効率よく演奏練習がなされる。
前記のようなウォーミングアップ、復習及び練習曲の演奏練習の全てを終了すると、コンピュータ装置はステップ112にてレッスン終了と判定して、ステップ114にてレッスンオブジェクトプログラム(図6)の実行によりレッスンの終了処理を行う。この終了処理においては、前記評価及び採点結果、練習に要した時間などのデータが、練習計画データに書き加えられるとともに、ユーザレベルを表すユーザモデルが今回の練習結果に応じて修正される。これにより、ユーザの演奏の進度判定が的確になされるとともに、今後の練習のためにユーザレベルが適切に利用できるようになる。そして、ステップ116にてこのプログラムの実行を終了する。
一方、前記のような診断及び練習中においては、タイマオブジェクトプログラム(図8)及び課金オブジェクトプログラム(図9)が並行して実行され、コンピュータ装置の使用時間に応じた料金がユーザに課金される。また、この料金は、診断及び練習の内容などによっても異なっている。これにより、この音楽教育システムの使用に対する適切な料金がユーザから徴収できるようになる。
次に、本発明の第1実施形態をさらに詳細に説明するが、同詳細な説明の前に、本明細書におけるオブジェクトの概念及び各オブジェクトの連係について説明しておく。
この第1実施形態においては、オブジェクト指向プログラムを採用している。オブジェクトとはオブジェクト指向型計算モデルの構成単位を意味しており、具体的には前記各構成単位毎のプログラム処理を示す。図3は、第1実施形態にて実行される各種オブジェクトの連係図であり、前記メインプログラムの実行により、起動オブジェクト200、レッスン内容決定オブジェクト300及びレッスンオブジェクト400がこの順に指定される(太矢印参照)。起動オブジェクト200は、診断オブジェクト500、タイマオブジェクト600及び課金オブジェクト700を指定するとともに各オブジェクト500〜700に対してメッセージを発行する(矢印参照)。レッスンオブジェクト400は、タイマオブジェクト600及び課金オブジェクト700を指定するとともに各オブジェクト600,700に対してメッセージを発行する(矢印参照)。診断オブジェクト500は、タイマオブジェクト600及び課金オブジェクト700を指定するとともに各オブジェクト600,700に対してメッセージを発行する。タイマオブジェクト600は、課金オブジェクト700を指定するとともに同オブジェクト700に対してメッセージを発行する。また、起動オブジェクト200、レッスンオブジェクト400及び診断オブジェクト500は、それぞれ自己に対してもメッセージを発行する(矢印参照)。なお、図3の起動オブジェクト200内の候補曲選択、並びにレッスンオブジェクト400内の読譜練習及びメトロノームステップ練習に関しては、具体的処理内容がフローチャートにより示されている。
次に、各オブジェクトにて実行される処理内容の記述方法について説明しておく。この第1実施形態においては、各オブジェクトにて実行されるプログラムの具体的処理内容を、通常のフローチャートを用いた記述による煩雑化を避けるために、表形式の処理工程図により記述してある。この処理工程図においては、図4〜図9に示すように、左欄には各オブジェクトに対して発行されるメッセージを記載し、右欄には前記メッセージ毎の具体的な処理内容(メッセージに対するアクション)を記載し、中央欄には前記処理内容を実行するための条件を記載してある。基本的には、メッセージ内容に該当しかつ条件に合致した処理が上から下に順次実行され、条件の記載されていない処理は常に実行される。なお、右欄内の「O」は指定するオブジェクト名を示し、「M」はメッセージ内容を示し、*印のついた候補曲選択(図4)、読譜練習及びメトロノームステップ練習(図6)に関しては、前述のように処理内容を表すフローチャートが別途用意されていることを示している。また、オブジェクト名の指定されないメッセージは、自己のオブジェクトを指定していることを意味している。
以下、起動オブジェクト200、診断オブジェクト500、レッスン内容決定オブジェクト300及びレッスンオブジェクト400についてこの順に詳しく説明するとともに、タイマオブジェクト600及び課金オブジェクト700に関しては、関連したオブジェクトの説明中にて説明する。
c.起動オブジェクト
起動オブジェクト200は、図2のステップ104にて指定されるとともに練習開始メッセージを受けて処理を開始するもので、ステップ202にてタイマオブジェクト600を指定して初期化メッセージを発行し、ステップ204にて課金オブジェクト700を指定して初期化メッセージを発行し、ステップ206にて課金オブジェクト700を再度指定して実行プログラム通知メッセージを発行する。なお、この実行プログラム通知メッセージの発行の際には、起動オブジェクト200の練習開始メッセージに伴う処理であることも、課金オブジェクト700に対して通知される。
タイマオブジェクト600は、図8に示すように、ステップ602にてCPU11に内蔵のタイマによる時間計測値を初期値「0」に設定し、これにより、タイマは時間計測を開始し始めて、ステップ604の処理により前記時間計測値に基づいて所定時間毎(例えば1分毎)に課金オブジェクト700を指定して割り込みメッセージを繰り返し発行し始める。
一方、課金オブジェクト700は、図9に示すように、前記起動オブジェクト200による初期化メッセージに応答して、ステップ702にてRAM13内に設けた課金データを初期値「0」に設定する。また、課金オブジェクト700は、前記起動オブジェクト200による実行プログラム通知メッセージに応答して、ステップ704にてRAM内に設けた単位料金データを前記練習開始メッセージに伴う処理に対応して予め定められている金額に設定する。また、課金オブジェクト700は、前記タイマオブジェクト600による割り込みメッセージに応答して、ステップ706にてRAM内の課金データに前記設定した単位料金データを累算する。
ふたたび、起動オブジェクト200の説明に戻り、前記ステップ206の処理後、自己に対してユーザ問い合わせメッセージを発行する。起動オブジェクト200は、前記メッセージに応答して、ステップ214にてディスプレイ15にて既に登録済みユーザであるか、新規ユーザであるかを表示してユーザに問い合わせ、キーボード14からの入力を待つ。ユーザがキーボード14を用いて前記いずれかを選択すると、同選択が登録済みユーザであれば、起動オブジェクト200はステップ216にてハードディスク16内のユーザ情報記憶エリアの該当ユーザ情報をユーザに単に指定させる。
一方、ユーザが新規ユーザを選択すれば、起動オブジェクト200はステップ218にてハードディスク16にユーザ情報を格納する記憶エリアを確保するとともに、ディスプレイ15にてユーザ名の入力を指示し、ユーザによりキーボード14にて入力されたユーザ名を前記記憶エリアに記憶する。次に、ステップ220にて、ディスプレイ15にユーザのレベル(初級、中級、上級)を自己申告する旨の表示を行い、ユーザによりキーボード14にて入力されたレベルをRAM13に一時記憶しておく。次に、起動オブジェクト200は、ステップ222にて自己に対してユーザレベル診断メッセージを発行する。
このメッセージに応答して、起動オブジェクト200は、ステップ226にて診断オブジェクト500を指定して起動メッセージを発行する。このメッセージの発行と同時に、起動オブジェクト200は、診断オブジェクト500に対して、条件データとして診断を表すデータと共に、前記自己申告したユーザレベル及び予め決められた診断時間(例えば10分)を表すデータを与える。診断オブジェクト500は、詳しくは後述するように、前記申告ユーザレベルに応じた各種課題をユーザに与えることにより前記ユーザモデル(図16)に対応した各種の項目に関して読譜診断及び演奏診断をユーザレベルに応じて行い、各種項目毎の点数をRAM13内に一時記憶する。次に、起動オブジェクト200は、ステップ228にて前記各種項目毎の点数、各種項目の診断に要した時間及び申告ユーザレベルとに基づいてユーザレベル(初級、中級、上級)を計算し、ステップ230にて自己に対してユーザレベル決定メッセージを発行する。なお、前記ユーザレベルの計算に申告ユーザレベルを用いた理由は、診断のために利用される課題が申告ユーザレベルにより異なるためであり、ユーザレベルを申告させた理由はレベルに応じた課題をユーザに与えることによって診断の精度を高めるためである。
前記ユーザレベル決定メッセージに応答して、起動オブジェクト200はステップ232にて前記申告したユーザレベルと前記計算したユーザレベルとを比較し、両者の差が大きければ、ステップ234にて申告ユーザレベルを修正する。例えば、ユーザが初級と申告したにもかかわらず、診断に基づくユーザレベルが上級となった場合には、申告ユーザレベルを中級にする。また、ユーザが上級と申告したにもかかわらず、診断に基づくユーザレベルが初級となった場合には、申告ユーザレベルを中級にする。前記ステップ234の処理後、起動オブジェクト200は、前記同様に自己に対してユーザレベル診断メッセージを発行して、ユーザのレベルを再度診断する。これにより、ユーザの能力にあった診断を可能として、診断の正確さを向上させることができる。一方、前記一回の診断又は複数回の診断により申告したユーザレベルと計算したユーザレベルとがほぼ等しくなれば、ステップ238にて前記RAM13の各種項目毎の点数、各種項目の診断に要した時間及び申告ユーザレベルに基づいて図16の各項目に対応した診断結果を計算し、同診断結果を表すデータをハードディスク16のユーザ情報記憶エリアにユーザモデルとして書き込むとともに、ユーザ人数データを増加させておく。
次に、起動オブジェクト200は、ステップ224にて付属情報を取得する。この付属情報の取得においては、起動オブジェクト200はディスプレイ15に質問を表示しながらユーザの曲の好み、レッスンに関する希望、性格などをキーボード14を用いて入力させて、前記入力内容をハードディスク16にユーザモデルデータの付属情報として書き込む。
このステップ224の処理の終了により、起動オブジェクト200はユーザの問い合わせメッセージに関する処理を全て終了したことになるので、次にステップ210にて自己に対して練習曲選択メッセージを発行する。このメッセージの発行に応答して、起動オブジェクト200は、ステップ240にて、ディスプレイ15を用いてユーザに対して前回の練習曲と同一曲を練習したいか、新曲を練習したいかを問い合わせる。なお、始めて練習を開始する場合には、この問い合わせに対する回答は自動的に新曲側になる。
この問い合わせにより、ユーザが新曲を選択した場合、又は始めて練習を開始する場合、起動オブジェクト200は、ステップ242にて候補曲選択ルーチンを実行する。この候補曲選択ルーチンは図10に詳細に示されており、起動オブジェクト200は、ステップ260にて同ルーチンの実行を開始し、ステップ261にてユーザに練習内容を選択させる。この場合、起動オブジェクト200は、練習内容として、(イ)レパートリー拡張、(ロ)特定技術のレベルアップ、(ハ)全体的なレベルアップ、(ニ)特定曲に挑戦などをディスプレイ15に表示し、ユーザにより入力されたキーボード14からの選択情報を入力する。次に、起動オブジェクト200は、ステップ262にて、前記選択内容が(ロ)であれば、リズム練習、左手の練習などのユーザモデルに示した各項目の特定技術をディスプレイ15に表示して、ユーザに同表示の中から特定技術を選択させる。また、前記選択内容が(ロ)又は(ハ)であれば、ステップ263にて、ハードディスク16に記憶されているユーザモデルの各データ、特にユーザの性格に基づいて一曲の練習でレベルアップ可能なレベル幅を計算する。次に、ステップ264にて、前記レベル幅に基づいてユーザモデルデータの各項目毎に目標レベル値を計算してRAM13に一時記憶する。
そして、ステップ265にて、前記各項目毎の目標レベル値と、前記ステップ261,262にて選択された練習内容とに基づいて、内部データベース17内の曲データ中の属性データ(図18)を参考にして、前記目標レベル以上の演奏能力(読譜力及び演奏技能)を必要とするとともに前記練習内容のユーザの希望に適合した候補曲の曲データを前記データベース17から検索する。次に、ステップ266にて検索した候補曲の曲名をディスプレイ15に表示し、ステップ267にてユーザにキーボード14を用いて選択させる。そして、ステップ268にて前記選択した曲名に対応した曲データ中の属性データを内部データベース17から読み出して、ステップ269にて前記計算したユーザモデルの各項目の目標レベルと属性データ中の各項目の要求レベルとを比較して、レベル差の大きい項目を表示する。そして、ステップ270にて前記各項目毎のレベル差に応じて、目標レベルをクリアするのに必要な時間を予め決めた基準に従って計算し、ステップ271にて同時間を予想練習時間としてディスプレイ15に表示する。
そして、ステップ272にて、ディスプレイ15を用いて選択曲を承認するか否かをユーザに対して問い合わせる。この問い合わせに対して、ユーザがキーボード14を用いて承認する旨の入力をすれば、ステップ273にてこの候補曲選択ルーチンの実行を終了する。一方、前記問い合わせに対して、ユーザが承認しなければ、ステップ266にて複数の候補曲をディスプレイ15に表示し、ステップ267〜272の処理により、選択曲の決定をふたたび行う。
この候補曲選択ルーチンの実行後、起動オブジェクト200は、ステップ244にて前記選択曲に関する曲データの全てを内部データベース17から読み出して、RAM13及びハードディスク16に書き込む。そして、ステップ246にてRAM13上にて練習計画案を作成する。この練習計画案の作成においては、前記計算した各項目のレベル差に基づいて、図17に示すように、予め用意されている多数の練習項目の中からユーザが練習すべき項目が決定されるとともに、各項目毎の練習予定時間が計算される。ただし、図17の表中、実施日、成功率、終了の認定及び消費時間に関しては空欄のままに保たれる。
次に、ステップ248に前記作成した練習計画案をディスプレイ15に表示し、ステップ250にてディスプレイ15を用いて前記練習計画案に対するユーザの要望を問い合わせる。そして、ステップ252にて、要望があれば練習計画案を前記要望に応じて修正し、要望がなければプログラムをステップ254に進める。ステップ254においては、この練習計画案をハードディスク16内のユーザ情報記憶エリアのユーザ名に対応した箇所に練習計画データとして記憶させる。
一方、前記ステップ240にて練習中の曲が選択されれば、ステップ256の処理が実行される。ステップ256においては、前記ステップ218にて入力されたユーザ名に対応したユーザ情報の中の練習曲データがハードディスク16から読み出されて、RAM13に書き込まれる。なお、練習曲が複数存在する場合には、ディスプレイ15にその旨が表示され、キーボード14を用いてユーザが選択した練習曲データがRAM13に書き込まれる。
d.診断オブジェクト
次に、起動オブジェクト200のステップ226にて指定される診断オブジェクト500(図7)について説明する。この場合、前記ステップ226の処理により、起動メッセージが発行され、このメッセージと共に診断を表すデータが条件データとして診断オブジェクト500に送られ、また自己申告したユーザレベルを表すユーザレベルデータ及び診断時間を表す時間データも診断オブジェクト500に送られる。
診断オブジェクト500は、ステップ502〜506の処理後、前記条件データに基づいてステップ508〜512の処理を実行する。ステップ508の処理は、診断オブジェクトを自己指定するとともに楽譜力診断を表すデータを条件データとして起動メッセージを発行して、ステップ514〜532の処理を実行させることにより、単音読譜、複音読譜及び音部記号読譜の各診断を行うものである。ステップ510の処理も、診断オブジェクトを自己指定するとともに演奏技能診断を表すデータを条件データとして起動メッセージを発行して、ステップ534〜568の処理を実行させることにより、打鍵に関して右手及び左手毎に単音打鍵及び複音打鍵の各診断を行うものである。ステップ512の処理は、楽想記号の理解力(読譜力の一部を構成する)を診断するものである。そして、これらの各診断の終了毎に、診断オブジェクト500は、ステップ570,572の処理を実行する。また、前記ステップ502〜506の処理は、各診断のために自己指定される毎に実行される。
各診断内容については後述することにして、ステップ502〜504,570,572について先に説明しておく。ステップ502においては、起動メッセージと共に常に送られる時間データにより表されて上位の診断項目に与えられている時間を、下位の診断項目のそれぞれに配分する。例えば、起動オブジェクト200により診断オブジェクト500が指定された場合には、ユーザを診断するための合計時間(例えば10分)を読譜力、演奏技能、楽想記号理解力の各診断に所定時間(例えば4分、4分、2分)ずつ配分する。また、ステップ508の処理により、読譜力診断データを条件データとして起動メッセージが発行された場合には、前記読譜力診断に割り当てられた時間(例えば4分)を、単音読譜力、複音読譜力及び音部記号読譜力の各診断のために所定時間(例えば2分、1分、1分)ずつ配分する。
ステップ504においては、課金オブジェクト700に対して実行プログラム通知メッセージを発行する。このとき、診断項目を表すデータも課金オブジェクト700にも送られる。これにより、課金オブジェクト700は、前記と同様に、ステップ704にてRAM内の単位料金データを診断に対応して予め定められている金額に設定する。したがって、タイマによる所定時間の計測毎に診断に対応した単位料金が課金データに累算されていくことになる。
ステップ506にてタイマオブジェクト600に対してセットメッセージを発行する。この時、次の診断処理に配分されている時間を表すデータも、タイマオブジェクト600に対して送られる。これに応答して、タイマオブジェクト600(図8)は、ステップ606にて前記配分された時間を表すデータを記憶し、同時間の経過後にメッセージの発行元のオブジェクトに対してプロセス終了要求メッセージを発行する。例えば、ステップ514にて単音読譜力診断データを条件データとして起動メッセージが発行された際には、単音読譜力診断に配分された時間が経過しても、単音読譜力診断が終了しない場合には、タイマオブジェクト600は、診断オブジェクト500に対してプロセス終了要求メッセージを発行する。
いま、前記単音読譜力、複音読譜力、音部記号読譜力、右手及び左手の各単音打鍵及び複音打鍵、リズム表現、両手演奏及び楽想記号理解力の各診断が前記配分された時間内に終了されれば、診断オブジェクト500は、前記各診断後、ステップ570の処理を実行する。ステップ570においては、タイマオブジェクト600に対して開放メッセージを発行する。この開放メッセージの発行に応答して、タイマオブジェクト600(図8)は、ステップ608にてプロセス終了要求メッセージを発行するための前記セットを解除する。したがって、この場合には、プロセス終了要求メッセージは発行されない。一方、診断オブジェクト500は、ステップ572にて今回の診断項目のために発行された時間が残っていれば、今後行われる診断に対して前記残り時間を与える。この場合、次の診断のみに時間を与えてもよいし、今後行われる複数の診断に対して残り時間を適当に配分するようにしてもよい。
一方、前記各診断が配分された時間以内に完了しない場合には、前記のように、ステップ606の処理によりタイマオブジェクト600が診断オブジェクト500に対してプロセス終了要求メッセージを発行する。このメッセージの発行に応答して、診断オブジェクト500は、現在診断中の診断項目に対する中間診断結果を表すデータがRAM13にあるか否かにより、ステップ574又はステップ578の処理を実行する。中間診断結果があれば、ステップ574にて同中間診断結果をそのままにして、ステップ576にて進行中の診断処理を強制的に終了させて次の処理に進める。また、中間診断結果がなければ、ステップ578にて延長時間を設定し、ステップ580にてタイマオブジェクト600に対して前記延長時間を表す時間データと共にセットメッセージを発行し、ステップ582にてRAM13に終了要求フラグをセットする。これにより、タイマオブジェクト600は、ステップ606の処理のために以前に指定された時間に対して前記延長時間をセットする。そして、延長時間内に前記処理中の診断結果がでれば、前述のように次の診断に移行する。
また、前記時間延長によっても診断結果が得られない場合には、タイマオブジェクト600が再びプロセス終了要求メッセージを発行する。しかし、この場合には、前記ステップ582の処理により終了要求フラグがセットされているために、診断オブジェクト500は、ステップ584にて最低点(例えば0点)を診断結果としてRAM13に一時記憶する。そして、ステップ586にて、終了要求フラグをクリアしておく。
d−1.読譜力診断
次に、読譜力診断について説明する。起動オブジェクト200によって条件データとして診断を表すデータと共に起動メッセージが供給されて、診断オブジェクト500が、前述のステップ502〜506の処理の実行後、ステップ508にて自己のオブジェクト500に対して起動メッセージを発行する。この場合、前記メッセージと共に、読譜力診断を表すデータが条件データとして送られるとともに、ユーザレベル(初級、中級、上級)及び前記読譜力診断のために配分された時間を表す時間データも送られる。この起動メッセージの発行に応答して、診断オブジェクト500は、前述したステップ502〜504の処理の実行後、ステップ514にて自己のオブジェクト500に対して起動メッセージをふたたび発行する。この場合、前記メッセージと共に、単音読譜力診断を表すデータが条件データとして送られるとともに、ユーザレベル(初級、中級、上級)及び前記単音読譜力診断のために配分された時間を表す時間データも送られる。この起動メッセージの発行に応答して、診断オブジェクト500は、再び前述したステップ502〜506の処理の実行後、条件データである単音読譜力診断を表すデータに基づいてステップ520の処理を実行する。
ステップ520においては、幹音のみで構成されていて予め用意された単音からなる音符列がディスプレイ15上に表示される。ユーザは、ディスプレイ15上の音符列を見ながら、電子楽器25にて前記音符列に応じた鍵を順次押していく。そして、診断オブジェクト500は、前記表示した音符列と押鍵された鍵とを比較して、その正確さを幹音読譜力の診断結果としてRAM13に一時記憶しておく。次に、診断オブジェクト500は、ステップ522にて、派生音を含む予め用意された単音からなる音符列をディスプレイ15上に表示して、前記と同様にして派生音に関する押鍵の正確さにより派生音読譜力の診断結果をRAM13に一時的に記憶しておく。次に、診断オブジェクト500は、ステップ524にて、4分音符、8分音符などの各種符長の音符と4分休符、8分休符などの各種符長の休符の混じった予め用意された単音からなる音符列をディスプレイ15上に表示して、ユーザによる押鍵タイミングと前記音符列の符長との比較によりリズム読譜力を診断してその結果をRAM13に記憶しておく。なお、診断の精度を上げるために、前記表示される各音符列は、供給されたユーザレベルデータが初級から上級を示すにしたがって難しいものになる。
前記ステップ524の処理後、診断オブジェクト500は、ステップ570,572の処理を経てステップ516の処理を実行する。ステップ516においては、自己のオブジェクト500に対して複音読譜力診断を表すデータを条件データとして起動メッセージを発行する。この場合も、ユーザレベルデータ(初級、中級、上級)及び前記複音読譜力診断のために配分された時間を表す時間データも前記メッセージと同時に送られる。このように、診断オブジェクト500の一つの処理により自己のオブジェクト500を指定して診断の項目を下層に下げていく場合には、ユーザレベルデータ及び時間データが必ず送られるので、説明の重複を避けるために、以下の説明ではこれらのデータの転送についての説明を省略する。また、後述する各診断処理においても、前記ユーザレベルデータに応じて異なる課題が与えられるが、この点についても説明を省略する。
前記複音読譜力診断を表すデータを条件データとした起動メッセージの発行に応答して、診断オブジェクト500は、前記ステップ502〜506の処理後、ステップ526の処理を実行する。このステップ526の処理は、複音の読譜力を診断するもので、前記単音読譜力の診断を複音を同時に押鍵する診断に換えただけであるので、詳しい説明を省略する。
前記ステップ526の処理後、診断オブジェクト500は、ステップ570,572の処理を経て、ステップ518の処理を実行する。ステップ518においては、自己のオブジェクト500に対して音部記号読譜力を表すデータを条件データとして起動メッセージを発行する。この起動メッセージの発行に応答して、診断オブジェクト500は、前記ステップ502〜506の処理後、前記条件データである音部記号を表すデータに基づいてステップ528〜532の処理を実行する。
ステップ528の処理はト音記号の読譜力を診断するもので、跳躍を含む音符列により構成されていて予め用意されたト音記号で書かれた音符列がディスプレイ15上に表示される。ユーザは、ディスプレイ15上の音符列を見ながら、電子楽器25にて前記音符列に応じた鍵を順次押していく。そして、診断オブジェクト500は、前記表示した音符列と押鍵された鍵とを比較して、その正確度をト音記号読譜力の診断結果としてRAM13に一時記憶しておく。次に、ステップ530,532において、ヘ音記号及びハ音記号に対して前記同様な診断を行う。前記ステップ530,532の処理後、ステップ570,572の処理を経て読譜力の診断を終了する。
d−2.演奏技能診断
次に、演奏技能診断について説明する。前記読譜力の診断の終了後、診断オブジェクト500は、ステップ510にて、自己のオブジェクト500に対して演奏技能診断を表すデータを条件データとして起動メッセージを発行する。この起動メッセージの発行に応答して、診断オブジェクト500は、前記ステップ502〜506の処理後、ステップ534の処理を実行する。ステップ534においては、診断オブジェクト500は、自己のオブジェクト500に対して打鍵診断を表すデータを条件データとして起動メッセージを発行する。これに応答して、診断オブジェクト500は、前記ステップ502〜506の処理後、ステップ540の処理を実行する。ステップ540においては、診断オブジェクト500は、自己のオブジェクト500に対して右手の打鍵診断を表すデータを条件データとして起動メッセージを発行する。これに応答して、診断オブジェクト500は、前記ステップ502〜506の処理後、ステップ544の処理を実行する。ステップ544においては、診断オブジェクト500は、自己のオブジェクト500に対して右手の単音打鍵診断を表すデータを条件データとして起動メッセージを発行する。これに応答して、診断オブジェクト500は、ステップ502〜506の処理後、ステップ548〜552の診断処理を実行する。
ステップ548の処理は、指力の均等性を診断するもので、ピアノp、メゾフォルテmf、フォルテfなどの強弱記号のついた音符列をディスプレイ15に表示するとともに、表示した音符列の強弱と電子楽器25における鍵タッチとを比較して均等性の診断を行い、診断結果をRAM13に一時記憶する。ステップ550の処理は、どの程度速いテンポまで演奏できるかの敏捷性を診断するもので、簡単な音符列のテンポ表示を異ならせてディスプレイ15に表示するとともに、表示された音符列と電子楽器25にて押鍵された鍵の比較による押鍵の正確さにより敏捷性の診断を行い、診断結果をRAM13に一時記憶する。ステップ552の処理は、上昇及び下降する音符に対する方向順応性を診断するもので、指くぐりを必要とするとともに上昇及び下降する音符列をディスプレイ15に表示し、表示した音符列と電子楽器25にて押鍵された鍵との比較による押鍵の正確さ、特に上昇及び下降への切り換え点の正確さにより方向順応性の診断を行い、診断結果をRAM13に一時記憶しておく。なお、これらの診断においては、表示される音符列は単音列で構成されている。
これらのステップ548〜552の診断が終了すると、診断オブジェクト500は、ステップ570,572の処理を経てステップ546の処理を実行する。ステップ546においては、自己のオブジェクト500に対して右手の複音打鍵診断を表すデータを条件データとして起動メッセージが発行される。この起動メッセージに応答して、診断オブジェクト500は、ステップ502〜506の処理後、ステップ554,556の診断処理を実行する。ステップ554の処理は、複音の指力均等性を診断するもので、和音を構成する複数の音符と各音符に対応して指番号を順次ディスプレイ15に表示して、電子楽器25にて押鍵された各鍵(各指)の鍵タッチの相違をチェックして前記均等性の診断を行い、同診断結果をRAM13に一時記憶しておく。ステップ556の処理は、どの程度離れた音高の押鍵まで可能であるかの手の伸長性を診断するもので、音高の離れた複数の音符と各音符に対応して指番号を順次ディスプレイ15に順次表示して、電子楽器25にてユーザが押鍵可能であるかの診断を行い、同診断結果をRAM13に一時記憶しておく。
これらのステップ554,556の終了後、診断オブジェクト500は、ステップ570,572の処理を経てステップ542の処理を実行する。ステップ542においては、自己のオブジェクト500に対して左手の打鍵診断を表すデータを条件データとして起動メッセージを発行する。この起動メッセージに応答して、診断オブジェクト500は、ステップ502〜506の処理後、ステップ558の診断処理を実行する。ステップ558の処理は、ステップ544〜556の全ての処理を左手に置き換えたものであるので、説明を省略する。これにより、左手に関しても、前記右手の場合と同様に打鍵診断結果がRAM13に一時記憶される。
このステップ558の処理後、診断オブジェクト500は、ステップ570,572の処理を経てステップ536の処理を実行する。ステップ536においては、自己のオブジェクト500に対してリズム診断を表すデータを条件データとして起動メッセージを発行する。この起動メッセージに応答して、診断オブジェクト500は、ステップ502〜506の処理後、ステップ560〜564の診断処理を実行する。ステップ560の処理は、4連符系のリズム表現能力を診断するもので、4連符系の音符列を順次ディスプレイ15に表示して、電子楽器25にて押鍵されたタイミングの正確さの診断を行い、同診断結果をRAM13に一時記憶しておく。ステップ562の処理は、前記4連符系を3連符に換えたものである。ステップ564の処理は、シンコペーションなどの変拍子リズムの表現能力を診断するもので、前記変拍子のついた音符列をディスプレイ15に表示して、電子楽器25にて押鍵されたタイミングの正確さの診断を行い、同診断結果をRAM13に一時記憶しておく。
このステップ564の処理後、診断オブジェクト500は、ステップ570,572の処理を経て、ステップ538の処理を実行する。ステップ538においては、自己のオブジェクト500に対して両手演奏診断を表すデータを条件データとして起動メッセージを発行する。この起動メッセージに応答して、診断オブジェクト500は、ステップ502〜506の処理後、ステップ566,568の診断処理を実行する。ステップ566の処理は、どの程度両手を連携させて演奏できるかを診断するもので、両手演奏のための複数列の音符列をディスプレイ15に表示し、電子楽器25における押鍵の正確さを診断して、同診断結果をRAM13に一時記憶しておく。ステップ568の処理は、左手と右手で異なるリズムの演奏が可能かを診断するもので、異なるリズムの2つの音符列をディスプレイ15に表示し、電子楽器25にて押鍵の正確さを診断して、同診断結果をRAM13に一時記憶しておく。そして、診断オブジェクト500は、ステップ570,572の処理を経て、演奏診断を終了する。
d−3.楽想記号理解力診断
次に、楽想記号理解力診断について説明する。前記演奏技能の診断の終了後、診断オブジェクト500は、ステップ512にて楽想記号理解力の診断処理を行う。この診断処理は、クレッシェンド、ディミニエンドなどの楽想記号及び同記号に対する複数種類の説明をディスプレイ15に表示して、ユーザにキーボード14を用いて正解を選択させる。そして、複数の出題の正解率を診断結果としてRAM13に一時記憶する。そして、診断オブジェクト500は、ステップ570,572の処理を経て、楽想記号理解力診断を終了する。
e.レッスン内容決定オブジェクト
次に、レッスン内容決定オブジェクト300(図5)について、詳細に説明する。このレッスン内容決定オブジェクト300は、図2のステップ106にて指定されるとともに作成開始メッセージを受けて処理を開始するもので、ステップ302,304にてウォーミングアップ及び復習の各要否の問い合わせをディスプレイ15に表示するとともに、ユーザによるキーボード14からの回答を入力する。次に、ステップ306にて、予め定められた基準により、ウォーミングアップ及び復習の各要否の問い合わせ結果と、ハードディスク16に記憶されている練習計画データの今回の練習時間とに基づいて今回の練習予定テーブルをRAM13上に作成する。この練習予定テーブルは、図19に示すように、練習計画の今回の練習時間をウォーミングアップ、復習及び練習曲の演奏練習にそれぞれ割り当てたものである。なお、ウォーミングアップ及び復習の各要否の問い合わせの結果、ウォーミングアップ又は復習が必要ないという回答であれば、その項目の数値が「0」に設定される。
そして、レッスン内容決定オブジェクト300は、ステップ308,310にて、前記練習予定テーブルの内容をディスプレイ15に表示するとともに、同テーブルの練習内容に関するユーザの要望をディスプレイ15上にて問い合わせる。そして、キーボード14から入力されるユーザの要望に応じて、練習予定テーブルの内容を修正してレッスン内容オブジェクトの処理を終了する。また、ユーザがディスプレイ15に提示された練習予定に納得した場合には、練習予定テーブルの修正は行われない。
f.レッスンオブジェクト(起動及びプロセス終了要求)
次に、メインプログラム(図2)のステップ110にて指定されるレッスンオブジェクト400(図6)について説明する。前記ステップ110の処理により、起動メッセージが発行されるとともに、ウォーミングアップ、復習及び練習曲を表すデータのいずれかが条件データとして送られると、レッスンオブジェクト400は、ステップ402にて課金オブジェクト700に対して実行プログラム通知メッセージを発行する。このとき、レッスンオブジェクト400はレッスンを行うことを表すデータも課金オブジェクト700に送る。これにより、課金オブジェクト700は、前記と同様に、ステップ704にてRAM内の単位料金データを診断に対応して予め定められている金額に設定する。したがって、課金オブジェクト700は、タイマオブジェクト600による所定時間の計測毎にレッスンに対応した単位料金を課金データに累算していくことになる。
次に、レッスンオブジェクト400は、ステップ404にてタイマオブジェクト600に対してセットメッセージを発行する。この時、条件データとして指定されているウォーミングアップ、復習又は練習曲を表すデータに応じて、前記練習予定テーブル(図19)内の練習時間を表すデータが時間データとして、タイマオブジェクト600に対して送られる。これに応答して、タイマオブジェクト600は、ステップ606にて前記送られた時間データを記憶し、同時間により表された時間の経過後に、メッセージの発行元のオブジェクト(レッスンオブジェクト400)に対してプロセス終了要求メッセージを発行する。
前記ステップ404の処理後に、条件データとしてウォーミングアップを表すデータが与えられていれば、ステップ406の処理を実行する。条件データとして復習を表すデータが与えられていれば、ステップ408の処理を実行する。また、条件データとして練習曲を表すデータが与えられていれば、ステップ410〜418からなる練習曲による練習処理を実行する。
ステップ406においては、ディスプレイ15に単純な音符列(例えば、単純に音高が上昇又は下降する複数の音符からなる音符列)が表示されるとともに同表示音符列に対応した演奏をすることが指示され、ユーザは電子楽器25を用いて前記表示音符列に応じた演奏をウォーミングアップに配分された時間だけ行う。また、ステップ408においては、練習計画データ(図17)より前回の練習内容の一部を抽出して、ディスプレイ15にその内容を表示し、ユーザは電子楽器25を用いて前記表示に応じた演奏練習を復習練習に配分された時間だけ行う。
ステップ410においては、練習曲の練習のために配分された時間をさらに下位の読譜練習及びメトロノームステップ練習からなる各練習項目にそれぞれ配分する。次に、レッスンオブジェクト400はステップ412にて自己のオブジェクト400に対して読譜練習を表すデータを条件データとして起動メッセージを発行する。このメッセージの発行により、前述したステップ402,404の処理後、ステップ416にて図11,12のフローチャートに従ってユーザに読譜練習を行わせる。この読譜練習の処理後、後述するステップ420,422の処理を経て、ステップ414の処理を実行する。このステップ414においては、レッスンオブジェクト400は自己のオブジェクト400に対してメトロノームステップ練習を表すデータを条件データとして起動メッセージを発行する。このメッセージの発行により、前述したステップ402,404の処理後、ステップ418にて図13,14のフローチャートに従ってユーザにメトロノームステップ練習を行わせる。なお、前記読譜練習及びメロトノームステップ練習については詳しく後述する。
前記ウォーミングアップ、復習又は練習曲(読譜及びメトロノームステップ)の各練習処理後、ステップ420にてタイマオブジェクト600に対して開放メッセージを発行し、ステップ422にてタイマスケジュール調整を行う。前記練習処理がウォーミングアップ又は復習であれば、これらの練習は配分された時間だけ行われるので、前記タイマオブジェクト600によるセット処理及び前記タイマスケジュール調整は実質的には意味がなくなる。一方、前記練習処理が練習曲に関するものであれば、前述した診断オブジェクト500の場合と同様な意味をもつ。すなわち、練習曲の各種練習が配分された時間以内に終了すれば、ステップ428にてタイマオブジェクト600のセット状態が解除され、またステップ430にて今後の練習に残りの時間が配分される。
しかし、前記配分された時間が経過しても、練習曲の各種練習が終了されない場合には、前記診断オブジェクト500の場合と同様に、タイマオブジェクト600がレッスンオブジェクト400を指定してプロセス終了要求メッセージを発行する。このメッセージの発行に応答して、レッスンオブジェクト400は、現在練習中の内容に対する中間評価結果(採点結果)を表すデータがRAM13にあるか否かにより、ステップ424又はステップ428の処理を実行する。中間診断結果があれば、ステップ424にて同中間評価結果をそのままにして、ステップ426にて練習中の内容を強制的に終了させて次の処理に進める。また、中間評価結果がなければ、ステップ428にて延長時間を設定し、ステップ430にてタイマオブジェクト600に対して前記延長時間を表す時間データと共にセットメッセージを再び発行し、ステップ432にて終了要求フラグをセットする。
f−1.読譜練習
図11,12の読譜練習ルーチンについて説明する。このルーチンは、レッスンオブジェクト(図6)のステップ416にて実行されるものであり、ステップ800にて開始され、ステップ802にて練習範囲が指定される。この練習範囲の指定においては、まずハードディスク16内の練習計画データの該当箇所から今回の練習内容を読み出し、同内容に基づいてRAM13に記憶させた練習曲データの最初のフレーズ(図20のF1)を指定する。そして、このステップ802の処理が実行される毎に、練習曲データの次のフレーズ(図20F2,F3…)が順次指定される。なお、練習内容が特殊リズム部分であれば、特殊なリズム部分(例えば、図20の特殊リズムR1,R3)を順次指定する。
次に、レッスンオブジェクト400は、ステップ804にて、前記練習内容を表すデータ、練習曲データ中の楽譜データ及び演奏データに基づいてディスプレイ15上に前記指定範囲の楽譜を表示する。この場合、例えば練習内容が音階練習(図17のSTEP1)であれば、練習曲データ中の演奏データに基づいて指定範囲に登場する音高の音符列を抽出した新たな演奏データを作成して、同演奏データに対応した音符列をディスプレイ15に表示する。また、練習内容が右手演奏、左手演奏又は両手演奏ならば、前記指定範囲であって右手演奏部分(メロディ部分)、左手演奏部分(伴奏部分)又は全ての演奏部分を練習曲データの楽譜データ中から抜き出してディスプレイ15上に表示する。さらに、練習内容が特殊リズム部分であれば、特殊なリズム部分(例えば、図20の特殊リズムR1,R2)が練習曲データの楽譜データ中から抜き出してディスプレイ15上に表示する。この場合、運指データに基づいて、運指も表示するとよい。
次に、レッスンオブジェクト400は、ステップ806にて、前記ディスプレイ15に表示されている音符列に対応した前記新たに作成された演奏データ又は前記ディスプレイ15にて表示されている楽譜に対応した前記練習曲データ中の演奏データを電子楽器25に供給する。電子楽器25は、前記供給された演奏データに基づいて楽音を発生して、ユーザに対して模範演奏音を聴かせる。コンピュータ装置内に楽音信号発生回路を内蔵しているものであれば、同楽音信号発生回路を用いて模範演奏音を発生させるようにしてもよい。次に、レッスンオブジェクト400は、ステップ808にてユーザに対して演奏練習開始の指示をディスプレイ15を介して行うとともに、CPU11に内蔵したタイマによる時間計測を開始させる。
そして、レッスンオブジェクト400は、ステップ810にてディスプレイ15に表示されている楽譜上にて次に演奏すべき音符を指示し、ステップ812にて電子楽器25における押鍵を待つ。ユーザが電子楽器のいずれかの鍵を押鍵すれば、ステップ812における「YES」との判定のもとに、ステップ814にてRAM13に押鍵された鍵に対応した音高データを押鍵列データに書き込む。次に、ステップ816にて終了要求フラグが”1”であるか否かを判定し、ステップ818にて押鍵された鍵が前記ステップ810により指示された音符に対応したものであるか否かを判定する。終了要求フラグは通常”0”に設定されているので、プログラムはステップ818に進められ、正しい押鍵であれば、ステップ820にてRAM13に押鍵された鍵に対応した音高データを正答押鍵列データに書き込む。そして、ステップ822にて指定範囲の練習を終了した否かを判定する。
指定範囲の練習を終了していなければ、ステップ822にて「NO」と判定して、前記ステップ810〜822からなる処理が前記指定範囲の練習終了まで続けられる。この繰り返し処理中、指定範囲の押鍵列データ及び正答押鍵列データが順次形成されていく。一方、前記ステップ810〜822の繰り返し処理中に、ユーザにより誤った鍵が押鍵されてステップ818にて「NO」と判定されると、レッスンオブジェクト400はステップ834以降の処理を実行する。
ステップ834においては、間違い総数を計測するために間違い総数データを「1」だけアップする。次に、ステップ836に前記間違いが連続したものであるか否かを判定し、連続したものでなければ、プログラムをステップ842に進める。一方、前記間違いが連続したものであれば、ステップ838にて押鍵された鍵と演奏すべき音符との比較により間違い内容が解析され、ステップ840にて間違い内容及び同間違い対する適当な指示がディスプレイ15に表示される。例えば、#,bの記号が付いた音符に対して、#,bの記号が付かない音高に対応した鍵を押鍵した場合に、#,bの記号付きの音符であること、同#,bの記号の意味などを説明する。これにより、ユーザは次の演奏で間違わないように対処できる。
ステップ842においては、間違い総数データに基づいて間違い総数が予め決めた規定値を超過したか否かを判定する。間違い総数が規定値を超過していれば、プログラムを後述するステップ844以降へすすめる。間違い総数が規定値を超過していなければ、プログラムをステップ812に戻し、ステップ812にて新たな押鍵を待つ。このようなステップ810〜822,834〜842からなる処理により、間違い押鍵を含む押鍵列データ及び正答押鍵列データが順次形成され、指定範囲の全ての正答押鍵が終了すると、レッスンオブジェクト400はステップ822にて「YES」と判定して、ステップ824にて押鍵列データに対する正答押鍵列データのデータ数の比を正答率として計算し、ステップ826にてディスプレイ15の音符列又は楽譜に押鍵列データと正答押鍵列データとの比較によって間違い箇所を表示する。
次に、ステップ828にて終了要求フラグが”1”であるか否かを判定するが、終了要求フラグは通常は”0”に設定されているので、プログラムはステップ830に進められる。ステップ830においては、前記計算した正答率が所定率(例えば80%)を越えているか否かを判定する。正答率が前記所定率を越えていなければ、プログラムをステップ806に戻し、前回と同一の指定範囲の押鍵練習を繰り返し行うことになる。一方、正答率が前記所定率以上であれば、プログラムをステップ832に進めて、同ステップ832にて練習曲の指定されるべき全範囲を終了したか否かを判定する。全範囲が終了していなければ、プログラムをステップ802に戻し、次の指定範囲を決定して、前記場合と同様にユーザに押鍵練習を行わせる。
また、全範囲が終了していれば、ステップ848にて各指定範囲の正答率、試行回数、所用時間などを曲データ中の演奏データと比較して練習結果を採点し、同採点結果をRAM13上に設けた達成度テーブル(図21)に書き込む。この読譜練習においては、読譜力に重点がおかれて採点されて、幹音及び派生音の正確さ、音部記号、複音記号、両手コンビネーションなどの欄に点数が記入される。
次に、前記ステップ842にて間違い総数が規定値を超過していると判定された場合について説明する。この場合、レッスンオブジェクト400は、ステップ844にて再挑戦とレッスン中止とのいずれかを選択することをディスプレイ15に表示し、ユーザにいずれか一つを選択させる。ユーザが再挑戦を選択すれば、ステップ846の処理によりプログラムをステップ806に戻し、指定範囲の模範練習から再開される。一方、ユーザがレッスン中止を選択すれば、ステップ846の処理によりプログラムをステップ848に進める。
また、前記レッスンオブジェクト400による読譜練習中に、同オブジェクト400によりプロセス終了要求メッセージに応答して前記ステップ432にて終了要求フラグが”1”にセットされた場合について説明する。この場合、ステップ816,828にて共に「YES」と判定されるために、演奏練習が中断されてプログラムをステップ848に進める。これらの間違い総数の増大又はプロセス終了要求メッセージによる場合には、前記ステップ848の点数は悪い値に設定される。そして、ステップ850にて、この読譜練習ルーチンの実行を終了する。
f−2.メトロノームステップ練習
図13,14のメトロノームステップ練習ルーチンについて説明する。このルーチンは、レッスンオブジェクト(図6)のステップ418にて実行されるものである。このメトロノームステップ練習ルーチンは、前述した図11,12の読譜練習ルーチンにテンポを加味したもので、大半部分が読譜練習ルーチンと同じであるので、同一部分について同一符号を付して説明を省略し、異なる部分についてのみ説明する。
メトロノームステップ練習ルーチンの実行はステップ860にて開始され、レッスンオブジェクト400はステップ862にて練習曲のテンポ(演奏データの一部として記憶)を練習計画データのうち今回の練習内容に応じて補正し、同補正したテンポで4分音符毎に基準テンポ音を発生し始める。したがって、練習者はこのテンポ音を聴きながら演奏練習することになる。その後のステップ802〜816については、読譜練習ルーチンと同じである。ステップ864においては、読譜練習ルーチンとは異なり、音高の一致ばかりではなく、押鍵のタイミングが演奏されるべきタイミングの許容範囲内であるか否かも考慮にいれて正答押鍵か否かが判定される。なお、このタイミングの判定は、ステップ808にて開始されたタイマによる計測時間と、曲データ中の演奏データを練習計画データのうちの今回の練習内容(テンポ)で補正した値とを比較することにより行われる。
また、ステップ820以降の処理も読譜練習ルーチンの場合と同じであるが、同ルーチン836〜840の処理が省略されている。これは、間違った鍵が連続して押鍵されても演奏を中断しないようにしたものである。
また、ステップ848の達成度テーブルへの書き込みにおいては、リズムに重点が置かれ、速さ、リズム表現、両手コンビネーションなどの欄に採点が記入されるとともに、前記読譜練習とメトロノームステップ練習の合計の達成時間も記入される。
g.レッスンオブジェクト(終了)
次に、メインプログラム(図2)のステップ114にて指定されるレッスンオブジェクト400(図6)について説明する。前記ステップ114の処理により、レッスンオブジェクト400が指定されるとともに終了メッセージが発行されると、同オブジェクト400はステップ434以降の処理を実行する。
ステップ434においては、練習結果に基づいて、ハードディスク16の練習計画データに、実施日、成功率、成功率が所定点数以上であれば終了記号及び消費時間が書き加えられる。この場合、成功率は、達成度テーブル内容に基づいて、練習計画データの練習内容に関係した演奏練習に重きをおいて計算される。例えばテンポの遅い練習は、幹音及び派生音の正確さ、音部記号、調号、両手コンビネーションに重きがおかれる。また、通常テンポの演奏練習の場合には、幹音及び派生音の押鍵速さ、リズム表現、両手コンビネーションに重きがおかれる。消費時間は、達成度テーブルに記憶されている前記読譜練習及びメトロノームステップ練習との合計時間である。
次に、ステップ436にてハードディスク16内のユーザモデルデータが更新される。この場合、前記達成度テーブルを参照するとともに、曲データの属性データを参照して、達成度が属性データの要求レベルを越えている各項目について、属性データ内の標準時間と達成度テーブル内の達成時間とにより計算した値を前記各項目毎に変更する。この変更される値は、例えば(定数×(標準時間−達成時間)/標準時間)により計算された値に、ユーザモデルデータの各項目データを加算した値である。
次に、レッスンオブジェクト400は、ステップ438にて練習成果をディスプレイ15上に表示する。この場合、読譜練習及びメトロノームステップ練習において、今回の練習で間違いの多い箇所及び評価をディスプレイ15に表示するとともに、同箇所の演奏に対するコメント及び評価の悪い点を克服するためのコメントなどをディスプレイ15に表示する。表示される評価及びコメントは、予め用意された多数の評価及びコメントの中から適当なものが選択される。そして、ステップ440にて宿題を表示する。この場合、前記間違いの多い箇所、前記コメントに対応した練習課題がディスプレイ15に表示される。
次に、レッスンオブジェクト400は、ステップ442にてRAM13上に記憶されている課金データにより表された金額をディスプレイ15に表示するとともに、同課金データをハードディスク16に該当するユーザ情報の課金データとして格納しておく。これらのハードディスク16上の課金データ、練習計画データ、ユーザモデルデータなどは、ホストコンピュータ22に通信回線を介して取り込まれて、同コンピュータ22によって課金の徴収及びコメントの発信に利用される。
B.第2実施形態
次に、本発明の第2実施形態について説明すると、同実施形態の構成も図1に示すように構成されている。
ただし、この第2実施例においては、ハードディスク16のプログラム記憶エリアには、図22〜26に示すフローチャートに対応したプログラムが記憶される。ハードディスク16のユーザ情報記憶エリアには、図27に示すように、このコンピュータ装置を利用する各ユーザ(演奏練習者)に関するユーザ情報i(i=1〜n)が記憶される。
ユーザ情報iは、ユーザ名データ、教授方法データ、練習計画データ、ユーザモデルデータ及び練習曲データからなる。ユーザ名データは、ユーザの名前を表すデータである。教授方法データは、詳しくは後述するが、予め用意された複数の教授方法(教師)のうちユーザが選んだ一つの教授方法(教師)を表すデータである。練習計画データは、図28に示すように、テーブルの形で記憶されており、一つの練習曲の演奏を習得するために必要な複数の練習内容(各種テンポの右手、左手、両手演奏練習など)を時系列的に表すデータと、前記各練習内容の終了の有無を表すデータとからなる。ユーザモデルデータは、この第2実施形態に係る発明には直接関係しないので詳しい説明を省略するが、診断、練習結果などに基づいて形成されたユーザの演奏レベルを表すデータである。
練習曲データは、練習中の曲に関するデータであって、曲名データ、楽譜データ、演奏データ、運指データ及び属性データからなる。曲名データは楽曲名を表すものである。楽譜データは、この楽曲に関する五線譜上の各音符、休符などをディスプレイ15に視覚表示するためのイメージデータである。演奏データは、この楽曲の演奏テンポを表すデータ、及び各音符の音高、符長、休符などを表す楽曲の進行に従ったデータからなる。運指データは、この楽曲の各音符を押鍵すべき手及び指を表すデータである。属性データは、この楽曲を演奏するために必要な演奏レベルを表すデータ、楽曲の種類及び特徴を表すデータなどからなる。
また、内部データベース17には、通常の練習曲(以下、一般練習曲という)として選択される多数の楽曲にそれぞれ対応した多数組の曲データ(以下、一般曲データという)と、特定の課題に対する練習曲(以下、特定練習曲という)として選択される多数の楽曲又は楽曲の一部にそれぞれ対応した多数組の曲データ(以下、特定曲データという)とに分けて記憶されるようになっている。特定練習曲は、4小節又は8小節程度の短いものであって一般練習曲の演奏練習における特定の課題を克服するために用意されたもので、特に特定曲データの付属データには前記特定の課題を表すデータが含まれている。ただし、特に区別することなく練習曲及び曲データという場合には、一般練習曲及び特定練習曲の両者を指すとともに、一般曲データ及び特定曲データの両者を指す。各曲データは、前述した曲名データ、楽譜データ、演奏データ、運指データ及び属性データ(図27参照)によりそれぞれ構成されている。
また、このコンピュータ装置においても、フレキシブルディスク23及びコンパクトディスク24は外部記録装置として利用されるもので、前述した図22〜26のプログラムを予め記録しておき、ハードディスク16へ前記プログラムをインストールするために利用される。
このように構成した音楽教習システムにおいても、CPU11がROM12に記憶されたプログラム(図示しない)及びハードディスク16などに記憶された前述したプログラムを実行することにより作動する。この作動前には、図示しないプログラムの実行により、フレキシブルディスク23又はコンパクトディスク24に予め記録又は記憶されている前記プログラムの一部又は全部をハードディスク16にインストールするとともに、外部データベース21、フレキシブルディスク23又はコンパクトディスク24内に記憶されている曲データを内部データベース17に転送するようにする。
そして、ユーザが図22のメインプログラムを起動させると、CPU11は図22のステップ1100にてメインプログラムの実行を開始する。
前記メインプログラムの実行開始後、CPU11は、ステップ1102にてディスプレイ15にてユーザ名の問い合わせを表示して、ユーザによるユーザ名の入力を待つ。ユーザがキーボード14を用いてユーザ名を入力すると、CPU11はハードディスク16内のユーザ情報記憶エリアを検索して、新規なユーザであるか登録済みのユーザであるかを判定して、新規のユーザであれば前記ユーザ情報記憶エリアに一人分のユーザ情報の記憶エリアをそれぞれ確保するとともに、ユーザ名を同記憶エリアに書き込む。一方、登録済みのユーザであれば、ハードディスク16から該当するユーザ情報中の練習曲データのみをRAM13に転送しておく。
次に、CPU11は、ステップ1104にて一般練習曲を選択し、ステップ1106にて教授方法を選択し、ステップ1108にて練習計画データを作成する。これらのステップ1104〜1108の処理においては、前記入力されたユーザ名が新規であったり、練習計画データが全ての練習内容の終了を表していたり、ユーザが特に一般練習曲の変更をキーボード14を用いて入力した場合に、CPU11は、前記一般練習曲の選択処理、教授方法の選択処理及び練習計画データの作成処理をそれぞれ行う。一方、ユーザ名が登録済みであって練習計画データが全ての練習内容の終了を表しておらず、かつユーザが特に一般練習曲の変更を要求していなければ、CPU11はそれぞれプログラムを次のステップに進める。
一般練習曲の選択処理においては、内部データベース17内の多数組の一般曲データの中からユーザの意志を考慮して一組の一般曲データを取り出し、ハードディスク16及びRAM13の該当エリアにそれぞれ記憶する。前記内部データベース17からの一般曲データの取り出しにおいては、内部データベース17内に記憶されている多数組の曲データ中の各曲名データにより表された各曲名がディスプレイ15に順次表示されて、ユーザがキーボード14を用いて所望の曲名を選択することにより行われる。この場合、内部データベース17内に莫大な組数の一般曲データが記憶されている場合には、ユーザの好みが問い合わせられたり、ユーザモデルデータ(ユーザの演奏レベルを表す)が読み出されて、前記ユーザの好み又は演奏レベルと一般曲データ中の属性データにより表された必要演奏レベル及び楽曲の種類とが比較されて、少数組の一般曲データが候補として選択された後で、ユーザが前記少数組の一般曲データの中から選ぶようにする。また、ユーザが曲名を指定して、内部データベース17の一般曲データを指定するようにしてもよいし、CUP11がランダム性を加味して前記内部データベース17内の全ての一般曲データの中から、又は前記候補とした選択した少数の一般曲データの中から選択するようにしてもよい。
教授方法の選択処理においては、CPU11が複数の教授方法(教師)をディスプレイ15に表示し、ユーザにキーボード14を用いて前記教授方法の一つを指定させる。この第2実施形態においては、下記表1に示すように、6パターンの教授方法が6タイプの教師1〜6として教授方法テーブル内に予め用意されている。このテーブルは、前記図22〜26のプログラムの付属データとして同プログラムの一部を成している。この6パターンの教授方法は、実際の教師の特徴を、例えば要求レベル、教習教材、教示方法及び時間管理の4つの要素に分解して、同4つの要素に関する各教授方法(下記(イ)(ロ)又は(イ)〜(ハ))の組み合わせにより分類されている。前記各要素に関する各方法はそれぞれ前記各要素の教師の対応方法を表しており、次のとおりである。
要求レベル要素に関しては、「(イ)練習曲の演奏がかなり高いレベルに達するまで、同一の練習を繰り返させる」と、「(ロ)練習曲の演奏があまり高いレベルに達しなくても、ある程度の演奏を行えば次の練習に進ませる」との2種類に分けられている。教習教材要素に関しては、「(イ)特定の課題が習得できない場合には、同課題に対応した特定練習曲を中心に演奏練習をさせる」と、「(ロ)特定の課題が習得できない場合でも、ユーザが選択した一般練習曲を中心に演奏練習をさせる」との2種類に分けられている。教示方法要素に関しては、「(イ)間違い箇所を指摘する」と、「(ロ)間違い箇所を模範演奏する」と、「(ハ)間違い内容を文章にて説明する」との3種類に分けられている。時間管理要素に関しては、「(イ)時間管理を行い、所定時間T1で演奏練習を終了させたり、さらに所定時間T2の延長を許容する」と、「(ロ)時間管理を行わないで、予定の演奏練習を終了するまで同練習を続けさせる」との2種類に分けられている。
なお、前記表1中、(イ)+(ロ),(ロ)+(ハ)などは、(イ)及び(ロ)、(ロ)及び(ハ)などの2種類の教示方法を同時に採用することを意味する。ユーザにより指定された教授方法(教師1〜6)を表す教授方法データは、ハードディスク16の該当するユーザ情報中に書き込まれる。
練習計画データの作成処理においては、前記選択された一般曲データ中の演奏データ及び属性データに基づいて、選択された一般曲を演奏できるようにするための練習計画が立てられ、同立てられた練習計画を表すデータが練習計画データとしてハードディスク16の該当するユーザ情報中に書き込まれる。例えば、テンポの速い曲であればテンポを遅くした練習が計画され、また右手と左手との同時演奏が難しければ左手及び右手演奏の独立練習の回数が多く計画される。なお、この練習計画データの作成にあたり、ユーザモデルデータ(ユーザの演奏レベル)と選択された一般曲データ中の属性データにより表された演奏レベルとを考慮したり、ユーザの要望を考慮して決定するようにしてもよい。なお、この練習計画データの作成時においては、終了の有無を表すデータを全て「無」すなわち”0”に設定しておく。
前記ステップ1104〜1108の処理後、CPU11はステップ1110にて前記選択された教授方法データ中の時間管理要素が時間管理することを表しているか否か、すなわち時間管理要素が(イ)であるか(ロ)であるかを判定する。同時間管理要素が(イ)であれば、ステップ1110にて「YES」すなわち時間管理すると判定して、ステップ1112にてCPU11に内蔵のタイマを所定時間T1(例えば、30分)に設定するとともに、ステップ1114にてこのメインプログラムの実行中におけるタイマによる割り込みを許容状態に設定する。これにより、タイマは時間計測を開始し、前記設定時間T1の経過後にCPU11に対して割り込み命令を発する。一方、前記時間管理要素が(ロ)であれば、ステップ1110にて「NO」すなわち時間管理しないと判定して、ステップ1116にてこのメインプログラムの実行中におけるタイマによる割り込みを禁止状態に設定する。この場合には、タイマが割り込み命令を発することはない。
次に、CPU11は、ステップ1118にて練習計画データに基づいて、複数の練習内容のうちの最初の終了無しを表すデータに対応した練習内容を表すデータを読み出す。そして、ステップ1120にて、練習実行ルーチンを実行する。この練習実行ルーチンに関しては、詳しくは後述するが、簡単に説明しておく。まず、前記読み出した今回の練習内容にしたがって一般練習曲データ及び楽譜データの加工が必要な場合には同データを加工し、加工した一般練習曲データ及び楽譜データをフレーズ等の単位毎に切り出して楽譜データに基づいて前記切り出した部分の楽譜をディスプレイ15に表示する。ユーザは電子楽器25にて表示された楽譜に従った演奏をし、この演奏を表す押鍵列データをRAM13に記憶する。そして、同記憶した押鍵列データと前記切り出した演奏データとを比較することにより、ユーザによる演奏の間違い箇所を見つけて同演奏の正確さを評価し、また間違い内容を解析する。
次に、前記間違った押鍵、評価、解析結果、コメントなどをディスプレイ15に表示するとともに、前記評価が悪い場合には前記切り出し部分の繰り返し練習をさせたり、解析結果に基づいて特定の課題を習得させるための特定練習曲の演奏練習を行わせる。例えば、特定のリズムの演奏ができない場合には、同リズムを多く含む特定練習曲を演奏させたりする。これらの評価、解析結果、コメントなどのディスプレイ15上の表示、繰り返し練習、特定練習曲の練習などは、全てのユーザに共通ではなく、ユーザにより選択された教授方法データ(教師1〜6)に依存する。
前記ステップ1120の練習実行ルーチンの処理が終了すると、CPU11は、ステップ1122にて、ハードディスク16内に記憶されている練習計画データのうちで今回の練習内容に対応した終了の有無を表すデータを”1”に設定するともに、総評をディスプレイ15に表示して、ステップ1124にてこのメインプログラムの実行を終了する。これにより、今回の演奏練習が終了したことになる。なお、前記練習の評価結果が悪い場合には、前記終了の有無を表すデータを”0”のままに残しておいてもよい。この場合には、ユーザは、次回の練習にて今回の練習内容と同じ内容の練習を行うことになる。
一方、前述のように、タイマ割り込みが許容された状態にあり、タイマが所定時間T1を計測した後にCPU11に対して割り込み命令を発すると、CPU11は、図23のタイマ割り込みプログラムをステップ1200にて開始する。そして、ステップ1202にて現在実行中の処理を一時停止させ、ステップ1204にてディスプレイ15に演奏練習を終了させるか続行させるかを表示して、ユーザに演奏練習の終了又は続行を問い合わせる。ユーザがキーボード14を用いて演奏練習の終了を選択すれば、ステップ1206にて「YES」と判定してプログラムを図22のステップ1122に進める。これにより、この場合には、前記ステップ1122の処理後、前述した場合と同様に、メインプログラムの実行を終了して演奏練習を終了する。
また、前記終了の問い合わせ時に、ユーザが演奏練習の続行を選択すれば、CPU11はステップ1206にて「NO」と判定して、プログラムをステップ1208,1210に進める。ステップ1208においては前記タイマに所定の延長時間T2(例えば5分)を設定し、ステップ1210においてはこの割り込みプログラムの実行を終了して、前記一時停止させたメインプログラムの実行を前記停止位置から再び実行する。その結果、演奏練習時間が延長時間T2だけ延長されたことになる。
一方、タイマは、前記ステップ1208の延長時間T2の設定により、時間計測をあらためて開始し、この設定から所定時間T2の経過後に再び割り込み命令を発する。割り込み命令がふたたび発生すれば、前述のステップ1200〜1210の処理により、演奏練習の終了がふたたび問い合わされ、再延長の有無が決定される。なお、前記ステップ1112,1208の処理によりタイマが所定時間T1,T2に設定されても、前記メインプログラムの実行がタイマによる所定時間T1,T2の計測前に終了した場合には、タイマは割り込み命令を発することなく図23のタイマ割り込みプログラムも実行されない。
このように、教授データにより表された教授方法のうちの時間管理要素が時間管理有りに選択されていれば、前記ステップ1112,1114,1200〜1210の処理により、演奏練習の時間がタイマによって管理される。また、時間管理要素が時間管理無しに選択されていれば、前記ステップ1116の処理によってタイマ割り込みが禁止されるので、演奏練習は全く時間管理されない。
次に、前記図22のステップ1120の練習実行ルーチンの処理について詳しく説明する。この練習実行ルーチンの詳細は図24に示されており、その実行がステップ1300にて開始され、CPU11はステップ1302にて練習範囲を指定する。この練習範囲の指定においては、まず前記図22のステップ1118の処理により読み出された今回の練習内容に基づいてRAM13に記憶させた練習曲データの最初のフレーズ(図29のF1)を指定する。そして、このステップ1302の処理が実行される毎に、練習曲データの次のフレーズ(図29のF2,F3…)が順次指定される。
次に、CPU11は、ステップ1304にて練習曲データ中の楽譜データに基づいてディスプレイ15の楽譜欄A(図30)に前記指定範囲の楽譜を表示するとともに同表示楽譜に運指データに基づく運指表示も添え、ステップ1306にて練習曲データ中の演奏データであって前記指定範囲に属する演奏データを前記今回の練習内容に応じて補正してRAM13に記憶させる。この補正においては、例えば練習内容が遅いテンポの演奏を指示していれば、演奏データの符長データなどを変更する。そして、ステップ1308にて、前記補正した演奏データを電子楽器25に供給して、電子楽器25に模範演奏をさせる。この後、ステップ1310にて、ユーザに演奏開始を指示した後、ユーザによる電子楽器25の演奏を表す押鍵データを楽器インターフェース25aを介して入力し、RAM13に押鍵データ列として順次記憶し続ける。この場合、押鍵データ列には、押された鍵を表す鍵データ、押鍵時の鍵タッチを表す鍵タッチデータ、及びCPU11に内蔵のタイマにより測定された押鍵の時間間隔すなわち符長に対応した時間データが含まれている。そして、ユーザによる演奏が終了すると、CPU11は、プログラムをステップ1312に進め、同ステップ1312にて解析評価ルーチンを実行する。
この解析評価ルーチンは図25に詳細に示されており、その実行がステップ1330にて開始される。この開始後、CPU11は、ステップ1332にて前記補正した演奏データと押鍵データ列とを比較することによりユーザによる演奏間違いの箇所を抽出し、ステップ1332にて前記間違いの個数と間違い内容に応じてユーザによる演奏を評価して同評価結果を数値化する。例えば、100点を満点として、評価点を計算する。次に、ステップ1336にて、前記間違い箇所に基づいて、予めプログラムと共に用意されている複数の課題の中から前記間違いを克服するために適切な課題を抽出して、同課題を表すデータを特別課題データとしてRAM13に記憶しておく。
前記ステップ1336の処理後、ステップ1338にて、ステップ1340〜1350における教授方法データに基づく間違い箇所に対する教示処理に対して、教示内容の重複を避けたり、ランダム性を付加するための処理を行う。すなわち、この解析評価ルーチンの実行が何度も繰り返して行われるような場合には、前記教示処理としての間違い箇所の指摘(ステップ1340,1342)、間違い箇所の模範演奏(ステップ1344,1346)、及び間違い箇所に関する説明(ステップ1348,1350)を適当に間引きして、何度も何度も同一な教示がユーザに提示されることを避ける。具体的には、前記ステップ1338にて、この解析評価ルーチンの実行回数をカウントして同カウント値を教示処理の種類と共にRAM13に記憶しておき、前記記憶しておいたカウント値及び教示処理の種類に基づいて前記各教示方法の処理が実行されるべきか否かを表すフラグをランダム性を加味して設定する。
前記ステップ1338の処理後、ステップ1340〜1352の処理が実行されるが、まず前記フラグが各教示方法の処理を実行すべきことを表している場合について同ステップ1340〜1352の処理ついて説明する。教授方法データにより表された教示方法要素として間違い箇所指摘(前記教示方法(イ)に対応)が選択されていれば、ステップ1340にて「YES」と判定して、ステップ1342にてディスプレイ15の楽譜欄Aの楽譜上にて押鍵を間違えた音符を他のものとは区別して表示(異色表示、点滅表示など)する。教示方法要素として間違い箇所指摘が選択されていなければ、ステップ1340にて「NO」と判定して、前記間違い箇所の指摘をせずにプログラムをステップ1344に進める。
教授方法データにより表された教示方法要素として模範演奏(前記教示方法(ロ)に対応)が選択されていれば、ステップ1344にて「YES」と判定して、ステップ1346にて前記間違い箇所を含む前後の演奏データを電子楽器25に転送して、同楽器25に模範演奏させる。教示方法要素として模範演奏が選択されていなければ、ステップ1344にて「NO」と判定して、前記間違い箇所の模範演奏をせずにプログラムをステップ1348に進める。
教授方法データにより表された教示方法要素として間違った内容の説明を(前記教示方法(ハ)に対応)が選択されていれば、ステップ1348にて「YES」と判定して、ステップ1350にて前記間違った理由、同理由に対応した注釈等をディスプレイ15のコメント欄B(図30)にて表示するとともに音声でも説明する。例えば、#,bの記号が付いた音符に対して、#,bの記号が付かない音高に対応した鍵を押鍵しているような場合には、#,bの記号付きの音符であること、同#,bの記号の意味などを説明する。教示方法要素として間違った内容の説明が選択されていなければ、ステップ1348にて「NO」と判定して、前記間違った内容の説明がなされずにプログラムをステップ1352に進める。
このように、ユーザが選択した教授方法の一つである教示方法要素に応じて、演奏練習の間違いに対して種々の教示方法が採用される。
一方、前記ステップ1338の処理により、フラグがこれらの各教示方法の処理を採用しないことを表していれば、前記各教示方法がユーザによりそれぞれ選択されていても、前記フラグに基づいてステップ1340,1344,1348にて「NO」と判定されて、同種類に対応したステップ1342,1346,1350の処理が実行されない。前記ステップ1340〜1350の処理後、ステップ1352にてこの解析評価ルーチンの実行が終了する。
ふたたび、図24の練習実行ルーチンの説明に戻ると、前記ステップ1314にてディスプレイ15の表示欄C(図30)に前記評価結果に応じて教師の表情を表示する。例えば、前記図25のステップ1334による評価点が80点以上であれば図31の(A)に示すような教師の笑った表情が表示される。評価点が80点未満かつ50点以上であれば、図31の(B)に示すような教師の首をかしげた表情が表示される。評価点が50点未満30点以上であれば、図31の(C)に示すような教師の怒った表情が表示される。評価点が30点未満であれば、図31の(D)に示すような教師の泣いた表情が表示される。
前記ステップ1314の処理後、ステップ1316にて前記評価点が第1基準値以上であるか否かが判定される。評価点が第1基準値以上であれば、ステップ1316にて「YES」と判定し、ステップ1322にて練習曲の全範囲の演奏練習が終了したか否かが判定される。全範囲の演奏練習が終了していなければ、ステップ1322にて「NO」と判定して、プログラムはステップ1302に戻されて、ステップ1302〜1320からなる次の指定範囲の演奏練習が行われる。また、一般練習曲の全範囲の演奏練習が終了すると、ステップ1322における「YES」との判定のもとに、ステップ1324にてこの練習実行ルーチンの処理を終了する。
一方、評価点が第1基準値未満であれば、前記ステップ1316にて「NO」と判定し、後述するステップ1318の判定のもとに、ステップ1308〜1316からなる前回と同一指定範囲の繰り返し練習か、ステップ1320の特別練習が行われる。このように練習方法の相違に使われた第1基準値は、教授データにより表された教授方法のうちの要求レベル要素により異なった値をとる。すなわち、要求レベル要素として前記「(イ)練習曲の演奏がかなり高いレベルに達するまで、同一の練習を繰り返させる」が選択されていれば、第1基準値としては標準的な点数(例えば80点)が採用される。逆に、要求レベル要素として前記「(ロ)練習曲の演奏があまり高いレベルに達しなくても、ある程度の演奏を行えば次の練習に進める」が選択されていれば、第1基準値としては比較的低い点数(例えば70点)が採用される。これにより、ユーザが選択した教授方法の一つである要求レベル要素に応じて、演奏練習の方法として異なった方法が採用される。
前記ステップ1318の判定処理について説明すると、同判定処理においては、前記評価点が第2基準値以上であるか否かが判定される。前記評価点が第2基準値以上であれば、ステップ1318における「YES」との判定のもとにプログラムはステップ1308に戻されてステップ1308〜1316からなる前記繰り返し練習が行われる。一方、前記評価点が第2基準値未満であれば、ステップ1318における「NO」との判定のもとに、ステップ1320にて特別練習ルーチンが実行される。この特別練習ルーチンは、練習中の一般曲とは若干離れて特定曲に関する演奏練習を行わせるものである。
この場合の第2基準値は前記第1基準値より低く設定されているとともに、教授方法データにより表された教授方法のうちの教習教材要素により異なる値をとる。すなわち、教習教材要素として「(イ)特定の課題が習得できない場合には、同課題に対応した特定練習曲を中心に演奏練習させる」が選択されていれば、前記第2基準値は比較的高い点数(例えば60点)が採用される。また、教習教材要素として「(ロ)特定の課題が習得できない場合でも、ユーザが選択した一般練習曲を中心に演奏練習させる」が選択されていれば、前記第2基準値は比較的低い点数(例えば50点)が採用される。これによっても、ユーザが選択した教授方法の一つである教習教材要素に応じて、演奏練習の方法として異なった方法が採用される。
次に、前記ステップ1320の特別練習ルーチンについて説明すると、同ルーチンの実行は図26のステップ1360にて開始される。この開始後、CPU11は、ステップ1362にて前記ステップ1336(図25)の処理により設定された特定課題に対応した特定練習曲に対応した特定曲データを内部データベース17から読み出してRAM13に書き込む。この場合、前記特定課題と複数組の特定曲データ中の各付属データとの比較により特定曲が選択されるが、同選択された特定曲が複数存在する場合には、ディスプレイ15を用いてユーザに対する問い合わせを表示し、ユーザにキーボード14を用いて所望の特定曲を選択させるようにする。
次に、ステップ1364にて、前記RAM13に書き込んだ特定曲データの演奏データ及び楽譜データを前記練習中の一般練習曲及び練習内容に応じて補正して、同補正した演奏データをRAM13に書き込んでおく。この補正においては、テンポ、リズムタイプ、調、拍子などを練習中の一般練習曲に合わせるようにする。
前記ステップ1364の処理後、ステップ1366にて、前記補正した楽譜データに基づいて特定練習曲をディスプレイ15の楽譜欄Aに表示するとともに、前記特定課題を同ディスプレイ15のコメント欄Bに表示する。そして、ステップ1368〜1372にて、前記図24のステップ1308,1310,1312(図25のステップ1332,1334)の処理と同様に、模範演奏、ユーザによる演奏の入力、及び演奏の解析評価を行って評価点を計算する。次に、ステップ1374にて前記評価点と第3基準値とを比較し、前記評価点が第3基準値以上であれば、ステップ1378にてこの特別練習ルーチンの実行を終了する。一方、前記評価点が第3基準値未満であれば、ステップ1376にて前記解析結果に基づくを注意点をディスプレイ15のコメント欄Bに表示し、その後にプログラムをステップ1368に戻してステップ1368〜1374からなる繰り返し練習を行わせる。これにより、一般練習曲の演奏練習においてユーザが不得意とする箇所の特別練習が行われて、効率のよい演奏練習が行われる。
また、この場合も、第3基準値としては、教授方法データにより表された教授方法により異なる値が採用される。すなわち、教授方法の要求レベル及び教習教材の各要素がそれぞれ(イ)である場合には第3基準値は比較的高い点数に設定され、前記各要素がそれぞれ(ロ)である場合には第3基準値は比較的低い点数に設定される。これにより、この場合も、ユーザが選択した教授方法である要求レベル及び教習教材の各要素に応じて、演奏練習の方法として異なった方法が採用されることになる。
なお、上記第2実施形態においては、図22のステップ1106の処理により教授データを練習計画の作成毎すなわち一つの一般練習曲の変更毎に行うようにしたが、この教授方法の選択を毎回の練習において行うようにしてもよい。この場合、図22のメインプログラムが実行される毎に、ステップ1106にて前記練習計画の作成及び一般練習曲の変更とは無関係に常に行うようにすればよい。
また、上記第2実施形態においては、教授方法の各要素に係る対応種類をパターン化しておき、同パターン化した複数の教授方法の中からユーザが所望の教授方法を選択するようにした。しかし、教授方法の各要素に関する各方法をそれぞれ選択することにより教授方法を選択するようにしてもよい。この場合、図22のステップ106にて、前述した教授方法の要求レベル、教習教材、教示方法及び時間管理の各要素毎に、各要素に属する(イ)(ロ)(又は(イ)〜(ハ))の方法を選択して、同選択結果を教授方法データとして記憶しておくようにすればよい。
C.第1及び第2実施形態に共通の変形例
上記第1及び第2実施形態においては、内部データベース17及び外部データベース21の両者を用いたが、内部データベース17を削除して外部データベース21からRAM13及び/又はハードディスク16に練習曲データを直接入力してもよい。また、外部データベース21に接続しなくても、内部データベース17内の曲データを随時更新して、多数のユーザが内部データベース17を共用するようにしてもよい。
また、上記第1及び第2実施形態においては、電子楽器25として鍵盤電子楽器を採用したが、演奏操作子の操作を検出するスイッチを有するとともに、同スイッチによる演奏操作子の検出に基づいて楽音信号を発生する電子楽器であれば、鍵盤電子楽器以外の電子管楽器、電子打楽器などを用いるようにしてもよい。また、ピアノなどの自然楽器においても、押鍵及びタッチなどを検出する電気回路を付属させれば、前記電子楽器25に代えて前記ピアノを用いることもできる。
また、上記第1及び第2実施形態では、外部記録装置に記録させてあったプログラムをハードディスク16に記憶させた後に同プログラムを使用するようにしたが、ROM12及び/又はハードディスク16に前記プログラムを予め記憶させておいたり、ホスコンピュータ22から通信インターフェース18を介して前記プログラムを予め転送しておくようにしてもよい。
11…CPU、12…ROM、13…RAM、14…キーボード、15…ディスプレイ、16…ハードディスク、17…内部データベース、18…通信インターフェース、21…外部データベース、22…ホストコンピュータ、23…フレキシブルディスク、24…コンパクトディスク、25…電子楽器