以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1は、本発明の実施形態に係る演奏練習装置100の機能を示すブロック図である。
この演奏練習装置100は、練習用の楽曲(以下単に「楽曲」と記載する)の演奏データを記憶する機能を備え、これらのうちからユーザが指定した楽曲の演奏データを順次処理して練習を行う機能を備える、電子ピアノ、シンセサイザー、電子ギター、電子サキソフォン、電子バイオリン等の電子楽器にMIDI(Musical Instrument Digital Interface)インタフェースを介して接続される。
この演奏練習装置100は、練習段階決定部101、練習順番決定部102、演奏評価部103、達成状況更新部104を備える。この演奏練習装置100は、小節毎の演奏データを順次入力して自動練習を行うための自動練習繰返し部107を備えてよい。また、この演奏練習装置100は、練習段階テーブル105を備えてよい。さらに、この演奏練習装置100は、練習機能設定部106を備えてよい。
練習段階決定部101は、例えばユーザにより指定された楽曲内の練習範囲におけるユーザの演奏の達成状況に応じて、楽曲の演奏の評価基準となる演奏要素に対応する練習段階を決定する。達成状況としては、後述する達成状況更新部104によって前回の練習段階での練習に対して更新されたものが入力される。
練習の開始時には、達成状況はないため、初期設定された練習段階が決定される。
練習段階に対応付けられる楽器の演奏要素としては例えば、楽曲を構成する各音符の音高、各音符の発音列から定まるアクセントのある拍のグループ化された周期的な繰り返しであるリズム、各音符の発音列から定まる拍の周期の速さであるテンポ、さらには楽曲の演奏進行の滑らかさ等を採用してよい。これらの演奏要素に対応付けられて、練習段階としては例えば、音高練習ステップ(以下「ステップ1」と呼ぶ)、リズム練習ステップ(以下「ステップ2」と呼ぶ)、テンポ練習ステップ(以下「ステップ3」と呼ぶ)、通し練習ステップ(以下「ステップ4」と呼ぶ)を設定してよい。
練習順番決定部102は、練習順番決定部102で決定された練習段階と、後述する達成状況更新部104が出力する達成状況に基づいて、練習範囲内に含まれる複数のフレーズの中からユーザに演奏の練習を行わせるフレーズを決定するとともに、その決定されたフレーズを構成している複数の小節のうち少なくとも1以上の小節をどのような順番で練習させるのかを指定するための練習順番を決定する。そして、練習順番決定部102は、例えば自動練習繰返し部107に、その決定したフレーズにおける各小節の練習順番に対応する練習区間での楽曲の練習の開始を指示する。
図2(a)および(b)は、ユーザが指定した全体練習範囲と練習段階毎に決定されるフレーズの説明図である。図2中の数字は、楽曲の先頭からの小節番号を示す(図2では第1小節から第16小節までが示されている)。ユーザは、練習の開始時に、楽曲を指定すると共に、その楽曲で弾けるようになりたいと思って練習を行う任意の小節の範囲を図2の全体練習範囲として指定する。図2(a)または(b)の例では、第1小節から第12小節までが、全体練習範囲として指定されている。全体練習範囲の決め方は、手動で決めてもよいし、なんらかの手法に基づいて自動的に決定されてもよい。
また、本実施形態では、連続する複数小節がまとめてフレーズとして管理され、フレーズ毎に練習が実行されその達成状況が確認される。
図2(a)の例は、練習段階が前述したステップ1,2,3である場合におけるフレーズの区分け例を示す図であり、3小節ずつまとめてフレーズとして管理されている。第1,2,3小節がフレーズ1、第4,5,6小節がフレーズ2、第7,8,9小節がフレーズ3、第10,11,12小節がフレーズ4である。ステップ1,2,3などのように、音高、リズム、テンポを練習するような段階では、練習区間はあまり長すぎないほうがいいため、1フレーズは3小節程度の長さに固定される。勿論、フレーズの小節数は、ユーザの演奏レベルに応じて、例えば4小節以上に増やしてもよいし、2小節以下に減らしてもよい。
図2(b)は、練習段階が前述したステップ4である場合におけるフレーズの区分け例を示す図である。ステップ4の練習では、楽曲の演奏進行の滑らかさに主眼が置かれる。このため、全体練習範囲中で上手に演奏できる区間は多くの小節が含まれても1つのフレーズとしてしまってよい。逆に、上手に演奏できずにすぐにつかえてしまうような区間では何回も練習できるように含まれる小節数が少なくても1つのフレーズとしたほうがよい場合もある。そこで、本実施形態では、各小節に、その小節を隣接する小節との間で連続して演奏できたか否かを示す連続正解フラグという情報をもたせる。この連続正解フラグは、連続して演奏できた状態(以下これを「正解」と表現する)の場合に例えば値1がセットされ、連続して演奏できなかった状態(以下これを「不正解」と表現する)の場合に例えば値0がセットされる。そして、この連続正解フラグが不正解を示す小節境界で、フレーズが分割される。図2(b)において、両方向矢印が付与されている小節の組は同じフレーズに含まれ、両方向矢印が付与されていな小節の組はフレーズの境界となる。そして、全体練習範囲内で、小節3と4、6と7、および9と10の各組で、連続正解フラグが不正解を示す。このため、小節1,2,3がフレーズ1、小節4,5,6がフレーズ2、小節7,8,9がフレーズ3、小節10,11,12がフレーズ4に分割される。図2(b)の例では、フレーズの分割が図2(a)の場合と同じになっているが、ステップ4では、上述したフレーズ分割方法に従う結果、各フレーズに含まれる小節数は3フレーズには限られず、フレーズ毎に可変長となり得る。
図1において、練習順番決定部102はまず、練習段階決定部101が決定した練習段階において、後述する達成状況更新部104が出力する達成状況に基づいて、図2のフレーズ1からフレーズ4のうちから次に練習を行うフレーズを決定する。練習対象となるフレーズの決定の仕方としては、練習段階が例えばステップ1(音高練習ステップ)、ステップ2(リズム練習ステップ)、またはステップ3(テンポ練習ステップ)の何れかのときには、次のように決定してよい。すなわち、楽曲の先頭から例えば3小節ずつ区切られたフレーズのうち、全体練習範囲内で、音高、リズム、またはテンポに関するユーザの演奏の完成度が所定の閾値に達していない小節を含むフレーズが、次に練習を行うフレーズとして決定されてよい。1度に練習を行うフレーズの数は、ユーザの演奏レベルに応じて、1フレーズでもよいし、複数フレーズが選択されるように設定できてもよい。また、練習段階が例えばステップ4(通し練習ステップ)であるときには、全体練習範囲内で、前述した連続正解フラグが不正解を示す小節を境界としてフレーズが分割されてよい。そして、その境界の前後のフレーズが、次に練習を行うフレーズの組として決定されてよい。1度に練習を行うフレーズの組の数は、1組でもよいし、複数組でもよい。練習順番決定部102は、このようにして決定したフレーズにおける各小節の練習順番を決定する。
図3は、ステップ1(音高練習ステップ)またはステップ2(リズム練習ステップ)の練習段階でのフレーズ毎の練習順番の例を示す図である。ステップ1または2に関しては、音高やリズムを覚えるという目的から、練習順番は小節を単位として短く設定する仕様が望ましい。そこで、練習順番決定部102は、まず練習を行う単位となるフレーズを例えば3小節という比較的短い単位で分割し、その上で例えば図3の色が濃い部分として示されるように、小節番号に関して、1,2,1と2、3、2と3、1と2と3という練習順番で、1小節から始まり連続する3小節程度まで細かく練習範囲を広げるように、フレーズ内の小節の各練習区間が決定される。以下、図3から図5の説明において、練習区間は、濃い色の部分として示される。
すなわち、図3に示されるように、例えばフレーズ1が次の練習フレーズとして決定された場合、図3に示される練習順番1から練習順番6までが決定される。練習順番1では、第1小節のみが練習区間とされる。練習順番2では、第2小節のみが練習区間とされる。練習順番3では、第1小節と第2小節の連続する2小節が練習区間とされる。練習順番4では、第3小節のみが練習区間とされる。練習順番5では、第2小節と第3小節の連続する2小節が練習区間とされる。最後に、練習順番6では、第1小節と第2小節と第3小節の連続する3小節が練習区間とされる。
フレーズ2,3,4(図2参照)がそれぞれ次の練習フレーズとして決定された場合も、第4,5,6小節、第7,8,9小節、第10,11,12小節に関して、フレーズ1の第1、2,3小節と同様にして、練習順番が決定される。前述したように、フレーズ1,2,3,4は、1フレーズずつ練習区間とされてもよいし、複数フレーズ分がまとめて練習区間とされてもよい。
図4は、ステップ3(テンポ練習ステップ)の練習段階でのフレーズ毎の練習順番の例を示す図である。ステップ3に関しては、音高とリズムはOKなので、例えば、できていないフレーズの3小節分を通しでテンポの練習をさせるような繰返し方法が有効である。
すなわち、図4に示されるように、例えばフレーズ1が次の練習フレーズとして決定された場合、図4に示される練習順番1が決定される。練習順番1では、第1,2,3小節の連続する3小節が練習区間とされる。同様にして、フレーズ2,3,4がそれぞれ次の練習フレーズとして決定された場合は、練習順番2,3,4がそれぞれ次の練習フレーズとして決定される。練習順番2、3,4ではそれぞれ、第4,5,6小節、第7,8,9小節、または第10,11,12小節のそれぞれ連続する3小節が練習区間とされる。この場合も前述したように、フレーズ1,2,3,4は、1フレーズずつ練習区間とされてもよいし、複数フレーズ分がまとめて練習区間とされてもよい。
図5は、ステップ4の練習段階でのフレーズと練習順番の例を示す図である。ステップ4では、音高もリズムもテンポも全部達成できているときに、練習順番決定部102はまず、前述した連続正解フラグが不正解を示す小節を境界としてフレーズを分割する。そして、練習順番決定部102は、その境界の前後のフレーズを、次に練習を行うフレーズの組として決定する。すなわち、ステップ4では、分割で得られる全てのフレーズから連続する2フレーズずつ選択されるフレーズの組が、次に練習するフレーズとして決定される。
図5の例は図2(b)のフレーズ分割に対応しており、図2(b)の全体練習範囲内で、小節3と4、6と7、および9と10の各組で、連続正解フラグが不正解を示す。このため、小節1,2,3がフレーズ1、小節4,5,6がフレーズ2、小節7,8,9がフレーズ3、小節10,11,12がフレーズ4に分割される。そのようにフレーズ分割が行われた上で、小節境界3と4を含む前後のフレーズ1と2の組、小節境界6と7を含む前後のフレーズ2と3の組、および小節境界9と10を含む前後のフレーズ3と4の組が、それぞれ練習区間のフレーズとして決定される。
図5は、上述のようにして決定されたフレーズ1と2の組、フレーズ2と3の組、およびフレーズ3と4の組が、まとめて練習区間とされる場合の練習順番の例を示している。練習順番1,2,3,4,5,6,7,8の順で、練習が実行される。
まず、フレーズ1と2の組の練習順番1では、フレーズ1と2の組において、それらのつなぎ目である第3小節と第4小節の連続する2小節が練習区間とされる。続いて、練習順番2では、フレーズ1と2の組において、2つのフレーズを通した第1小節から第6小節までの連続する6小節が練習区間とされる。
次に、練習順番3では、フレーズ2と3の組において、それらのつなぎ目である第6小節と第7小節の連続する2小節が練習区間とされる。続いて、練習順番4では、フレーズ2と3の組において、2つのフレーズを通した第4小節から第9小節までの連続する6小節が練習区間とされる。さらに続いて、練習順番5では、フレーズ1から現在の組の最終フレーズ3までの3つのフレーズを通した第1小節から第9小節までの連続する9小節が練習区間とされる。
次に、練習順番6では、フレーズ3と4の組において、それらのつなぎ目である第9小節と第10小節の連続する2小節が練習区間とされる。それに続いて、練習順番7では、フレーズ3と4の組において、2つのフレーズを通した第7小節から第12小節までの連続する6小節が練習区間とされる。最後に、練習順番8では、フレーズ1から現在の組の最終フレーズ4(=全体練習範囲の最終フレーズ)までの4つのフレーズを通した第1小節から第12小節までの連続する12小節が練習区間とされる。すなわち、全体練習範囲の全小節が練習区間とされる。
なお、ステップ4の練習段階でのフレーズと練習順番は、全体練習範囲を通しての通し練習の目的が達成できれば、図5に示される例以外にも様々な練習パターンを考えることができる。
図1の練習段階決定部101が、図3から図5に例示したようなフレーズの決定とフレーズ内の練習段階の決定のための制御動作を実現するために、図1の演奏練習装置100は、練習段階テーブルを記憶する練習段階テーブル105を備えてよい。
図6は、練習段階テーブル105が記憶する練習段階テーブル600のデータ構成例を示す図である。
この練習段階テーブル105は、練習段階データ601が示すステップ1から4の練習段階毎(図6に示されるテーブルの行毎)に、全体練習範囲内でのフレーズの分割方法を指定するフレーズ分割方法データ602と、その練習段階データ601が示す練習段階で選択されるフレーズ中の各小節の繰返し方法を指定する繰返し方法データ603を含む。
フレーズ分割方法データ602としては、ステップ1,2,3では、図6に例示されるように、全体練習範囲の先頭から3小節ずつ区切る(図2参照)という指定を行うデータを記憶してよい。また、フレーズ分割方法データ602として、ステップ4では、図6に例示されるように、フレーズの境界で滑らかに演奏できたか否かを判定する連続正解フラグが不正解を示す境界で区切るという指定を行うデータを記憶してよい。その他のフレーズ分割方法としては、例えば、先頭から4小節ずつ分割などにすると1回の練習範囲が長くなるため、3小節の場合より若干レベルが高い人向けの設定となる。或いは、フレーズ分割方法データ602として例えば、演奏が達成できていない小節に対してその前後の小節を含めた3小節などにする場合には、全体練習範囲に対してまだ全く達成できていない状態で練習を行った場合、練習区間となる小節が、1と2と3、2と3と4、3と4と5というように重複部分が多くなるため、練習の終盤で比較的演奏が達成できていない箇所が少ない仕上げ段階向けの設定として有効となる。
繰返し方法データ603としては、ステップ1,2では、図6に例示されるように、決定されているフレーズ内の先頭の小節から1小節ずつ練習区間を広げていく(図3参照)という指定を行うデータを記憶してよい。また、繰返し方法データ603として、ステップ3では、図6に例示されるように、決定されているフレーズ内の先頭から最後の小節までの連続小節範囲を練習区間とする(図4参照)という指定を行うデータを記憶してよい。このほか例えば、フレーズの長さに応じて一度に練習する最小単位を2小節にするなどと変更すると、効率良く練習ができる。さらに、繰返し方法データ603として、ステップ4では、図6に例示されるように、フレーズの組における2つのフレーズの境界の前後小節(計2小節)を練習し、その後、その組となる2フレーズ内の連続する小節を通して練習するという指定を行うデータを記憶してよい。あるいは、その後さらに、全体練習範囲の1フレーズ目からその組となる2フレーズの最後まで通して練習するという指定を行うデータを含んだりしてもよい。図5は、そのような指定に基づいて練習が行われる場合の練習順番の例である。
なお、図6では、フレーズ分割方法データ602や繰返し方法データ603は、文字列で表現されているが、練習段階テーブル600に記憶される実際のデータは、文字列以外の数値データ等を使って記憶されてもよい。ただし、文字列での記憶により、例えばディスプレイに現在のフレーズ分割方法や繰返し方法をわかりやすく表示することが可能となる。また、例えば、あらかじめ種々の処理パターン、例えば種々のフレーズ分割方法を実現する回路やプログラムが機器に備えられていて、図6のテーブルには、それらの処理パターンを例えば番号で指定するデータが記憶されている形で実現することも可能である。
図1において、練習順番決定部102は、練習段階テーブル105に記憶された図6に例示される練習段階テーブル600を参照することにより、練習段階決定部101が決定した練習段階に対応する図6に例示したフレーズ分割方法データ602および繰返し方法データ603を抽出する。練習順番決定部102は、抽出したフレーズ分割方法データ602および達成状況更新部104が出力する達成状況に基づいて、フレーズ(またはフレーズの組)を決定する。そして、練習順番決定部102は、抽出した繰返し方法データ603に基づいて、決定したフレーズにおける各小節の練習順番(図3から図5を参照)を決定する。
練習段階テーブル600は、図6に例示されるように、練習段階データ601が示すステップ1から4の練習段階毎に、各練習段階が決定された場合に有効な練習の機能を設定するためのおすすめ練習機能データ604を記憶してよい。例えば、ステップ1の練習段階では、テンポはゆっくりで、また、音高がよくわかるように、メロディ音としてサスティーンの長い楽音が設定される等の、音高練習系機能が設定される。また、ステップ2の練習段階では、テンポは少しゆっくりで、また、リズムがよくわかるようにメロディ音に重ねて打楽器音の楽音が設定される等の、リズム練習系機能が設定される。また、ステップ3の練習段階では、最適なテンポが設定される等の、テンポ練習系機能が設定される。さらに、ステップ4の練習段階では、練習範囲の全体を通した楽曲の雰囲気がつかめるように、様々な演奏効果が設定される等の、動作練習系機能が設定される。
図1において、練習機能設定部106は、練習段階テーブル105に記憶された練習段階テーブル600を参照することにより、練習段階決定部101が決定した練習段階に対応する図6に例示したおすすめ練習機能データ604を抽出する。図1において、練習機能設定部106は、抽出したおすすめ練習機能データ604に基づいて、練習段階決定部101が決定した練習段階において有効な練習の機能を、自動練習繰返し部107に設定する。自動練習繰返し部107は、練習機能設定部106から設定された自動練習機能を、例えばMIDIインタフェースを介してMIDIデータとして、電子楽器の機能設定部に対して設定する。
また、練習段階テーブル600は、図6に例示されるように、図1の達成状況更新部104が出力する達成状況に基づいて次の練習段階を決定するための判定合否データ606、607、608を記憶してよい。
例えば、練習段階として音高練習ステップであるステップ1の練習を行わせるか否かを判断するための判定条件として、音高判定データ606、リズム判定データ607、およびテンポ判定データ608ともに不合格(図6中では「×」と表記)という判定条件を記憶した判定合否データ606、607、608が記憶される。すなわち、音高、リズム、テンポとも不合格の場合は、ステップ1から練習を行わせることが示されている。
また例えば、練習段階としてリズム練習ステップであるステップ2を決定するための判定条件として、音高判定データ606が合格(図6中では「○」と表記)、リズム判定データ607およびテンポ判定データ608が不合格という判定条件を記憶した判定合否データ606、607、608が記憶される。すなわち、音高のみ合格の場合には、ステップ2から練習を行わせることが示されている。
さらに例えば、練習段階としてテンポ練習ステップであるステップ3を決定するための判定合否条件として、音高判定データ606およびリズム判定データ607が合格、テンポ判定データ608が不合格という判定条件を記憶した判定合否データ606、607、608が記憶される。すなわち、音高とリズムが合格の場合には、ステップ3から練習を行わせることが示されている。
そして例えば、練習段階としてテンポ練習ステップであるステップ4を決定するための判定条件として、音高判定データ606、リズム判定データ607、およびテンポ判定データ608の全てが合格という判定条件を記憶した判定合否データ606、607、608が記憶される。すなわち、音高、リズム、テンポとも合格の場合は、ステップ4の練習を行わせることが示されている。なお、この図6には記載していないが、他の合格・不合格の組み合わせについても適宜定義されていてもよい。
図1において、練習段階決定部101は、練習段階テーブル105が記憶する練習段階テーブル600中の各練習段階の判定合否データ606、607、608を参照することにより、達成状況更新部104が出力する達成状況が、どの練習段階の判定合否データ606、607、608が示す判定合否条件を満たすかを判定し、次の練習段階のステップを決定する。
練習段階テーブル600はさらに、図6に例示されるように、練習段階データ601が示すステップ1から4の練習段階毎に、目的データ605、練習目標データ609、最適練習範囲データ610等を記憶してよい。これらのデータは例えば、各練習段階での練習時に、ディスプレイ等に、その練習段階の目的、練習目標、練習範囲の長短等を表示するために参照される。
図1において、練習順番決定部102は、決定したフレーズにおける各小節の練習順番に基づいて、練習順番データのリストを生成し記憶してよい。図7は、練習順番リスト700のデータ構成例を示す図である。練習順番リスト700の構成要素である#1、・・・、#j、・・・、#n(n:練習順番数、1≦j≦n)の各練習順番データ701は、練習区間を示す練習開始小節および練習終了小節からなる。
例えば、図3に例示したように、練習段階決定部101が、例えばフレーズ1を次の練習フレーズとして決定し、フレーズ1内で練習順番1から練習順番6までを決定した場合、#1から#6までの練習順番データ701を生成する。#1の練習順番データ701は、練習開始小節=1、練習終了小節=1である。#2の練習順番データ701は、練習開始小節=2、練習終了小節=2である。#3の練習順番データ701は、練習開始小節=1、練習終了小節=2である。#4の練習順番データ701は、練習開始小節=3、練習終了小節=3である。#5の練習順番データ701は、練習開始小節=2、練習終了小節=3である。そして、#6の練習順番データ701は、練習開始小節=1、練習終了小節=3である。
図1において、自動練習繰返し部107は、練習順番リスト700から練習順番データ701を#1、#2、#3、・・・、#nという順番で順次読み出す。そして、自動練習繰返し部107は、読み出した練習順番データ701中の練習開始小節から練習終了小節までの各構成音符の演奏データを順次生成し、例えばMIDIを介してMIDIデータとして電子楽器に順次供給して、自動練習を順次実行する。
図1において、演奏評価部103は、練習順番決定部102により決定された練習順番にて自動練習繰返し部107により順次指定される小節により定められた練習区間内で、ユーザの演奏を対応する演奏要素に基づいて評価する。
より具体的には、演奏評価部103は、楽曲を構成する小節毎に、自動練習で対象となっている練習区間内の各小節において指定れる各音符とユーザの演奏で発生する各音符とを順次比較することにより、練習区間における演奏要素毎のユーザの演奏の完成度を算出してその練習区間内の各小節に対応する小節完成度データとして記憶する。図8は、小節完成度データ801のデータ構成例を示す図である。楽曲の全体練習範囲に含まれる小節数をmとすれば、演奏評価部103は、小節番号#1、・・・、#i、・・・、#m(1≦i≦m)に含まれる小節の小節完成度データ801を生成し記憶する。1つの小節完成度データ801には、音高達成率、リズム達成率、テンポ達成率、連続正解フラグ(前)、連続正解フラグ(後)、記録時刻が記憶される。
現在の練習段階が音高、リズム、またはテンポのいずれかの演奏要素に関するステップ1(音高練習ステップ)、ステップ2(リズム練習ステップ)、またはステップ3(テンポ練習ステップ)であるときには、演奏評価部103は、音高達成率、リズム達成率、またはテンポ達成率を算出し、小節完成度データ801として記憶する。
音高達成率は例えば、小節を構成する各音符について、楽曲の各音符とユーザの演奏とで、全ての音高(ノート番号)が一致すれば音高達成率は1(または100%)であり、半分の音高が一致すれば音高達成率は0.5(または50%)である。実際には、演奏評価部103は例えば、自動練習における楽曲の各音符のノート番号とユーザの演奏により発生するノートオンのノート番号が一致するか否かを判定し、一致したノート数を小節の全ノート数で除算して得られる値を音高達成率として算出できる。あるいは、細分化された時間毎に音高が一致するか否かを判定して、その判定結果を累積することによって音高達成率を算出することも可能である。その他、音高達成率は、公知の種々の手法により算出できる。
リズム達成率については、演奏評価部103は例えば、小節を構成する各音符の各時間長について、ユーザの演奏により得られる各時間長と、自動練習における楽曲の各音符の各時間長との比の平均値として算出できる。その他、リズム達成率は、公知の種々の手法により算出できる。
テンポ達成率については、演奏評価部103は例えば、ユーザの演奏における小節の演奏時間と、自動練習で対象となっている小節の演奏時間との比として算出できる。その他、テンポ達成率は、公知の種々の手法により算出できる。
現在の練習段階が、楽曲の演奏進行の滑らかさを練習するステップ4(通し練習ステップ)である場合には、演奏評価部103は、上記完成度を示す達成率のデータの代わりに、連続正解フラグを設定し、小節完成度データ801として記憶する。連続正解フラグとしては、連続正解フラグ(前)と連続正解フラグ(後)が設定される。
演奏評価部103は、連続正解フラグ(前)としては、現在の小節の1小節前の小節と現在の小節との連続する練習において、ユーザの演奏が所定の演奏基準を満たすときに正解を示す値(例えば“1”)を設定し、そうでなければ不正解を示す値(例えば“0”)を設定する。
演奏評価部103は、連続正解フラグ(後)としては、現在の小節の1小節後の小節と現在の小節との連続する練習において、ユーザの演奏が前述した所定の演奏基準を満たすときに正解を示す値を設定し、そうでなければ不正解を示す値を設定する。
所定の演奏基準としては例えば、音高達成率、リズム達成率、およびテンポ達成率のいずれもがそれぞれの閾値に比較して大きいか否かという基準を採用してよい。
図1において、達成状況更新部104は、演奏評価部103でのユーザの演奏の評価結果に基づいて、対応する演奏要素でかつ、練習段階決定部101により決定された練習段階におけるユーザの演奏の新たな達成状況を決定し、その新たな達成状況により、達成状況を更新する。
より具体的には、現在の練習段階が、ステップ1(音高練習ステップ)、ステップ2(リズム練習ステップ)、またはステップ3(テンポ練習ステップ)であるときには、達成状況更新部104は、小節毎に、演奏要素毎の完成度が所定の閾値に比較して小さい場合に、達成状況更新部104自身が保持する、その演奏要素に対応する練習段階の未達成リストに、その小節を追加登録する。この未達成リストは、その練習段階において、ユーザの演奏が練習基準を達成できなかった小節を示すリストである。
いま例えば、各小節の楽曲の先頭からの通し番号(小節番号)をi(1≦i≦m)とする。そして、達成状況更新部104は、ある小節(小節番号i)において、音高の演奏要素について、#i番目の小節完成度データ801に記憶されている音高達成率が、音高達成率のための閾値に比較して小さい場合に、音高に対応するステップ1の練習段階の未達成リストに、その小節の小節番号iを追加登録する。
また、達成状況更新部104は、リズムの演奏要素についても、ある小節(小節番号i)に対応する#i番目の小節完成度データ801に記憶されているリズム達成率が、リズム達成率のための閾値に比較して小さい場合に、リズムに対応するステップ2の練習段階の未達成リストに、小節番号iを追加登録する。
達成状況更新部104は、テンポの演奏要素についても、ある小節(小節番号i)に対応する#i番目の小節完成度データ801に記憶されているテンポ達成率が、テンポ達成率のための閾値に比較して小さい場合に、テンポに対応するステップ3の練習段階の未達成リストに、小節番号iを追加登録する。
一方、現在の練習段階が楽曲の演奏進行の滑らかさを練習するステップ4(通し練習ステップ)である場合には、達成状況更新部104は、小節毎に、その小節(小節番号i)に対応する#i番目の小節完成度データ801に記憶されている連続正解フラグ(後)に不正解を示す値が設定されている場合に、達成状況更新部104自身が保持するフレーズ境界位置リストに、その小節の小節番号を追加登録する。フレーズ境界位置リストは、演奏進行が滑らかでないフレーズの組の境界の小節を示すリストである。
以上のようにして、練習段階毎の未達成リストまたはフレーズ境界位置リストとして算出された達成状況は、次の練習段階の決定ならびにフレーズおよび練習順番の決定に供されて、楽曲の演奏の練習が進行させられる。
すなわち、図1において、練習段階決定部101は、前回の自動練習の結果達成状況更新部104が出力する、練習段階毎の未達成リストまたはフレーズ境界位置リストに基づいて、次の練習段階を決定する。
例えば、前回の練習段階が、ステップ1(音高練習ステップ)、ステップ2(リズム練習ステップ)、またはステップ3(テンポ練習ステップ)であったときには、練習段階決定部101は、前回の自動練習により未達成リストに小節が登録されている練習段階に基づいて、次の前記練習段階を決定する。
例えば、ステップ1の未達成リストに1つでも小節が登録されていれば、次の練習段階は、音高に関するステップ1に決定される。
また、ステップ1の未達成リストに小節は登録されておらず、ステップ2の未達成リストに1つでも小節が登録されていれば、次の練習段階は、リズムに関するステップ2に決定される。
さらに、ステップ1,2の未達成リストに小節は登録されておらず、ステップ3の未達成リストに1つでも小節が登録されていれば、次の練習段階は、テンポに関するステップ3に決定される。
最後に、ステップ1,2,3の未達成リストに小節は登録されておらず、フレーズ境界位置リストに1つでも小節が登録されていれば、次の練習段階は、楽曲の演奏進行の滑らかさに関するステップ4に決定される。
一方、前回の練習段階が楽曲の演奏進行の滑らかさを練習するステップ4(通し練習ステップ)であった場合には、練習段階決定部101は、フレーズ境界位置リストに小節が登録されているときに、次の練習段階として、ステップ4を再度決定する。
このようにして、ステップ1から4のいずれかの練習段階が決定されると、さらに、図1において、練習順番決定部102は、練習段階決定部101が決定した練習段階の演奏要素に対応する未達成リストまたはフレーズ境界位置リストに登録されている小節が含まれるフレーズに基づいて、次の練習のフレーズを決定する。
例えば、前回の練習段階が、ステップ1(音高練習ステップ)、ステップ2(リズム練習ステップ)、またはステップ3(テンポ練習ステップ)であったときには、練習順番決定部102は、練習段階決定部101が決定した練習段階の演奏要素に対応する未達成リストに登録されている小節が含まれるフレーズに基づいて、例えばそのフレーズをそのまま、次の練習のフレーズとして決定する。
前回の練習段階が楽曲の演奏進行の滑らかさを練習するステップ4(通し練習ステップ)であったときには、練習順番決定部102は、フレーズ境界位置リストに登録されている小節をフレーズ境界とする、その小節が含まれるフレーズとその次のフレーズの組を決定する。
図9は、図1の機能構成を有する演奏練習装置100の実施形態のハードウェア構成の一例を示す図である。この演奏練習装置100は、CPU(中央演算処理装置)901、ROM(リードオンリーメモリ)902、RAM(ランダムアクセスメモリ)903、入力部904、表示部905、およびMIDIインタフェース部(以下「MIDI I/F」と表記する)906が、バス907によって相互に接続された構成を備える。MIDI I/F906は、外部(内蔵でもよい)の電子楽器908に接続される。
CPU901は、ROM902に記憶された制御プログラムに従って、当該演奏練習装置100の全体の制御を行う。
ROM902は、後述する各フローチャートで示される制御動作を実行する制御プログラムを記憶するほか、複数の楽曲の演奏データなどを記憶する。
RAM903は、制御プログラムの実行に必要な、前述した、練習段階テーブル600(図6)、練習順番リスト700(図7)、小節完成度データ801(図8)、練習段階毎の未達成リスト、フレーズ境界位置リストなどの各種制御データや、練習対象となる演奏データ等を、一時的に記憶する。
入力部904は、ユーザによるキーボード、マウス、各種スイッチ等による入力操作を検出し、その検出結果をCPU901に通知する。
表示部905は、CPU901の制御によって送られてくるデータを液晶ディスプレイなどに出力する。例えば、表示部905は、自動練習される楽曲の情報や、演奏の練習段階に関する図6の練習段階テーブル600の内容などを表示する。
MIDI I/F906は、前述した図1の自動練習繰返し部107の機能を実行するCPU901が順次生成する演奏データを、MIDIフォーマットに変換しながら電子楽器908に順次供給して、自動練習を順次実行する。また、MIDI I/F906は、前述した図1の練習機能設定部106の機能を実行するCPU901が、自動練習開始時に練習段階に応じて設定した練習機能を、MIDIフォーマットに変換して電子楽器908の機能設定部に対して設定する。さらに、MIDI I/F906は、CPU901が実行する、自動練習における楽曲の各音符とユーザの演奏とで比較を行う演奏評価処理(図1の演奏評価部103の機能に対応する)のために、ユーザが電子楽器908において演奏した演奏データを取り込んで、RAM903上のノート入力バッファに記憶させる。CPU901は、演奏評価処理において、ノート入力バッファに取り込まれるユーザの演奏による演奏データと、自動練習における楽曲の各音符とを順次比較することにより、前述した小節完成度データ801(図8参照)を生成する。
本実施形態による演奏練習装置100の動作は、後述する図10から図15のフローチャート等で実現される図1の各部の機能処理を搭載した制御プログラムを、CPU101がROM102から読み出して順次実行することで実現される。そのプログラムは、特には図示しない可搬型記録媒体を介して提供されてもよく、或いは特には図示しないネットワーク接続装置によりネットワークから取得できるようにしてもよい。
以下、本発明の動作について、フローチャートに沿って説明する。なお、各フローチャートの説明において、随時図9の各部を参照するものとする。
図10は、図9のハードウェア構成を有する演奏練習装置100が実行する演奏練習制御処理の全体動作を示すフローチャートである。
まず、ユーザが入力部904を操作することにより入力された練習モードに対して、CPU901が練習モードをRAM903などに設定する(ステップS1001)。練習モードとしては、自動練習モードと、手動練習モードを選択でき、さらに手動練習モードとしては、範囲指定練習モードと範囲未指定練習モードを選択できる。自動練習とそうでない練習の違いは、以下の通りである。自動練習では、演奏できるようになりたい大枠の範囲をユーザが設定したらそこからの進行方法が自動化される。これに対して、通常の範囲指定練習では、ユーザが繰り返し練習したい範囲を自ら指定して練習を行う。範囲を指定しない練習では、ユーザが好きな場所を見て弾いて練習するだけの特に機械的アシストの無い練習モードである。
次に、CPU901は、ステップS1001で自動練習モードが選択されたか否かを判定する(ステップS1002)。
自動練習モードが選択されず、ステップS1002の判定がNOならば、CPU901はさらに、範囲指定練習モードが選択されたか否かを判定する(ステップS1010)。
範囲指定練習モードが選択されステップS1010の判定がYESならば、CPU901は、入力部904を介して、ユーザの手動による範囲指定を受け付ける(ステップS1011)。
次に、CPU901は、入力部904を介して、ユーザによる指定範囲の繰返し方法の指定を受け付ける(ステップS1012)。
一方、範囲指定練習モードが選択されステップS1010の判定がNOならば、CPU901は、範囲を指定しない練習モードを設定する(ステップS1013)。
ステップS1012またはS1013の処理の後、CPU901は、練習機能を設定する(ステップS1014)。ここでは、CPU901は、MIDI I/F906を介して電子楽器908に対して、練習機能を設定する。例えば、リズムのアシストや伴奏のアシスト等である。
その後、CPU901は、ステップS1005→S1006の判定がNO→S1009→S1005という繰返し処理によって、入力部904を介したユーザによる練習モードの変更の判定(ステップS1005)と、入力部904を介したユーザによる練習の終了の判定(ステップS1009)を繰り返し実行する。
自動練習モードが選択されステップS1002の判定がYESならば、CPU901は、自動練習に対する全体的な設定の処理を実行する(ステップS1003)。ここでは例えば、CPU901は、入力部904を介してユーザによる楽曲の選択などを受け付ける。
次に、CPU901は、自動練習設定処理を実行する(ステップS1004)。ここでは、CPU901は、図1に示される練習段階決定部101、練習順番決定部102、練習機能設定部106、および達成状況更新部104の前述した各機能に対応する処理を実行する。この処理の詳細は、図11から図14までのフローチャートを用いて後述する。
ステップS1004の自動練習設定処理によって自動練習の開始が指示されると、CPU901は、前述した図7の練習順番リスト700中の1つの練習順番データ701で定まる練習開始小節から練習終了小節までの間で、ステップS1005からS1009の繰返し処理を実行する。
ステップS1005からS1009の繰返し処理において、自動練習中は自動練習中フラグがオン(例えば値1)になることによりステップS1006の判定がYESとなって、CPU901は、ステップS1007で、演奏評価処理を実行する。ここでは、CPU901は、図1に示される演奏評価部103の機能に対応する前述した処理を実行する。この処理の詳細は、図15のフローチャートを用いて後述する。
ステップS1005からS1009の繰り返し処理において、CPU901は、ステップS1008で、現在の練習順序が達成したか否か、すなわち、前述した図7の練習順番リスト700中の1つの練習順番データ701で定まる練習開始小節から練習終了小節までの処理が終了したか否かを判定する。1つの練習順番データ701の練習終了小節までの処理が終了してステップS1008の判定がYESになると、CPU901は、ステップS1004の自動練習設定処理に戻る。
ステップS1005からS1009の繰り返し処理において、CPU901は、ステップS1005で、入力部904を介したユーザによる練習モードの変更の判定を行う。ユーザが入力部904で練習モードを変更すると、ステップS1005の判定がYESになって、CPU901は、ステップS1001の練習モードの選択の処理に戻る。
ステップS1005からS1009の繰り返し処理において、CPU901は、ステップS1009で、入力部904を介したユーザによる練習の終了の判定を行う。ユーザが入力部904で練習の終了を指示すると、ステップS1009の判定がYESになって、CPU901は、図10のフローチャートの演奏練習制御処理を終了する。
図11および図12は、図10のステップS1004の自動練習設定処理を示すフローチャートである。
CPU901はまず、RAM903上に記憶している自動練習中フラグがオン(例えば値1)か否(オフ)(例えば値0)かを判定する(ステップS1101)。
自動練習の開始時には、自動練習中フラグがオフでステップS1101の判定がNOとなって、CPU901は、ステップS1105の処理に移行する。CPU901は、ステップS1105以降では、最初の練習段階および練習順番の決定の各処理を実行し、それらの決定に基づいて自動練習をスタートさせる。
また、自動練習中には自動練習中フラグがオンであり、前述したように1つの練習順番データ701の練習終了小節までの処理が終了して図10のステップS1008の判定がYESになると、図10のステップS1004に戻り、図11のステップS1101の判定処理が実行され、この場合にステップS1101の判定がYESとなる。
この結果、現在の練習段階において、図7の練習順番リスト700中に次の練習順番データ701があれば、ステップS1102の判定がYESとなって、CPU901は、次の練習順番データ701の練習開始小節と練習終了小節を読み出して次の練習順序へ進む(ステップS1104)。これにより、前述した図10のステップS1005からS1009の繰り返し処理が再び実行されることにより、いままでと同じ練習段階中の次の練習順番データ701で決まる練習区間に対する演奏評価処理が実行される。
一方、現在の練習段階において、図7の練習順番リスト700中に次の練習順番データ701がなければ、ステップS1102の判定がNOとなって、CPU901は、自動練習中フラグをオフにし(例えば値0をセットし)、ステップS1105の処理に移行する。この結果、CPU901は、ステップS1105では、前の練習段階に対する達成状況の確認と、次の練習段階および練習順番の決定の各処理を実行し、それらの決定に基づいて改めて自動練習をスタートさせる。
まず、CPU901は、入力部904を介してユーザが、RAM903に記憶されている前述した図6に例示される練習段階テーブル600に登録されている、練習段階毎のフレーズ分割方法データ602または繰返し方法データ603を変更する指示を出しているか否かを判定する(ステップS1105)。
ステップS1105の判定がYESならば、CPU901は、入力部904からのユーザの設定変更を受け付ける(ステップS1106)。CPU901は、この設定変更の結果を、RAM903上の練習段階テーブル600に反映させる。練習段階テーブル600は、図1の練習段階テーブル105に対応する。
ステップS1105の判定がNOの場合またはステップS1106の処理の後、CPU901は、入力部904を介してユーザが楽曲中の前述した図2に例示される全体練習範囲を自動で選択する設定をしているか否かを判定する(ステップS1107)。
全体練習範囲の選択が自動と設定されていた場合、ステップS1107の判定がYESとなり、CPU901は、自動的に楽曲中の全体練習範囲を選択する(ステップS1108)。例えば、楽曲の全体、前半の範囲、後半の範囲、数小節などである。
全体練習範囲の選択が自動ではなくステップS1107の判定がNOならば、CPU901は、ユーザに入力部904を介して手動で全体練習範囲を選択させる(ステップS1109)。
ステップS1108またはS1109による全体練習範囲の選択の後、CPU901は、全体練習範囲内の達成状況更新処理を実行する(ステップS1110)。ここでは、CPU901は、図1に示される達成状況更新部104の機能に対応する前述した処理を実行する。この処理の詳細は、図13のフローチャートを用いて後述する。
その後、CPU901は、図12のステップS1111からS1130までの一連の処理を実行する。ここでは、CPU901は、前述した、図1に示される練習段階決定部101での練習段階の決定と、練習順番決定部102での練習するフレーズの決定および決定したフレーズにおける各小節の練習順番の決定と、練習機能設定部106での練習機能の設定の各処理を実行する。
前述したように、図1の練習段階決定部101は、前回の自動練習の結果、図1の達成状況更新部104が出力する練習段階毎の未達成リストまたはフレーズ境界位置リストに基づいて、次の練習段階を決定する。達成状況更新部104の機能は、図11のステップS1110の全体練習範囲内の達成状況更新処理によって実現され、後述する図13のフローチャートで示される達成状況更新処理によって、練習段階毎の未達成リストが生成される。
図12において、CPU901は、練習レベルの低いほうからステップ1,2,3の順で未達成リストをチェックする(ステップS1111→S1116→S1121)。
CPU901はまず、RAM903上に記憶されているステップ1未達成リストに値があるか否かを判定する(ステップS1111)。
ステップ1未達成リストに1つでも小節が登録されていてステップS1111の判定がYESならば、CPU901は、練習ステップを示すRAM903上の変数sにステップ1を示す値1をセットする(ステップS1112)。これにより、次の練習段階は、音高に関するステップ1に決定される。
続いて、CPU901は、RAM903に記憶された図6に例示される練習段階テーブル600を参照することにより、練習段階s=1(ステップ1)に対応する図6に例示したフレーズ分割方法データ602を抽出し、例えば先頭から3小節ずつ区切ってフレーズを決定する(ステップS1113)。
次に、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=1(ステップ1)に対応する図6に例示した繰返し方法データ603を抽出し、図3に例示したような方法によるフレーズ内の小節に関する練習順番を設定する(ステップS1114)。
さらに、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=1(ステップ1)に対応する図6に例示したおすすめ練習機能データ604を抽出する。そして、CPU901は、おすすめ練習機能データ604に対応する練習機能を、MIDI I/F906を介してMIDIデータとして、電子楽器908の機能設定部に設定する(ステップS1115)。ステップ1の練習段階では、テンポはゆっくりで、また、音高がよくわかるように、メロディ音としてサスティーンの長い楽音が設定される等の、音高練習系機能が設定される。
ステップ1未達成リストに小節が登録されておらずステップS1111の判定がNOならば、CPU901は次に、RAM903上に記憶されているステップ2未達成リストに値があるか否かを判定する(ステップS1116)。
ステップ2未達成リストに1つでも小節が登録されていてステップS1116の判定がYESならば、ステップ1の場合と同様に、CPU901は、練習ステップを示すRAM903上の変数sにステップ2を示す値2をセットする(ステップS1117)。これにより、次の練習段階は、リズムに関するステップ2に決定される。
続いて、CPU901は、RAM903に記憶された図6に例示される練習段階テーブル600を参照することにより、練習段階s=2(ステップ2)に対応する図6に例示したフレーズ分割方法データ602を抽出し、例えば先頭から3小節ずつ区切ってフレーズを決定する(ステップS1118)。
次に、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=2(ステップ2)に対応する図6に例示した繰返し方法データ603を抽出し、図3に例示したような方法によるフレーズ内の小節に関する練習順番を設定する(ステップS1119)。
さらに、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=2(ステップ2)に対応する図6に例示したおすすめ練習機能データ604を抽出する。そして、CPU901は、おすすめ練習機能データ604に対応する練習機能を、MIDI I/F906を介してMIDIデータとして、電子楽器908の機能設定部に設定する(ステップS1120)。ステップ2の練習段階では、テンポは少しゆっくりで、また、リズムがよくわかるようにメロディ音に重ねて打楽器音の楽音が設定される等の、リズム練習系機能が設定される。
ステップ2未達成リストに小節が登録されておらずステップS1116の判定がNOならば、CPU901は次に、RAM903上に記憶されているステップ3未達成リストに値があるか否かを判定する(ステップS1121)。
ステップ3未達成リストに1つでも小節が登録されていてステップS1121の判定がYESならば、ステップ1,2の場合と同様に、CPU901は、練習ステップを示すRAM903上の変数sにステップ3を示す値3をセットする(ステップS1122)。これにより、次の練習段階は、テンポに関するステップ3に決定される。
続いて、CPU901は、RAM903に記憶された図6に例示される練習段階テーブル600を参照することにより、練習段階s=3(ステップ3)に対応する図6に例示したフレーズ分割方法データ602を抽出し、例えば先頭から3小節ずつ区切ってフレーズを決定する(ステップS1123)。
次に、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=3(ステップ3)に対応する図6に例示した繰返し方法データ603を抽出し、今度は図4に例示したような方法によるフレーズ内の小節に関する練習順番を設定する(ステップS1124)。
さらに、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=3(ステップ3)に対応する図6に例示したおすすめ練習機能データ604を抽出する。そして、CPU901は、おすすめ練習機能データ604に対応する練習機能を、MIDI I/F906を介してMIDIデータとして、電子楽器908の機能設定部に設定する(ステップS1125)。ステップ3の練習段階では、最適なテンポが設定されたり、また、現在の演奏のテンポを視覚的に表示してテンポを意識させる機能等の、テンポ練習系機能が設定される。
ステップ3未達成リストに小節が登録されておらずステップS1121の判定がNOならば、CPU901は、今度は未達成リストではなく、RAM903上に記憶されているフレーズ境界位置リストに値があるか否かを判定する(ステップS1126)。
フレーズ境界位置リストに1つでも小節が登録されていてステップS1126の判定がYESならば、ステップ1,2,3の場合と同様に、CPU901は、練習ステップを示すRAM903上の変数sにステップ4を示す値4をセットする(ステップS1127)。これにより、次の練習段階は、楽曲の演奏進行の滑らかさに関するステップ4に決定される。
続いて、CPU901は、RAM903に記憶された図6に例示される練習段階テーブル600を参照することにより、練習段階s=4(ステップ4)に対応する図6に例示したフレーズ分割方法データ602を抽出し、小節完成度データ801(図8)中の連続正解フラグ(前)と連続正解フラグ(後)のうち例えば連続正解フラグ(後)が不正解を示す小節境界で分割されたフレーズを決定する(ステップS1128)。
次に、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=4(ステップ4)に対応する図6に例示した繰返し方法データ603を抽出し、図5に例示したような方法による2フレーズからなるフレーズ組内の小節に関する練習順番を設定する(ステップS1129)。
さらに、CPU901は、同じく練習段階テーブル600を参照することにより、練習段階s=4(ステップ4)に対応する図6に例示したおすすめ練習機能データ604を抽出する。そして、CPU901は、おすすめ練習機能データ604に対応する練習機能を、MIDI I/F906を介してMIDIデータとして、電子楽器908の機能設定部に設定する(ステップS1130)。ステップ4の練習段階では、練習範囲の全体を通した楽曲の雰囲気がつかめるように、様々な演奏効果が設定される等の、動作練習系機能が設定される。
以上のようにして、CPU901は、ステップ1,2,3,または4のいずれかの練習段階とそれに関連する制御情報の設定が完了すると、ステップS1115,S1120,S1125,またはS1130からステップS1131の処理に移行する。
CPU901は、ステップS1131で、ステップ1から4の各ステップ毎に練習対象として決定されたフレーズ(またはフレーズの組)および各フレーズ内での小節の練習順番に基づいて図7に例示した練習順番データ701からなる練習順番リスト700を生成する、練習順番リスト生成処理を実行する。ここでは、CPU901は、前述した、図1に示される練習順番決定部102での図7に例示される練習順番リスト700の生成とRAM903への記憶の処理を実行する。この処理の詳細は、図14のフローチャートを用いて後述する。
CPU901は、ステップS1131によって図7に例示される練習順番リスト700を生成しRAM903に記憶させると、RAM903上の自動練習中フラグをオンに(例えば値1をセット)し、自動練習を開始する(ステップS11321)。その後、CPU901は、図11および図12のフローチャートで示される図10のステップS1004の自動練習設定処理を終了する。そして、CPU901は、図10のステップS1005からS1009の繰返し処理に移行し、自動練習を開始する。
図12において、フレーズ境界位置リストに小節が登録されておらずステップS1126の判定がNOならば、CPU901は、練習が完了したと判定して、自動練習終了処理を実行する(ステップS1133)。この処理では、CPU901は、例えばRAM903内の自動練習関連の制御データを削除したり、MIDI I/F906を介して電子楽器908に対する練習機能の設定をクリアしたりする。最後に、CPU901は、RAM903上の自動練習中フラグをオフにして、図11および図12のフローチャートで示される図10のステップS1004の自動練習設定処理を終了する。この結果、図10のステップS1005→ステップS1006の判定がNO→ステップS1009→ステップS1005の繰返し処理により、入力部904からのユーザによる練習モードの変更の指定(ステップS1005)、または練習の終了の指定(ステップS1009)を待機する状態になる。
図13は、図11のステップS1110の全体練習範囲内の達成状況更新処理を示すフローチャートである。ここでは、CPU901は、図1に示される達成状況更新部104の機能に対応する処理を実行する。
CPU901は、まず、小節の繰返し制御のためのRAM903上の変数iに、図11のステップS1108またはS1109で選択された全体練習範囲(図2を例を参照)の開始小節の番号をセットする(ステップS1301)。その後、CPU901は、ステップS1311で変数iの値が全体練習範囲の終了小節の番号より小さいと判定される間、ステップS1312で変数iの値を+1ずつインクリメントしながら、変数iによって指定される全体練習範囲内の各小節毎に、以下のステップS1302からS1310までの一連の処理を実行する。
CPU901はまず、前回の自動練習時の練習段階のステップ番号を記憶しているRAM903上の変数sの値が4であるか否か、すなわち前回の練習段階がステップ4であるか否かを判定する(ステップS1302)。
前回の練習段階がステップ4ではなく(ステップ1,2,3のいずれかで)、S1302の判定がNOならば、CPU901は、まず、全体練習範囲内の変数iの値が示すi番目の小節において、ユーザの演奏が音高の演奏要素についての練習基準を達成しているか否かを判定する(ステップS1303)。具体的には、CPU901は、図8に例示される#iの小節完成度データ801に記憶されている音高達成率が音高達成率のための閾値に比較して大きいか否かを判定する。
CPU901は、音高が達成されておらず(音高達成率が閾値に比較して小さく)、ステップS1303の判定がNOならば、RAM903に記憶される例えば配列データであるステップ1未達成リストに、変数iの値である小節番号iを追加登録する(ステップS1304)。その後、CPU901は、ステップS1311の処理に移行する。
CPU901は、音高が達成されており(音高達成率が閾値に比較して大きく)、ステップS1303の判定がYESならば、次に、全体練習範囲内の変数iの値が示すi番目の小節において、ユーザの演奏がリズムの演奏要素についての練習基準を達成しているか否かを判定する(ステップS1305)。具体的には、CPU901は、図8に例示される#iの小節完成度データ801に記憶されているリズム達成率がリズム達成率のための閾値に比較して大きいか否かを判定する。
CPU901は、リズムが達成されておらず(リズム達成率が閾値に比較して小さく)、ステップS1305の判定がNOならば、RAM903に記憶される例えば配列データであるステップ2未達成リストに、変数iの値である小節番号iを追加登録する(ステップS1306)。その後、CPU901は、ステップS1311の処理に移行する。
CPU901は、リズムが達成されており(リズム達成率が閾値に比較して大きく)、ステップS1305の判定がYESならば、次に、全体練習範囲内の変数iの値が示すi番目の小節において、ユーザの演奏がテンポの演奏要素についての練習基準を達成しているか否かを判定する(ステップS1307)。具体的には、CPU901は、図8に例示される#iの小節完成度データ801に記憶されているテンポ達成率がテンポ達成率のための閾値に比較して大きいか否かを判定する。
CPU901は、テンポが達成されておらず(テンポ達成率が閾値に比較して小さく)、ステップS1307の判定がNOならば、RAM903に記憶される例えば配列データであるステップ3未達成リストに、変数iの値である小節番号iを追加登録する(ステップS1308)。その後、CPU901は、ステップS1311の処理に移行する。
CPU901は、テンポについても達成されており(テンポ達成率が閾値に比較して大きく)、ステップS1307の判定がYESならば、楽曲の演奏進行の滑らかさに対する達成状況を判定するためのステップS1309の処理に移行する。
CPU901は、前回の練習段階がステップ4でS1302の判定がYESの場合、または上述したように、音高、リズム、およびテンポの全てについてユーザの演奏が練習基準を達成しておりステップS1370の判定がYESの場合には、ステップS1309を実行する。
CPU901は、ステップS1309において、全体練習範囲内の変数iの値が示す、図8に例示される#iの小節完成度データ801に記憶されている連続正解フラグ(後)が正解を示している(値が真である)か否かを判定する。
CPU901は、連続正解フラグ(後)が正解を示しておらずステップS1309の判定がNOならば、RAM903に記憶される例えば配列データであるフレーズ境界位置リストに、変数iの値である小節番号iを追加登録する(ステップS1310)。その後、CPU901は、ステップS1311の処理に移行する。
CPU901は、連続正解フラグ(後)が正解を示しておりステップS1309の判定がYESならば、変数iの値である小節番号iに関しては、未達成リストおよびフレーズ境界位置リストへの登録は行わずに、ステップS1311の処理に移行する。
CPU901が、以上の未達成リストまたはフレーズ境界位置リストへの登録処理を、全体練習範囲の開始小節から終了小節までの全ての小節i(1≦i≦m)について実行することにより、図1の達成状況更新部104の機能が実現される。変数iの値が全体練習範囲の終了小節に等しくなると、ステップS1311の判定がNOとなって、CPU901は、図13のフローチャートで示される図10のステップS1110の全体練習範囲内の達成状況更新処理を終了する。
図14は、図11および図12の自動練習設定処理におけるステップS1131(図12)の練習順番リスト生成処理を示すフローチャートである。ここでは、CPU901は、図1に示される練習順番決定部102の一部の機能に対応する処理を実行する。
CPU901は、まず、フレーズの繰返し制御のためのRAM903上の変数iに、図12のステップS1113、S1118、S1123、またはS1128で決定したフレーズの先頭番号=1をセットする(ステップS1401)。その後、CPU901は、ステップS1407で変数iの値が上記決定されたフレーズの数より小さいと判定される間、ステップS1408で変数iの値を+1ずつインクリメントしながら、変数iによって指定される各フレーズ毎に、以下のステップS1402からS1406までの一連の処理を実行する。
CPU901はまず、ステップS1112、S1117、S1122、またはS1127で決定しRAM903上の変数sに記憶させた次回の(これから実行される)練習ステップ(練習段階)の番号が4であるか否か、すなわち次回の練習段階がステップ4であるか否かを判定する(ステップS1402)。
次回の練習段階がステップ4ではなくS1402の判定がNOの場合(ステップ1,2,3のいずれかの場合)、CPU901は、変数iが示すi番目のフレーズ内に、RAM903に記憶されているステップs未達成リストに登録されている小節が含まれるか否かを判定する(ステップS1403)。
ステップS1403の判定がYESならば、変数iが示すi番目のフレーズiは練習対象であるため、CPU901は、フレーズi内で、ステップS1114、S1119、またはS1124で決定した練習順番に従って、図7に例示されるデータ形式で、練習順番データ701を順次生成し、練習順番リスト700の構成要素としてRAM903に記憶させる。練習順番に従って1組の連続する小節群が決定される毎に、その先頭小節と最終小節の各番号が練習開始小節と練習終了小節にセットされた練習順番データ701が1つ生成される。ステップ1,2の場合の練習順番の生成の仕方は図3を例に前述した通りであり、ステップ3の場合の練習順番の生成の仕方は図4を例に前述した通りである。その後、CPU901は、ステップS1407の処理に移行する。
ステップS1403の判定がNOならば、変数iが示すi番目のフレーズiは練習対象ではないため、CPU901は、練習順番データ701は生成せずに、ステップS1407の処理に移行する。
次回の練習段階がステップ4でS1402の判定がYESの場合、CPU901は、変数iが示すi番目のフレーズiと、その次のi+1番目のフレーズi+1の連続する2フレーズ内で、ステップS1129で決定した練習順番に従って、図7に例示されるデータ形式で、練習順番データ701を順次生成し、練習順番リスト700の構成要素としてRAM903に記憶させる(ステップS1405)。ここでは、ステップS1404の場合と同様に、練習順番に従って1組の連続する小節群が決定される毎に、その先頭小節と最終小節の各番号が練習開始小節と練習終了小節にセットされた練習順番データ701が1つ生成される。この場合の練習順番の生成の仕方は、前述した図5の例における、練習順番1,2,3,4,6,7が対応する。なお、この場合に、ステップS1403の場合と同様、フレーズiとフレーズi+1の連続する2フレーズ間が、演奏進行が滑らかでないと判定された「フレーズ境界位置リスト」に登録されている場合のみ、このステップS1405やステップS1406の練習順番生成を行うこととしても良い。
続いて、CPU901は、現在の練習区間の先頭のフレーズ1から、フレーズi+1までの連続するフレーズ内で、通しの練習順番を有する練習順番データ701を生成し、練習順番リスト700の構成要素としてRAM903に記憶させる(ステップS1406)。この通しの練習順番の生成の仕方は、前述した図5の例における練習順番5,8が対応する。
その後、CPU901は、ステップS1407の処理に移行する。
CPU901が、以上の練習順番リスト700への練習順番データ701の登録処理を、決定された全てのフレーズi(1≦i≦決定されたフレーズ数)について実行することにより、図1の練習順番決定部102が練習順番リスト700を生成する機能が実現される。変数iの値が決定されたフレーズ数に等しくなると、ステップS1407の判定がNOとなって、CPU901は、図14のフローチャートで示される図12のステップS1131の練習順番リスト生成処理を終了する。
図15は、図10のステップS1007の演奏評価処理を示すフローチャートである。ここでは、図1に示される演奏評価部103の機能に対応する処理が実行される。CPU901は、音高、リズム、テンポ、楽曲の演奏進行の滑らかさの各演奏要素について、ノートオン毎に、ユーザにより演奏された音符の演奏データについて自動練習における楽曲の各音符に対する正誤判定を行って、ユーザの演奏を評価する。CPU901は、音符毎の正誤判定の結果に基づいて、小節単位で、音高、リズム、テンポの各達成率と、連続正解フラグ(前)および連続正解フラグ(後)を算出し、RAM903上の図8に例示される小節完成度データ801に記憶させる。
図15において、CPU901はまず、現在ユーザがパート練習中か否かを判定する(ステップS1501)。「パート練習中」とは、ユーザが電子楽器908において例えば、パート練習中でないときに、最初に鍵盤を押鍵することにより練習を開始してから、ノートオフ後所定の時間ノートオンがなされない等の所定の条件に合致して「パート練習終了」と判断されるまでの期間をいう。自動練習の開始時には、パート練習はまだ開始されていないため、ステップS1501の判定はNOとなる。
ステップS1501の判定がNOの場合、CPU901は、パート練習開始の状態になったか否かを判定する
ユーザがまだ押鍵等を開始していないとパート練習開始の状態にはならず、ステップS1501の判定はNOとなる。この場合には、CPU901は、ステップS1508で小節完成度データ801をセットした後、図15のフローチャートで示される図10のステップS1007の演奏評価処理を終了する。その後、図10において、ステップS1008の判定がNO、ステップS1009の判定がNO、ステップS1005の判定がNO、ステップS1006の判定がYESとなって、再び図15のフローチャートで示されるステップS1007が実行される。
上述のように、ユーザが押鍵等によるノートオンを開始するまでは、図15のS1501がNO→S1502がNO→S1508→図10のS1008がNO→S1009がNO→S1005がNO→S1006がYES→S1501がNOという一連の処理が繰り返される(これを「第1の繰返し処理」と呼ぶ)。
ユーザが押鍵等によるノートオンを行ってパート練習が開始されると、CPU901は、RAM903上に記憶されるパート練習中フラグをオンに(例えば値1をセット)する(ステップS1503)。パート練習中は、ユーザの押鍵・離鍵の操作に応じて、適宜ノートオン・ノートオフ等のデータがMIDI I/F906を介して、MIDIデータとして電子楽器908からRAM903上のノート入力バッファに記憶される。また、このパート練習中となることによって、上記第1の繰返し処理中の図15のステップS1502の判定がYESとなり、パート練習中は、ユーザの押鍵・離鍵の操作に応じたノートオン・ノートオフ等のデータがRAM903上のノート入力バッファに記憶されていくこととなる。
続いて、CPU901は、パート演奏終了の状態になったか否かを判定する(ステップS1504)。これは、例えば、パート練習中となっているときに、ユーザが全く押鍵していない状態が、例えば所定の時間続いた(例えば2秒間全く押鍵されない等)場合に、「パート演奏終了」と判断する。所定の時間は、曲のテンポやリズム、曲中に出現する休符長などを参考として決定される。ユーザが押鍵等を行って、パート練習中の状態を維持している間は、パート演奏終了の状態にはならず、ステップS1504の判定はNOとなる。この場合には、CPU901は、ステップS1508で小節完成度データ801をセットした後、図10のステップS1008へ戻り、さらに処理を進める。その後、図10において、ステップS1008の判定がNO、ステップS1009の判定がNO、ステップS1005の判定がNO、ステップS1006の判定がYESとなって、再び図15のフローチャートで示されるステップS1007が実行される。そして、パート練習中フラグがオンになっているため、図15のステップS1501の判定はYESになる。
このようにして、ユーザが押鍵等によるノートオンを維持している間は、図15のS1501がYES→S1504がNO→S1508→図10のS1008がNO→S1009がNO→S1005がNO→S1006がYES→S1501がYESという一連の処理が繰り返される(これを「第2の繰返し処理」と呼ぶ)。なお、ユーザが押鍵等していないという状態も、演奏評価の対象となることから、第2の繰返し処理の中では、ノートオン・ノートオフの状態に拘わらず、パート練習中は、図15のステップS1508で小節完成度データ801がセットされる処理が実行される
パート練習中となっているときに、ユーザが全く押鍵していない状態が所定の時間続く等、所定の条件に合致すると、「パート演奏終了」であると判断されて、上記第2の繰返し処理中の図15のステップS1504の判定がYESとなる。
ステップS1504の判定がYESになると、CPU901はまず、パート練習中フラグをオフに(例えば値0をセット)する。
次に、CPU901は、RAM903上のノート入力バッファに記憶された、ノートオン・ノートオフ等の値を演奏データの正誤判定用のRAM903上の別の領域にコピーし、ノート入力バッファの内容を初期化する(新たにノートオンまたはノートオフデータを入力できる状態にする)(ステップS1506)。
続いて、CPU901は、上記コピーされたデータに基づいて、ユーザにより演奏された音符の演奏データについて自動練習における楽曲の各音符に対する正誤判定を行う(ステップS1507)。
CPU901は、ステップS1508で、ここまでの自動練習に基づき、現在の小節内での音高達成率、リズム達成率、テンポ達成率を更新し、それらの結果を現在の小節に対応する小節完成度データ801(図8参照)に記憶させる。また、現在の小節において1つ前の小節からの演奏の連続性が所定の基準のもとで維持されている場合には、CPU901は、1つ前の小節の連続正解フラグ(後)と現在の小節の連続正解フラグをともに正解を示す値(例えば値1)にセットし、それぞれの小節の小節完成度データ801に記憶させる(以上、ステップS1508)。
CPU901は、ステップS1508を実行した後、図15のフローチャートで示される図10のステップS1007の演奏評価処理を終了する。その後、図10において、ステップS1008の判定がNO、ステップS1009の判定がNO、ステップS1005の判定がNO、ステップS1006の判定がYESとなって、再び図15のフローチャートで示されるステップS1007が実行される。そして、パート練習中フラグがオフになっていた場合は、図15のステップS1501の判定はNOになる。この結果、ユーザが次に押鍵等してパート練習が開始されるまで、再び前述した第1の繰返し処理になる。
以上のようにして、図15のフローチャートで示される図10のステップS1007の演奏評価処理では、自動練習における楽曲の各音符と、ユーザの演奏で発生する各音符とを順次比較することにより、現在の練習段階に対応する演奏要素をユーザの演奏が満たしているか否かを順次評価することが可能となる。
以上説明した制御動作に加えて、CPU901は例えば、図11のステップS1110の全体練習範囲の達成状況更新処理において、前回の練習段階におけるユーザの演奏の達成状況を確認した後、例えば図9の表示部905の液晶ディスプレイ等に、練習の進捗を表示するような制御を行ってもよい。図16は、練習進捗の表示例を示す図である。本実施形態による演奏練習制御処理では、ある練習区間について、ユーザの演奏→正誤判定→所定回数判定→次の練習範囲という順序で行っていくように、制御が行われてもよい。図16に例示されるように、この場合の練習進捗の表示では例えば、ある練習区間の演奏正解の回数が左上の星の色が濃くなった数で表示され、その数が所定回数分になると次の練習範囲へ進むというようにユーザに認識させることができる。また、図16に例示されるように、フレーズの長さが横方向の棒グラフで表示され、その棒グラフ中で色が濃い部分が右端まで一杯になると現在のステップが完了したというようにユーザに認識させることができる。
以上の実施形態において、ユーザが自動練習を中断させた場合(例えば図10のステップS1009の判定がNOとなった場合)に、自動練習の途中経過を特には図示しない不揮発性のメモリに保存し、次回ユーザが自動練習を再開させた場合に、この保存内容を再度呼び出して途中から自動練習を再開するようにしてもよい。
なお。上記の実施形態において、図6のテーブルで示されている各種の設定について、ユーザが適宜設定を変更できるようにしても良い。例えば、ステップS1106で、フレーズの分割方法/繰返し方法を設定変更できることとしているが、例えば、「先頭から3小節ずつ区切る」の小節数を、適宜設定変更できるようにしても良い。また、あらかじめ他に複数のフレーズ分割方法を実現する回路若しくは処理プログラムが備えられており、それらの中からユーザが所望する方法を指定する形で実現可能である。また、このような選択的な指定方法は、図6の他のテーブルの部分についても、同様に実現することができる。
また、図6のテーブルそのものが記憶されていなくても、このようなテーブルで示したのと同等の処理分岐を行うように、あらかじめ機器がセットされていることとしても良い。
以上のようにして、本実施形態では、練習を段階別に分け、最適な練習範囲を設定して自動練習をすることができるので、ユーザは演奏の実践部分にだけ集中することができる。このようにして、本実施形態では、音高、リズム、テンポ、楽曲の演奏進行の滑らかさといった演奏要素毎の練習が可能となり、それぞれの練習の練習範囲長や練習順序の設定が自動化され、自動で練習の目的に合わせた機能を提供できる。これにより、練習効率を向上させることが可能となる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
指定された楽曲内の練習範囲におけるユーザの演奏の達成状況に応じて、前記楽曲の演奏の評価基準となる演奏要素に対応する練習段階を決定する練習段階決定部と、
当該決定された練習段階および前記達成状況に基づいて、前記練習範囲内に含まれる複数のフレーズの中からユーザに演奏の練習を行わせるフレーズを決定するとともに、当該決定されたフレーズを構成している複数の小節のうち少なくとも1以上の小節をどのような順番で練習させるのかを指定するための練習順番を決定する練習順番決定部と、
前記決定された練習順番にて順次指定される小節により定められた練習区間内で、前記ユーザの演奏を前記対応する演奏要素に基づいて評価する演奏評価部と、
前記評価結果に基づいて、前記対応する演奏要素でかつ、前記決定された練習段階における前記ユーザの演奏の新たな達成状況を決定し、当該新たな達成状況により、前記達成状況を更新する達成状況更新部と、
を備えることを特徴とする演奏練習装置。
(付記2)
前記練習段階毎に、前記練習範囲内を複数のフレーズに分割するための分割方法を指定するフレーズ分割方法データと、前記練習段階毎に選択され、前記フレーズに含まれる小節のいずれかを繰り返し練習させるための繰返し方法を指定する繰返し方法データとを登録した練習段階テーブルをさらに備え、
前記練習順番決定部は、前記練習段階テーブルから、前記決定された練習段階に対応する前記フレーズ分割方法データおよび前記繰返し方法データを抽出し、当該抽出した当該フレーズ分割方法データおよび前記達成状況に基づいて前記ユーザに演奏の練習を行わせるフレーズを決定するとともに、当該抽出した前記繰返し方法データに基づいて前記決定されたフレーズにおける練習順番を決定する、
ことを特徴とする付記1に記載の演奏練習装置。
(付記3)
前記練習順番決定部は、前記決定されたフレーズにおける練習順番に基づいて、前記各練習区間を示す練習開始小節および練習終了小節を表す練習順番データリストを順次生成して記憶し、
前記演奏評価部は、前記練習順番データリストから前記練習順番データを順次読み出し、当該読み出された練習順番データ中の前記練習開始小節から前記練習終了小節までの間での前記ユーザの演奏を評価する、
ことを特徴とする付記1または2のいずれかに記載の演奏練習装置。
(付記4)
前記演奏要素は、前記楽曲を構成する各音符の音高、前記楽曲のリズム、テンポ、および前記楽曲の演奏進行の滑らかさを含む、
ことを特徴とする付記1ないし3のいずれかに記載の演奏練習装置。
(付記5)
前記練習段階に対応する演奏要素が、前記音高、前記リズム、または前記テンポのいずれかである場合、
前記演奏評価部は、前記練習区間に含まれる小節毎に、当該小節内の各音符と前記ユーザの演奏により指示される各音符とを順次比較することにより、前記小節における前記演奏要素毎のユーザの演奏の完成度を算出して小節完成度データとして記憶し、
前記達成状況更新部は、前記練習区間に含まれる小節が、前記各演奏要素のいずれかにおいて完成度が所定の閾値に達していない場合、当該小節と前記完成度に達していない演奏要素に対応する練習段階とを未達成リストに登録し、
前記練習段階決定部は、前記未達成リストに登録された小節と練習段階とに基づいて、前記ユーザの演奏の達成状況を判別し、
前記練習順番決定部は、前記決定された練習段階の演奏要素に対応する前記未達成リストに登録されている小節が含まれるフレーズに基づいて、ユーザに演奏の練習を行わせるフレーズを決定する、
ことを特徴とする付記4に記載の演奏練習装置。
(付記6)
前記練習段階に対応する演奏要素が、演奏進行の滑らかさである場合、
前記演奏評価部は、前記練習区間に含まれる小節毎に、当該小節とそれに隣接する小節とを連続して演奏する練習において、前記ユーザの演奏が予め定められた演奏基準を満たすか否かを示す連続正解フラグを前記小節完成度データとして記憶し、
前記達成状況更新部は、前記練習区間に含まれる各小節において、当該小節に対応する前記連続正解フラグが前記演奏基準を満たさないことを示す場合に、前記小節をフレーズ境界位置リストに登録し、
前記練習段階決定部は、前記フレーズ境界位置リストに前記小節のいずれかが登録されている場合に、次の前記練習段階として、前記楽曲の演奏進行の滑らかさに対応する練習段階を決定し、
前記練習順番決定部は、前記フレーズ境界位置リストに登録されている小節をフレーズ境界とするフレーズを決定する、
ことを特徴とする付記4または5のいずれかに記載の演奏練習装置。
(付記7)
前記練習段階が決定された後、当該決定された練習段階に対応する練習機能を設定する練習機能設定部を更に備える、
ことを特徴とする付記1ないし6のいずれかに記載の演奏練習装置。
(付記8)
演奏練習装置が、
指定された楽曲内の練習範囲におけるユーザの演奏の達成状況に応じて、前記楽曲の演奏の評価基準となる演奏要素に対応する練習段階を決定し、
当該決定された練習段階および前記達成状況に基づいて、前記練習範囲内に含まれる複数のフレーズの中からユーザに演奏の練習を行わせるフレーズを決定するとともに、当該決定されたフレーズを構成している複数の小節のうち少なくとも1以上の小節をどのような順番で練習させるのかを指定するための練習順番を決定し、
前記決定された練習順番にて順次指定される小節により定められた練習区間内で、前記ユーザの演奏を前記対応する演奏要素に基づいて評価し、
前記評価結果に基づいて、前記対応する演奏要素でかつ、前記決定された練習段階における前記ユーザの演奏の新たな達成状況を決定し、当該新たな達成状況により、前記達成状況を更新する、演奏練習方法。
(付記9)
演奏練習装置として用いられるコンピュータに、
指定された楽曲内の練習範囲におけるユーザの演奏の達成状況に応じて、前記楽曲の演奏の評価基準となる演奏要素に対応する練習段階を決定するステップと、
当該決定された練習段階および前記達成状況に基づいて、前記練習範囲内に含まれる複数のフレーズの中からユーザに演奏の練習を行わせるフレーズを決定するとともに、当該決定されたフレーズを構成している複数の小節のうち少なくとも1以上の小節をどのような順番で練習させるのかを指定するための練習順番を決定するステップと、
前記決定された練習順番にて順次指定される小節により定められた練習区間内で、前記ユーザの演奏を前記対応する演奏要素に基づいて評価するステップと、
前記評価結果に基づいて、前記対応する演奏要素でかつ、前記決定された練習段階における前記ユーザの演奏の新たな達成状況を決定し、当該新たな達成状況により、前記達成状況を更新するステップと、
を実行させる演奏練習プログラム。