以下、本発明の一実施形態について図面を用いて説明する。図1は、本発明に係る電子楽器を概略的に示すブロック図である。この電子楽器は、鍵盤11、パネル操作子群12、表示器13および音源回路14を備えている。
鍵盤11は、発生楽音の音高を指定するための演奏操作子としての複数の鍵からなり、各鍵の押鍵および離鍵操作はバス20に接続された検出回路15によって検出される。また、検出回路15には各鍵の押鍵速度を検出するセンサも内蔵されており、前記各鍵の押鍵操作時に押鍵速度も同時に検出されるようになっている。パネル操作子群12は、この電子楽器の操作パネルに設けられて電子楽器の各部の動作態様を指示するための複数のパネル操作子からなり、各パネル操作子の操作はバス20に接続された検出回路16によって検出される。表示器13は、液晶ディスプレイ、CRTなどで構成され、文字、数字、図形などを表示する。この表示器13の表示内容は、バス20に接続された表示制御回路17によって制御される。
音源回路14は、バス20に接続されていて、楽音信号を生成して出力する複数の音源チャンネルを備えている。各音源チャンネルは、後述するCPU21の制御のもとに供給される演奏データおよび各種楽音制御データに基づいて楽音信号を生成し、効果回路18を介してサウンドシステム19に出力する。ただし、楽音制御データに関しては、本発明に直接関係しないので、これ以上の説明を省略する。効果回路18は、音源回路14で生成された楽音信号に音楽的効果を付加する。サウンドシステム19は、スピーカ、アンプなどを含んでいて、前記楽音信号に対応した楽音を放音する。
また、この電子楽器は、バス20にそれぞれ接続されていてマイクロコンピュータ本体部を構成するCPU21、タイマ22、ROM23およびRAM24を備えているとともに、外部記憶装置25、MIDIインターフェース回路26および通信インターフェース回路27も備えている。外部記憶装置25は、この電子楽器に予め組み込まれているハードディスクHDおよびフラッシュメモリ、同電子楽器に装着可能なコンパクトディスクCDおよびフレキシブルディスクFDなどの種々の記録媒体と、同各記録媒体に対するドライブユニットを含むものであり、大量のデータおよびプログラムの記憶および読み出しを可能にしている。特に、本実施形態においては、ハードディスクHD、フラッシュメモリなどには、図4に示す演奏記録プログラム(図5〜図8の処理ルーチンを含む)、図9に示す演奏再生プログラム(図10〜図12の処理ルーチンを含む)などが記憶されている。また、このハードディスクHD、フラッシュメモリなどには、複数の楽曲にそれぞれ対応した複数の曲データすなわち複数の自動演奏データ(図2(A)参照)、および発生楽音にプレイエフェクトを付与するための複数組のテンプレートデータ(図2(B)参照)を記憶している。
各曲データは、図2(A)に示すように、マスタートラック、複数(例えば、16個)のノートシーケンストラックおよびプレイエフェクトトラックに分類分けされて記憶されている。マスタートラックには、拍子イベントデータ、テンポイベントデータなどが楽曲の進行に従って(すなわち時間経過に従って)記憶されている。拍子イベントデータは、楽曲中の拍子を変更するタイミングを表すタイミングデータと、変更後の拍子を表す拍子データとからなる。このタイミングデータおよび後述する他のタイミングデータは、楽曲中の進行位置を表しており、楽曲中の先頭からの小節数、各小節内の先頭からの拍数および拍内タイミングを表すデータからなる。テンポデータは、楽曲中のテンポを変更するタイミングを表すタイミングデータと、変更後のテンポを表すテンポデータとからなる。ノートシーケンストラックには、楽曲の進行に従って(すなわち時間経過に従って)、楽音の発生を制御するための一連のノートイベントデータが記憶されている。各ノートイベントデータは、発生楽音の発音タイミングを表すタイミングデータ、発生楽音の音高を表す音高データ、発生楽音の音量などを制御するための演奏操作子の操作速度(すなわち押鍵速度)を表すベロシティデータ、および発生楽音のキーオン時間を表すゲートタイムデータからなる。
プレイエフェクトトラックには、プレイエフェクトイベントデータが楽曲の進行に従って(すなわち時間経過に従って)記憶されている。各プレイエフェクトイベントデータは、音高データに従って発音される楽音の発音タイミング、ベロシティ(例えば、音量)、ゲートタイム(すなわちキーオン時間)など、すなわち再生楽音の要素の変更態様を表すプレイエフェクトを変更するためのプレイエフェクトデータと、その変更タイミングを表すタイミングデータとからなる。このプレイエフェクトデータは、詳しくは後述するプレイエフェクトにおける楽音要素の種類および変更態様の種類を表すテンプレートグループ指定情報と、プレイエフェクトの深さ(すなわち程度)またはプレイエフェクトのオン/オフ(すなわち付与/非付与)を表す深さ情報からなる。
テンプレートは、図2(B)に示すように、楽音要素の種類、変更態様の種類および変更の深さによって規定される特性ごとに設けられている。そして、各テンプレートは、テンプレートグループ指定情報と深さ情報により指定される。このテンプレートについて、発音タイミングを例にして具体的に説明しておく。テンプレートは、所定の区間(例えば、1小節)内において、オリジナルの発音タイミング(すなわち、ノートイベントデータに含まれるタイミングデータ)に対して、プレイエフェクトを付与した後の楽音の発音タイミング(以下、発音タイミングの変更値という)を表すデータ(以下、テンプレートデータという)をテーブルの形で記憶している。このようなテンプレートデータは、楽音の発音タイミングの変更態様を異ならせて図3(A)〜(C)に示すような複数種類分用意されており、さらに、各種類に対して、前記変更タイミングの程度すなわちプレイエフェクトの付与される深さに応じて、実線、破線および一点鎖線で示すような複数の特性分だけ用意されている。なお、前記所定の区間は1小節に限定されることなく、他の長さも採用され得る。
また、ノートイベントデータ中のゲートタイムおよびベロシティに関しても、所定の区間(例えば、1小節)内において、オリジナルのゲートタイムおよびベロシティ(すなわち、ノートイベントデータに含まれるゲートタイムデータおよびベロシティデータ)に対して、プレイエフェクトを付与した後のベロシティおよびゲートタイムを表すデータがテンプレートデータとして用意されている。ゲートタイムの場合、テンプレートデータは、オリジナルのゲートタイムデータによって表されるゲートタイムに対する、プレイエフェクトを付与した後の楽音のゲートタイムの変化率(以下、ゲートタイムの変更値という)を所定の区間内にわたって時間経過に従って表している。なお、ゲートタイムの変更値は、例えば0〜200%にわたって変化する。ベロシティの場合、テンプレートデータは、オリジナルのベロシティデータによって表されるベロシティ値に対する、プレイエフェクトを付与した後の楽音制御に関するベロシティ値に対する増減量(以下、ベロシティの変更値という)を所定の区間にわたって時間経過に従って表している。なお、ベロシティの変更値は、例えば、−99〜+99にわたって変化する。そして、ゲートタイムおよびベロシティの場合も、それらの変更態様を異ならせて複数種類分用意されているとともに、各種類ごとにそれらの変更される深さ(すなわち変化率および変化量)に応じて複数の特性分だけ用意されている。また、これらのゲートタイムおよびベロシティの場合も、前記所定の区間は1小節に限定されることなく、他の長さも採用され得る。
MIDIインターフェース回路26は、他の電子楽器、パーソナルコンピュータなどの他のMIDI機器31に接続可能となっていて、他のMIDI機器31に対して各種プログラムおよびデータを送受信可能となっている。また、通信インターフェース回路27は、インターネットなどの通信ネットワーク32を介してサーバコンピュータ33と交信可能となっていて、この電子楽器が各種プログラムおよびデータをサーバコンピュータ33から受信できるようになっている。
次に、上記のように構成した実施形態の動作について、図13の機能ブロック図を混じえながらフローチャートに沿って説明する。まず、外部記憶装置25に記憶されている曲データを再生しながら、ユーザが鍵盤11を用いて演奏した演奏データを外部記憶装置25に記録する場合について説明する。ユーザは、パネル操作子群12を操作することにより、再生しようとする曲データを指定するとともに、ユーザによる演奏を表す演奏データを含む新たな曲データを記録するための記録領域を外部記憶装置25に確保する。なお、外部記憶装置25に再生しようとする曲データが存在しない場合には、MIDIインターフェース回路26を介した他のMIDI機器31から、または通信インターフェース回路27および通信ネットワーク32を介してサーバコンピュータ33から所望の曲データを取り込む。そして、パネル操作子群12を操作することにより、演奏記録プログラムの実行を開始させる。この演奏記録プログラムは、所定の短時間ごとに繰り返し実行される。
演奏記録プログラムの実行は、図4のステップS10にて開始され、CPU21は、ステップS11にて、マスタートラックに記録されているデータの処理を実行する。すなわち、マスタートラックに記録されているデータ中に楽曲の再生タイミングを示すタイミングデータを有する拍子イベントデータ、テンポイベントデータなどが存在するかを調べる。そして、存在していれば、それらの拍子イベントデータ、テンポイベントデータなどに含まれる拍子データ、テンポデータなどを読出して、曲データを再生するための拍子、テンポなどを変更する。言い換えれば、読み出された拍子データおよびテンポデータを用い、図示しないプログラム処理により、楽曲の進行に従って(すなわち時間経過に従って)変化して、小節、拍および拍内タイミングを表す再生タイミングの変化速度および変化態様が変更制御される。この再生タイミングは、図示しないプログラムの実行により、曲データの再生時に楽曲の進行に従ってカウントアップされるもので、楽曲の先頭からの小節数、各小節内の先頭からの拍数および拍内タイミングを表している。また、ステップS11においては、これらの拍子イベントデータ、テンポイベントデータなどは、新たな曲データのために用意された記録領域にそのまま記録される。
前記ステップS11の処理後、CPU21は、ステップS12にて記録用プレイエフェクト処理ルーチンを実行する。記録用プレイエフェクト処理ルーチンの実行は、図5のステップS20にて開始され、ステップS21にて、選択した曲データ中のプレイエフェクトトラックに再生タイミングを示すタイミングデータを含むプレイエフェクトイベントデータが存在しているかを調べる。存在していれば、ステップS22にて、そのプレイエフェクトイベントデータに含まれるテンプレートグループ指定情報および深さ情報からなるプレイエフェクトデータを読み出し、読み出したプレイエフェクトデータにより、RAM24内に楽音要素の種類(すなわち、発音タイミング、ゲートタイムおよびベロシティ)ごとに設けられた図2(C)に示すテンプレートレジスタ内のプレイエフェクトデータを更新する。これらのステップS21,S22の処理は、図13の機能ブロック図において、演奏データ再生部BL1がオリジナルの曲データからプレイエフェクトデータを再生して、再生されたプレイエフェクトデータがプレイエフェクト制御部BL2に供給されて、プレイエフェクト制御部BL2に更新登録されることに対応する。
前記ステップS22の処理後、CPU21は、ステップS23にて、プレイエフェクトを変更するために、ユーザによってパネル操作群12が操作されてテンプレートグループ指定情報および深さ情報が入力されたかを判定する。入力されたならば、ステップS24にて、入力されたテンプレートグループ指定情報および深さ情報からなるプレイエフェクトデータにより、RAM23内に楽音要素の種類(すなわち、発音タイミング、ゲートタイムおよびベロシティ)ごとに設けられた前記テンプレートレジスタ内のプレイエフェクトデータを更新する。これらのステップS23,S24の処理は、図13の機能ブロック図において、パネル操作検出部BL3によるパネル操作子群12の操作の検出により、プレイエフェクトデータがプレイエフェクト制御部BL2に供給されて、プレイエフェクト制御部BL2に更新登録されることに対応する。
前記ステップS24の処理後、CPU21は、ステップS25にて、テンプレートレジスタに記憶されている発音タイミング、ゲートタイムおよびベロシティの各プレイエフェクトデータ(各テンプレートグループ指定情報および深さ情報)によって指定される各テンプレートデータを参照し、再生タイミングに対応した発音タイミング、ゲートタイムおよびベロシティの各変更値を計算する。なお、深さ情報に関しては、深さ情報によって指定される深さに対応したテンプレートデータが存在する場合には、テンプレートデータをそのまま用いる。しかし、深さ情報によって指定される深さに対応したテンプレートデータが存在しない場合には、テンプレートデータが用意されている複数の深さの中から深さ情報によって指定される深さの両側直近の2つの深さに対応したテンプレートデータを選択し、選択した2つのテンプレートデータ値の補間演算値を用いる。そして、RAM24内に設けられて図2(D)に示すプレイエフェクトレジスタ内の発音タイミング、ゲートタイムおよびベロシティの各変更値を、前記計算した各変更値に更新する。このステップS25の処理は、図13のプレイエフェクト制御部BL2の変更値更新機能に対応する。
次に、CPU21は、ステップS26にて、テンプレートレジスタ内のいずれかのプレイエフェクトデータが前記ステップS22またはステップS24の処理によって更新されたかを判定する。いずれかのプレイエフェクトデータが更新されていれば、ステップS27にて新たな曲データのために用意された記録領域中のプレイエフェクトトラックに、更新後のプレイエフェクトイベントデータを記録する。前記ステップS22の処理による更新の場合には、再生されている曲データ中のプレイエフェクトトラックに記憶されてタイミングデータが採用される。しかし、前記ステップS24の処理による更新の場合には、詳しくは後述するタイミングデータの逆変換処理により、現在の再生タイミングを逆変換したタイミングデータが採用される。これらのステップS26,S27の処理は、図13の演奏データ記録部BL4による新たな曲データのためのプレイエフェクトトラックへのプレイエフェクトデータの記録機能に対応する。
これらの処理後、CPU21は、ステップS28にて記録用プレイエフェクト処理ルーチンの実行を終了する。そして、CPU21は、図4のステップS13の記録用ノートシーケンストラック処理ルーチンを実行する。記録用ノートシーケンストラック処理ルーチンの詳細は図6に示されており、CPU21は、その実行をステップS30にて開始する。そして、ステップS31にて、選択した曲データ中のノートシーケンストラックに再生タイミングを示すタイミングデータを含むノートイベントデータが存在しているかを調べる。存在していれば、ステップS32〜S34の処理を実行する。
ステップS32においては、該当するノートイベントデータを読み出し、新たな曲データのために用意された記録領域のノートシーケンストラックに、前記読み出したノートイベントデータを記録する。この場合、ノートイベントデータが新たに記録されるノートシーケンストラックは、オリジナルの曲データにおいて前記ノートイベントデータが記録されていたノートシーケンストラックと同じである。このステップS28の処理は、図13の演奏データ再生部BL1で再生されて演奏データ記録部BL4に供給されたノートイベントデータを、演奏データ記録部BL4が新たな曲データのノートシーケンストラックであって、再生される以前に前記ノートイベントデータが記録されていたノートシーケンストラックと同一のノートシーケンストラックに記録することに対応する。
ステップS33においては、前記読み出したノートイベントデータを構成するタイミングデータ、ゲートタイムデータおよびベロシティデータを、プレイエフェクトレジスタに記憶されている発音タイミング、ゲートタイムおよびベロシティの各変更値により修正する。発音タイミングデータの修正においては、プレイエフェクトレジスタに記憶されている発音タイミングの変更値に変更される。ゲートタイムデータの修正においては、プレイエフェクトレジスタに記憶されているゲートタイムの変更値を前記ゲートタイムデータ値に乗算する。ベロシティデータの修正においては、プレイエフェクトレジスタに記憶されているベロシティの変更値を前記ベロシティデータ値に加算する。
ステップS34においては、前記ステップS33の処理により修正されたタイミングデータ、ゲートタイムデータおよびベロシティデータに、前記ステップS32の処理によって読み出されたノートイベントデータ中の音高データを加えた新たなノートイベントデータを、RAM24内の図示しない再生バッファ領域に記憶する。これらのステップS33,S34の処理は、図13の演奏データ再生部BL1で再生されたノートイベントデータにプレイエフェクトを付加して、プレイエフェクトの付加されたノートイベントデータを、楽音の発生を制御するための発音部BL8に供給するプレイエフェクト付加部BL5のプレイエフェクト付加機能に対応する。
これらの処理後、CPU21は、ステップS35にて記録用ノートシーケンストラック処理ルーチンの実行を終了する。そして、CPU21は、図4のステップS14の記録用演奏イベント処理ルーチンを実行する。記録用演奏イベント処理ルーチンの詳細は図7に示されており、CPU21は、その実行をステップS40にて開始する。そして、ステップS41にて、検出回路15から鍵盤11における鍵操作に関する検出信号を入力して、鍵盤11における新たな押鍵操作または離鍵操作があったかを判定する。新たな押鍵操作または離鍵操作があった場合には、CPU21は、ステップS42〜S44の処理を実行する。
ステップS42においては、現在の再生タイミングを表すタイミングデータを含む鍵イベントデータをRAM24内に設けた再生バッファ領域に書き込む。この場合、鍵盤11において新たな押鍵操作があった場合には、鍵イベントデータは、前記タイミングデータに加えて、押鍵を表すノートオンデータ、押鍵された鍵(すなわち音高)を表す音高データ、および押鍵速度を表すベロシティデータからなる。また、鍵盤11において新たな離鍵操作があった場合には、鍵イベントデータは、前記タイミングデータに加えて、離鍵を表すノートオフデータ、および離鍵された鍵(すなわち音高)を表す音高データからなる。これらのステップS41,S42の処理は、図13の演奏検出部BL6による鍵盤11における演奏の検出および演奏に応じた楽音の発生制御機能に対応する。
ステップS43においては、鍵イベントデータを構成するタイミングデータ、ゲートタイムデータおよびベロシティデータに対して逆変換処理を実行する。逆変換処理とは、再生楽音の要素変更のために変換された演奏データを変換前の演奏データに戻すための処理をいう。このステップS43の処理は、鍵盤11の演奏を表す鍵イベントデータからプレイエフェクトを除去する図13のプレイエフェクト除去部BL7の機能に対応する。ステップS44においては、前記逆変換処理された鍵イベントデータを、新たな曲データのノートシーケンストラックにノートイベントデータとして記録する。この場合、本実施形態においては、新たなノートイベントデータが記録されるノートシーケンストラックは、オリジナルの曲データにおいてノートイベントデータが記録されていなかったノートシーケンストラックである。しかし、これに代えて、この新たな鍵演奏によるノートイベントを、オリジナルな曲データにおいてノートイベントデータが既に記録されていたノートシーケンストラックにオリジナルの曲データ中のノートイベントデータに重畳して記録するようにしてもよいし、同ノートシーケンストラックに記録されていたオリジナルの曲データ中のノートイベントを消去して記録するようにしてもよい。このステップS44の処理は、図13の演奏データ記録部BL4によるプレイエフェクトの除去された鍵イベントデータを新しい演奏データとして記録する機能に対応する。
具体的には、鍵イベントデータが押鍵に関するものであれば、ステップS43の逆変換処理により、タイミングデータおよびベロシティデータのみが逆変換処理される。タイミングデータの逆変換処理においては、図2(C)のテンプレートレジスタに記憶されている発音タイミングのプレイエフェクトデータ(テンプレートグループ指定情報および深さ情報)によって指定されるテンプレートデータを参照し、現在の再生タイミングをプレートエフェクトを付与した後の発音タイミングとし、同発音タイミングに対応したオリジナルな発音タイミングを導いて、逆変換処理後のタイミングデータとする(図3参照)。ベロシティデータの逆変換処理においては、ベロシティデータ値を図2(C)のプレイエフェクトレジスタ内に記憶されているベロシティの変更値で除算して、逆変換処理後のベロシティデータとする。そして、ステップS44の記録処理により、前記再生バッファ領域に書き込まれた音高データに前記逆変換処理されたタイミングデータおよびベロシティデータを付加して、ノートイベントデータとして新たな曲データの前記ノートシーケンストラックに記録する。なお、この押鍵に関する鍵イベントデータは、次に説明するゲートタイムの計算のためにRAM24に一時的に記憶される。
また、鍵イベントデータが離鍵に関するものであれば、ステップS43の逆変換処理により、ゲートタイムデータのみが逆変換処理される。ゲートタイムデータの逆変換処理においては、前記RAM24内に一時記憶されている鍵イベントデータが検索されて、今回の離鍵に関する鍵イベントデータに含まれる音高データに一致する音高データを含む押鍵に関する鍵イベントデータが抽出される。次に、今回の離鍵に関する鍵イベントデータ中のタイミングデータ値(現在の再生タイミング値)から前記抽出された押鍵に関する鍵イベントデータ中のタイミングデータ値(押鍵時の再生タイミング値)を減算することによりゲートタイムを計算し、このゲートタイムをプレイエフェクトレジスタ内に記憶されているベロシティの変更値で除算して、逆変換処理後のゲートタイムデータとする。そして、ステップS44の記録処理により、新たな曲データのノートシーケンストラックに記録されているノートイベントデータ中から、今回の離鍵に関する鍵イベントデータに含まれる音高データに一致する音高データを含む直前のノートイベントデータを探し出し、同探し出したノートイベントデータ中に前記逆変換処理されたゲートタイムデータを追加する。なお、この時点で、前記RAM24内に一時記憶した鍵イベントデータは消去される。
これらの処理後、CPU21は、ステップS45にて記録用演奏イベント処理ルーチンの実行を終了する。そして、CPU21は、図4のステップS15の再生処理ルーチンを実行する。再生処理ルーチンの詳細は図8に示されており、CPU21は、その実行をステップS50にて開始する。そして、ステップS51にて、RAM24内の再生バッファ領域に再生タイミングに一致するタイミングデータを含むイベントデータ(再生によるノートイベントデータおよび演奏による鍵イベントデータ)があるかを判定する。該当するイベントデータがあれば、ステップS52にて前記イベントデータに対応した楽音の再生を制御する。このステップS52の処理は、図13の発音部BL8によるプレイエフェクト付加部BL5からのノートイベントデータの再生および演奏検出部BL6からの鍵イベントデータの再生機能に対応する。
具体的には、該当するイベントデータがノートイベントデータであれば、音源回路14の1つの音源チャンネルを指定して、ノートイベントデータに含まれる音高データおよびベロシティデータに加えて発音開始を表すキーオン信号を前記指定された1つの音源チャンネルに供給する。そして、ノートイベントデータに含まれるゲートタイムデータによって表されるゲートタイムが経過した時点で、前記指定した1つの音源チャンネルに発音終了動作の開始を表すキーオフ信号を供給する。前記指定された1つの音源チャンネルは、前記キーオン信号の到来時に、音高データによって指定される音高の楽音信号をベロシティデータによって指定される音量で発生し始める。そして、前記キーオフ信号の到来まで前記楽音信号を発生し続けて、同キーオフ信号の到来時に発生中の楽音信号を減衰させてその発生を終了する。このようにして発生された楽音信号は、効果回路18にて適宜効果が付与されてサウンドシステム19に供給され、サウンドシステム19が供給された楽音信号に対応した楽音を放音する。
一方、該当するイベントデータが鍵イベントデータであり、かつ鍵イベントデータが押鍵を表すキーオンデータを含んでいれば、前記と同様に、音源回路14の1つの音源チャンネルを指定して、同鍵イベントデータに含まれる音高データおよびベロシティデータに加えて発音開始を表すキーオン信号を前記指定された1つの音源チャンネルに供給する。これにより、前記指定される1つの音源チャンネルは、音高データによって指定される音高の楽音信号をベロシティデータによって指定される音量で発生し始める。また、該当するイベントデータが鍵イベントデータであり、かつ鍵イベントデータが離鍵を表すキーオフデータを含んでいれば、鍵イベントデータに含まれる音高データと同一の楽音信号を生成中の音源チャンネルを探し出し、探し出した音源チャンネルに発音終了動作の開始を表すキーオフ信号を供給する。音源回路14、効果回路18およびサウンドシステム19は、前記ノートイベントデータの場合と同様にして、鍵盤11に演奏に対応した楽音を放音する。このステップS52の処理は、図13の発音部BL8によるノートイベントデータおよび鍵盤11の演奏による鍵イベントデータに対応した楽音の発生制御機能に対応する。
これらの処理後、CPU21は、ステップS53にて再生処理ルーチンの実行を終了する。そして、CPU21は、図4のステップS16にて演奏記録プログラムの実行を終了する。この演奏記録プログラムの終了後、所定時間ごとに、図4の演奏記録プログラムが繰り返し実行され、曲データが再生されるとともに鍵盤11による演奏音も再生される。
次に、ユーザが、鍵盤11を用いた演奏を行うことなく、曲データを再生する場合について説明する。ユーザは、パネル操作子群12を操作することにより、演奏再生プログラムの実行を開始させる。この演奏再生プログラムは、所定の短時間ごとに繰り返し実行される。
演奏再生プログラムの実行は、図9のステップS60にて開始され、CPU21は、ステップS61にて、上記図4の演奏記録プログラムのステップS11の処理と同様に、マスタートラックに記録されているデータ中に楽曲の再生タイミングを示すタイミングデータを有する拍子イベントデータ、テンポイベントデータなどに含まれる拍子データ、テンポデータなどを読出して、曲データを再生するための拍子、テンポなどを変更する。なお、この場合には、これらの拍子イベントデータ、テンポイベントデータなどは新たな曲データとして再記録されない。
前記ステップS61の処理後、CPU21は、ステップS62の再生用プレイエフェクト処理ルーチン、ステップS63の再生用ノートシーケンストラック処理ルーチン、ステップS64の再生用演奏イベント処理ルーチンおよびステップS65の再生処理ルーチンを実行して、ステップS66にてこの演奏再生プログラムの実行を一旦終了する。
再生用プレイエフェクト処理ルーチンの詳細は、図10に示すように、上記図5の記録用プレイエフェクト処理ルーチンのステップS20〜S25,S28と同様なステップS70〜S76の処理からなる。そして、この再生用エフェクト処理ルーチンの実行により、曲データとして記憶されているプレイエフェクトイベントデータおよびパネル操作子群12の操作によるプレイエフェクトデータの変更指示に基づいて、RAM24内に設けたプレイエフェクトレジスタ内の発音タイミング、ゲートタイムおよびベロシティの各変更値が更新される。なお、この場合も、前記プレイエフェクトイベントデータおよびプレイエフェクトデータは、新たな曲データとして記録されることはない。
再生用ノートシーケンストラック処理ルーチンは、図11に示すように、上記図6の記録用ノートシーケンストラック処理ルーチンのステップS30,S31,S33〜S35と同様なステップS80〜S84の処理からなる。そして、この再生用ノートシーケンストラック処理ルーチンの実行により、曲データ中の読み出されたノートイベントデータを構成するタイミングデータ、ゲートタイムデータおよびベロシティデータが、プレイエフェクトレジスタに記憶されている発音タイミング、ゲートタイムおよびベロシティの各変更値により修正されて、RAM24内の再生バッファ領域に記憶される。なお、この場合も、前記読み出されたノートイベントデータが新たな曲データとして記録されることはない。
再生用演奏イベント処理ルーチンは、図12に示すように、上記図7の記録用演奏イベント処理ルーチンのステップS40〜S42,S45と同様なステップS90〜93の処理からなる。そして、この再生用演奏イベント処理ルーチンの実行により、鍵盤11の演奏を表す鍵イベントデータが現在の再生タイミングを表すタイミングデータと共にRAM24内に設けた再生バッファ領域に書き込まれる。なお、この場合も、前記鍵イベントデータが新たな曲データとして記録されることはない。
再生処理ルーチンの詳細は、上述した図8に示すとおりであり、RAM24内の再生バッファ領域の記憶されているノートイベントデータおよび鍵イベントデータが再生される。これにより、曲データが再生されるとともに、鍵盤11による演奏音も再生される。
次に、上記のようなシーケンストラックに記録されている曲データの再生、ユーザによる演奏音の発生および演奏のシーケンストラックへの記録について、図13の機能ブロック図を用いるとともに、図14のタイムチャートに示す例を混じえて説明しておく。この場合、再生されるべき曲データのノートシーケンストラックには、図14(A)に示すように、N−1〜N+1小節(ただし、Nは2以上の整数)にわたって、実線三角のタイミング位置を示すタイミングデータを含むノートイベントデータが記録されているものとする。
演奏データ再生部BL1が曲データの再生を開始して、プレイエフェクトトラックに記録されている新たなプレイエフェクトデータが読み出されると、演奏データ再生部BL1はプレイエフェクト制御部BL2内のプレイエフェクトデータを前記新たなプレイエフェクトデータに更新する(図5のステップS21,S22の処理に対応)。また、この曲データの再生中にパネル操作子群12が操作されて、ユーザが新たなプレイエフェクトデータを指定すると、パネル操作検出部BL3がプレイエフェクト制御部BL2内のプレイエフェクトデータを前記指定された新たなプレイエフェクトデータに更新する(図5のステップS23,S24の処理に対応)。そして、プレイエフェクト制御部BL2は、前記のようにして更新されるプレイエフェクトデータを用いて、再生タイミングに対応したプレイエフェクトのための各種変更値を更新するとともに、更新された各種変更値をプレイエフェクト付加部BL5に供給する(図5のステップS25の処理に対応)。この場合、前記プレイエフェクトデータの更新により、発音タイミングに関しては、図14(B)に示すように、テンプレートグループ指定情報によりN−1小節目からN+1小節目にわたって図3(A)に示す変更態様のテンプレートが指定され、かつ深さ情報により、N−1小節目において0%、N小節目において30%およびN+1小節目において60%が指定されたものとする。
また、プレイエフェクト制御部BL2は、前記更新されたプレイエフェクトデータおよびタイミングデータからなるプレイイベントデータを演奏データ記録部BL4に供給する。演奏データ記録部BL4は、前記供給されたエフェクトイベントデータを新たな曲データの記録領域に記録する(図5のステップS27の処理に対応)。この場合、演奏データ再生部BL1から供給されたプレイエフェクトデータに関しては、プレイエフェクト制御部BL2は、演奏データ再生部BL1によって読み出されたタイミングデータを含むプレイエフェクトイベントデータをそのまま演奏データ記録部BL4に供給する。一方、パネル操作検出部BL3から供給されたプレイエフェクトデータに関しては、プレイエフェクト制御部BL2は、現在の再生タイミングを逆変換処理してタイミングデータを生成し、同生成したタイミングデータを含むプレイエフェクトイベントデータを演奏データ記録部BL4に供給する。
この状態で、演奏データ再生部BL1が、ノートシーケンストラックに記録されているノートイベントデータを読み出してプレイエフェクト付加部BL5に供給すると、プレイエフェクト付加部BL5は、プレイエフェクト制御部BL2から供給されるプレイエフェクトに関する前記各種変更値に応じてノートイベントデータのタイミングデータ、ゲートタイムデータおよびベロシティデータを修正して発音部BL8に供給する(図6のステップS33,S34の処理に対応)。この場合、前述したプレイエフェクトに関する条件のもとでは、ノートイベントデータの再生タイミングは、図14(B)の実線三角のようになる。なお、図14(B)においては、破線三角でオリジナルなノートイベントデータのタイミング(図14(A)のタイミングと同じ)を示している。
発音部BL8は、前記供給されたノートイベントデータに応じた楽音信号の生成を制御する(図8のステップS52の処理に対応)。したがって、オリジナルなノートイベントデータに対応した楽音が再生されるとともに、同再生楽音にはプレイエフェクトデータによって指定されるプレイエフェクトが付加される。
一方、演奏データ再生部BL1によって読み出されたノートイベントデータは、演奏データ記録部BL4にも供給される。そして、演奏データ記録部BL4は、供給されたノートイベントデータを新たな曲データのために用意された記録領域の所定のノートシーケンストラックであって、オリジナルの曲データ中において前記ノートイベントデータが記録されていたノートシーケンストラックに記録する(図6のステップS32の処理に対応)。なお、この記録されたノートイベントデータは、プレイエフェクトデータによって修正されたものではなく、オリジナルの曲データ中のノートイベントデータと同じである。
このようなオリジナルの曲データの再生及び記録中に、ユーザが、前記再生楽音を聴きながら鍵盤11を用いて楽曲を演奏すると、演奏検出部BL6はこの演奏による鍵イベントデータを発音部BL8に供給する(図7のステップS42の処理に対応)。発音部BL8は、前記供給された鍵イベントデータに応じた楽音信号の生成を制御する(図8のステップS52の処理に対応)。したがって、鍵盤11の演奏に応じた楽音が発生される。図14(C)は、実線ひし形で、鍵イベントデータのタイミングの一例を示している。なお、図14(C)の破線三角は、前記ノートイベントデータの再生タイミング(図14(B)の実線三角と同じ)を表している。
一方、鍵盤11の演奏による鍵イベントデータは、プレイエフェクト除去部BL7にも供給される。プレイエフェクト除去部BL7は、プレイエフェクト制御部BL2から供給されるプレイエフェクトに関する前記各種変更値に応じて鍵イベントデータのゲートタイムデータおよびベロシティデータを逆変換処理して演奏データ記録部BL4に供給する。また、プレイエフェクト除去部BL7は、プレイエフェクト制御部BL2から供給される発音タイミングのプレイエフェクトデータを用いて、再生タイミングを逆変換処理してタイミングデータとして、演奏データ記録部BL4に供給する(図7のステップS43の処理に対応)。演奏記録部BL4は、前記供給された鍵イベントデータに逆変換処理したタイミングデータを加えてノートイベントデータとし、新たな曲データのために用意された記録領域のシーケンストラックに前記ノートイベントデータを記録する(図7のステップS44の処理に対応)。
これにより、図14(D)にて実線ひし形で示すタイミング位置に鍵演奏によるノートイベントデータ(鍵イベントデータ)が記録される。なお、図14(D)の破線ひし形は、鍵盤11の演奏タイミング(図14(C)の実線ひし形と同じ)を示している。また、図14(D)には、オリジナルの曲データ中のノートイベントデータであって新たな曲データのために用意された記録領域のノートシーケンストラックに記録されるノートイベントデータを実線三角で示すとともに、同ノートイベントデータの再生タイミングを破線三角で示している。さらには、新たな曲データのために用意された記録領域のプレイエフェクトトラックに記録されるプレイエフェクトデータのタイミングも実線丸印で示されている。
また、鍵盤11による演奏を行うことなく曲データを再生する場合には、上述した演奏データ記録部BL4への記録用プレイエフェクトイベントデータ、記録用鍵イベントデータおよびノートイベント再生データの供給処理と、演奏データ記録部BL4による前記各種データの記録処理とがなされない点を除けば上述の説明と同様である。この場合、前記新たな曲データを単に再生させれば、前記鍵盤11による演奏時と全く同一の演奏音が再生される。これは、鍵盤11による鍵イベントおよびパネル操作子群12によるプレイエフェクトイベントは、逆変換処理されて新たな曲データとして記録されているが、この再生時には前記鍵イベントデータの記録時に記録されたプレイエフェクトイベントデータが読み出したノートイベントデータにプレイエフェクトを付加するからである。
次に、前記新たな曲データを、パネル操作子群12の操作によりプレイエフェクトを変更して再生する場合について、一例をあげて説明する。例えば、図14(E)に示すように、図14(D)の場合に対し、テンプレートデータ中の楽音要素の種類及び楽音要素の変更態様(テンプレートグループ指定情報)をN−1小節〜N+1小節にわたって同じにして、N−1小節とN+1小節において深さ情報を変更した場合について説明する。この場合、鍵盤11の演奏によって新たに追加したノートイベントデータの再生タイミングは実線ひし形で示すタイミングとなり、オリジナルの曲データ中のノートイベントデータの再生タイミングは実線三角で示すタイミングとなる。なお、破線ひし形は前記新たに追加したノートイベントデータ中のタイミングデータによって表されるタイミング(図14(D)の実線ひし形と同じタイミング)を示し、破線三角はオリジナルの曲データにおけるノートイベントデータ中のタイミングデータによって表されるタイミング(図14(D)の実線三角と同じタイミング)を示している。
上記説明からも明らかなように、上記実施形態によれば、ユーザが、プレイエフェクトの付与された演奏音を聴きながら、鍵盤11の演奏によるノートイベントデータを新たな曲データとして記録する場合、新たな曲データに追加されるノートイベントデータは、プレイエフェクトデータによる変換前の演奏データに戻される。したがって、新たな曲データ中のノートイベントデータは、常にプレイエフェクトの影響を受けていないものとなり、これらのノートイベントデータに基づく再生音に新たなプレイエフェクトを付与する場合には、ユーザは意図通りのプレイエフェクトを簡単に付与することができる。
また、鍵盤11の演奏によるノートイベントデータの記録時には、オリジナルな曲データ中のプレイエフェクトイベントデータまたはパネル操作子群12によって指定されたプレイエフェクトイベントデータが、ノートイベントデータとは異なるプレイエフェクトトラックに記録される。したがって、新たな曲データを再生する際には、ノートイベントデータおよびプレイエフェクトイベントデータを同時に読み出して、読み出したプレイエフェクトイベントデータを用いて、読み出したノートイベントデータを要素の変更された楽音を再生するためのノートイベントデータに変換すれば、演奏時における楽音と同じ再生音を得ることができる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記実施形態においては、鍵盤11の演奏に基づく楽音の発生に際し、図7のステップS42の処理により演奏に対応した鍵イベントデータを一旦再生バッファ領域に書き込んだ後、図8のステップS52の処理によって楽音の発生を制御するようにした。しかし、鍵盤11の演奏に基づく楽音の発生においては、鍵イベントデータの逆変換処理を必要としないので、前記ステップS42にて、鍵イベントデータを音源回路14に直接出力して楽音の発生を制御するようにしてもよい。
また、上記実施形態では、鍵盤11による演奏による鍵イベントデータ(ノートイベントデータ)を記録および再生することについて説明したが、この鍵イベントデータはメロディに関するものであっても、伴奏音に関するものであってもよい。特に、伴奏音に関する場合には、1曲分の演奏に関する鍵イベントデータなくても、1曲分よりも短い所定区間(例えば、2小節、4小節など)にわたる鍵イベントデータ列であってもよい。また、鍵盤11以外の演奏操作子によって発生楽音の音高を指定する場合にも本発明は適用される。さらには、音高を有さない打楽器音に関する演奏データを記録または再生する場合にも本発明は適用される。
また、上記実施形態においては、図4の演奏記録プログラムを1回だけ実行するようにしたが、この演奏記録プログラムを繰り返し実行することにより、鍵イベントデータを含む種々の新たな演奏データを順次追加記録するようにしてもよい。これは、特に、複数のパートを複数のノートシーケンストラックにそれぞれ記録する場合に有効である。
さらに、上記実施形態においては、演奏操作子として鍵を採用した電子楽器に本発明を適用したが、鍵に代えて、単なる押圧スイッチ、タッチスイッチなどを音高を指定する演奏操作子を採用した電子楽器に適用してもよい。また、本発明は、電子楽器以外の自動演奏装置、音楽アミューズメント装置、パーソナルコンピュータなど、曲データを記録再生することが可能な他の電子音楽装置にも適用できる。