以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の一実施の形態に係る自動演奏装置の概略構成を示すブロック図である。
同図に示すように、本実施の形態の自動演奏装置は、音高情報を入力するための鍵盤を含む演奏操作子1と、各種情報を入力するための複数のスイッチを含む設定操作子2と、演奏操作子1の操作状態を検出する検出回路3と、設定操作子2の操作状態を検出する検出回路4と、装置全体の制御を司るCPU5と、該CPU5が実行する制御プログラムや、各種テーブルデータ等を記憶するROM6と、演奏データ、各種入力情報および演算結果等を一時的に記憶するRAM7と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ8と、各種情報等を表示する、たとえば液晶ディスプレイ(LCD)若しくはCRT(Cathode Ray Tube)ディスプレイおよび発光ダイオード(LED)等を備えた表示装置9と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する外部記憶装置10と、外部からのMIDI(Musical Instrument Digital Interface)信号を入力したり、MIDI信号を外部に出力したりするMIDIインターフェース(I/F)11と、通信ネットワーク101を介して、たとえばサーバコンピュータ(以下、「サーバ」と略して言う)102とデータの送受信を行う通信インターフェース(I/F)12と、演奏操作子1から入力された演奏データや予め設定された演奏データ等を楽音信号に変換する音源回路13と、該音源回路13からの楽音信号に各種効果を付与するための効果回路14と、該効果回路14からの楽音信号を音響に変換する、たとえば、DAC(Digital-to-Analog Converter)やアンプ、スピーカ等のサウンドシステム15とにより構成されている。
上記構成要素3〜14は、バス16を介して相互に接続され、CPU5にはタイマ8が接続され、MIDII/F11には他のMIDI機器100が接続され、通信I/F12には通信ネットワーク101が接続され、音源回路13には効果回路14が接続され、効果回路14にはサウンドシステム15が接続されている。ここで、通信I/F12および通信ネットワーク101は、有線方式のものに限らず、無線方式のものであってもよい。また、両方式のものを備えていてもよい。
外部記憶装置10としては、たとえば、フレキシブルディスクドライブ(FDD)、ハードディスクドライブ(HDD)、CD−ROMドライブおよび光磁気ディスク(MO)ドライブ等を挙げることができる。そして、外部記憶装置10には、前述のように、CPU5が実行する制御プログラムも記憶でき、ROM6に制御プログラムが記憶されていない場合には、この外部記憶装置10に制御プログラムを記憶させておき、それをRAM7に読み込むことにより、ROM6に制御プログラムを記憶している場合と同様の動作をCPU5にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
MIDII/F11は、専用のものに限らず、RS−232CやUSB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)等の汎用のインターフェースより構成してもよい。この場合、MIDIメッセージ以外のデータをも同時に送受信してもよい。
通信I/F12は、上述のように、たとえばLAN(Local Area Network)やインターネット、電話回線等の通信ネットワーク101に接続されており、該通信ネットワーク101を介して、サーバ102に接続される。外部記憶装置10に上記各プログラムや各種パラメータが記憶されていない場合には、通信I/F12は、サーバ102からプログラムやパラメータをダウンロードするために用いられる。クライアントとなる自動演奏装置は、通信I/F12および通信ネットワーク101を介してサーバ102へとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバ102は、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワーク101を介して自動演奏装置へと配信し、自動演奏装置が通信I/F12を介して、これらプログラムやパラメータを受信して外部記憶装置10に蓄積することにより、ダウンロードが完了する。
なお、本実施の形態の自動演奏装置は、上述の構成から分かるように、電子楽器上に構築されている。電子楽器の形態を採るようにした場合、その形態は鍵盤楽器に限らず、弦楽器タイプ、管楽器タイプ、打楽器タイプ等の形態でもよい。また、音源装置、自動演奏装置等を1つの電子楽器本体に内蔵したものに限らず、それぞれが別体の装置であり、MIDII/Fや各種ネットワーク等の通信手段を用いて各装置を接続するものであってもよい。さらに、本発明を実施できる最小限要素のみから構成した、電子楽器以外の専用装置上に構築してもよい。専用装置としては、たとえば、カラオケ装置や、ゲーム装置、携帯電話などの携帯型通信端末等を挙げることができる。携帯型通信端末を採用した場合、端末のみで所定の機能が完結している場合に限らず、機能の一部をサーバ側に持たせ、端末とサーバとからなるシステム全体として所定の機能を実現するようにしてもよい。あるいは、汎用的なパーソナルコンピュータ上に構築してもよい。
図2は、本実施の形態の自動演奏装置の制御機能構成を示すブロック図である。なお、同図中、曲データ10aおよび演奏操作子1は、制御機能には含まれないが、説明の都合上、図示されている。
同図に示すように、本実施の形態の自動演奏装置は、前記外部記憶装置10に記憶されている曲データ10aを読み出して再生(自動演奏)するとともに、一致判定部22の判定結果に基づいて、その再生態様を制御する再生制御部21(前記CPU5に相当する)と、演奏操作子1を用いて演奏者が行った演奏と再生制御部21による自動演奏との一致判定を行い、その判定結果を再生制御部21に送信する一致判定部22(CPU5に相当する)と、再生制御部21による自動演奏中、その一部区間である繰り返し区間を指定する繰り返し指定部23(CPU5に相当する)とによって構成されている。
なお、再生制御部21は、次に説明するように、各種パラメータに基づいて曲データ10aの再生態様を制御するようにしているので、演奏者がこの各種パラメータの値を自由に設定できるようにしておく方が好ましい。この場合、パラメータ設定部24(前記設定操作子2、CPU5および前記表示装置9に相当する)を設け、パラメータ設定部24を用いて演奏者が好みのパラメータ値を設定できるようにすればよい。ただし、パラメータ値は、自由に設定できない固定値であってもよいので、その意味では、本発明の必須の構成要素ではない。そのため、パラメータ設定部24は、破線で表示されている。
以下、本実施の形態の自動演奏装置が使用するパラメータの主なものについて、順に説明する。
(1)TCmax:自動演奏のテンポを変化させる最大値を示すパラメータであり、TCmaxとしては、たとえば100〜200%の範囲内の値(デフォルト値は、たとえば100%である)を設定できる。
(2)TCmin:自動演奏のテンポを変化させる最小値を示すパラメータであり、TCminとしては、たとえば1〜100%の範囲内の値(デフォルト値は、たとえば50%である)を設定できる。
図3は、次の(3)〜(6)の各パラメータの内容を説明するための図であり、(3)〜(6)の各パラメータについては、この図を参照して説明する。
(3)LSbefore:自動演奏データの各ノートイベントのノートオンタイミング(ノートオンイベントの立ち上がり)を含むレッスン範囲の先頭を、当該ノートオンタイミングからどのくらい離れているかによって規定するパラメータであり、LSbeforeとしては、たとえば0〜500msの範囲内の値(デフォルト値は、たとえば300msである)を設定できる。
(4)LSafter:自動演奏データの各キーオンイベントの立ち上がりを含むレッスン範囲の末尾を、当該ノートオンタイミングからどのくらい離れているかによって規定するパラメータであり、LSafterとしては、たとえば0〜500msの範囲内の値(デフォルト値は、たとえば300msである)を設定できる。ここで、レッスン範囲とは、演奏者の演奏と自動演奏との一致判定を行う範囲である。つまり、演奏者がレッスン範囲内で押鍵したときにのみ、その押鍵と自動演奏との一致判定がなされる。
(5)OTbefore:自動演奏データの各キーオンイベントの立ち上がりを含むオンタイム範囲の先頭を、当該ノートオンタイミングからどのくらい離れているかによって規定するパラメータであり、OTbeforeとしては、たとえば0〜500msの範囲内の値(デフォルト値は、たとえば30msである)を設定できる。
(6)OTafter:自動演奏データの各キーオンイベントの立ち上がりを含むオンタイム範囲の末尾を、当該ノートオンタイミングからどのくらい離れているかによって規定するパラメータであり、OTafterとしては、たとえば0〜500msの範囲内の値(デフォルト値は、たとえば30msである)を設定できる。ここで、オンタイム範囲とは、演奏者の押鍵と自動演奏のキーオンとが同じタイミングであるとみなす範囲である。つまり、演奏者がオンタイム範囲で押鍵すれば、その押鍵は自動演奏のキーオンと同じタイミングでなされたものとみなされる。ただし、その押鍵の音高が、対応する自動演奏のキーオンイベントの音高と異なれば、一致判定の結果、その押鍵は正押鍵とはならない。
(7)NOKEY:レッスン範囲内で演奏者が押鍵できなかった場合に、自動演奏のテンポの減速制御を行うか否かを示すパラメータであり、NOKEYとしては、“1”(テンポ制御を行う)または“0”(テンポ制御を行わない)のいずれか(デフォルト値は、たとえば“1”である)を設定できる。
(8)NOKEYdelay:レッスン範囲内で演奏者が押鍵できなかった場合に、遅く押鍵したのと同等と考え、その遅れをどの程度の遅れとみなすかを示すパラメータであり、NOKEYdelayとしては、たとえば0〜500msの範囲内の値(デフォルト値は、たとえば300msである)を設定できる。
(9)TCup:正押鍵がなされる度に戻すべき自動演奏のテンポの程度を示すパラメータであり、TCupとしては、たとえば0〜100%の範囲内の値(デフォルト値は、たとえば2.50%である)を設定できる。
(10)MEAS:自動演奏のテンポを小節単位で変更するか否か、および小節単位で変更するときの小節数を示すパラメータであり、MEASとしては、たとえば0〜16の範囲内の値(デフォルト値は、たとえば0(小節単位でテンポ変更を行わない)である)を設定できる。
(11)BEAT:自動演奏のテンポを拍単位で変更するか否か、および拍単位で変更するときの拍数を示すパラメータであり、BEATとしては、たとえば0〜16の範囲内の値(デフォルト値は、たとえば0(拍単位でテンポ変更を行わない)である)を設定できる。
(12)REPEAT:自動演奏区間内に設定されたA地点とB地点(A地点より演奏が進んだところにある地点)との間(以下、「リピート区間」という)で自動演奏を繰り返すA−Bリピート演奏モードが選択されている場合、テンポ変更をB地点からA地点に戻るときに行わせるか否かを示すパラメータであり、REPEATとしては、“1”(テンポ変更をB点からA点に戻るときに行わせる)または“0”(テンポ変更をB点からA点に戻るときに行わせない)のいずれか(デフォルト値は、たとえば“1”である)を設定できる。
(13)LOOP:自動演奏時に、たとえば前記設定操作子2に含まれるループバックボタン(図示せず)を押すと、押した位置を含む所定区間(その先頭を「ループスタート地点」といい、その末尾を「ループエンド地点」という)内で自動演奏を繰り返すループバック演奏モードが選択されている場合、テンポ変更をループエンド地点からループスタート地点に戻るときに行わせるか否かを示すパラメータであり、LOOPとしては、“1”(テンポ変更をループエンド地点からループスタート地点に戻るときに行わせる)または“0”(テンポ変更をループエンド地点からループスタート地点に戻るときに行わせない)のいずれか(デフォルト値は、たとえば“1”である)を設定できる。
(14)NOTE:自動演奏のテンポを変更するために処理しなければならないノート数を示すパラメータであり、NOTEとしては、たとえば0〜16の範囲内の値(デフォルト値は、たとえば1である)を設定できる。
(15)NOTEreset:小節単位/拍単位で自動演奏のテンポを変更している場合、その変更タイミングでノート数カウンタ(前記RAM7の所定位置に確保されたソフトウェアカウンタ)をリセットするか否かを示すパラメータであり、NOTEresetとしては、“1”(ノート数カウンタをリセットする)または“0”(ノート数カウンタをリセットしない)のいずれか(デフォルト値は、たとえば“1”である)を設定できる。
(16)TABLEB:前記オンタイム範囲より押鍵が早い場合に、その早さの程度と、これに応じて自動演奏のテンポを遅くする変更量とを対応付けるテーブルであり、TABLEBとしては、たとえば10ms:0.50%,20ms:0.50%,30ms:0.50%,40ms:1.00%,‥‥が設定されている。
(17)TABLEA:前記オンタイム範囲より押鍵が遅い場合に、その遅さの程度と、これに応じて自動演奏のテンポを遅くするための変更量とを対応付けるテーブルであり、TABLEAとしては、たとえば10ms:0.50%,20ms:0.50%,30ms:0.50%,40ms:1.00%,‥‥が設定されている。
以上のように構成された自動演奏装置が実行する制御処理を、まずその概要を説明し、次に図4〜図14を参照して詳細に説明する。
本実施の形態の自動演奏装置は、次の3種類の演奏モードを備え、演奏者がいずれかの演奏モードを選択すると、その演奏モードに応じた演奏態様で、演奏者の演奏と自動演奏とを比較し、この比較結果に応じて自動演奏のテンポを変更するようにしている。すなわち、演奏モードは、
(i)通常演奏モード
(ii)A−Bリピート演奏モード
(iii)ループバック演奏モード
の3種類である。以下、これらの演奏モードに応じた演奏態様について、順に説明する。
上記(i)の通常演奏モードとは、自動演奏対象の楽曲データ(楽曲データが複数記憶されているときには、たとえば、演奏者が選択したいずれか)をその先頭から末尾まで通して1回再生するモードである。この自動演奏に合わせて、演奏者が演奏すると、本実施の形態の自動演奏装置は、演奏者の演奏と自動演奏とを比較し、この比較結果に応じて自動演奏のテンポを変更する。
上記(ii)のA−Bリピート演奏モードとは、上記(i)通常演奏モードが選択されて自動演奏中に、演奏者が、たとえば前記設定操作子2に含まれるA−Bリピートスイッチ(図示せず)を押すと、当該楽曲データの一部に予め設定されたリピート区間(その先頭が前記A地点であり、その末尾が前記B地点である)を繰り返し再生するモードである。この(ii)A−Bリピート演奏モードでも、本実施の形態の自動演奏装置は、演奏者の演奏と自動演奏とを比較し、この比較結果に応じて自動演奏のテンポを変更するが、前記(12)のパラメータREPEATの値に応じて、テンポを変更するタイミングを異ならせている。すなわち、REPEAT=1の場合には、リピート区間ではテンポ変更を行わず、B地点からA地点に戻ったときだけにテンポ変更を行う一方、REPEAT=0の場合には、リピート区間でテンポ変更を行い、B地点からA地点に戻ったときに、変更したテンポを初期値(デフォルト値)に戻す。
上記(iii)のループバック演奏モードとは、上記(i)通常演奏モードが選択されて自動演奏中に、演奏者が、たとえば前記設定操作子2に含まれるループバックスイッチ(図示せず)を押すと、その地点、すなわち前記ループエンド地点から、予め設定された区間だけ戻り(その地点が前記ループスタート地点である)、ループスタート地点とループエンド地点との間、すなわちループ区間を繰り返し再生するモードである。この(iii)ループバック演奏モードでも、本実施の形態の自動演奏装置は、演奏者の演奏と自動演奏とを比較し、この比較結果に応じて自動演奏のテンポを変更するが、上記(ii)A−Bリピート演奏モードと同様に、前記(13)のパラメータLOOPの値に応じて、テンポを変更するタイミングを異ならせている。すなわち、LOOP=1の場合には、ループ区間ではテンポ変更を行わず、ループエンド地点からループスタート地点に戻ったときだけにテンポ変更を行う一方、LOOP=0の場合には、ループ区間でテンポ変更を行い、ループエンド地点からループスタート地点に戻ったときに、変更したテンポを初期値(デフォルト値)に戻す。
なお、(ii)A−Bリピート演奏モードまたは(iii)ループバック演奏モードから(i)通常演奏モードに移行するには、たとえば前記設定操作子2に含まれる通常演奏スイッチ(図示せず)を押すようにすればよい。もちろん、これに限らず、(ii)A−Bリピート演奏モードまたは(iii)ループバック演奏モードにおいて、演奏者の演奏が上達し、ある基準を超えると、(i)通常演奏モードに自動的に移行するようにしてもよい。
また、(ii)A−Bリピート演奏モードでは、ループ区間は、予め設定された区間としたが、この区間は、(i)通常演奏モード時に演奏者が自由に設定可能にしてもよいし(たとえば、自動演奏の対象となる楽曲データの全体を表示しておき、図示しない操作子により、A地点とB地点を指定可能に構成する、あるいは、自動演奏中に前記A−Bリピートスイッチを2回押し、1回目に押したときの再生位置をA地点とし、2回目に押したときの再生位置をB地点とする等)、習熟が足りない区間を、演奏者の演奏と自動演奏との比較結果から自動的に割り出し、その区間を設定可能にしてもよい。
また、(iii)ループバック演奏モードでは、ループバックする区間長は、予め設定された区間長としたが、この区間長は、演奏者が自由に設定可能にしてもよいし、習熟が足りない区間を、演奏者の演奏と自動演奏との比較結果から自動的に割り出し、その区間を含むような区間長に設定可能にしてもよい。
さらに、(ii)A−Bリピート演奏モードおよび(iii)ループバック演奏モードにおいて、自動的に割り出した、習熟が足りない区間を、たとえば前記表示装置9上に表示して、演奏者に明示するようにしてもよい。
次に、この制御処理を詳細に説明する。
図4は、本実施の形態の自動演奏装置、特にCPU5が実行するメインルーチンの手順を示すフローチャートである。このメインルーチンは、次の処理によって構成されている。すなわち、
(a)パラメータ設定処理(ステップS1)
(b)演奏操作子処理(ステップS2)
(c)自動演奏処理(ステップS3)
(d)その他の処理(ステップS4)
である。
上記(a)のパラメータ設定処理では、演奏者が、前記設定操作子2を用いて、前記(1)〜(17)のパラメータからいずれかを選択し、その値の変更を指示すると、変更指示された値を当該パラメータの値に設定する。なお、本実施の形態では、(1)〜(17)のパラメータのすべてを演奏者が設定可能に構成したが、これに限らず、そのうち一部のパラメータのみを演奏者が設定可能とし、残りは製造メーカのみが固定的に設定可能としてもよい。さらに、(1)〜(17)のパラメータのすべてについて、製造メーカのみが固定的に設定可能としてもよい。この場合、(a)パラメータ設定処理は不要であるので、削除するようにすればよい。すなわち、前記図2のパラメータ設定部24が本発明の必須の構成要素でない場合とは、この場合に相当している。
前記(b)の演奏操作子処理の詳細な手順は、図5に記載されている。図5に示すように、本演奏操作子処理は、キーオン処理とキーオフ処理とによって構成されている。
キーオン処理は、ステップS22〜S25に相当する。演奏者が押鍵すると、まず、その押鍵音高の楽音信号を生成するように、前記音源回路13に指示し(ステップS21→S22)、次に、その押鍵音高および押鍵タイミングと、その押鍵に対応する自動演奏の音高および再生タイミングとの一致判定を行う(ステップS23)。このステップS23の一致判定では、まず、当該押鍵タイミングが前記図3のレッスン範囲内に含まれているか否かを判定し、レッスン範囲内に含まれていれば、次に、前記図3のオンタイム範囲内に含まれているか否かを判定する。その結果、
(A)当該押鍵タイミングがレッスン範囲内&(かつ)オンタイム範囲内
(B)当該押鍵タイミングがレッスン範囲内&オンタイム範囲より前
(C)当該押鍵タイミングがレッスン範囲内&オンタイム範囲より後
(D)当該押鍵タイミングがレッスン範囲外
の4種類の場合のいずれかが判定される。
なお、このとき、同時に音高の一致判定もなされ、その結果、押鍵音高と、これに対応する自動演奏の音高とが一致しない場合には、その押鍵は無効とするが、以下、押鍵が無効の場合は考えないものとする。
そして、上記(A)の場合には、当該押鍵は正規タイミングで押鍵されたものと判定し、上記(B)の場合には、当該押鍵は正規タイミングより早く押鍵されたものと判定するとともに、オンタイム範囲の先頭、すなわち前記(5)のパラメータOTbeforeで示される時間と当該押鍵タイミングとの時間差を検出し、上記(C)の場合には、当該押鍵は正規タイミングより遅く押鍵されたものと判定するとともに、オンタイム範囲の末尾、すなわち前記(6)のパラメータOTafterで示される時間と当該押鍵タイミングとの時間差を検出し、上記(D)の場合には、当該押鍵はレッスン範囲外に押鍵されたものと判定する。
次に、この一致判定の結果に応じて、自動演奏のテンポをどれだけ変更するかを示すテンポ変更値を決定する(ステップS24)。具体的には、上記(A)の場合には、このとき、現在のテンポ変更値が前記(1)のパラメータTCmaxで示される値に達していなければ、現在のテンポ変更値に、前記(9)のパラメータTCupで示される値を加えて、新たなテンポ変更値とする。上記(B)の場合には、前記(16)のパラメータ(テーブル)TABLEBから、検出した時間差に対応する値を検索し、現在のテンポ変更値からその検索値を減算して、新たなテンポ変更値とする。上記(C)の場合には、前記(17)のパラメータ(テーブル)TABLEAから、検出した時間差に対応する値を検索し、現在のテンポ変更値からその検索値を減算して、新たなテンポ変更値(テンポが遅くなる値)とする。上記(D)の場合には、このとき、前記(7)のパラメータNOKEY=1であれば、前記(16)のパラメータ(テーブル)TABLEAから、前記(8)のパラメータNOKEYdelayで示される値に対応する値を検索し、現在のテンポ変更値からその検索値を減算して、新たなテンポ変更値とする。
次に、前記(14)のパラメータNOTEで特定されるノート数が経過するとともに、前記(10)のパラメータMEAS=0(テンポ変更を小節単位で行わない)&前記(11)のパラメータBEAT=0(テンポ変更を拍単位で行わない)である場合には、現在のテンポを、上記ステップS24で決定されたテンポ変更値に変更する(ステップS25)。ただし、前記A−Bリピート演奏モードが選択された状態で前記(12)のパラメータREPEAT=1(テンポ変更をB地点からA地点に戻るときに行う)または前記ループバック演奏モードが選択された状態で前記(13)のパラメータLOOP=1(テンポ変更をループバック時に行う)のいずれかが成立している場合には、上記ステップS25のテンポ変更は行わない。
図8〜図14は、各種パラメータの値を異ならせた場合に、通常演奏モード時、A−Bリピート演奏モード時およびループバック演奏モード時におけるテンポ変更タイミングがどのように変化するかを示す図である。図8〜図14中、A−Bリピート演奏モードでは、リピート区間を4小節とし、ループバック演奏モードでも、ループ区間を、リピート区間と同じ4小節としている。これは、便宜上そのように選んだだけであり、リピート区間とループ区間とは、通常、その区間長も位置も異なっている。また、通常演奏モード時の曲データは、楽曲データの一部(リピート区間およびループ区間内の曲データ)のみが図示されている。
図8の例では、MEAS=0,BEAT=0,NOTE=1であるので、通常演奏モード時には、テンポ変更は1ノートイベント毎に行われる。図9の例では、MEAS=0,BEAT=0,NOTE=2であるので、通常演奏モード時には、テンポ変更は2ノートイベント毎に行われる。なお、図10〜図14の例では、パラメータMEASまたはパラメータBEATの少なくとも一方が“1”であり、この場合、テンポ変更は上記ステップS25では行わず、後述する図7のステップS42で行うので、ステップS42の処理を説明するときに、図10〜図14の例についても説明する。
一方、キーオフ処理は、ステップS27に相当する。演奏者が離鍵すると、発音中の楽音のうち、当該離鍵に対応するものの消音を前記音源回路13に指示する(ステップS26→S27)。
前記(c)の自動演奏処理の詳細な手順は、図6および図7に記載されている。図6および図7に示すように、本自動演奏処理は、自動演奏が開始されたときにスタートさせた前記タイマ8が計時した時間に基づいて、各種処理を行うように構成されている。具体的には、タイマ8が、
(I)前記レッスン範囲の先頭/オンタイム範囲の先頭を計時した場合
(II)ノートイベントのノートオンタイミング/ノートオフタイミングを計時した場合(III)前記レッスン範囲の末尾/オンタイム範囲の末尾を計時した場合
(IV)小節/拍位置を計時した場合
(V)A−Bリピート演奏モード時のB地点/ループバック演奏モード時のループエンド地点を計時した場合
(VI)曲の終わりを計時した場合
の各場合に応じて、次に説明する各処理を行う。
上記(I)の、タイマ8が、レッスン範囲の先頭、すなわち当該ノートイベントのノートオンタイミングより前記(3)のパラメータLSbeforeで示される時間だけ前、あるいはオンタイム範囲の先頭、すなわち当該イベントのノートオンタイミングより前記(5)のパラメータOTbeforeで示される時間だけ前を計時した場合には、それぞれ、それ以降をレッスン範囲/オンタイム範囲に設定する(ステップS32→S33)。このように、レッスン範囲/オンタイム範囲を設定するようにしたのは、前述したように、図5のステップS23では、このレッスン範囲/オンタイム範囲に基づいて一致判定するようにしているからである。
前記(II)の、タイマ8が、ノートイベントのノートオンタイミング、すなわち発音タイミング、あるいはノートオフタイミング、すなわち消音タイミングを計時した場合には、それぞれ、当該ノートイベント(演奏データ)に基づいて発音処理/消音処理を行う。具体的には、発音処理では、当該ノートイベントに応じた音高、音長およびベロシティの楽音信号を生成するように、前記音源回路13に指示し、消音処理では、既に生成されている楽音信号のうち、当該ノートイベントに対応する楽音信号の消音を、音源回路13に指示する。
前記(III)の、タイマ8が、レッスン範囲の末尾、すなわち当該ノートイベントのノートオンタイミングより前記(4)のパラメータLSafterで示される時間だけ後、あるいはオンタイム範囲の末尾、すなわち当該ノートイベントのノートオンタイミングより前記(6)のパラメータOTafterで示される時間だけ後を計時した場合には、それぞれ、前記設定されたレッスン範囲/オンタイム範囲を解除する(ステップS36→S37)。このようにして、図3に示すように、ノートオンタイミングよりLSbefore時間前から、ノートオンタイミングよりLSafter時間後までの範囲が、レッスン範囲に設定され、ノートオンタイミングよりOTbefore時間前から、ノートオンタイミングよりOTafter時間後までの範囲が、オンタイム範囲に設定される。
次に、現時点がレッスン範囲外であり、かつ前記(7)のパラメータNOKEY=1(レッスン範囲内で演奏者が押鍵できなかった場合でも、テンポ変更を行う)かつレッスン範囲内で正押鍵がなかったときには、前記(16)のパラメータ(テーブル)TABLEAから、前記(8)のパラメータNOKEYdelayで示される値に対応する値を検索し、現在のテンポ変更値からその検索値を減算して、新たなテンポ変更値とする(ステップS39)。そして、前記図5のステップS25と同様の処理を行う(ステップS40)。このようにして、パラメータNOKEYに“1”が設定されているときには、たとえ演奏者がレッスン範囲内で押鍵できなかったとしても、所定の条件の下で、テンポを遅くする制御がなされる。
前記(IV)の、タイマ8が小節/拍位置を計時した場合には、前記(14)のパラメータNOTEで特定されるノート数が経過するとともに、前記(10)のパラメータMEAS/前記(11)のパラメータBEATで特定される小節数/拍数が経過した場合には、現在のテンポを、前記図5のステップS24(または前記ステップS39)で決定されたテンポ変更値に変更する(ステップS41→S42)。ただし、前記A−Bリピート演奏モードが選択された状態で前記(12)のパラメータREPEAT=1(テンポ変更をB地点からA地点に戻るときに行う)または前記ループバック演奏モードが選択された状態で前記(13)のパラメータLOOP=1(テンポ変更をループバック時に行う)のいずれかが成立している場合には、上記ステップS42のテンポ変更は行わない。次に、前記(15)のパラメータNOTEreset=1のときには、現在カウント中のノート数をリセットする(ステップS43)。
前記図10の例では、MEAS=1,BEAT=0,NOTE=0,NOTEreset=1であるので、通常演奏モード時には、テンポ変更は1小節毎に行われる。さらに、図10の例では、LOOP=0であるので、ループバック演奏モード時にも、通常演奏モード時と同様に、ループ区間において、テンポ変更は1小節毎に行われる。
前記図11の例では、MEAS=0,BEAT=1,NOTE=0,NOTEreset=1であるので、通常演奏モード時には、テンポ変更は1拍毎に行われる。さらに、図11の例では、REPEAT=0であるので、A−Bリピート演奏モード時にも、通常演奏モード時と同様に、リピート区間内において、テンポ変更は1拍毎に行われる。
前記図12の例では、MEAS=2,BEAT=3,NOTE=0,NOTEreset=1であるので、通常演奏モード時には、テンポ変更は3拍および2小節毎に行われる。ただし、拍のカウントは、小節でのテンポ変更時に常にリセットされている。なお、この処理は、本自動演奏処理中には記載されていないが、パラメータNOTEresetと同様のパラメータであって、拍カウンタをリセットするか否かを設定するパラメータを設け、前記ステップS43の処理と同様にして、このパラメータの値が“1”のときに、拍カウンタをリセットするような処理を、たとえばステップS43の後に追加するようにすればよい。
前記図13の例では、MEAS=1,BEAT=0,NOTE=4,NOTEreset=1であるので、通常演奏モード時には、前記ノート数カウンタのカウント値が指定ノート数(=4)に達していれば、テンポ変更は1小節毎に行われる。ただし、NOTEreset=1であるので、ノート数カウンタは、小節でのテンポ変更時に常にリセットされている。前記図14の例では、MEAS=1,BEAT=0,NOTE=5,NOTEreset=0であるので、通常演奏モード時には、前記ノート数カウンタのカウント値が指定ノート数(=5)に達していれば、テンポ変更は1小節毎に行われる。ただし、NOTEreset=0であるので、ノート数カウンタは、小節でのテンポ変更時にはリセットされない。
前記(V)の、タイマ8が、A−Bリピート演奏モード時にB地点/ループバック演奏モード時にループエンド地点を計時した場合には、それぞれ、自動演奏の再生地点をA地点/ループスタート地点に戻し(ステップS44→S45)、さらに、REPEAT/LOOP=1のときには、現在のテンポを前記図5のステップS24(または前記ステップS39)で決定されたテンポ変更値に変更し、REPEAT/LOOP=0のときには、現在のテンポをデフォルト値に戻す(ステップS46)。
前記図10の例では、REPEAT=1であるので、A−Bリピート演奏モード時には、自動演奏がリピート区間のB地点からA地点に戻ったときに、現在のテンポが、リピート区間の各ノートイベントと、これに対応する演奏者の各演奏との一致判定の累積結果に基づいて決定されたテンポ変更値に変更され、次のA−Bリピート演奏では、リピート区間のすべてに亘って、このテンポ値が維持されながら、一致判定がなされ、同様にして、自動演奏がB地点からA地点に戻ったときに、現在のテンポが、一致判定の累積結果に基づいて決定されたテンポ変更値に変更され、以下同様の処理が、A−Bリピート演奏モードが解除されるまで繰り返される。また、図10の例では、MEAS=1,BEAT=0,LOOP=0,NOTE=0,NOTEreset=1であるので、ループバック演奏モード時には、前述のように、テンポ変更は1小節毎に行われるが、ループスタート地点に戻ったときに、現在のテンポが、デフォルト値に戻る。
前記(VI)の、タイマ8が、曲の終わりを計時した場合には、当該曲の再生を停止する(ステップS47→S48)。
前記(d)のその他の処理では、演奏者が、たとえば前記設定操作子2に含まれる、図示しないプレイボタン/ストップボタンを押したときに、自動演奏を開始/停止したり、現在のテンポとして、デフォルトのテンポ値を設定したり、演奏者が前記A−Bリピートスイッチを押したときに、A−Bリピート演奏モードに移行させたり、演奏者が前記ループバックスイッチを押したときに、ループバック演奏モードに移行させたりする。
このように、本実施の形態では、A−Bリピート演奏モードとループバック演奏モードを設けたので、うまく演奏できないところを繰り返して、念入りに練習でき、これにより、練習効果を向上させることができる。
また、パラメータREPEATを設け、A−Bリピート演奏モードが選択された状態で、REPEAT=1のときには、リピート区間内はテンポを一定にして練習し、リピート区間の末尾から先頭に戻る時点で、この練習結果に基づいて決定されたテンポ値に変更するようにしたので、リピート区間内はテンポを一定とした演奏練習を行うことができるとともに、その練習結果も次の演奏練習に生かすことができる。さらに、A−Bリピート演奏モードが選択された状態で、REPEAT=0のときには、リピート区間内でも、練習結果に基づいて決定されたテンポ値に変更し、リピート区間の末尾から先頭に戻る時点で、変更されたテンポを変更前のテンポに戻すようにしたので、リピート区間内を演奏者のペースで演奏練習でき、それを何度も繰り返すことができる。つまり、同じテンポの条件でリピート区間を何度も演奏練習することができる。
また、パラメータLOOPを設け、ループバック演奏モードが選択された状態で、LOOP=1のときには、ループ区間内はテンポを一定にして練習し、ループ区間の末尾から先頭に戻る時点で、この練習結果に基づいて決定されたテンポ値に変更するようにしたので、ループ区間内はテンポを一定とした演奏練習を行うことができるとともに、その練習結果も次の演奏練習に生かすことができる。さらに、ループバック演奏モードが選択された状態で、LOOP=0のときには、ループ区間内でも、練習結果に基づいて決定されたテンポ値に変更し、ループ区間の末尾から先頭に戻る時点で、変更されたテンポを変更前のテンポに戻すようにしたので、ループ区間内を演奏者のペースで演奏練習でき、それを何度も繰り返すことができる。つまり、同じテンポの条件でループ区間を何度も演奏練習することができる。
なお、本実施の形態では、自動演奏時、特に演奏ガイドを行っていないが、これに限らず、操作すべき演奏操作子をガイドする機能を備えるようにし、演奏者の好みに応じて、演奏練習と併用するようにしてもよい。さらに、演奏結果を採点する機能を設け、演奏者の好みに応じて、演奏練習と併用するようにしてもよい。
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPU5やMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU5などが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。