a.第1実施形態
以下、本発明の第1実施形態について図面を用いて説明する。図1は、第1実施形態に係る自動演奏機能を有する電子楽器を概略的に示すブロック図である。この電子楽器は、演奏操作子群11、設定操作子群12、表示器13および音源回路14を備えている。
演奏操作子群11は、発生楽音の音高を指定するための複数の演奏操作子(例えば、複数の鍵)からなり、各演奏操作子の操作はバス15に接続された検出回路16によって検出される。設定操作子群12は、この電子楽器の操作パネルに設けられて電子楽器の各部の動作態様を指示するための複数の設定操作子からなり、各設定操作子の操作はバス15に接続された検出回路17によって検出される。表示器13は、液晶ディスプレイ、CRTなどで構成され、文字、数字、図形などを表示する。この表示器13の表示内容は、バス15に接続された表示制御回路18によって制御される。
音源回路14は、バス15に接続されていて、複数(本実施形態においては、16個)の音源チャンネルを有する。各音源チャンネルは、後述するCPU21の制御のもとに供給される演奏データ(MIDIメッセージ)に基づいて楽音信号を生成してサウンドシステム19に出力する。また、音源回路14においては、前記演奏データ(MIDIメッセージ)により制御されて、音色、音量、効果などの生成される楽音信号の発生環境も設定される。サウンドシステム19は、スピーカ、アンプなどを含んでいて、前記楽音信号に対応した楽音を発音する。
また、この電子楽器は、バス15にそれぞれ接続されていてマイクロコンピュータ本体部を構成するCPU21、タイマ22、ROM23およびRAM24を備えているとともに、外部記憶装置25および通信インターフェース回路26も備えている。外部記憶装置25は、この電子楽器に予め組み込まれているハードディスクHDおよびフラッシュメモリ、同電子楽器に装着可能なコンパクトディスクCDおよびフレキシブルディスクFDなどの種々の記録媒体と、同各記録媒体に対するドライブユニットを含むものであり、大量のデータ及びプログラムの記憶及び読出しを可能にしている。
特に、この第1実施形態においては、ハードディスクHD、フラッシュメモリなどには、図2に示すシーケンス再生プログラム、図3に示すフェードアウトプログラム、図4,5に示すフェードインプログラムなどが記憶されている。また、このハードディスクHD、フラッシュメモリなどには、楽曲にそれぞれ対応した複数の曲データ、フェードアウト音量テーブルおよびフェードイン音量テーブルも記憶されている。なお、これらのプログラムおよびデータは、予めハードディスクHD、フラッシュメモリなどに記憶されていたり、コンパクトディスクCD、フレキシブルディスクFDなどからハードディスクHD、フラッシュメモリなどに供給されたり、後述する外部機器31又は通信ネットワーク32を介した外部からハードディスクHD、フラッシュメモリなどに供給されるものである。
各曲データは、図6に示すように、テンポ・拍子データ、演奏データ、チャンネル優先度データなどからなる。テンポ・拍子データは、楽曲のテンポおよび拍子を表わす情報を含んでいる。演奏データは、時間経過に従って配列された複数のMIDIメッセージからなる。各MIDIメッセージは、時間情報、チャンネル情報およびイベント情報からなる。時間情報は、各MIDIメッセージの出力タイミングを表わしている。チャンネル情報は、イベント情報が割当てられるべき音源回路14の音源チャンネルの番号(本実施形態では、1〜16のいずれか)を表わしている。イベント情報には、プログラムチェンジ、チャンネルボリューム、ノートオン、ノートオフなどが含まれている。
プログラムチェンジは、一般的に、発生される楽音信号の音色を設定する制御イベントである。チャンネルボリュームは、発生される楽音信号の音量を設定する制御イベントである。これらのプログラムチェンジおよびチャンネルボリュームは、発生楽音のピッチベンド量などの他の楽音要素、発生楽音に付与される効果、発生楽音の発音モード(ポリモード/モノモード)などを制御するバンクセレクト、パラメータコントロール、モードメッセージと共に、楽音信号の発生環境を設定するためのMIDIメッセージ(すなわち演奏データ)に含まれる。ノートオンは、楽音の発生開始を指示するもので、同指示を表わす指示情報および楽音の音高を表わすノートコードからなる。ノートオフは、楽音の発生終了を指示するもので、同指示を表わす指示情報および楽音の音高を表わすノートコードからなる
チャンネル優先度データは、前記チャンネル情報により表わされたチャンネル番号1〜16にそれぞれ対応させて、それらの優先順位を表わす優先順位情報からなる。なお、本実施形態では、この優先順位情報は、16個のチャンネル番号の優先順位をそれぞれ独立に表わしているが、複数のチャンネル番号に対して同一の優先順位を付与して、16未満の値により優先順位を表わすようにしてもよい。このチャンネル優先度データに関しては、例えば、演奏データの作成者が、楽曲を構成する複数のパートのそれぞれに対して音楽的な重要度(例えば、主旋律、ベース、リズムなどの重要度が高い)を判断して優先順位を定め、各パートに属する楽音信号を発生させるチャンネル番号と各パートの優先順位とを対応させて、演奏データの作成時に演奏データと共に記録しておく。
また、CPU21が、図示しないプログラムの実行により、演奏データを自動的に解析し、この解析結果に基づいて各チャンネル番号の優先順位を自動的に定めて、各チャンネル番号の優先順位を表わす優先度データを演奏データと共に予め記録しておくようにしてもよい。この場合、演奏データによって指定される音量が大きいほど、また演奏データによる楽音信号の発生頻度が高いほど、優先順位が高く設定されるなどの予め決められた基準に従って、優先順位が自動的に決定される。さらに、選曲時または優先順位の決定指示時に、ユーザが、コンピュータプログラムの指示に従って前記のような優先度データを作成して演奏データに対応させて記録させておくようにしてもよい。
フェードアウト音量テーブルは、図7(A)に示すように、前記優先度(優先順位)ごとに、楽曲の再生音をフェードアウトさせるために、フェードアウト開始からの時間経過に従って徐々に減少する音量制御データFOを記憶している。そして、これらの音量制御データFOは、優先度が低くなるほど、急激に音量が減少するように定められている。なお、図7(A)に示すようにフェードアウト開始から即座に全ての音量を減少させるのに代えて、図7(B)に示すように、優先度の高い側の一部の再生音または全ての再生音に対して、フェードアウト開始時から所定時間だけ音量制御データFOを一定値に保ち、その後に音量制御データFOを徐々に減少させるようにしてもよい。なお、この場合、優先度が高いほど前記所定時間を長くするようにする。フェードイン音量テーブルは、図8に示すように、楽曲の再生音をフェードインさせるために、フェードイン開始からの時間経過に従って徐々に増加する一種類の音量制御データFIを記憶している。
通信インターフェース回路26は、他の電子楽器、パーソナルコンピュータなどの外部機器31に接続可能となっていて、この電子楽器が外部機器31と各種プログラム及びデータを交信可能となっている。また、通信インターフェース回路26は、インターネットなどの通信ネットワーク32を介して外部との接続も可能となっていて、この電子楽器が各種プログラム及びデータを外部から受信し、または外部へ送信できるようになっている。
次に、上記のように構成した第1実施形態の動作について説明する。ユーザは設定操作子群12を操作して図2のシーケンスプログラムを起動すると、CPU21はこのシーケンスプログラムを所定の短時間ごとに繰り返し実行し始める。
このシーケンスプログラムの実行中、ユーザが設定操作子群12を操作して選択曲の入力を指示すると、CPU21は、ステップS10にて「Yes」と判定して、ステップS11にて表示器13に選択曲の入力画面を表示し、ユーザに連続再生されるべき楽曲を再生順に選択させる。ユーザが、設定操作子群12を操作してハードディスクHD(またはフラッシュメモリ)内に記録されている複数の曲データの中から所望の複数曲を順次選択すると、選択された複数曲を順に表わす曲指定データSSGがシーケンス曲データSSG(1),SSG(2)・・SSG(M)としてRAM24に記憶される。なお、ユーザがハードディスクHDなどに記録されていない曲データを希望する場合には、外部機器31又は通信ネットワーク32を介した外部から所望の曲データを入力してハードディスクHDに記録する。そして、この記録した曲データを指定するための曲指定データSSGも、前記シーケンス曲データSSG(1),SSG(2)・・SSG(M)中に加えられる。なお、値Mは、ユーザが選択した楽曲の数であって、連続再生される楽曲の数を表わす。
前記のように連続再生されるべき複数の楽曲が選択された後、ユーザが設定操作子群12を操作してスタートを指示すると、ステップS12にて「Yes」と判定して、ステップS13〜S17の処理により、先頭の楽曲の再生を準備する。ステップS13においては、作動フラグRUNを“1”に設定する。なお、作動フラグRUNは、“1”により楽曲のシーケンス再生の作動状態を表わし、かつ“0”により楽曲のシーケンス再生の停止状態を表すもので、初期には図示しない初期設定処理により“0”に設定されている。ステップS14においては、シーケンス曲データSSG(1),SSG(2)・・SSG(M)中の再生されるべき曲指定データSSGの順番を表わす曲順変数mを「1」に設定する。ステップS15においては、第1楽曲指定データSG1をシーケンス曲データSSG(1),SSG(2)・・SSG(M)の先頭の曲指定データSSG(1)に設定する。なお、この第1楽曲指定データSG1は、シーケンス再生における楽曲の切換え動作に入る前には現在の再生楽曲を表わしており、前記楽曲の切換え動作に入った後には再生が停止される楽曲すなわち詳しくは後述するフェードアウトされる楽曲を表わす。
ステップS16においては、第1楽曲指定データSG1により指定される楽曲に対応した曲データ(図6参照)がハードディスクHDなどからRAM24に転送されて、第1曲データとしてRAM24に記憶される。ステップS17においては、図示しない初期設定処理によりRAM24内に準備された第1チャンネル割当てテーブルが初期設定される。この第1チャンネル割当てテーブルは、図9(A)に示すように、RAM24内の第1曲データに関するMIDIメッセージ中のチャンネル情報と音源回路14の音源チャンネルとを対応付けるものである。言い換えれば、MIDIメッセージ中のチャンネル情報に対応させて、同チャンネル情報と対になったイベント情報を音源回路14に出力する際に音源回路14の音源チャンネルを指定するチャンネル番号を記憶しているものである。そして、このステップS17では、図9(A)の左欄に示すように、第1曲データに関するMIDIメッセージ中のチャンネル情報により示された全てのチャンネル番号に対して、音源回路14の音源チャンネルを表すチャンネル番号をそれぞれ一致させる。以降、MIDIメッセージ内のチャンネル情報または同チャンネル情報によって表わされるチャンネル番号をMIDIチャンネル番号といい、音源回路14内の音源チャンネルの番号を音源チャンネル番号という。
前述のステップS13〜S17の処理による先頭の楽曲の再生準備が完了すると、ステップS18にて「Yes」すなわち作動フラグRUNが“1”であると判定して、ステップS19にてクロスフェードフラグCRFが“0”であるかを判定する。このクロスフェードフラグCRFは、“1”によりクロスフェード状態を表し、“0”により非クロスフェード状態を表すもので、最初、図示しない初期設定処理により“0”に設定されている。したがって、ステップS19においては「Yes」と判定し、ステップS20,S21の処理を実行する。ステップS20においては、RAM24内の第1曲データ中のMIDIメッセージを楽曲の進行に従って順次読出す。この場合、楽曲の進行は、第1曲データ中のテンポに応じて決定される。ステップS21においては、第1チャンネル割当てテーブルを参照することにより、読出したMIDIメッセージ中のチャンネル番号を音源チャンネル番号に変更して、同変更したチャンネル番号を含むMIDIメッセージを音源回路14に出力する。なお、先頭の楽曲の再生時には、前記ステップS17の初期化処理のように第1チャンネル割当てテーブルのMIDIチャンネル番号と音源チャンネル番号はそれぞれ一致しているので、前記読出したMIDIメッセージがそのまま音源回路14に出力される。
音源回路14は、前記出力されたMIDIメッセージを受信し、MIDIチャンネル番号によって指定された音源チャンネルに、MIDIメッセージに含まれるイベント情報を供給する。そして、音源回路14は、前記供給されたイベント情報に従って、前記指定された音源チャンネルにおける楽音の発生開始、楽音の発生終了または発生楽音の環境設定を制御する。これにより、音源回路14は、RAM24内の第1曲データ中の演奏データに従った楽音信号を生成して、サウンドシステム19を介して同生成した楽音信号に対応した楽音を発音する。したがって、RAM24内の第1曲データ中の演奏データが再生される。
前記第1曲データ中の演奏データの再生中、楽曲の切換えが指示されると、CPU21は、ステップS22にて「Yes」と判定し、ステップS23以降の処理を実行する。この楽曲の切換え指示は、このシーケンス再生プログラムと並行して実行されている図示しない時間計測プログラムの実行により、新たな楽曲の再生開始から一定時間が経過すると、前記楽曲の切換えが指示される。この種の複数楽曲の連続再生は、通常、先頭から一定時間部分だけの再生を各楽曲に対して順次行うものであるので、各楽曲の再生開始から時間計測を開始して、計測時間が所定時間に達した時点で、前記切換え指示が発せられるようにすればよい。さらに、このような時間計測による切換え指示が発せられる前に、ユーザが設定操作子群12を操作して、再生中の楽曲の再生停止を要求した場合には、楽曲の切換え指示ありとして、ステップS22にて「Yes」と判定してステップS23以降の処理を実行する。
ステップS23においては、前記楽曲の切換え開始指示からの時間を計測するためのフェードアウトカウンタの作動を開始させる。このフェードアウトカウンタは、以降、所定の短時間ごとに図示しないプログラムの実行により順次カウントアップされて、切換え開始時からの時間を計測する。次に、ステップS24にて、クロスフェードフラグCRFを“1”に設定する。
前記ステップS24の処理後、ステップS25〜S27の処理により、曲順変数mを変更する。曲順変数mがシーケンス曲データSSG(1),SSG(2)・・SSG(M)の最後の曲順を表していなければ、曲順変数mに「1」が加算される。また、曲順変数mがシーケンス曲データSSG(1),SSG(2)・・SSG(M)の最後の曲順を表していれば、曲順変数mは先頭の曲データSSG(1)を表す「1」に設定される。そして、ステップS28にて、第2楽曲指定データSG2を曲順変数mによって指定される曲指定データSSG(m)に設定する。なお、この第2楽曲指定データSG2は、シーケンス再生における楽曲の切換え動作に入ったときに再生が開始される楽曲すなわち詳しくは後述するフェードインされる楽曲を表わす。
次に、ステップS28にて、第2楽曲指定データSG2により指定される楽曲に対応した曲データ(図6参照)をハードディスクHDなどからRAM24に転送して、第2曲データとしてRAM24に記憶する。そして、ステップS30にて、図示しない初期設定処理によりRAM24内に準備された第2チャンネル割当てテーブルをクリアする。この第2チャンネル割当てテーブルは、前述した第1チャンネル割当てテーブルと同様に、RAM24内の第2曲データに関するMIDIチャンネル番号と音源チャンネル番号とを対応付けるものである(図9(B)参照)。ただし、このステップS30の処理においては、図9(B)の左欄に示すように、第2曲データに関するMIDIチャンネル番号により示された全てのチャンネル番号に対して、音源チャンネル番号を全て「0」に設定する。この場合、「0」は音源回路14のいずれの音源チャンネルも表していない。したがって、前記第2チャンネル割当てテーブルのクリアは、楽曲の切換え開始時においては、第2曲データのMIDIメッセージが音源回路14のいずれの音源チャンネルも割当てられていないことを意味する。
一方、CPU21は、前記シーケンス再生プログラムと並行して所定の短時間ごとに、図3のフェードアウトプログラムを繰り返し実行している。ただし、楽曲の切換え指示前であってクロスフェードフラグCRFが“0”に設定されている状態では、ステップS40にて「No」と判定されて、実質的な処理が実行されない。そして、前記のように楽曲の切換えが指示されてクロスフェードフラグCRFが“1”に変更されると、ステップS40にて「Yes」と判定して、ステップS41以降の処理を実行し始める。
フェードアウトプログラムにおいては、ステップS41にて、フェードアウト音量テーブルを参照して、MIDIメッセージの各チャンネルに対応した音量制御データVOL・FO(1)〜VOL・FO(16)を生成する。この音量制御データVOL・FO(1)〜VOL・FO(16)の生成においては、まず、RAM24内の第1曲データに関する優先度データの中から、チャンネル番号1〜16に対応した優先順位情報をそれぞれ取り出す。次に、前記取り出した優先順位情報ごとに、フェードアウト音量テーブル内に記憶されている音量制御データFOの種類を特定して、フェードアウトカウンタにより指定される時刻の音量制御データFOを計算する。そして、予め決められた所定の音量値VOLを音量制御データFO(1)〜FO(16)に乗算して、各優先順位情報(チャンネル番号1〜16)に対応した音量制御データVOL・FO(1)〜VOL・FO(16)を生成する。なお、この所定の音量値VOLとして、ユーザが任意に指定した値を採用したり、設定操作子群12中の音量調整操作子によって指示されている値を採用したりしてもよい。
次に、ステップS42にて、前記計算した音量制御データFO(1)〜FO(16)のうちで新たに「0」となった音量制御データFO(x)があるかを判定する。この場合、楽曲の切換え開始後の直後においては、全ての音量制御データFO(1)〜FO(16)が「0」となることはないので、ステップS42にて「No」と判定して、ステップS44に進む。ステップS44においては、前記計算した音量制御データVOL・FO(1)〜VOL・FO(16)に、第1チャンネル割当てテーブルによって指定される音源チャンネル番号を付して音源回路14に出力する。言いかえれば、第1チャンネル割当てテーブルを参照し、音量制御データVOL・FO(1)〜VOL・FO(16)のチャンネル番号1〜16を音源回路14の割当てチャンネル番号に変換して、音源回路14に出力する。ただし、後述するように、第1チャンネル割当てテーブルの中で音源回路14のチャンネル番号が「0」に設定されているチャンネルx、すなわち第1曲データの再生におけるフェードアウトが完了した音源回路14のチャンネルxに関しては、前記音量制御データVOL・FO(x)のチャンネル番号を変換しないとともに、音源回路14へ出力しない。このために、前記ステップS41の処理においても、前記チャンネルxに関しては、音量制御データVOL・FO(x)の計算を省略してもよい。このように音量制御データVOL・FO(1)〜VOL・FO(16)を音源回路14に出力する理由は、再生楽音の音量を決定するチャンネルボリュ−ムを表すMIDIメッセージが曲データ中に存在しないこともあるし、必ずしも楽曲の再生に必要なタイミングに存在しないことがあるためである。
前記ステップS44の処理後、ステップS45にて、RAM24内の第1曲データ中のMIDIメッセージを楽曲の進行に従って順次読出す。この場合も、楽曲の進行は、第1曲データ中のテンポに応じて決定される。そして、ステップS46にて、前記読出したMIDIメッセージのMIDIチャンネル番号によって指定されるチャンネルのフェードアウトが完了しているかを判定する。この判定については、詳しくは後述するとして、楽曲の切換え開始直後には、全てのチャンネルがフェードアウト中であるので、同ステップS46にて「No」と判定して、ステップS47に進む。
ステップS47においては、前記読出したMIDIメッセージがチャンネルボリュームであるかを判定する。前記読出したMIDIメッセージがチャンネルボリュームであれば、ステップS46にてチャンネルボリュームの音量パラメータVOLを該当するチャンネルの音量制御データFO(y)で修正して、ステップS49に進む。この音量パラメータの修正においては、まず、RAM24内の第1曲データに関するチャンネル優先度データの中から、チャンネル番号yに対応した優先順位情報をそれぞれ取り出し、前記取り出した優先順位情報によりフェードアウト音量テーブル内に記憶されている音量制御データFOの種類を特定して、フェードアウトカウンタにより指定される時刻の音量制御データFO(y)を計算する。そして、読出したチャンネルボリュームの音量パラメータVOLに音量制御データFO(y)を乗算することにより、チャンネルボリュームの音量パラメータVOLを音量制御データVOL・FO(y)に修正する。なお、このように、楽曲の切換え指示があった後に、MIDIメッセージとしてチャンネルボリュームが読出されたチャンネルに関しては、以降のステップS41の処理において、この音量パラメータVOLが所定の音量値VOLに代えて用いられる。前記読出したMIDIメッセージがチャンネルボリュームでなければ、ステップS47にて「No」と判定して、ステップS49に直接進む。
ステップS49においては、第1チャンネル割当てテーブルを参照することにより、前記読出したMIDIメッセージ(ただし、MIDIメッセージがチャンネルボリュームの場合には前記ステップS48の処理によって修正したMIDIメッセージ)中のMIDIチャンネル番号を音源チャンネル番号に変更して、同変更したMIDIチャンネル番号を含むMIDIメッセージを音源回路14に出力する。音源回路14は、前記出力されたMIDIメッセージを受信し、MIDIチャンネル番号によって指定された音源チャンネルに、MIDIメッセージに含まれるイベント情報を供給する。そして、音源回路14は、前記供給されたイベント情報に従って、前記指定された音源チャンネルにおける楽音の発生開始、楽音の発生終了または発生楽音の環境設定を制御する。これにより、音源回路14は、前述した場合と同様に、RAM24内の第1曲データ中の演奏データに従った楽音信号を生成して、サウンドシステム19を介して同生成した楽音信号に対応した楽音を発音する。
しかし、この場合には、ステップS44,S48の処理により、音源回路14の各音源チャンネルには、音量制御データVOL・FO(1)〜VOL・FO(16)),VOL・FO(y)が出力されており、音源回路14の各音源チャンネルにて生成される楽音信号の音量は前記音量制御データVOL・FO(1)〜VOL・FO(16),VOL・FO(y)によって決定される。一方、フェードアウト音量テーブル内の音量制御データFOは楽曲の切換え指示後の時間経過に従って徐々に減少するように設定されているとともに、優先度の低い楽音信号の音量ほど速く減少するように設定されている。したがって、楽曲の切換えが指示された後には、音源回路14の各音源チャンネルから発生される第1曲データに関する楽音信号の音量は徐々に減少するとともに、優先度の低い楽音信号の音量ほど速く減少する。
このようなフェードアウトプログラムの繰り返し実行により、ステップS41の処理により計算された音量制御データFO(1)〜FO(16))のうちで新たに「0」となった音量制御データFO(x)が存在する場合には、ステップS42にて「Yes」と判定して、ステップS43に進む。ステップS43においては、第1チャンネル割当てテーブルにおいて、音量制御データFO(x)が新たに「0」となったMIDIチャンネル番号xに対応した音源チャンネル番号を「0」に変更する(図9(A)の中央欄参照)。この音源チャンネル番号「0」は、第1曲データのMIDIチャンネルxに関する演奏データの再生のフェードアウトが完了したこと、すなわち第1曲データのMIDIチャンネル番号xに関する演奏データが、以降音源回路14のいずれかの音源チャンネルにも割当てられないことを意味する。
これにより、第1曲データの再生におけるフェードアウトが完了したチャンネルに関しては、前記ステップS44の処理によっても音量制御データVOL・FO(x)が出力されなくなる。また、ステップS46によっても、フェードアウトが完了したチャンネルに関するMIDIメッセージは音源回路14へ出力されなくなる。このようにして、優先順位の低いチャンネルから高いチャンネルに向かって、第1曲データの再生におけるフェードアウト処理が順次完了していく。そして、最終的には、第1曲データの再生において、全てのチャンネルの楽音信号のフェードアウトが完了するとともに、第1チャンネルテーブルの音源回路14のチャンネル番号は全て「0」に書き換えられる(図9(A)の右欄参照)。
また、CPU21は、前記シーケンス再生プログラムおよびフェードアウトプログラムと並行して所定の短時間ごとに、図4,5のフェードインプログラムを繰り返し実行している。ただし、前記のように楽曲の切換え指示前であってクロスフェードフラグCRFが“0”に設定されている状態では、ステップS60にて「No」と判定されて、実質的な処理が実行されない。そして、前記のように楽曲の切換えが指示されてクロスフェードフラグCRFが“1”に変更されると、ステップS60にて「Yes」と判定して、ステップS61以降の処理を実行し始める。
ステップS61においては、第1チャンネル割当てテーブルを参照し、「0」に設定されている音源チャンネル番号が存在しているかを検索することにより、フェードアウトが完了している音源チャンネルがあるかを判定する。未だフェードアウトが完了している音源チャンネルが存在しなければ、同ステップS61にて「No」と判定して、フェードインプログラムの実行を一旦終了する。一方、フェードアウトが完了している音源チャンネルが存在すれば、同ステップS61にて「Yes」と判定して、ステップS62に進む。
ステップS62においては、第2曲データにおいてフェードイン未開始のチャンネルに関するMIDIメッセージを割当て可能な空き音源チャンネルがあるかを判定する。これは、チャンネル番号1〜16のうちで、第1および第2チャンネル割当てテーブルのいずれにも音源チャンネル番号として記憶されていないチャンネル番号が存在することを条件に判定される。この判定が肯定的であれば、CPU21は、ステップS63〜S66の処理を実行する。一方、前記判定が否定的であれば、CPU21は、ステップS63〜S66の処理を実行しないで、ステップS67の処理を実行する。
ステップS63においては、第2曲データにおけるフェードイン未開始のMIDIチャンネル番号のMIDIメッセージを、音源回路14の空き音源チャンネルにチャンネル優先度データによって規定される優先順位に従って割当て、第2チャンネル割当てテーブルに割当てた音源チャンネル番号を書き込む。具体的には、第2チャンネル割当てテーブル中の音源チャンネル番号として「0」が記憶されているMIDIチャンネル番号を抽出し、第2曲データのチャンネル優先度データを参照して前記抽出したチャンネル番号のうちで最も優先度の高いチャンネル番号を選択する。そして、第2チャンネル割当てテーブルにおいて前記選択した最も優先度の高い音源チャンネル番号(変更前には「0」になっている)を、第1および第2チャンネル割当てテーブルのいずれにおいても音源チャンネル番号として記憶されていないチャンネル番号に変更する(図9の(B)の中央欄参照)。
ステップS64においては、前記割当てた音源チャンネルに関するフェードインカウンタを「0」から作動開始させる。このフェードインカウンタは、図示しないプログラムの実行により、フェードイン開始からの時間を音源チャンネルごとに計測するものである。前記ステップS64の処理後、後述するステップS65,S66の処理を実行した後、ステップS67の処理を実行する。
ステップS67においては、第2曲データに関する割当て済みのチャンネルzごとに、フェードイン音量制御データVOL・FI(z)を計算して音源回路14に出力する。具体的には、図8にその特性を示すフェードイン音量テーブルを参照し、第2曲データに関する割当て済みのチャンネルzに対応したフェードインカウンタにより指定される時刻の音量制御データFI(z)を計算する。そして、予め決められた所定の音量値VOLを前記音量制御データFI(z)に乗算する。なお、この所定の音量値VOLとして、ユーザが任意に指定した値を採用したり、設定操作子群12中の音量調整操作子によって指示されている値を採用したりしてもよい。そして、前記計算した音量制御データVOL・FI(z)を、第2チャンネル割当てテーブルによって指定される音源チャンネル番号を付して音源回路14に出力する。言いかえれば、第2チャンネル割当てテーブルを参照し、音源回路14に割当て済みのチャンネル番号zを音源チャンネル番号に変換して、音源回路14に出力する。
前記ステップS67の処理後、図5のステップS68にて、第2チャンネル割当てテーブル内に「0」を表わす音源チャンネル番号が存在しないことを条件に、全ての音源チャンネルのフェードインが完了したかを判定する。なお、この判定条件に代えて、第1チャンネル割当てテーブル内の音源チャンネル番号が全て「0」に置き換えられていることを条件としてもよい。全ての音源チャンネルのフェードインが完了していなければ、ステップS68にて「No」と判定して、ステップS69に進む。
ステップS69においては、RAM24内の第2曲データ中のMIDIメッセージを楽曲の進行に従って順次読出す。この場合、楽曲の進行は、第2曲データ中のテンポに応じて決定される。そして、ステップS70にて、前記読出したMIDIメッセージが、プログラムチェンジ、チャンネルボリューム、バンクセレクト、パラメータコントロール、モードメッセージなどの楽音信号の発生環境を設定するメッセージであるかを判定する。前記読出されたMIDIメッセージが楽音信号の発生環境を設定するメッセージであれば、ステップS70にて「Yes」と判定して、ステップS71に進む。
ステップS71においては、前記読出されたMIDIメッセージのチャンネルが音源回路14のいずれかの音源チャンネルに既に割当て済みかを判定する。具体的には、第2チャンネル割当てテーブルを参照し、前記読出したMIDIデータ中のMIDIチャンネル番号に対応する音源チャンネル番号が「0」でないことを条件に割当て済みを判定する。割当て済みであれば、ステップS71にて「Yes」と判定して、ステップS72に進む。
ステップS72においては、前記読出したMIDIメッセージがチャンネルボリュームであるかを判定する。前記読出したMIDIメッセージがチャンネルボリュームであれば、ステップS73にてチャンネルボリュームの音量パラメータVOLに該当するチャンネル番号zの音量制御データFI(z)を乗算することによりチャンネルボリュームメッセージを修正して、ステップS74に進む。この音量制御データFI(z)としては、前記ステップS67の処理によって計算した値を利用できる。なお、このようにフェードイン開始後にMIDIメッセージとしてチャンネルボリュームが読出された第2曲データのチャンネルに関しては、以降のステップS67の処理においては、この音量パラメータVOLが所定の音量値VOLに代えて用いられる。前記読出したMIDIメッセージがチャンネルボリュームでなければ、ステップS72にて「No」と判定して、ステップS74に直接進む。
ステップS74においては、第2チャンネル割当てテーブルを参照することにより、前記読出したMIDIメッセージ(ただし、MIDIメッセージがチャンネルボリュームの場合には前記ステップS73の処理によって修正したMIDIメッセージ)中のMIDIチャンネル番号を音源チャンネル番号に変更して、同変更したMIDIチャンネル番号を含むMIDIメッセージを音源回路14に出力する。音源回路14は、前記出力されたMIDIメッセージを受信し、チャンネル情報によって指定された音源チャンネルに、MIDIメッセージに含まれるイベント情報を供給する。そして、音源回路14は、前記供給されたイベント情報に従って、前記指定された音源チャンネルにおける楽音信号の発生環境を設定する。
一方、前記読出された環境設定用のMIDIメッセージのチャンネルが未だ音源回路14のいずれの音源チャンネルにも割当てられていなければ、ステップS71にて「No」と判定し、ステップS75にて前記読出されたMIDIメッセージをRAM24内に一時的に保存する。このようにMIDIメッセージがRAM24内に一時的に保存された場合には、図4のステップS62〜S66のフェードイン開始制御時に、ステップS65、S66の処理によって音源回路14に供給される。すなわち、MIDIメッセージがRAM24内に一時的に保存されている場合には、ステップS65にて「Yes」と判定し、ステップS66にて、第1チャンネル割当てテーブルを参照することにより、前記保存されているMIDIメッセージ中のMIDIチャンネル番号を音源チャンネル番号に変更して、同変更したMIDIチャンネル番号を含むMIDIメッセージを音源回路14に出力する。なお、この一時的に保存されていたMIDIメッセージは、音源回路14への出力後に消去される。
また、前記読出されたMIDIメッセージが、前記のような楽音信号の発生環境を設定するメッセージではなく、ノートオン、ノートオフなどの楽音信号の発生開始及び発生終了を指示するものであれば、ステップS70にて「No」と判定して、ステップS76に進む。ステップS76においては、前記ステップS71の判定処理と同様に、前記読出されたMIDIメッセージのチャンネルが音源回路14のいずれかの音源チャンネルに既に割当て済みかを判定する。割当て済みでなければ、ステップS76にて「No」と判定して、このフェードインプログラムの実行を一旦終了する。割当て済みであれば、ステップS76にて「Yes」と判定して、ステップS74に進む。
ステップS74においては、第2チャンネル割当てテーブルを参照することにより、前記読出したMIDIメッセージ中のMIDIチャンネル番号を音源チャンネル番号に変更して、同変更したMIDIチャンネル番号を含むMIDIメッセージを音源回路14に出力する。音源回路14は、前記出力されたMIDIメッセージを受信し、MIDIチャンネル番号によって指定された音源チャンネルに、MIDIメッセージに含まれるイベント情報を供給する。そして、音源回路14は、前記供給されたイベント情報に従って、前記指定された音源チャンネルにおける楽音の発生開始または楽音の発生終了を制御する。これにより、音源回路14は、RAM24内の第2曲データ中の演奏データに従った楽音信号を生成して、サウンドシステム19を介して同生成した楽音信号に対応した楽音を発音する。
そして、この場合には、ステップS67,S73の処理により、音源回路14の各音源チャンネルには、音量制御データVOL・FI(1)〜VOL・FI(16),VOL・FI(z)が出力されており、音源回路14の各音源チャンネルにて生成される楽音信号の音量は前記音量制御データVOL・FI(1)〜VOL・FI(16),VOL・FI(z)によって決定される。一方、フェードイン音量テーブル内の音量制御データFIはフェードイン開始後の時間経過に従って徐々に増加するように設定されている。したがって、フェードインが開始された後には、音源回路14の各音源チャンネルから発生される第2曲データに関する楽音信号の音量は徐々に増加する。
このようにして、楽曲の切換え指示から時間が経過して、全ての音源チャンネルのフェードインが完了すると、すなわち音量制御データFI(1)〜FI(16)の増加が停止すると、ステップS68にて「Yes」と判定して、ステップS77,S78の処理を実行する。ステップS77においては、クロスフェードフラグCRFを“0”に戻す。ステップS78においては、RAM24内の第2曲データおよび第2チャンネル割当てテーブルを第1曲データおよび第1チャンネル割り当てテーブルにそれぞれ変更して、このフェードインプログラムの実行を一旦終了する。
このようにクロスフェードフラグCRFが“0”に設定されると、前述したように、図3のフェードアウトプログラムおよび図4,5のフェードインプログラムにおいては実質的な処理が実行されなくなる。そして、図2のステップS18〜S21の処理により、フェードインが完了して前記ステップS78の処理により第1曲データに変更された曲データが楽曲の進行にしたがって再生されるようになる。
このような曲データのシーケンス再生中、ユーザが設定操作子群12を操作してシーケンス再生の停止を指示すると、ステップS31にて「Yes」と判定して作動フラグRUNを“0”に戻して、このシーケンス再生プログラムの実行を一旦終了する。そして、作動フラグRUNを“0”に設定したことにより、新たにシーケンス再生の開始が指示されない限り、曲データは再生されなくなる。
上記作動説明からも理解できるとおり、上記第1実施形態によれば、第1曲データが再生されている状態(図10(A)参照)で楽曲の切換えが指示されると、図3のフェードアウトプログラムの実行により、各音源チャンネルにて発生中の楽音信号の音量を徐々に減少させてフェードアウトさせる(図10(B)参照)。そして、いずれかの音源チャンネルのフェードアウトが完了すると、図4,5のフェードインプログラムの実行により、フェードアウトが完了した音源チャンネルに次の曲データ(すなわち第2曲データ)の演奏データに基づく楽音信号の発生が割当てられて、この割当てられた楽音信号は、その音量を徐々に増加させながらフェードインする(図10(C)参照)。そして、時間経過に従って、第2曲データの演奏データに基づく楽音信号が、前記フェードアウトの完了した音源チャンネルに順次割当てられて発生される(図10(D)参照)。すなわち、切換え前に再生されていた第1曲データの演奏データに基づく楽音信号の発生が優先して音源チャンネルに割当てられ、切換え後に再生されるべき第2曲データの演奏データに基づく楽音信号は、第1曲データの演奏データに基づく楽音信号の発生に利用されていない音源チャンネルにて発生される。したがって、1系統の音源回路14を用いるだけで、楽曲の連続再生が、不自然さなくクロスフェードしながら切換えられるようになる。
また、フェードアウトにおいては、チャンネル優先度データを用いて、発生楽音信号の音量の減少速度を優先順位の高い演奏データほど遅くした。フェードインにおいては、チャンネル優先度データを用いて、優先順位の高い演奏データほど音源チャンネルに優先して早く割り当てられるようにした。これにより、第1曲データ中の優先順位の高い演奏データに基づく楽音信号を最後まで残すことができるとともに、第2曲データ中の優先順位の高い演奏データに基づく楽音信号を始めから発生させることができるので、2つの楽曲の切換え時においてそれらの特徴を損なわないようにすることができる。
さらに、上記第1実施形態においては、図4のステップS65,S66および図5のステップS70,S71,S75の処理により、プログラムチェンジ、チャンネルボリューム、バンクセレクト、パラメータコントロール、モードメッセージなどの楽音信号の発生環境を設定するMIDIメッセージに関しては、割当てる音源チャンネルが存在しない場合には、前記MIDIメッセージを一時的に記憶しておくようにした。そして、割当てる音源チャンネルが出現した後に、前記一時記憶しておいたMIDIメッセージを新たに割当てた音源チャンネルに出力するようにした。これにより、切換え後の曲データ中の演奏データに基づく楽音信号は、適切な環境下で発生されるようになる。
b.第2実施形態
次に、本発明の第2実施形態について説明する。この第2実施形態に係る電子楽器も、上記図1に示すように構成されている。ただし、この第2実施形態においては、図2のシーケンス再生プログラムに代わる図11のシーケンス再生プログラム、図3のフェードアウトプログラムに代わる図12のフェードアウトプログラムおよび図4,5のフェードインプログラムに代わる図13のフェードインプログラムが外部記憶装置25に記憶されているとともに、CPU21によって実行される。
また、曲データにおいては、チャンネル優先度データが省略されて、テンポ・拍子データおよび演奏データのみにより構成されている。そして、この演奏データにおいては、チャンネル情報によって表わされるチャンネル番号は1〜8のいずれかに限定されている。なお、音源回路14の音源チャンネルの数は、上記第1実施形態と同じ16個である。このような音源チャンネルの数よりも小さい数しか有さないMIDIチャンネル番号を含む演奏データは、例えば、演奏データの作成時にその作成者によって予め用意される。また、CPU21が、図示しないプログラムの実行により、演奏データを自動的に解析し、この解析結果に基づいて一部のチャンネルに関する演奏データを削除するようにしてもよい。さらには、選曲時または優先順位の決定指示時に、ユーザが、コンピュータプログラムの指示に従って一部のチャンネルに関する演奏データを削除するようにしてもよい。
さらに、この第2実施形態では、フェードアウト音量テーブルおよびフェードイン音量テーブルに関しては、それぞれ1種類ずつが用意されているのみである。フェードアウト音量テーブルに記憶されているフェードアウト音量制御データFOは、図14に示すように時間経過に従って徐々に減少する特性を有する。フェードイン音量テーブルに記憶されているフェードイン音量制御データFIは、図14に示すように時間経過に従って徐々に増加する特性を有する。他の構成については、上記第1実施形態と同じである。そして、上記第1実施形態と同じ構成および同じプログラム処理には同一の符号を付している。
次に、上記のように構成した第2実施形態の動作を説明する。この第2実施形態においても、CPU21は、図11のシーケンス再生プログラム、図12のフェードアウトプログラムおよび図13のフェードインプログラムを所定の短時間ごとに繰り返し実行する。この図11のシーケンス再生プログラムにおいても、上記第1実施形態の場合と同様に、ステップS10,S11の処理によりシーケンス曲データSSG(1),SSG(2)・・SSG(M)が生成される。そして、ステップS12〜S16の処理により作動フラグRUNを“1”に設定するとともに、先頭の曲データSSG(1)を第1曲データとしてRAM24に書き込んだ後、ステップS100の処理により、第1チャンネル切換えフラグCNG1を“0”に初期設定する。この第1チャンネル切換えフラグCNG1は、“0”により第1曲データの演奏データに基づく楽音信号の発生を音源回路14の音源チャンネル1〜8に割当てることを表し、“1”により同楽音信号の発生を音源回路14の音源チャンネル9〜16に割当てることを表す。
また、ステップS20の処理により第1曲データのMIDIメッセージを第1曲データのテンポに応じて読出した後には、ステップS101にて、第1チャンネル切換えフラグCNG1が“1”であるか否かを判定し、同フラグCNG1が“1”であればステップS102にてステップS20の処理によって読出したMIDIメッセージのMIDIチャンネル番号に「8」を加算することによりMIDIチャンネル番号を変更して、ステップS103に進む。これは、第1曲データの演奏データに基づく楽音信号の発生を音源回路14の音源チャンネル9〜16のいずれかに割当てることを意味する。一方、第1チャンネル切換えフラグCNG1が
“0”であれば、ステップS102の処理を実行しないでステップS103に直接進む。このことは、第1曲データの演奏データに基づく楽音信号の発生を音源回路14の音源チャンネル1〜8のいずれかに割当てることを意味する。
ステップS103においては、前記変更されたMIDIチャンネル番号を含むMIDIメッセージまたはMIDIチャンネル番号の変更されないMIDIメッセージが音源回路14に出力される。音源回路14は、上記第1実施形態の場合と同様に、供給されたMIDIチャンネル番号に対応した音源チャンネルにMIDIメッセージ中のイベント情報を供給して、同音源チャンネルにおける楽音信号の発生環境および楽音信号の発生を前記イベント情報に応じて制御する。したがって、この場合も、上記第1実施形態の場合と同様に、音源回路14にて第1曲データが再生される。なお、シーケンス曲データSSG(1),SSG(2)・・SSG(M)の先頭の曲データSSG(1)に関しては、第1チャンネル切換えフラグCNG1が前記ステップS100の初期設定により“0”に設定されているので、音源チャンネル1〜8にて楽音信号の発生が制御される。
また、ステップS22にて楽曲の切換え指示ありと判定された後には、ステップS104の処理により、フェードアウト/インカウンタの作動が開始制御される。これは、このフェードアウト/インカウンタのカウント値はフェードアウトおよびフェードイン制御時における時間経過を同時に示すものである。なせならば、この第2実施形態においては、フェードアウトおよびフェードインは、全ての音源チャンネルにおいて同期して制御されるからである。
そして、ステップS29の処理により第2曲データがRAM24に書込まれた後には、ステップS105〜S107の処理により、第1チャンネル切換えフラグCNG1が“0”であれば第2チャンネル切換えフラグCNG2は“1”に設定される。また、第1チャンネル切換えフラグCNG1が“1”であれば第2チャンネル切換えフラグCNG2は“0”に設定される。この第2チャンネル切換えフラグCNG2は、“0”により第2曲データの演奏データに基づく楽音信号の発生を音源回路14の音源チャンネル1〜8に割当てることを表し、“1”により同楽音信号の発生を音源回路14の音源チャンネル9〜16に割当てることを表す。したがって、ステップS105〜S106の処理は、第1曲データが音源チャンネル1〜8(または9〜16)で再生されている場合には、第2曲データを第1曲データで利用されない音源チャンネル9〜16(1〜8)で再生することを制御することになる。このシーケンス再生プログラムの他の処理に関しては、上記第1実施形態と同じである。
次に、図12のフェードアウトプログラムについて説明する。楽曲の切換えが指示されてクロスフェードフラグCRFが“1”に設定されると、CPU21は、ステップS110以降の処理を実行し始める。ステップS110においては、フェードアウト音量テーブル(図14)を参照して、フェードアウト/インカウンタにより指定される時刻の音量制御データFOを計算し、この音量制御データに予め決められた所定の音量値VOLを乗算して音量制御データVOL・FOを計算する。なお、この場合も、所定の音量値VOLとして、ユーザが任意に指定した値を採用したり、設定操作子群12中の音量調整操作子によって指示されている値を採用したりしてもよい。
前記ステップS110の処理後、ステップS111〜S113の処理により、第1チャンネル切換えフラグCNG1が“0”であれば、前記計算した音量制御データVOL・FOを音源回路14の音源チャンネル1〜8に出力する。第1チャンネル切換えフラグCNG1が“1”であれば、前記計算した音量制御データVOL・FOを音源回路14の音源チャンネル9〜16に出力する。これにより第1曲データの演奏データに基づく各再生音信号の音量は、音量制御データVOL・FOによって一律に制御されるようになる。
次に、ステップS45にて、RAM24内の第1曲データ中のMIDIメッセージを第1曲データ中のテンポに応じて順次読出す。そして、ステップS47にて、前記読出したMIDIメッセージがチャンネルボリュームであるかを判定する。前記読出したMIDIメッセージがチャンネルボリュームであれば、ステップS114にてチャンネルボリュームの音量パラメータVOLに前記ステップS110の処理によって計算した音量制御データFOを乗算して音量パラメータVOLを修正する。なお、このように、楽曲の切換え指示があった後に、MIDIメッセージとしてチャンネルボリュームが読出されたチャンネルに関しては、以降のステップS110の処理においては、この音量パラメータVOLが所定の音量値VOLに代えて用いられる。
次に、ステップS115〜S117の処理により、前記図11のステップS101〜S103の処理と同様にして、第1チャンネル切換えフラグCNG1が“0”であれば、読出したMIDIメッセージ中のイベント情報が音源回路14の音源チャンネル1〜8で再生される。また、第1チャンネル切換えフラグCNG1が“1”であれば、読出したMIDIメッセージ中のイベント情報が音源回路14の音源チャンネル9〜16で再生される。なお、MIDIメッセージがチャンネルボリュームの場合には前記ステップS114の処理によって修正したMIDIメッセージ中のイベント情報が音源回路14の音源チャンネル1〜8または9〜16に出力されて再生に利用される。ただし、この場合には、ステップS110〜S113,S47、S125の処理により、第1曲データが再生される音源回路14の音源チャンネル1〜8(または9〜16)には、時間経過に従って徐々に減少する音量制御データVOL・FOが供給されている。したがって、楽曲の切換えが指示された後には、フェードアウトプログラムの繰り返し実行により、音源回路14の各音源チャンネルから発生される第1曲データに関する楽音信号の音量は徐々に減少する。
次に、図13のフェードインプログラムについて説明する。楽曲の切換えが指示されてクロスフェードフラグCRFが“1”に設定されると、CPU21は、ステップS120以降の処理を実行し始める。ステップS120においては、フェードイン音量テーブル(図14)を参照して、フェードアウト/インカウンタにより指定される時刻の音量制御データFIを計算し、この音量制御データに予め決められた所定の音量値VOLを乗算して音量制御データVOL・FIを計算する。なお、この場合も、所定の音量値VOLとして、ユーザが任意に指定した値を採用したり、設定操作子群12中の音量調整操作子によって指示されている値を採用したりしてもよい。
前記ステップS120の処理後、ステップS121〜S123の処理により、第2チャンネル切換えフラグCNG2が“0”であれば、前記計算した音量制御データVOL・FIを音源回路14の音源チャンネル1〜8に出力する。第2チャンネル切換えフラグCNG2が“1”であれば、前記計算した音量制御データVOL・FOを音源回路14の音源チャンネル9〜16に出力する。これにより第2曲データの演奏データに基づく各再生音信号の音量は、音量制御データVOL・FIによって一律に制御されるようになる。
次に、ステップS124にて、第2曲データによる楽音信号のフェードインが完了したか否かを判定する。この判定においては、フェードアウト/インカウントのカウント値が図14のフェードイン音量制御データの増加終了タイミングよりも大きな値を表しているかが判定される。第2曲データによる楽音信号のフェードインが未だ完了していなければ、ステップS124にて「No」と判定して、ステップS69にてRAM24内の第2曲データ中のMIDIメッセージを第2曲データ中のテンポに応じて順次読出す。そして、ステップS72にて、前記読出したMIDIメッセージがチャンネルボリュームであるかを判定する。前記読出したMIDIメッセージがチャンネルボリュームであれば、ステップS125にてチャンネルボリュームの音量パラメータVOLに前記ステップS120の処理によって計算した音量制御データFIを乗算して音量パラメータVOLを修正する。なお、このように、楽曲の切換え指示があった後に、MIDIメッセージとしてチャンネルボリュームが読出されたチャンネルに関しては、以降のステップS120の処理においては、この音量パラメータVOLが所定の音量値VOLに代えて用いられる。
次に、ステップS126〜S128の処理により、前記図11のステップS101〜S103および図12のステップS115〜S117の処理における第1チャンネル切換えフラグCNG1を第2チャンネル切換えフラグCNG2に代えたステップS126〜S128の処理を実行する。これらのステップS126〜S128の処理により、第2チャンネル切換えフラグCNG2が“1”であれば、読出したMIDIメッセージ中のイベント情報が音源回路14の音源チャンネル9〜16で再生される。また、第2チャンネル切換えフラグCNG2が“0”であれば、読出したMIDIメッセージ中のイベント情報が音源回路14の音源チャンネル1〜8で再生される。なお、MIDIメッセージがチャンネルボリュームの場合には前記ステップS125の処理によって修正したMIDIメッセージ中のイベント情報が音源回路14の音源チャンネル9〜16または1〜8に出力されて再生に利用される。また、この場合には、ステップS120〜S123,S72,S125の処理により、第2曲データが再生される音源回路14の音源チャンネル9〜16(または1〜8)には、時間経過に従って徐々に増加する音量制御データVOL・FIが供給されている。したがって、楽曲の切換えが指示された後には、フェードインプログラムの繰り返し実行により、音源回路14の各音源チャンネルから発生される第2曲データに関する楽音信号の音量は徐々に増加する。
このフェードインプログラムの繰り返し実行によって第2曲データによる楽音信号のフェードインが完了すると、ステップS124にて「Yes」と判定してステップS77,S129,S130の処理を実行する。ステップS77においては、クロスフェードフラグCRFを“0”に設定する。ステップS129においては、RAM24内の第2曲データを第1曲データに変更する。ステップS130においては、第1チャンネル切換えフラグCNG1を第2チャンネル切換えフラグCNG2が示す値に変更して、このフェードインプログラムの実行を終了する。
そして、フェードイン完了後には、シーケンス再生プログラムの実行により、クロスフェード中には第2曲データであった曲データが第1曲データとして再生されるようになる。この場合、第1チャンネル切換えフラグCNG1は第2チャンネル切換えフラグCNG2が示す値に変更されているので、新たな第1曲データは、クロスフェード中と同一の音源チャンネルで再生されることになる。
上記作動説明からも理解できるように、この第2実施形態においては、第1および第2曲データの再生に利用される音源チャンネルを交互に切換えるようにして、第2曲データの演奏データが割当てられる音源チャンネルは、第1曲データの演奏データの割当てに利用されない音源チャンネルとした。そして、これらの曲データの切換え時には、フェードアウトプログラムおよびフェードインプログラムの実行により、第1曲データの演奏データによる再生楽音信号は一律に徐々に減少し、第2曲データの演奏データによる再生楽音信号は一律に徐々に増加するクロスフェード処理が実現される(図15参照)。したがって、この第2実施形態によっても、1系統の音源回路14を用いるだけで、楽曲の連続再生が、不自然さなくクロスフェードしながら切換えられるようになる。
c.その他の変形例
さらに、本発明の実施にあたっては、上記第1および第2実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記第1および第2実施形態においては、音源回路14の音源チャンネル数を16個としたが、この音源チャンネル数は複数であれば適宜変更可能である。また、第1および第2実施形態においては、フェードアウトおよびフェードインを実現するための音量制御データFO,FIをテーブルの形で外部記憶装置25に記憶しておくようにした。しかし、これに代えて、音量制御データFO,FIの時間変化を表す関数を外部記憶装置25にそれぞれ記憶しておいて、これらの関数を用いて、再生楽音信号の音量を制御するための時間経過に従って徐々に変化する音量制御データFO,FIを計算するようにしてもよい。
また、上記第1および第2実施形態においては、複数の楽曲を所定時間ずつ順次自動的に再生するようにした。しかし、これに代えて、楽曲の全てを再生し終えた後に、次の楽曲の再生を開始させるようにしてもよい。この場合、楽曲の終了時から予め決められた所定時間前のタイミングを検出するようにして、同タイミングから楽曲のフェードアウトおよびフェードインを開始するようにすればよい。
さらに、上記第1および第2実施形態においては、演奏操作子として鍵を採用した電子楽器に本発明を適用したが、鍵に代えて、単なる押圧スイッチ、タッチスイッチなどを音高を指定する演奏操作子として採用した電子楽器に適用してもよい。また、本発明は、電子楽器以外のカラオケ装置、自動演奏装置、音楽アミューズメント装置、パーソナルコンピュータなど、曲データを再生することが可能な他の電子音楽装置にも適用できる。