図1は、本発明の実施例共通の楽音生成装置100のハードウェア構成の一例を表すブロック図である。
楽音生成装置100のバス6には、RAM7、ROM8、CPU9、検出回路11、表示回路13、記憶装置15、波形メモリ音源18、通信インターフェイス(I/F)21が接続される。
RAM7は、再生バッファ等のバッファ領域、フラグ、レジスタ、各種パラメータ等を記憶するCPU9のワーキングエリアを有する。例えば、後述する発音管理データは、このRAM7内の所定領域に記憶される。
ROM8には、各種データファイル(例えば、後述するボイスデータVD)、各種パラメータ及び制御プログラム、又は本実施例を実現するためのプログラム等を記憶することができる。この場合、プログラム等を重ねて、記憶装置15に記憶する必要は無い。
CPU9は、ROM8又は、記憶装置15に記憶されている制御プログラム又は本実施例を実現するためのプログラム等に従い、演算又は装置の制御を行う。タイマ10が、CPU9に接続されており、基本クロック信号、割り込み処理タイミング等がCPU9に供給される。また、タイマ10は、フリーランタイマを含み、楽音生成装置100の各構成は、これを現在時刻として参照する。
ユーザは、検出回路11に接続される設定操作子12を用いて、各種入力及び設定、選択をすることができる。設定操作子12は、例えば、スイッチ、パッド、フェーダ、スライダ、ロータリーエンコーダ、ジョイスティック、ジョグシャトル、文字入力用キーボード、マウス等、ユーザの入力に応じた信号を出力できるものならどのようなものでもよい。また、設定操作子12は、カーソルスイッチ等の他の操作子を用いて操作する表示装置14上に表示されるソフトスイッチ等でもよい。本実施例では、ユーザは、設定操作子12を操作することにより、記憶装置15又はROM8等に記録された又は通信I/F21を介して外部機器から取得(ダウンロード)するボイスデータVDの選択、及びその他の設定操作を行う。また、後述するように、奏法スイッチとして設けられる設定操作子12を操作することにより、ユーザは、例えば、所望のタイミングでエレメントを切り換えたり、エレメントのシーケンスをリセットしたりすることができる。
表示回路13は、ディスプレイ14に接続され、各種情報をディスプレイ14に表示することができる。ディスプレイ14は、楽音生成装置100の設定のための各種情報等を表示することができる。
記憶装置15は、ハードディスク、FD(フレキシブルディスク又はフロッピーディスク(登録商標))、CD(コンパクトディスク)、DVD(デジタル多目的ディスク)、フラッシュメモリ等の半導体メモリ等の記憶媒体とその駆動装置の組み合わせの少なくとも1つで構成される。記憶媒体は、着脱可能であってもよいし、内蔵されていてもよい。記憶装置15及び(または)ROM8には、複数のボイスデータVD、MIDIデータ等の自動演奏データ等の各種曲データMD、オーディオデータ等、及び、本発明の各実施例を実現するためのプログラムや、その他の制御プログラムを記憶することができる。なお、本発明の各実施例を実現するためのプログラムや、その他の制御プログラムを記憶装置15に記憶する場合は、これらをROM8に合わせて記憶する必要はない。また、一部のプログラムのみを記憶装置15に記憶し、その他のプログラムをROM8に記憶するようにしてもよい。
波形メモリ音源18は、記憶装置15、ROM8又はRAM7等に記録された自動演奏データ又は演奏操作子(鍵盤)22あるいは通信インターフェイス21に接続された外部機器等から供給される演奏信号、MIDI信号等に応じて楽音信号を生成し、各種音楽的効果を付与して、DAC20を介して、サウンドシステム19に供給する。DAC20は、供給されるデジタル形式の楽音信号をアナログ形式に変換し、サウンドシステム19は、アンプ、スピーカを含み、DA変換された楽音信号を発音する。なお、波形メモリ音源18の詳細については、図2を参照して後述する。
通信インターフェイス21は、USBやIEEE1394等の汎用近距離有線I/F、Ethernet(登録商標)等の汎用ネットワークI/F等の通信インターフェイス、MIDI I/Fなどの汎用I/F、無線LANやBluetooth(登録商標)等の汎用近距離無線I/F等の通信インターフェイス及び音楽専用無線通信インターフェイスのうち少なくとも1つで構成され、外部機器、サーバ等との通信が可能である。
演奏操作子(鍵盤等)22は、検出回路11に接続され、ユーザの演奏動作に従い、演奏情報(演奏データ)を供給する。演奏操作子22は、ユーザの演奏を入力するための操作子であり、ユーザが操作した操作子に対応する音高で、該ユーザの操作子に対する操作開始タイミング及び終了タイミングをそれぞれキーオン及びキーオフ信号として入力する。また、ユーザの演奏操作に応じてベロシティ値等の各種パラメータを入力することが可能である。
図2は、本発明の実施例による波形メモリ音源18のハードウェア構成の一例を表すブロック図である。
波形メモリ音源18は、複数のエレメント(ボイスに対応する波形データ)を1周期以上記憶する波形メモリ81、複数の発音チャンネル82、混合エフェクト処理部83及び音源レジスタ84を含んで構成される。
それぞれの発音チャンネル82は、波形読出部181、音色フィルタ部182、音量制御部183、LFO部184及びEG部185を含んで構成される。
波形読出部181は、LFO部184からの振幅値及びEG部185からのエンベロープデータに従い、後述するノートオン処理(図5等)で選択されるエレメント(波形データ)を波形メモリ81から読み出す。
音色フィルタ部182は、LFO部184からの振幅値及びEG部185からのエンベロープデータに従い、波形メモリ音源18の出力楽音信号の周波数特性を変化させるDCF(デジタルコントロールドフィルタ)である。
音量制御部183は、LFO部184からの振幅値及びEG部185からのエンベロープデータに従い、波形メモリ音源18の出力楽音信号の音量を制御するDCA(デジタルコントロールドアンプ)である。例えば、音色フィルタ部182の出力とEG部185からのエンベロープデータとを乗算することにより出力レベルを制御する。
混合エフェクト処理部83は、複数の発音チャンネル82の出力を混合(ミキシング)すると共に、混合信号に対して各種効果を付与して、DAC20に出力する。
音源レジスタ84は、発音チャンネル82の各部181〜185及び混合エフェクト処理部83を制御するためのレジスタである。
なお、音源部としては、ここで説明した波形メモリ音源18に限らず、所望のエレメントを発音可能なものであればどのようなタイプの音源でも使用可能である。
図3(A)〜(C)は、本発明の第1の実施例による楽音生成の例を表すタイムチャートである。なお、本発明の第1の実施例では、「Shu、Bee、Doo、Bah…」という一連の複数エレメント(波形データ)を順次発音するためのシーケンスリストを少なくとも1つ記憶するボイスデータVDが選択されている。
図3(A)は、キーオンから次のキーオンまでの時間間隔が短い場合の動作例を説明するための図である。この例では、キーオンから次のキーオンまでの時間間隔が所定時間(30msec、50msec、70msec等)未満の場合に、シーケンスリストのインデックスIX(図4)を先に進めないようにしている。
まずタイミングt1において最初のキーオンイベントが発生し、それに伴いエレメント「Shu」が発音される。その後、タイミングt1から30msec未満経過後のタイミングt2において第2のキーオンイベントが発生する。この時、従来例では、シーケンスリストのインデックスIXが先に進み、「Bee」が発音されるが、このように30msec未満の時間間隔で異なるエレメントを発音させると音楽的に不自然な印象を与えるので、本実施例では、2つのキーオンイベント間の時間間隔が所定値未満(本実施例では、30msec)の場合には、シーケンスリストのインデックスIXを先に進めずに、当該2つのキーオンイベントに対して、同じエレメントを発音させるようにした。
よって、図3(A)に示すように、タイミングt1及びt2ともに、エレメント「Shu」が発音される。なお、タイミングt3は、タイミングt2から30msec以上経過しているので、シーケンスリストのインデックスIXを先に進め、エレメント「Bee」が発音される。また、タイミングt4では、タイミングt2から30msec以上経過しており、また、同時に二つのキーオンイベントが発生しているので、当該2つのキーオンイベントに対して、同じエレメント「Doo」を発音させる。
図3(B)は、キーオフから次のキーオンまでの時間間隔が長い場合の動作例を説明するための図である。この例では、キーオンから次のキーオンまでの時間間隔が所定時間(300msec、350msec、400msec等)以上の場合に、シーケンスリストのインデックスIX(図4)をリセット(リスト先頭に戻す)するようにしている。
タイミングt5に、エレメント「Shu」及び「Bee」に対応するキーオフイベントが発生し、所定時間(本実施例では、350msec)以上経過後のタイミングt6において、キーオンイベントが発生する。この場合、従来例では、シーケンスリストのインデックスIXは先に進められ、エレメント「Doo」が発音されることとなるが、一定時間以上間隔があいた場合に、シーケンスの続きから発音すると、音楽的に不自然となってしまう。そこで、本実施例では、直前のエレメントに対応するキーオフイベントから次のキーオンイベントまでの時間間隔が所定時間(例えば、350msec)以上の場合は、シーケンスリストのインデックスIXを一旦リセットして、リストの先頭に戻すようにした。
よって、この例では、タイミングt6のキーオンイベントに対応してシーケンスリストの先頭であるエレメント「Shu」が発音され、以降、シーケンスリストのエレメントが順次発音される。
図3(C)は、奏法スイッチ等の所定の設定操作子12を操作することにより発音するエレメントを切り替える場合の動作例を説明するための図である。この例では、奏法スイッチON状態(発音条件1)において、特定のエレメント(図4の特殊発音エレメント1)に発音(選択)エレメントを切り換えると共に、当該奏法スイッチON状態において特定のノート番号又はベロシティ値(発音条件2)を有するノートオンイベントが発生した場合に特定のエレメント(図4の特殊発音エレメント2)に発音(選択)エレメントを切り換える。
まず、「Shu、Bee、Doo」と順次エレメントが発音された後に、タイミングt7において奏法スイッチ(設定操作子)12が操作され、奏法スイッチON状態(図4の奏法スイッチ状態変数が「TRUE」に設定されている状態)となる。その後、任意のタイミングで特定のノート番号又はベロシティ値(発音条件2)ではないノートオンイベントが発生すると、特殊発音エレメント1として規定されているエレメント「Daa」が発音される。タイミングt8においては、特定のノート番号又はベロシティ値(発音条件2)を有するノートオンイベントが発生し、特殊発音エレメント2として規定されているエレメント「Hey!」が発音される。その後、タイミングt9で、奏法スイッチ(設定操作子)12が操作されると奏法スイッチOFF状態(図4の奏法スイッチ状態変数が「FALSE」に設定されている状態)となる。その後、ノーオンイベントの発生に対しては、通常のシーケンスリストの先頭から発音される。この場合は、まず先頭エレメントの「Shu」が発音される。
すなわち、発音条件1(奏法スイッチON状態)及び発音条件2(特定のノート番号又はベロシティ値を有するノートオンイベントの発生)がいずれも満たされない状態でのノーオンイベントの発生に対しては、通常のシーケンスリストにしたがい発音がなされ、発音条件1のみを満たす状態でのノーオンイベントの発生に対しては、特殊発音エレメント1が発音され、発音条件1及び発音条件2の双方を満たす状態でのノーオンイベントの発生に対しては、特殊発音エレメント2が発音される。また、発音条件1を満たす状態から満たさない状態に遷移した場合は、通常のシーケンスリストのインデックスIXはリセットされる。
図4は、本発明の第1の実施例による発音管理データ及びボイスデータの構成の一例を表す概念図である。
発音管理データMDは、例えば、図1のRAM7内の所定領域に記憶されており、ボイスデータへの参照情報VL、最後のノートオン時刻OT、最後のノートオフ時刻FT、奏法スイッチ状態変数SV、シーケンスリストのインデックスIX、発音中ノートリストNLを含む。
発音管理データMDのボイスデータへの参照情報VLは、ROM8等に記憶されているボイスデータ群のうち、選択されたボイスデータ(選択ボイスデータ)VDへの参照情報を保持する。ユーザによりボイスが選択しなおされるたびに、このボイスデータへの参照情報VLが更新される。ノートオンイベントの処理を行う際は、このボイスデータへの参照情報VLからボイスデータVDをたどり、発音すべきエレメントの情報を取得し、音源18を設定する。
最後のノートオン時刻OTは、ノートオンイベントを処理した際の時刻を保持する。最後のノートオン時刻OTは、ノートオンイベントを処理する度に更新する。このデータは後続のノートオンイベントを処理する際にエレメントを選択するために使用される。
最後のノートオフ時刻FTは、ノートオフイベントを処理した際の時刻を保持する。最後のノートオフ時刻FTは、ノートオフイベントを処理する度に更新する。このデータは後続のノートオンイベントを処理する際にエレメントを選択するために使用される。
奏法スイッチ状態変数SVは、奏法スイッチ(設定操作子)12のON/OFF状態を保持する。奏法スイッチオンイベントの処理により状態を「TRUE」に切り換え、奏法スイッチオフイベントの処理により状態を「FALSE」に切り換える。
シーケンスリストのインデックスIXは、ボイスデータVD内のシーケンスリストSLに記憶されたエレメント情報を記録順に1つずつ順次選択するためのインデックスであり、原則としてノートンイベントが発生するたびに1つずつ進められる。
発音中ノートリストNLは、音源18にて現在発音中のノート(楽音)に対応するノート情報NIをリストにより管理する。発音中ノートリストNLの各エントリーであるノート情報NIは、発音中のノート(楽音)を表し、ノート番号NN、リリース状態フラグRF及び発音チャンネル管理情報CMを含む。
ノートオンイベントの処理では、発音チャンネル82(1つの波形データを再生して発音するのに必要な音源リソースの単位)を確保し、ノートオンイベントのノート番号NNと確保した発音チャンネル82の管理情報CMと「FALSE」の値のリリース状態フラグRFをまとめて1つのエントリーとして発音中ノートリストNLに追加する。
ノートオフイベントの処理では、ノートオフイベントのノート番号から対応するエントリーを発音中ノートリストNLから検索し、当該エントリーのリリース状態フラグRFを「TRUE」にすると共に、発音チャンネル82がノートオフ後のリリース中の発音をするように指示する。この時点では、当該エントリーはまだ発音中ノートリストNLから削除されない。エントリーの削除は、例えば、周期的処理でリリース中のエントリー(リリース状態フラグRFが「TRUE」のエントリー)を監視し、各リリース中の発音チャンネル82の音量レベルを音源から取得し、音量が一定値以下になったら対応するエントリーを削除する。
ボイスデータ群は、複数のボイスデータVDを含み、例えば、図1のROM8又は記憶装置15に記憶されている。それぞれのボイスデータVDは、ボイスの名称VN、モード情報MI、シーケンスリストSL、特殊発音用エレメントSEを含む。なお、図では、1つのボイスデータが選択されている状態を示す。ボイスデータVDは、楽音生成装置100が発音可能な各ボイスについてのパラメータの一式である。ボイスデータVDは、プリセットとして多数がROM8に記録されている。または、ユーザが作成したり各種メディアから取得したりして不揮発メモリ等の記憶装置15にボイスデータVDを多数記録している。
ボイスの名称VNは、例えば、「ScatVoice」や「AcousticPiano1」というような、各ボイスをユーザが識別するための文字列である。また、ボイス名称VNと合わせて、プログラムチェンジ番号等の当該ボイスデータを識別するための識別子(識別番号等)を記録するようにしてもよい。
モード情報MIは、発音モード記録する。発音モードは従来からの通常の波形読み出しをするボイスであるか、又は、本実施例による「サイクル発音(WaveCycle)」をするためのボイスであるかを表す。
シーケンスリストSLは、「サイクル発音」で用いる複数エレメントを発音させたい順に記録するリストであり、各エレメントに対応するエレメント情報ELが発音順にリストされている。原則として、ノートオンのたびにサイクリックにエレメントが切り替えられて、記録順に発音される。すなわち、リストの先頭からノートオンのたびに1つのエレメントが発音され、順次、次に記録されたエレメントが発音される。例えば、エレメント1「Shu」、エレメント2「Bee」、エレメント3「Doo」、エレメント4「Bah」と、4つのエレメントが記録されている場合、「Shu、Bee、Doo、Bah、Shu、Bee…」と発音させることができる。
各エレメント情報ELは、例えば、波形データへの参照情報と、ボイスパラメータからなる。波形データへの参照情報は、図2の波形メモリ81に記録されている波形データを波形読出部181が読み出すための情報であり、例えば、波形読出部181から見た波形メモリ81のアドレスである。ボイスパラメータは、音色フィルタ部182や、LFO部184、EG部185に設定するパラメータ値である。
特殊発音用エレメントSEは、特定の発音条件に合致した場合に、シーケンスリストSLに記録されたエレメントとは異なるエレメントを発音させるための情報である。図に示す例では、特殊発音用エレメントSEに、シーケンスリストSLから特殊発音用エレメント(エレメント1)に切り換えるための条件となる発音条件PN1と、当該発音条件PN1を満たす場合に発音されるエレメント1のエレメント情報EL1と、エレメント1からエレメント2に切り換えるための追加条件となる発音条件PN2と、当該発音条件PN2を満たす場合に発音されるエレメント2のエレメント情報EL2の2つが特殊発音用エレメントSEに記録されている。なお、発音条件PN1及びPN2は、特殊発音用エレメントSEにではなく、シーケンスリストSL内や、ボイスデータVDのその他の場所に記録されていてもよい。
本実施例では、発音条件PN1として、「奏法スイッチがON(図4の奏法スイッチ状態変数が「TRUE」に設定されている状態)」が記録されており、当該発音条件PN1を満たす時に発音されるエレメント情報EL1が対応付けられて記録されている。また、発音条件2として、「特定のノート番号(例えば、ノート番号「127」)及び/又は特定のベロシティ値」が記録されており、発音条件PN1及び発音条件PN2を満たす時に発音されるエレメント情報EL2が発音条件PN2に対応付けられて記録されている。
図5は、本発明の第1の実施例によるメイン処理を表すフローチャートである。このメイン処理は、楽音生成装置100の電源投入直後から実行される。なお、ステップSA6のノートオン処理以外は、後述の第2〜4の実施例においても同様である。
ステップSA1でメイン処理を開始し、ステップSA2では、初期設定を行う。ここでは、RAM7(図1)上の各種パラメータの状態を初期値に設定する。
ステップSA3では、ユーザの操作に応じてボイスを切り換える(選択する)。ユーザの設定操作子12(図1)を用いたボイス選択操作を検出し、当該ボイス選択操作に応じてボイスデータVDをボイスデータ群(図4)から選択する。
このボイスデータVDの選択処理により、発音を管理するRAM7上の発音管理データMD(図4)は初期設定される。すなわち、発音中ノートリストNLを参照し、発音中のノートがあれば消音処理をする(例えば、リリース状態フラグRFを「TRUE」にする)。その後、当該ノートを発音中の発音チャンネル82の音量レベルが一定値以下になったら当該ノートに対応する情報を発音中ノートリストNLから削除し、発音中のノートが無い状態とする。次に、ボイスデータへの参照情報VLをステップSA3で選択されたボイスデータVDの参照情報へと書き換える。その後、最後のノートオン時刻OTと最後のノートオフ時刻FTをクリアし、シーケンスリストのインデックスIXをシーケンスリストSLの先頭のエレメント情報ELに設定する。
ステップSA4では、ユーザの演奏操作子22(図1)を用いた演奏操作等(通信I/F21を介してMIDIインベントを受信した場合を含む)によるイベントの発生を検出する。その後、ステップSA5では、ステップSA4で検出したイベントに従い振分処理を行う。ステップSA4で検出したイベントがノートオンイベントである場合は、Aの矢印で示すステップSA6に進み、ノートオフイベントである場合は、Bの矢印で示すステップSA7に進み、奏法スイッチオンである場合は、Cの矢印で示すステップSA8に進み、奏法スイッチオフである場合は、Dの矢印で示すステップSA9に進み、上記イベントを検出しなかった場合(その他のイベントを検出した場合又はイベントを何も検出しなかった場合)は、Eの矢印で示すステップSA10に進む。
ステップSA6では、図6に示すノートオンイベント処理を行う。例えば、ユーザが鍵盤(演奏操作子22)を押鍵操作すると検出回路11(図1)がそれを検出し、ノートオンイベントをCPU9に導入する。CPU9は、それに応じて図6に示すノートオンイベント処理を実行する。なお、ノートオンイベントには、ノート番号とベロシティが含まれる。その後、ステップSA3に戻る。
ステップSA7では、図7に示すノートオフイベント処理を行う。例えば、ユーザが鍵盤(演奏操作子22)を離鍵操作すると検出回路11(図1)がそれを検出し、ノートオフイベントをCPU9に導入する。CPU9は、それに応じて図7に示すノートオフイベント処理を実行する。なお、ノートオンイベントは、少なくともノート番号を含む。その後、ステップSA3に戻る。
ステップSA8では、図4に示すRAM7内の発音管理データMDの奏法スイッチ状態変数SVを「TRUE」にする。例えば、ユーザが奏法スイッチ(設定操作子12)をオン操作すると、奏法スイッチオンイベントがCPU9に導入され、CPU9がRAM7内の発音管理データMDの奏法スイッチ状態変数SVを「TRUE」にする。その後、ステップSA3に戻る。
ステップSA9では、図4に示すRAM7内の発音管理データMDの奏法スイッチ状態変数SVを「FALSE」にする。例えば、ユーザが奏法スイッチ(設定操作子12)をオフ操作すると、奏法スイッチオフイベントがCPU9に導入され、CPU9がRAM7内の発音管理データMDの奏法スイッチ状態変数SVを「FALSE」にする。その後、ステップSA3に戻る。
ステップSA10では、発音チャンネル監視処理を実行する。発音チャンネル監視処理では、図4を参照して上述したように、発音中ノートリストNLからのエントリーの削除を行う。例えば、リリース状態フラグRFが「TRUE」のエントリーを発音中ノートリストNLから検索し、検出したエントリーの発音チャンネル管理情報CMを参照して発音チャンネル82を特定し、該特定した発音チャンネル82の音量値(もしくは、音量を制御するEG値)を取得する。取得した音量値等が所定値より小さい(ほぼ聞き取れない程度の音量)場合、当該エントリーを発音中ノートリストNLから削除する。その後、上記特定した発音チャンネルは他の楽音の発音に用いることができるようになる。
ステップSA11では、その他の処理を行う。ここでは、ユーザの操作に応じて様々な処理を実行する。例えば、生成中の楽音のリアルタイムモジュレーション処理、自動演奏の設定処理やその実行処理などである。その後、ステップSA3に戻る。
なお、ステップSA6〜ステップSA9及びステップSA11の処理の後にステップSA3に戻る際は、タイマ10を使って所定の時間間隔をあけることが好ましい。
図6は、本発明の第1の実施例において、図5のステップSA6で実行されるノートオン処理を表すフローチャートである。
ステップSB1でノートオン処理を開始し、ステップSB2では、タイマ10(図1)から現在時刻を取得し、図1のRAM7内に記録されている図4の発音管理データMD内の最後のノートオン時刻OTを当該取得した現在時刻で更新する。
ステップSB2では、図5のステップSA4で検出したノートオンイベントからノート番号及びベロシティ値を抽出する。
ステップSB4では、図5のステップSA3で選択したボイスデータVDのモード情報MIを参照して、サイクル発音「WaveCycle」をすべきボイスか否かを判断する。サイクル発音するべきボイスである場合は、YESの矢印で示すステップSB6に進み、サイクル発音するべきボイスでない場合は、NOの矢印で示すステップSB5に進む。
ステップSB5では、その他の発音モード(サイクル発音ではない通常の発音等)に応じたエレメントを選択して、ステップSB18に進む。
ステップSB6では、発音条件1を満たすか否かを判断する。なお、発音条件1とは、例えば、図4の特殊発音用エレメントSEで規定されている発音条件PN1であり、第1の実施例では、「奏法スイッチがON(図4の奏法スイッチ状態変数SVが「TRUE」に設定されている状態)」が発音条件1として設定されているものとする。発音条件1が満たされている場合、すなわち、奏法スイッチがON状態である場合は、YESの矢印で示すステップSB7に進む。発音条件1が満たされていない場合、すなわち、奏法スイッチがOFF状態である場合は、NOの矢印で示すステップSB10に進む。
ステップSB7では、発音条件2を満たすか否かを判断する。なお、発音条件2とは、例えば、図4の特殊発音用エレメントSEで規定されている発音条件PN2であり、第1の実施例では、「特定のノート番号(例えば、ノート番号「127」)及び/又は特定のベロシティ値」が発音条件2として設定されているものとする。発音条件2が満たされている場合、すなわち、発音条件1及び2の双方を満たす場合は、YESの矢印で示すステップSB8に進む。発音条件2が満たされていない場合、すなわち、発音条件1のみが満たされている場合は、NOの矢印で示すステップSB9に進む。
ステップSB8では、特殊発音エレメント2を選択する。具体的には、図4の特殊発音用エレメントSE内の特殊エレメント情報EL2で参照されている波形データを選択する。その後、ステップSB18に進む。
ステップSB9では、特殊発音エレメント1を選択する。具体的には、図4の特殊発音用エレメントSE内の特殊エレメント情報EL1で参照されている波形データを選択する。その後、ステップSB18に進む。
以上のステップSB6〜ステップSB9の処理により、奏法スイッチがONの時(発音条件1が満たされる時)に、特定のベロシティ値もしくは音量値を有するノートオンイベントが発生する(発音条件2が満たされる)と特殊発音エレメント2を選択し、発音条件1のみを満たす場合には、特殊発音エレメント1を選択することができる。
ステップSB10では、奏法スイッチ状態変数が「TRUE」から「FALSE」に遷移したか否かを判断する。奏法スイッチ状態変数が「TRUE」から「FALSE」に遷移した場合は、YESの矢印で示すステップSB11に進み、図4の発音管理データMDのシーケンスリストのインデックスIXをリセットし(インデックスを先頭に戻し)、ステップSB12に進む。その他の場合は、NOの矢印で示すように、ステップSB11を飛ばしてステップSB12に進む。奏法スイッチON状態から奏法スイッチがOFF状態になり、一時的に選択されていた特殊発音エレメントから通常のシーケンスリストに戻る場合に、この処理によりインデックスがリセットされ、通常のシーケンスのエレメントを先頭から発音再開することが可能となる。なお、このステップSB10での処理を後述する第4の実施例におけるステップSB401(図16)と同様のものとして、リセット条件RCを満たすか否かを判断するものとしてもよい。その場合には、図4のボイスデータVD中にリセット条件RCを記録するようにする。
ステップSB12では、図1のRAM7内に記録されている図4の発音管理データMD内の最後のノートオフ時刻FTからステップSB2で取得した現在時刻までが所定時間(例えば、350msec)以上か否かを判断する。所定時間以上である場合は、YESの矢印で示すステップSB13に進み、所定時間未満である場合は、NOの矢印で示すステップSB15に進む。
ステップSB13では、図4の発音管理データMD中の発音中ノートリストNL内に記録されているノート情報NIのリリース状態フラグRFが全て「TRUE」か否かを判断する。全て「TRUE」である場合には、YESの矢印で示すステップSB14に進む。1つでも「FALSE」がある場合には、発音中の楽音があるものと判断して、NOの矢印で示すステップSB15に進む。なお、発音中ノートリストNL内にノート情報NIが記録されていない場合は、発音中の楽音が無いので、YESの矢印で示すステップSB14に進む。
ステップSB14では、図4の発音管理データMDのシーケンスリストのインデックスIXをリセットし(インデックスを先頭に戻し)、その後、ステップSB17に進む。
以上のステップSB12〜SB14の処理により、最後のノートオフ時刻から一定時間が経過した後にノートンイベントがあった場合に、シーケンスのインデックスをリセットして、複数エレメントを先頭から発音再開することができる。
ステップSB15では、図1のRAM7内に記録されている図4の発音管理データMD内の最後のノートオン時刻OTからステップSB2で取得した現在時刻までが所定時間(例えば、30msec又は70msec)未満か否かを判断する。所定時間未満である場合は、YESの矢印で示すステップSB17に進み、所定時間以上である場合は、NOの矢印で示すステップSB16に進む。
ステップSB16では、図4の発音管理データMDのシーケンスリストのインデックスIXを1つ進め、その後、ステップSB17に進む。なお、インデックスIXがシーケンスリストSLの最後尾のエレメント情報ELを指し示している場合には、インデックスを先頭に戻す。
以上のステップSB15〜SB16の処理により、最後のノートオン時刻から一定時間が経過していないうちにノートオンイベントがあった場合に、シーケンスのインデックスを進めずに、同一エレメントを再度発音させることができる。
ステップSB17では、図4の発音管理データMDのシーケンスリストのインデックスIXが指し示すエレメント(エレメント情報EL)を選択する。その後、ステップSB18に進む。
ステップSB18では、使用可能な発音チャンネル82を確保し、ステップSB8、SB9又はステップSB17で選択したエレメントを確保した発音チャンネル82で発音させるように音源18に指示する。具体的には、音源18で現在使用していない発音チャンネル82を選択し、発音すべき波形データへの参照情報をボイスデータVDから読み出し、音源レジスタ84に書き込むことにより、発音を指示する。
ステップSB19では、ステップSB18で発音指示を行った楽音(ノート)の情報(エントリー)を図4の発音管理データMD中の発音中ノートリストNLの最後尾に追加する。具体的には、図5のステップSA4で検出したノートオンイベントのノート番号NNとステップSB18で確保した発音チャンネル82の管理情報CM(発音チャンネル82を特定する情報を含む)と「FALSE」の値のリリース状態フラグRFをまとめて1つのエントリーとして発音中ノートリストNLに追加する。
ステップSB20では、図1のRAM7内に記録されている図4の発音管理データMD内の最後のノートオン時刻OTをステップSB2で取得した現在時刻で更新する。その後、ステップSB21に進み、ノートオン処理を終了して図5のステップSA3に戻る。
図7は、図5のステップSA7で実行されるノートオフ処理を表すフローチャートである。なお、このノートオフ処理本発明の各実施例において共通の処理である。
ステップSC1で、ノートオフ処理を開始し、ステップSC2では、タイマ10(図1)から現在時刻を取得し、図1のRAM7内に記録されている図4の発音管理データMD内の最後のノートオフ時刻FTを当該取得した現在時刻で更新する。
ステップSC3では、図5のステップSA4で検出したノートオフイベントからノート番号を抽出する。
ステップSC4では、図1のRAM7内に記録されている図4の発音管理データMD内の発音中ノートリストNIから、ステップSC3で抽出したノート番号と同一のノート番号NNを含むエントリー(ノート情報NI)を検索する。
ステップSC5では、ステップSC4で検出された全エントリー(ノート情報NI)のリリース状態フラグRFを「TRUE」に設定する。
ステップSC6では、ステップSC4で検出された全エントリー(ノート情報NI)の発音中ノート(楽音)について音源18にリリースを指示する。その後、ステップSC7に進みノートオフ処理を終了して図5のステップSA3に戻る。ここでの音源18へのリリースの指示は、例えば、検出されたノート情報NIの発音チャンネル管理情報CMから当該ノート情報NIに対応する楽音を発音中の音源18の発音チャンネル82を特定し、以降、その発音チャンネル82がリリースしながら楽音生成するように、音源レジスタ84に設定を書き込むことにより行う。リリース中は、徐々に減衰するようにEG部185からエンベロープデータが音量制御部183に供給される。
以上、本発明の第1の実施例によれば、キーオンイベントから次のキーオンイベントまでの間隔が一定時間未満の場合に、双方のキーオンイベントに対して同一のエレメント(波形データ)を用いて発音を行い、エレメントのシーケンスを進めないことができる。
また、キーオフイベントから次のキーオフイベントまでの間隔が一定時間以上である場合に、エレメントのシーケンスをリセットして先頭のエレメントから発音を再開することができる。
さらに、一定の発音条件を満たす状態でのキーオンイベントに対して、通常のシーケンスで用いられるエレメントとは異なるエレメントを用いて発音を行うことができる。これにより、ユーザは所望のタイミングで所望のエレメントの一時的に切り替えることができる。
なお、本発明の第1の実施例では、図6に示すノートオン処理において、ノートオンイベントのたびにステップSB20にて最後のノートオン時刻OTを更新するようにしたが、それに替えて、ステップSB15にて所定時間未満であると判断された時には、ステップSB20にて最後のノートオン時刻OTを更新せず、所定時間以上であると判断された場合のみにステップSB20にて最後のノートオン時刻OTを更新するようにしてもよい。この場合、図3(A)に示す例では、時刻t1で「Shu」を発音する際に最後のノートオン時刻OTは時刻t1となるが、時刻t2で「Shu」を発音する際には、最後のノートオン時刻OTは時刻t2に更新されず時刻t1のままとなる。そして、時刻t3で発音するエレメントは、時刻t2からの経過時間が所定時間以上である場合に「Shu」の次の「Bee」が発音されるのではなく、時刻t1からの経過時間が所定時間以上である場合に、「Shu」の次の「Bee」が発音されることとなる。
次に、本発明の第2の実施例について説明する。第2の実施例は、複数のシーケンスリストを含むボイスデータを選択して、発音条件によりシーケンスリストを切り換えるものである。第2の実施例では、図1及び図2に示すハードウェア構成は第1の実施例と同様であり、また、図5に示すメイン処理及び図7に示すノートオフ処理も第1の実施例と同様である。以下、第1の実施例と異なる部分についてのみ説明する。
図8(A)及び(B)は、本発明の第2の実施例による楽音生成の例を表すタイムチャートである。なお、本発明の第2の実施例では、「Doo、Bee、Doo…」という一連の発音を行うためのシーケンスリストと、「Shu、Bee、Dah、Bah…」という一連の発音を行うためのシーケンスリストとを有するボイスデータVDが選択されている。
図8(A)は、奏法スイッチON操作(発音条件)により、第1のシーケンスの途中で、第2のシーケンスに切り換える例を表している。
第1のシーケンスである「Doo、Bee、Doo…」を「Doo」、「Bee」、「Doo」と発音した後に、タイミングt10にて奏法スイッチON操作がなされる。その後、シーケンスが第2のシーケンスに切り替わり、「Shu」、「Bee」、「Dah」、「Bah」と発音がなされる。なお、図示は省略するが、奏法スイッチOFF操作がなされるとシーケンスは第1のシーケンスに戻る。すなわち、この例では、奏法スイッチOFF状態では、第1のシーケンスのエレメントが選択され、奏法スイッチON状態では、第2のシーケンスのエレメントが選択される。
図8(B)は、ノートオンイベントの音域(発音条件)により、第1のシーケンスと第2のシーケンスとを切り換える例を表している。
この例では、ノートオンイベントのノート番号が所定値以上(高音域)であれば、第1のシーケンスのエレメントが選択され、所定値未満(低音域)であれば、第2のシーケンスのエレメントが選択される。
図9は、本発明の第2の実施例による発音管理データ及びボイスデータの構成の一例を表す概念図である。
第1の実施例における発音管理データMDのシーケンスリストのインデックスIXが、第2の実施例では、シーケンスリストのインデックスIX1と、IX2の独立した2系統になっている。その他の構成は、第1の実施例と同様である。また、シーケンスリストのインデックスIX1と、IX2もそれぞれ第1の実施例におけるシーケンスリストのインデックスIXと同様の構成である。
また、ボイスデータVDには、シーケンスリストのインデックスIX1と、IX2にそれぞれ対応してシーケンスリストSL1とSL2が用意されており、特殊発音用エレメントSEが省略されている。その他の構成は、第1の実施例と同様である。また、シーケンスリストSL1の構成も、第1の実施例によるシーケンスリストSLと同様である。なお、シーケンスリストSL2には、シーケンスリストSL1からSL2に切り換えるための条件となる発音条件PNが記録されている。奏法スイッチON状態で切り替えを行う場合は、この発音条件にその旨が記録され、音域で切り替えを行う場合は、切り換えるポイントとなるノート番号が記録される。なお、発音条件PNは、シーケンスリストSL2ではなくSL1に記録するようにしてもよい。また、第2の実施例における発音条件PNは、「奏法スイッチON」や「所定値以上のノート番号」に限らず、「所定値以上のベロシティ」等でもよい。また、ノート番号やベロシティ値の場合は、「所定範囲内のノート番号」や「所定範囲内のベロシティ値」を発音条件PNとしてもよい。
第2の実施例においては、ボイスデータVDは、独立した2つのシーケンスリストSL1とSL2を記録しており、発音管理データMDもそれに対応して2つのインデックスIX1とIX2とを保持している。これにより、発音条件に従い2つのシーケンスを切り換えることができる。
図10は、本発明の第2の実施例において、図5のステップSA6で実行されるノートオン処理を表すフローチャートである。
第2の実施例は、第1の実施例の図6に示すノートオン処理のうち、ステップSB6〜SB17を後述のステップSB201〜SB208に差し替えることにより実現可能である。なお、ステップSB1〜SB3及びSB18〜SB21の処理は、第1の実施例と同様であるので、図示及びその説明を省略する。
ステップSB4では、図5のステップSA3で選択したボイスデータVDのモード情報MIを参照して、サイクル発音「WaveCycle」をすべきボイスか否かを判断する。サイクル発音するべきボイスである場合は、YESの矢印で示すステップSB201に進み、サイクル発音するべきボイスでない場合は、NOの矢印で示すステップSB5に進む。なお、ステップSB5では、その他の発音モード(サイクル発音ではない通常の発音等)に応じたエレメントを選択して、ステップSB18に進む。
ステップSB201では、図9の発音条件PNを満たす状態から発音条件PNを満たさない状態に遷移したか、もしくは、図9の発音条件PNを満たさない状態から発音条件PNを満たす状態に遷移したかを判断する。発音条件PNを満たす状態から満たさない状態に遷移した場合は、Aの矢印で示すステップSB202に進み、逆に満たさない状態から満たす状態に遷移した場合は、Bの矢印で示すステップSB203に進む。図9の発音条件PNが「奏法スイッチON」である場合は、「奏法スイッチがON(図9の奏法スイッチ状態変数SVが「TRUE」に設定されている状態)」から「奏法スイッチがOFF(図9の奏法スイッチ状態変数SVが「FALSE」に設定されている状態)」に遷移したかもしくはその逆に遷移したかを判断する。これは、例えば、奏法スイッチON操作又はOFF操作を検出して判断する。図9の発音条件PNが「所定値以上のノート番号」である場合は、図6のステップSB2で抽出したノート番号が所定値未満から所定値以上に遷移したかもしくは所定値以上から所定値未満に遷移したかを判断する。また、図9の発音条件PNが「所定値以上のベロシティ」である場合も「所定値以上のノート番号」である場合と同様である。
ステップSB202では、図9の発音管理データMDのシーケンスリストのインデックスIX1をリセットする(インデックスを先頭に戻す)。その後、ステップSB204に進む。
ステップSB203では、図9の発音管理データMDのシーケンスリストのインデックスIX2をリセットする(インデックスを先頭に戻す)。その後、ステップSB204に進む。
なお、ステップSB201〜SB203は、必須の処理ではなく、省略してもよい。その場合は、シーケンスリストを切り換えた後に、再度もとのシーケンスリストに復帰した場合に、従前のシーケンスの続きから発音がなされる。図8(B)に示す例では、このステップSB201〜SB203の処理が省略されており、高音域の演奏後に低音域の演奏を行い、再度高音域の演奏を行っても、シーケンスリストのインデックスはリセットされない。なお、ステップSB201〜SB203の処理を省略する場合は、図9の発音管理データMDのシーケンスリストのインデックスは、IX1とIX2の二つが必要となるが、省略しない場合は、シーケンスリストを切り換えるたびにリセットするので、第1の実施例と同様に1つのインデックスのみを用いてもよい。
ステップSB204は、図9の発音条件PNを満たすか否かを判断する。発音条件PNを満たす場合は、YESの矢印で示すステップSB205に進み、図9の発音管理データMDのシーケンスリストのインデックスIX1を1つ進め、その後、ステップSB206に進む。なお、インデックスIX1がシーケンスリストSL1の最後尾のエレメント情報ELを指し示している場合には、インデックスを先頭に戻す。発音条件PNを満たさない場合は、NOの矢印で示すステップSB207に進み、図9の発音管理データMDのシーケンスリストのインデックスIX2を1つ進め、その後、ステップSB208に進む。なお、インデックスIX2がシーケンスリストSL1の最後尾のエレメント情報ELを指し示している場合には、インデックスを先頭に戻す。
ステップSB204の処理において、図9の発音条件PNが「奏法スイッチON」である場合は、「奏法スイッチがON(図9の奏法スイッチ状態変数SVが「TRUE」に設定されている状態)」か否かを判断する。図9の発音条件PNが「所定値以上のノート番号」である場合は、図6のステップSB2で抽出したノート番号が所定値以上か否かを判断する。また、図9の発音条件PNが「所定値以上のベロシティ」である場合も「所定値以上のノート番号」である場合と同様に、図6のステップSB2で抽出したベロシティ値が所定値以上か否かを判断する。
ステップSB206では、図9の発音管理データMDのシーケンスリストのインデックスIX1が指し示すエレメント(エレメント情報EL)を選択する。その後、図6のステップSB18に進む。
ステップSB208では、図9の発音管理データMDのシーケンスリストのインデックスIX2が指し示すエレメント(エレメント情報EL)を選択する。その後、図6のステップSB18に進む。
以上、本発明の第2の実施例によれば、発音条件に従い2つのシーケンスを切り換えることができる。
次に、本発明の第3の実施例について説明する。第3の実施例は、発音条件により通常のシーケンスリストに従った発音と単一エレメントによる発音とを切り換えるものである。第3の実施例では、図1及び図2に示すハードウェア構成は第1の実施例と同様であり、また、図5に示すメイン処理及び図7に示すノートオフ処理も第1の実施例と同様である。以下、第1の実施例と異なる部分についてのみ説明する。
図11は、本発明の第3の実施例による楽音生成の例を表すタイムチャートである。ノートオンイベントの音域(発音条件)により、通常のシーケンスリストに従った発音と単一エレメントによる発音とを切り換える例を表している。
この例では、ノートオンイベントのノート番号が所定値以上(高音域)であれば、通常のシーケンスのエレメント「Shu」、「Bee」、「Doo」、「Bah」が順次選択され、所定値未満(低音域)であれば、単一エレメント「Boom」が常に選択される。
図12は、本発明の第3の実施例による発音管理データ及びボイスデータの構成の一例を表す概念図である。
発音管理データMDは、第1の実施例と同様である。ボイスデータVDは、特殊発音用エレメントSEに代えて、発音条件PNを満たす場合に選択される単一エレメントを指定するエレメント指定情報EAが記録されている。また、シーケンスリストSLには、シーケンスリストSLから単一エレメントに切り換えるための条件となる発音条件PNが記録されている。本実施例では、音域により切り替えを行うので、発音条件PNには、切り換えるポイントとなるノート番号が記録される(本実施例の場合は、発音条件は「所定値未満のノート番号」となる)。なお、発音条件PNは、シーケンスリストSLではなくエレメント指定情報EAに記録するようにしてもよい。その他の構成は、第1の実施例と同様である。なお、第2の実施例における発音条件PNは、「所定値未満のノート番号」に限らず、「所定値以上のノート番号」、「奏法スイッチON」や「所定値以上(又は未満)のベロシティ」等でもよい。また、「所定範囲内のノート番号」や「所定範囲内のベロシティ値」を発音条件PNとしてもよい。
第3の実施例においては、ボイスデータVDは、シーケンスリストSLと単一エレメントを指定するエレメント指定情報EAを記録している。これにより、発音条件に従い通常のシーケンスによる発音と、単一のエレメントのみを用いた発音とを切り換えることができる。
図13は、本発明の第3の実施例において、図5のステップSA6で実行されるノートオン処理を表すフローチャートである。
第3の実施例は、第1の実施例の図6に示すノートオン処理のうち、ステップSB6〜SB17を後述のステップSB301〜SB306に差し替えることにより実現可能である。なお、ステップSB1〜SB3及びSB18〜SB21の処理は、第1の実施例と同様であるので、図示及びその説明を省略する。
ステップSB4では、図5のステップSA3で選択したボイスデータVDのモード情報MIを参照して、サイクル発音「WaveCycle」をすべきボイスか否かを判断する。サイクル発音するべきボイスである場合は、YESの矢印で示すステップSB301に進み、サイクル発音するべきボイスでない場合は、NOの矢印で示すステップSB5に進む。なお、ステップSB5では、その他の発音モード(サイクル発音ではない通常の発音等)に応じたエレメントを選択して、ステップSB18に進む。
ステップSB301では、リセット条件を満たすか否かを判断する。リセット条件を満たす場合は、YESの矢印で示すステップSB302に進み、図12の発音管理データMDのシーケンスリストのインデックスIXをリセットし(インデックスを先頭に戻し)、ステップSB303に進む。リセット条件を満たさない場合は、NOの矢印で示すように、ステップSB302を飛ばしてステップSB303に進む。なお、本実施例におけるリセット条件は、「発音条件PNを満たさない状態から満たす状態に遷移すること」である。もしくは「奏法スイッチON」をリセット条件とすることもできる。なお、このステップSB301及びSB302の処理は省略することができる。図11に示した例では、ステップSB301及びSB302の処理は省略されている。
ステップSB303では、図12の発音条件PNを満たすか否かを判断する。発音条件PNを満たす場合は、YESの矢印で示すステップSB304に進む。発音条件PNを満たさない場合は、NOの矢印で示すステップSB305に進み、図12の発音管理データMDのシーケンスリストのインデックスIXを1つ進め、その後、ステップSB306に進む。なお、インデックスIXがシーケンスリストSLの最後尾のエレメント情報ELを指し示している場合には、インデックスを先頭に戻す。
ステップSB303の処理において、図9の発音条件PNが「所定値未満(又は以上)のノート番号」である場合は、図6のステップSB2で抽出したノート番号が所定値未満(又は以上)か否かを判断する。また、図9の発音条件PNが「所定値以上(又は未満)のベロシティ」である場合も「所定値以上のノート番号」である場合と同様に、図6のステップSB2で抽出したベロシティ値が所定値以上(又は未満)か否かを判断する。また、図9の発音条件PNが「奏法スイッチON」である場合は、「奏法スイッチがON(図9の奏法スイッチ状態変数SVが「TRUE」に設定されている状態)」か否かを判断する。
ステップSB304では、図12のエレメント指定情報EA中の単一エレメント(エレメント情報EL)を選択する。その後、図6のステップSB18に進む。
ステップSB306では、図12の発音管理データMDのシーケンスリストのインデックスIXが指し示すエレメント(エレメント情報EL)を選択する。その後、図6のステップSB18に進む。
以上、本発明の第3の実施例によれば、発音条件に従い通常のシーケンスによる発音と、単一のエレメントのみを用いた発音とを切り換えることができる。
次に、本発明の第4の実施例について説明する。第4の実施例は、リセット条件を満たす場合にシーケンスリストのインデックスをリセット(先頭に戻す)ものである。第4の実施例では、図1及び図2に示すハードウェア構成は第1の実施例と同様であり、また、図5に示すメイン処理及び図7に示すノートオフ処理も第1の実施例と同様である。以下、第1の実施例と異なる部分についてのみ説明する。
図14は、本発明の第4の実施例による楽音生成の例を表すタイムチャートである。リセット条件(この例では、奏法スイッチ操作(ON又はOFF操作)の検出)を満たした場合に、シーケンスのインデックスを、ノートオン時刻及びノートオフ時刻等に関わらずリセットする。
図15は、本発明の第4の実施例による発音管理データ及びボイスデータの構成の一例を表す概念図である。
発音管理データMDは、第1の実施例と同様である。ボイスデータVDは、特殊発音用エレメントSEを省略し、シーケンスリストSLにリセット条件RCを追加している。リセット条件RCは、奏法スイッチのON状態からOFF状態への遷移(OFF操作の検出)、及びその逆の遷移(ON操作の検出)、その他の特定操作子の操作の検出等である。その他の構成は、第1の実施例と同様である。
なお、本実施例では、「奏法スイッチ操作」をリセット条件RCとしているが、リセット条件RCは、これに限らず、例えば、「奏法スイッチON操作」のみ、又は「奏法スイッチOFF操作」のみ、「所定値以上(又は未満、もしくは所定範囲内)のノート番号(又はベロシティ値)」、所定操作子(設定操作子12又は演奏操作子22)の操作等とすることができる。すなわち、第4の実施例ではユーザの指示により所望のタイミングでシーケンスのリセットを可能とするものなので、リセット条件RCは、ユーザがシーケンスのリセットタイミングを指示できるものであればよい。
第4の実施例においては、ボイスデータVDは、シーケンスリストSLにリセット条件RCを記録している。これにより、ユーザは所望のタイミングでリセット条件を満たす操作を行うことにより、シーケンスリストのインデックスをリセット(先頭に戻す)ことが可能となる。
図16は、本発明の第4の実施例において、図5のステップSA6で実行されるノートオン処理を表すフローチャートである。
第4の実施例は、第1の実施例の図6に示すノートオン処理のうち、ステップSB6〜SB17を後述のステップSB401〜SB404に差し替えることにより実現可能である。なお、ステップSB1〜SB3及びSB18〜SB21の処理は、第1の実施例と同様であるので、図示及びその説明を省略する。
ステップSB4では、図5のステップSA3で選択したボイスデータVDのモード情報MIを参照して、サイクル発音「WaveCycle」をすべきボイスか否かを判断する。サイクル発音するべきボイスである場合は、YESの矢印で示すステップSB401に進み、サイクル発音するべきボイスでない場合は、NOの矢印で示すステップSB5に進む。なお、ステップSB5では、その他の発音モード(サイクル発音ではない通常の発音等)に応じたエレメントを選択して、ステップSB18に進む。
ステップSB401では、リセット条件を満たすか否かを判断する。リセット条件を満たす場合は、YESの矢印で示すステップSB402に進み、図15の発音管理データMDのシーケンスリストのインデックスIXをリセットし(インデックスを先頭に戻し)、ステップSB403に進む。リセット条件を満たさない場合は、NOの矢印で示すように、ステップSB402を飛ばしてステップSB403に進む。なお、本実施例におけるリセット条件は、「奏法スイッチ状態変数が変化すること」、すなわち、奏法スイッチのON操作又はOFF操作の検出である。この処理により、所望のタイミングで、奏法スイッチを操作してインデックスをリセットし、シーケンスのエレメントを先頭から発音させることが可能となる。
ステップSB403では、図15の発音管理データMDのシーケンスリストのインデックスIXを1つ進め、その後、ステップSB404に進む。なお、インデックスIXがシーケンスリストSLの最後尾のエレメント情報ELを指し示している場合には、インデックスを先頭に戻す。
ステップSB404では、図15の発音管理データMDのシーケンスリストのインデックスIXが指し示すエレメント(エレメント情報EL)を選択する。その後、図6のステップSB18に進む。
以上、本発明の第4の実施例によれば、ユーザは所望のタイミングでリセット条件を満たす操作を行うことにより、シーケンスリストのインデックスをリセット(先頭に戻す)ことが可能となる。
なお、本発明の各実施例は、適宜組み合わせることが可能である。例えば、第1の実施例と第2の実施例とを組み合わせて、音域によりシーケンスリストを切り替えると共に、奏法スイッチON状態又は特定のベロシティでは、特殊発音用エレメントを選択するようにしてもよい。また、例えば、第1〜第3の実施例に対して、第4の実施例によるリセット条件を設定することも可能である。
なお、本発明の各実施例は、電子楽器の形態に限らず実施例に対応するコンピュータプログラム等をインストールした市販のコンピュータ等によって、実施させるようにしてもよい。
その場合には、各実施例に対応するコンピュータプログラム等を、CD−ROM等のコンピュータが読み込むことが出来る記憶媒体に記憶させた状態で、ユーザに提供してもよい。また、そのコンピュータ等が、LAN、インターネット、電話回線等の通信ネットワークに接続されている場合には、通信ネットワークを介して、コンピュータプログラムや各種データ等をユーザに提供してもよい。
以上実施例に沿って本発明を説明したが、本発明はこれらに制限されるものではない。例えば、種々の変更、改良、組み合わせ等が可能なことは当業者に自明であろう。以下に、本発明の実施例に変形例を示す。