JP3541615B2 - 自動演奏装置 - Google Patents
自動演奏装置 Download PDFInfo
- Publication number
- JP3541615B2 JP3541615B2 JP11626597A JP11626597A JP3541615B2 JP 3541615 B2 JP3541615 B2 JP 3541615B2 JP 11626597 A JP11626597 A JP 11626597A JP 11626597 A JP11626597 A JP 11626597A JP 3541615 B2 JP3541615 B2 JP 3541615B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- mode
- tone
- free
- loop
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、記憶された演奏操作子の操作軌跡情報を読出し、その読み出された操作軌跡情報に基づいて楽音制御する機能を備えた自動演奏装置に関する。
【0002】
【従来の技術】
記憶された演奏操作子の操作軌跡情報を読出し、その読み出された操作軌跡情報に基づいて楽音制御する機能を備えた自動演奏装置は、従来より知られている。
【0003】
かかる自動演奏装置として、たとえば特開平3−213898号公報には、動作モード(動作状態)が記録モードである場合に、パラメータ(演奏)操作子の操作に応じた楽音パラメータを順次記憶手段に書き込み、動作モードが再生モードである場合に、楽音操作子が操作される毎に前記記憶手段の記憶情報を読出し、楽音パラメータとして設定するようにしたものが開示されている。
【0004】
【発明が解決しようとする課題】
しかしながら、上記従来の自動演奏装置では、記憶手段に記憶されている記憶情報は楽音操作子を操作しなければ読み出されず、発生した楽音の楽音特性を楽音操作子に同期して変更する楽音制御を行うときには有効であるものの、ユーザが、発生した楽音の楽音特性を楽音操作子に非同期で変更したいという要求には応えることはできなかった。
【0005】
本発明は、上記点に鑑みてなされたもので、記憶された演奏操作子の操作軌跡情報を読出し、その読み出された操作軌跡情報に基づいて楽音制御する機能を備えた自動演奏装置において、演奏の幅をより拡げることが可能な自動演奏装置を提供することを目的とする。
【0006】
【課題を解決するための手段】
上記目的を達成するため本発明は、複数の演奏操作子と、入力された楽音発生指示情報に応じて楽音を発生する楽音発生手段と、演奏操作子の操作軌跡情報を記憶する操作軌跡情報記憶手段と、該記憶された操作軌跡情報を読出す操作軌跡情報読出し手段と、該操作軌跡情報の読出し開始を指示する読出し開始指示操作子と、前記操作軌跡情報読出し手段により操作軌跡情報が読み出されたときに、該読み出された操作軌跡情報に基づいて前記楽音発生手段により発生された楽音を制御する楽音制御手段と、前記読出し開始指示操作子の操作によって読み出し開始の指示がなされた後、前記読出し開始指示操作子すべての操作終了が検出されるまで、前記楽音制御手段による楽音制御を行う第1のモードと、該第1のモード時とは異なる所定の停止操作または操作軌跡情報の読み出し完了が検出されるまで、前記楽音制御手段による楽音制御を行う第2のモードとを選択的に設定する設定手段とを有することを特徴とする。
【0008】
ここで、楽音発生指示情報とは、具体的には、演奏者が、たとえば鍵盤を用いて入力した押鍵イベントや、MIDI信号のキーオンイベントメッセージ等であり、リアルタイムに入力されるものであってもよいし、予め自動演奏データとして設定されたものであってもよい。
【0009】
また、演奏操作子とは、発生した楽音の楽音特性を変更する各種パラメータの値を可変制御する、たとえばホイール、ジョイスティック、スライド等をいい、その操作軌跡とは、この演奏操作子の操作状態(量)の推移をいう。そして、操作軌跡情報記憶手段には、ユーザが演奏操作子を用いてリアルタイム入力またはステップ入力により生成した操作軌跡情報を記憶するようにしてもよいし、ユーザ以外の第三者(たとえばミュージシャン)が作成した操作軌跡情報を記憶するようにしてもよい。
【0010】
読出し開始指示手段は、所定のイベントが入力されたときに、操作軌跡情報の読出し開始を指示することが通常の動作であるが、これに限らず、イベントの入力がない場合でも、読出し開始の指示を行うようにしてもよい。なお、所定のイベントとは、たとえば、何らかのスイッチのオンイベント、鍵盤の任意の鍵の押鍵イベント、演奏補助操作子の操作イベント等、起動要因となるイベントであればどのようなイベントであってもよい。
【0011】
さらに、楽音発生手段および楽音制御手段は、最も一般的には、たとえば音源回路であるが、音源回路を備えず(音源回路を備えていても、もちろんよい)、外部の音源回路に、たとえばMIDI信号を送信するタイプの自動演奏装置である場合には、その外部の音源回路が目的の楽音の発生や楽音制御を行えるようなMIDI信号メッセージを出力するもの(たとえばCPU)であればよい。
【0014】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【0015】
図1は、本発明の実施の一形態に係る自動演奏装置の概略構成を示すブロック図である。
【0016】
同図に示すように、本実施の形態の自動演奏装置は、音高情報を入力するための鍵盤1と、各種情報を入力するための複数のスイッチを備えたパネルスイッチ2と、鍵盤1の各鍵の押鍵状態を検出する押鍵検出回路3と、パネルスイッチ2の各スイッチの押下状態を検出するスイッチ検出回路4と、装置全体の制御を司るCPU5と、該CPU5が実行する制御プログラムやテーブルデータ等を記憶するROM6と、演奏データ、各種入力情報および演算結果等を一時的に記憶するRAM7と、タイマ割り込み処理における割り込み時間や各種時間を計時するタイマ8と、各種情報等を表示する、たとえば大型液晶ディスプレイ(LCD)若しくはCRT(Cathode Ray Tube)ディスプレイおよび発光ダイオード(LED)等を備えた表示装置9と、記憶媒体であるフロッピディスク(FD)をドライブするフロッピディスクドライブ(FDD)10と、前記制御プログラムを含む各種アプリケーションプログラムや各種データ等を記憶するハードディスクをドライブするハードディスクドライブ(HDD)11と、前記制御プログラムを含む各種アプリケーションプログラムや各種データ等を記憶するコンパクトディスク−リード・オンリ・メモリ(CD−ROM)をドライブするCD−ROMドライブ12と、外部からのMIDI(Musical Instrument Digital Interface)信号を入力したり、MIDI信号として外部に出力したりするMIDIインターフェース(I/F)13と、通信ネットワーク101を介して、たとえばサーバコンピュータ102とデータの送受信を行う通信インターフェース(I/F)14と、鍵盤1から入力された演奏データや予め設定された演奏データ等を楽音信号に変換する音源回路15と、該音源回路15からの楽音信号に各種効果を付与するための効果回路16と、該効果回路16からの楽音信号を音響に変換する、たとえばスピーカ等のサウンドシステム17とにより構成されている。
【0017】
上記構成要素3〜16は、バス18を介して相互に接続され、CPU5にはタイマ8が接続され、MIDII/F13には他のMIDI機器100が接続され、通信I/F14には通信ネットワーク101が接続され、音源回路15には効果回路16が接続され、効果回路16にはサウンドシステム17が接続されている。
【0018】
HDD11のハードディスクには、前述のように、CPU5が実行する制御プログラムも記憶でき、ROM6に制御プログラムが記憶されていない場合には、このハードディスクに制御プログラムを記憶させておき、それをRAM7に読み込むことにより、ROM6に制御プログラムを記憶している場合と同様の動作をCPU5にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【0019】
CD−ROMドライブ12のCD−ROMから読み出された制御プログラムや各種データは、HDD11内のハードディスクにストアされる。これにより、制御プログラムの新規インストールやバージョンアップ等が容易に行える。なお、このCD−ROMドライブ12以外にも、外部記憶装置として、光磁気ディスク(MO)装置等、様々な形態のメディアを利用するための装置を設けるようにしてもよい。
【0020】
通信I/F14は、上述のように、たとえばLAN(Local Area Network)やインターネット、電話回線等の通信ネットワーク101に接続されており、該通信ネットワーク101を介して、サーバコンピュータ102に接続される。HDD11内のハードディスクに上記各プログラムや各種パラメータが記憶されていない場合には、通信I/F14は、サーバコンピュータ102からプログラムやパラメータをダウンロードするために用いられる。クライアントとなるコンピュータ(本実施の形態では、自動演奏装置)は、通信I/F14および通信ネットワーク101を介してサーバコンピュータ102へとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータ102は、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワーク101を介してコンピュータへと配信し、コンピュータが通信I/F14を介して、これらプログラムやパラメータを受信してHDD11内のハードディスクに蓄積することにより、ダウンロードが完了する。
【0021】
この他、外部コンピュータ等との間で直接データのやりとりを行うためのインターフェースを備えてもよい。
【0022】
図2は、本実施の形態の自動演奏装置のパネル面に配設されたパネルスイッチ2を示す図であり、本発明で必要なスイッチのみが図示されている。
【0023】
同図において、パネルスイッチ2は、2個のシーンスイッチ(SCENESW1,2)21,22と、シーンスライダ(SCSLIDER)23と、8個のノブ(KNOB1〜8)24_1〜8と、パラメータメニュースイッチ(PARAMETER MENU)25と、トーンモードスイッチ(MODE)26と、フリーEG(Envelope Generator)スイッチ(FREE EG)27と、ループシーケンサスイッチ(LOOP_SEQ)28と、自動演奏スタート/ストップスイッチ(START/STOP)29とにより構成されている。
【0024】
シーンスイッチ21および22は、各スイッチにそれぞれ割り当てられた音色を選択するためのものであり、いずれかのスイッチを押下することにより、当該割り当てられた音色が選択される。本実施の形態では、ユーザが、たとえば鍵盤1の押鍵音の音色を1つ指定したときに、2種類の異なった音色が自動的に設定されるように構成され、シーンスイッチ21および22は、このうちいずれかの音色を選択するために用いられる。なお、シーンスイッチ21および22が操作されたときの音色選択制御の方法については、図10を用いて後述する。また、シーンスイッチ21および22の各近傍には、それぞれLED30および31が配設され、現在有効なスイッチが分かるようになっている。
【0025】
シーンスライダ23は、本実施の形態では、たとえばスライド操作子により構成され、シーンスイッチ21および22にそれぞれ割り当てられた2音色を、たとえば直線補間して新たな音色を生成するために使用される。このシーンスライダ23が操作されたときの音色制御の方法については、図11を用いて後述する。
【0026】
なお、補間操作子は、上記スライド操作子に限らず、たとえば、ホイールやペダル、リボンコントローラ、鍵盤1の変位センサやタッチセンサ等、どのようなものを使用してもよい。
【0027】
各ノブ24_1〜8は、音色パラメータを構成する各種パラメータ等を設定したり変更したりするものである。本実施の形態では、各ノブ24_1〜8は、それぞれ可変抵抗により構成され、ノブ24_1〜8を回転することによって抵抗値が変更され、当該割り当てられたパラメータ値が可変されるように構成されている。
【0028】
なお、シーンスライダ23、ノブ24_1〜8等に、可変抵抗器などのアナログ操作素子を用いる場合には、そのアナログ抵抗値や出力電圧値をA/Dコンバータでデジタル化して用いることは云うまでもない。A/Dコンバータは、図示しないが、前記スイッチ検出回路4内に設けるようにしてもよいし、前記CPU5がA/Dコンバータを内蔵しているときにはそれを用いるようにしてもよい。
【0029】
パラメータメニュースイッチ25は、ノブ24_1〜8で設定制御すべきパラメータが8種類以上ある場合に、各ノブ24_1〜8に割り当てられるパラメータの種類を切り換えるためのものである。このパラメータメニュースイッチ25を押下すると、ノブ24_1〜8で設定可能なパラメータの種類が、たとえば表示装置9上にメニュー形式で表示されるので、この中からユーザは任意にパラメータの種類を選択して、目的のパラメータ値を設定または変更することができる。
【0030】
トーンモードスイッチ26は、1押鍵に対して1音色の楽音を生成して発音するシングル(SINGLE)トーンモードと、1押鍵に対して2音色の楽音を生成して発音するデュアル(DUAL)トーンモードと、鍵盤1の鍵域を、たとえば低音域および高音域の2つの鍵域に分割し、低音域側の押鍵に対する楽音と高音域側の押鍵に対する楽音とを異なった音色で生成して発音するスプリット(SPLIT)トーンモードとを切り換えるものである。本実施の形態では、シングルトーンモードが選択されたときには、シーンスライダ23により補間された音色の楽音が生成され、デュアルトーンモードが選択されたときには、この補間された音色および第2シーンスイッチ22に割り当てられた音色の2種類の音色の楽音が生成され、スプリットトーンモードが選択されたときには、低音域側での押鍵に対しては上記補間された音色の楽音が生成される一方、高音域側での押鍵に対しては第2シーンスイッチ22に割り当てられた音色の楽音が生成される。なお、スプリットトーンモードにおいては、低音域と高音域との間に重複する鍵域を設けることもでき、この重複鍵域での押鍵に対しては、上記デュアルトーンモードと同様に、補間音色および第2シーンスイッチ22に割り当てられた音色の2種類の音色の楽音が生成されて発音される。
【0031】
フリーEGスイッチ27は、操作子(本実施の形態では、ノブ24_1〜8のうち最大4個までのノブ)の操作状態(量)をリアルタイムで所定のステップ数(本実施の形態では、たとえば200ステップ)分記憶するとともに、自動演奏時にその記憶された操作状態を再現(再生)するフリーEG機能を選択するものである。前述のように、ノブ24_1〜8には、それぞれパラメータが割り当てられているので、フリーEG機能とは、記憶されたノブ24_1〜8の操作状態に応じて、対応するパラメータを変更し楽音を生成する機能をいう。
【0032】
ループシーケンサスイッチ28は、設定されたシーケンスデータ(キーイベントデータまたはキーイベントデータ+デュレーションデータの列)を各種ループタイプに応じた態様でループ読出しして楽音を生成するループシーケンサ機能を選択するものである。
【0033】
自動演奏スタート/ストップスイッチ29は、文字通り自動演奏のスタートまたはストップを指示するものである。
【0034】
なお、前述したように、図2には、本発明を説明するに当たって必要なスイッチ21〜29のみが示されており、実際のパネル面には、この他に、図示しないが、たとえば音色選択/指定操作子や演奏操作子等の各種スイッチが配設されている。
【0035】
図3は、前記ROM6のメモリマップの一例およびROM6に記憶された各種データのデータフォーマットの一例を示す図である。
【0036】
同図に示すように、ROM6には、CPU5が実行する制御プログラム(CPUプログラム)と、予め設定されたm個のトーンパラメータデータTONEPARp1〜pmと、予め設定されたq個のループシーケンサ用データLPSEQDATAp1〜pqと、その他のデータとが格納されている。
【0037】
各トーンパラメータデータTONEPARpは、該各トーンパラメータで共有に使用される共有パラメータデータCOMPARと、前記第1シーンスイッチ21に割り当てられる音色の音色パラメータであるトーンパラメータデータSCENE1と、前記第2シーンスイッチ22に割り当てられる音色の音色パラメータであるトーンパラメータデータSCENE2と、フリーEG用データFREE_EGとにより構成されている。
【0038】
共有パラメータデータCOMPARは、図7に示すように、たとえば表示用に当該音色の音色名を示す音色名データTONENAMEと、当該音色の音量値を示す音量データVOLUMEと、前記3種類のトーンモードのうちいずれのモードを選択するかを決定するトーンモード選択データMODEと、ループシーケンサの複数の制御モードのうちいずれのモードを選択するかを決定する制御モード選択データCONT_MODEと、ループシーケンサ機能により楽音を生成するとき(以下、「ループシーケンサプレイモード時」という)に前記ループシーケンサ用データLPSEQDATAp1〜pqのうちいずれのデータを使用するかを指定するループシーケンサ用データ指定データLOOP_SEQ_INDEXと、ループシーケンサプレイモード時の音色を、たとえば第1シーンスイッチ21に割り当てられた音色、第2シーンスイッチ22に割り当てられた音色、この2種類の音色をシーンスライダ23の操作状態に応じて補間した音色または前記デュアルトーンモードで設定される2種類の音色(すなわち、このときには2種類の音色により重奏される)のうちいずれの音色を使用するかを決定する音色指定データLPSEQSCENE_Noと、複数のループ読出し態様のうちいずれの態様を使用するかを指定するループ読出し態様データLOOP_TYPEと、ループシーケンサプレイモード時に固有のテンポ値を指定するテンポデータTEMPOと、ループシーケンサプレイモード時にホールドされるイベントデータを、そのイベント番号(ステップ番号)で指定するステップホールドデータSTEP_HOLDと、1ステップの音長(これがループ読出しの基本単位;ベースユニットとなる)を指定するベースユニットデータBASE_UNITと、その他、本発明を説明する上では必要ないものの、楽音を生成するために必要なデータとにより構成されている。
【0039】
前記ループシーケンサの制御モードは、本実施の形態では、ノーマルモード(normal)、ノートシフトモード(note_shift)、パターンセレクトモード(patern_select)およびノートシフト&パターンセレクト共用モード(note_shift&patern_select)の4種類により構成されている。ノーマルモードとは、鍵盤1の押鍵に対して通常の楽音、すなわちその押鍵に対応する音高で、かつ鍵盤1に割り当てられた音色の楽音を発生するモードをいう。ノートシフトモードとは、鍵盤1を、たとえば2つの鍵域に分割し、一方の鍵域における押鍵では、ノーマルモードと同様に通常の楽音を発生させ、他方の鍵域(以下、この鍵域を「ノートシフト鍵域」という)における押鍵では、所定の基準鍵に対する該押鍵鍵の音程数に応じて楽音の音高をシフトさせるモードをいう。パターンセレクトモードとは、上記ノートシフトモードに対して、他方の鍵域(以下、この鍵域を「パターンセレクト鍵域」という)における押鍵で、ループシーケンサの読出しパターンを変更させる点が異なるモードをいう。ノートシフト&パターンセレクト共用モードとは、同様に、鍵盤1を2つの鍵域に分割した場合に、一方の鍵域をノートシフト鍵域として機能させ、他方の鍵域をパターンセレクト鍵域として機能させるモードをいう。
【0040】
前記ループ読出し態様は、本実施の形態では、フォワード(forward)、バックワード(backward)、オルタネート(alternate)、ハーフ(half)、ハーフオルタネート(half alternate)、ループ読出しオフの6種類の態様により構成されている。以下、各読出し態様を、図24を参照して説明する。
【0041】
フォワードとは、図24(a)に示すように、書き込まれた順序で順にデータを読出していき、最後のデータを読み終えたときには、最初のデータに戻って読出しを繰り返す読出し態様をいう。
【0042】
バックワードとは、図24(b)に示すように、書き込まれた順序と逆の順序でデータを読出していき、最後のデータ、すなわち最初に書き込まれたデータを読み終えたときには、最後に書き込まれたデータに戻って読出しを繰り返す読出し態様をいう。
【0043】
オルタネートとは、図24(c)に示すように、最初フォワードの読出し態様でデータを読出し、最後のデータを読み終えたときには、バックワードの読出し態様でデータを読出し、最後のデータを読み終えたときには、再度フォワードの読出し態様でデータを読み出す読出し態様をいう。
【0044】
ハーフとは、図24(d)に示すように、最初フォワードの読出し態様でデータを読出し、最後のデータを読み終えたときには、書き込まれたデータの真ん中(本実施の形態では、101ステップ目)のデータから読出しを継続する読出し態様をいう。
【0045】
ハーフオルタネートとは、図24(e)に示すように、最初フォワードの読出し態様でデータを読出し、最後のデータを読み終えたときには、バックワードの読出し態様で、書き込まれたデータの真ん中のデータまで読出し、その位置からフォワードの読出し態様で読み出す読出し態様をいう。
【0046】
ループ読出しオフとは、ループ読出しは行わず、1度だけデータの読出しをフォワードで行う読出し態様をいう。なお、このループ読出しオフのとき、フォワードの読出し態様に固定する必要はなく、バックワードの読出し態様に固定してもよいし、フォワードおよびバックワードのいずれかの読出し態様を選択できるようにしてもよい。
【0047】
そして、各読出し態様に、それぞれ1〜6の整数値を付与し、この整数値をループ読出し態様データLOOP_TYPEとして記憶する。すなわち、LOOP_TYPE=1のとき、フォワード、LOOP_TYPE=2のとき、バックワード、LOOP_TYPE=3のとき、オルタネート、LOOP_TYPE=4のとき、ハーフ、LOOP_TYPE=5のとき、ハーフオルタネート、LOOP_TYPE=6のとき、ループ読出しオフである。
【0048】
前記トーンパラメータデータSCENEiは、図8(a)に示すように、電圧制御発振器(Voltage Controlled Oscillator;VCO)用パラメータデータVCOPARと、電圧制御フィルタ(Voltage Controlled Filter;VCF)用パラメータデータVCFPARと、電圧制御増幅器(Voltage Controlled Amplifier;VCA)用パラメータデータVCAPARと、効果パラメータデータEFCTPARとにより構成されている。
【0049】
図8(b)は、電圧制御発振器用パラメータデータVCOPAR、電圧制御フィルタ用パラメータデータVCAPAR、電圧制御増幅器用パラメータデータVCAPARおよび効果パラメータデータEFCTPARを構成する各種パラメータとその機能を説明する図である。
【0050】
なお、各パラメータデータVCOPAR,VCFPAR,VCAPAR,EFCTPARをそれぞれ構成する各種パラメータは、本発明を説明する上で必須のものでなく、また、当業者にとって周知のものばかりであるため、図示のみで、その説明を省略する。
【0051】
図3に戻り、フリーEG用データFREE_EGは、フリーEG機能を実行するために必要なパラメータ群であるフリーEG用パラメータデータFREE_EG_PARと、4個の異なったノブ24の操作状態を、それぞれリアルタイムに記憶する4トラック分の記憶領域(以下、「トラック」という)TRACK1〜4とにより構成されている。
【0052】
各トラックTRACK1〜4は、それぞれ、操作されたノブ24の操作状態(以下、この操作状態に応じて検出されたデータを「フリーEGデータ」という)を、設定されたタイミングで所定ステップ(本実施の形態では、前述したように、たとえば200ステップ)分記憶するためのフリーEGデータ格納領域FREE_EG_DATAと、該フリーEGデータ格納領域FREE_EG_DATAに格納された操作量に対応するノブ24と該ノブ24に割り当てられたパラメータとの対応関係を指示する割当てデータを格納するための割り当てデータ格納領域DESIGNATIONとにより構成されている。
【0053】
なお、トラック数は上記4トラックに限る必要はないことは云うまでもない。
【0054】
フリーEG用パラメータデータFREE_EG_PARは、フリーEGデータ格納領域FREE_EG_DATAに書き込まれたフリーEGデータを読出す基本単位時間を指定するベースユニットデータBASE_UNITと、フリーEGデータを読出す全体時間を指定する絶対時間データLENGTHと、ベースユニットデータBASE_UNITの値および設定されているテンポ値に応じてフリーEGデータを読出すテンポ同期モード(TEMPO_SYNC MODE)と絶対時間データLENGTHに応じてフリーEGデータを読出す絶対時間モード(ABSOLUTE MODE)のいずれのモードを選択するかを指定するモード指定データTEMPO_SYNC/ABSOLUTEと、前記図7で説明したループ読出し態様データと同様のデータLOOP_TYPEと、本実施の形態では、フリーEGデータを読み出すときに、その読出しタイミングを鍵盤1の押鍵音の音高に応じて(たとえば比例して)変更できるように構成されているが、この変更量の割合を示すキースケーリングデータRATE_KSとにより構成されている。
【0055】
なお、前記テンポ同期モードにおいて、テンポ値をフリーEGデータ読み出し時に固有のテンポ値に設定したい場合には、フリーEG用テンポデータFREE_EG_TEMPOを記憶するようにする。
【0056】
各ループシーケンサ用データLPSEQDATApは、前記図7で説明した制御モード選択データCONT_MODE〜ベースユニットデータBASE_UNITのうちループシーケンサ用データ指定データLOOP_SEQ_INDEXのみを除外したデータと、ループシーケンサプレイモード時に再生されるイベントデータLPSEQ_EVENT_DATAと、このイベントデータLPSEQ_EVENT_DATAの個数(ステップ数)を示すステップ数データLSEQ_STEP_Noとにより構成されている。
【0057】
図4は、前記RAM7のメモリマップの一例およびRAM7に設けられたトーンバッファのデータフォーマットの一例を示す図である。
【0058】
同図に示すように、RAM7には、CPU5が各種演算処理等で使用するワーキングエリアであるCPUワーキングエリアと、前記図3で説明したトーンパラメータデータTONEPARpに対してユーザが設定した点のみが異なるトーンパラメータデータをn個格納する領域TONEPARu1〜unと、前記図3で説明したループシーケンサ用データLPSEQDATApに対してユーザが設定した点のみが異なるループシーケンサ用データをl個格納する領域LPSEQDATAu1〜ulと、図10および11を用いて後述する音色指定・補間・編集処理等により、指定されたトーンパラメータデータTONEPARやループシーケンサ用データLPSEQDATA等を格納して補間・編集処理を行うためのバッファであるk個のトーンバッファTONEBUF1〜kとが設けられている。
【0059】
各トーンバッファTONEBUFは、トーンパラメータデータTONEPAR(このデータTONEPARは、前述したように、共有パラメータデータCOMPARとトーンパラメータデータSCENE1,2とにより構成されている)を格納するトーンパラメータバッファTONEPARABUF(COMPARBUF+SCENEBUF1+SCENEBUF2)と、前記シーンスライダ23の操作に応じて補間されたトーンパラメータデータSCENE1および2間の補間値SCENEintpを格納する補間値バッファSCENEBUFintpと、前記複数のフリーEG用データFREE_EGのうちいずれかのデータを選択して格納するフリーEGバッファFREE_EGBUFと、前記複数のループシーケンサ用データLPSEQDATAのうちいずれかのデータを選択して格納するバッファLOOP_SEQBUFとにより構成されている。
【0060】
図5は、前記図1の音源回路15内に設けられたパラメータレジスタの構成の一例を示す図であり、同図に示すように、パラメータレジスタは、j個のトーンパラメータデータをそれぞれ格納するj個のレジスタTGPARREGch1〜jにより構成されている。
【0061】
各レジスタTGPARREGchは、前記共有パラメータデータCOMPARのうち音源回路15が必要とするデータを格納する領域COMPARchと、前記トーンパラメータデータSCENE1,2またはSCENEintpのうち音源回路15が必要とするデータを格納する領域SCENEchとにより構成されている。
【0062】
ユーザが自動演奏曲を指定すると、その曲に必要であり、かつ音源回路15に必要なトーンパラメータデータがトーンバッファTONEBUFから選択されて、レジスタTGPARREGch1〜jのうちいずれかのレジスタに格納される。
【0063】
図6は、前記フロッピディスクやCD−ROM、サーバコンピュータの各種記憶媒体に記憶されたトーンパラメータデータTONEPARdおよびループシーケンサ用データLPSEQDATAdの一例を示す図である。
【0064】
このようして記憶されたトーンパラメータデータTONEPARdおよびループシーケンサ用データLPSEQDATAdを読出して、RAM7の所定領域に記憶し、前記ユーザ設定データと同様にして使用することもできる。
【0065】
以上のように構成された自動演奏装置が実行する制御処理を、以下、図9〜24を参照して説明する。
【0066】
図9は、本実施の形態の自動演奏装置、特にCPU5が実行するメインルーチンの手順を示すフローチャートである。
【0067】
同図において、まず、デフォルト音色であるトーンパラメータデータTONEPARp1を前記ROM6から読出して前記トーンパラメータバッファTONEPARBUF1に転送し、また、トーンパラメータデータSCENE1を補間値バッファSCENEBUFintp1に転送することによって、第1シーンスイッチ21に割り当てられた音色をデフォルトで選択し、さらに、本制御処理で使用する各種フラグのリセットやRAM7の初期化等のシステム初期化処理を実行する(ステップS1)。
【0068】
このように、トーンパラメータデータSCENE1を補間値バッファSCENEBUFintp1に転送することによって、第1シーンスイッチ21に割り当てられた音色がデフォルトで選択されるのは、本実施の形態では、図21〜23を用いて後述する発音処理に示すように、前記3種類のトーンモードのいずれのモードにおいても、前記音源回路15のレジスタTGPARREGch1〜jには、基本的に補間値バッファSCENEBUFintpの内容が転送されるからである。
【0069】
なお、本実施の形態では、トーンバッファTONEBUF1は、鍵盤1に指定された音色に対応する音色パラメータを格納するバッファとし、ユーザは、鍵盤1に指定される音色のみ、すなわちトーンバッファTONEBUF1に格納する音色パラメータのみを自由に変更できるように構成されている。しかし、これは説明上の都合であって、実際には、自動演奏データが複数のチャンネルで構成されており、鍵盤1以外に割り当てられたチャンネルのデータがある場合や、他のMIDI機器100からのMIDIイベントデータがある場合に、そのデータに応じて発音される楽音の音色を任意に設定することができるように構成されていることは云うまでもない。
【0070】
次に、各種イベントを検出するイベント検出処理を実行する(ステップS2)。ここで、検出されるイベントとしては、たとえば、鍵盤1を押鍵したときに発生する押鍵イベント、パネルスイッチ2を押下したときに発生するスイッチイベント、自動演奏データを読出したときに発生するキーオン/オフイベント等のイベント、他のMIDI機器100から出力されたMIDIイベント等がある。
【0071】
そして、音色指定・補間・編集処理サブルーチン(図10および11を用いて後述する)を実行し(ステップS3)、前記ループシーケンサスイッチ28を押下したときに実行されるループシーケンサ(LOOP_SEQUENCER)処理サブルーチン(図12〜14を用いて後述する)を実行し(ステップS4)、前記フリーEGスイッチ27を押下したときに実行されるフリーEG(FREE_EG)処理サブルーチン(図15〜19を用いて後述する)を実行し(ステップS5)、パラメータがリアルタイムで変更されたときにその変更後のパラメータで楽音を生成するために、前記音源回路15のレジスタTGPARREGchに格納するパラメータを常に新しいデータで更新するパラメータ時変制御処理サブルーチン(図20を用いて後述する)を実行し(ステップS6)、キーオンイベントに対応する楽音を発生させる発音処理サブルーチン(図21〜23を用いて後述する)を実行した(ステップS7)後に、上記ステップS2に戻って、上述の処理を繰り返す。
【0072】
図10および11は、上記ステップS3の音色指定・補間・編集処理サブルーチンの詳細な手順を示すフローチャートである。
【0073】
図10において、まず、音色選択イベントが発生したか否かを判別する(ステップS11)。ここで、音色の選択は、前記図示しない音色選択/指示操作子によって行われる。
【0074】
ステップS11で、音色選択イベントが発生したときには、その選択された音色qに対応する音色パラメータデータをトーンバッファTONEBUF1に転送して展開する(ステップS12)。具体的には、トーンパラメータデータTONEPARqをトーンパラメータバッファTONEPARBUF1に転送するとともに、トーンパラメータデータSCENE1qを補間値バッファSCENEBUFintp1に転送する。すなわち、補間値SCENEintpとしては、最初、第1シーンスイッチ21に割り当てられたトーンパラメータデータSCENE1qが設定される。ここで、qは、ユーザが選択可能なすべての音色を示し、ユーザが選択した音色のパラメータがROM6に記憶されている場合には、qはp1〜pmのいずれかを示し、この音色のパラメータがRAM7に記憶されている場合には、qはu1〜unのいずれかを示し、この音色パラメータがディスク等の記憶媒体等に記憶されている場合には、qはd1〜dkのいずれかを示す。
【0075】
続くステップS13では、第1シーンスイッチ21に割り当てられた音色が補間値SCENEintpとしても設定されていることを“1”で示すセットフラグsetflg_1をセット(“1”)するとともに、第2シーンスイッチ22に割り当てられた音色が補間値SCENEintpとしても設定されていることを“1”で示すセットフラグsetflg_2をリセット(“0”)する。
【0076】
一方、ステップS11で、音色選択イベントが発生しないときには、ステップS12および13をスキップしてステップS14に進む。
【0077】
ステップS14では、フリーEGデータの録音中、すなわちフリーEGデータを検出しフリーEGデータ格納領域FREE_EG_DATAに書き込み中であることを“1”で示すフリーEGデータレコーディング中フラグFEG_rec_flgが“0”か否かを判別し、FEG_rec_flg=0のとき、すなわちフリーEGデータの録音中でないときには、前記8個のノブ24_1〜8のうちのいずれのノブかを示すインデックスi(このインデックスiは、たとえば、前記CPUワークエリアの所定の位置に確保されたソフトカウンタで構成される)を“1”に設定する(ステップS15)。
【0078】
続くステップS16では、インデックスiで示すノブ24_iの操作イベントが発生したか否かを判別し、操作イベントが発生したときには、トーンバッファTONEBUF1上のノブ24_iに割り当てられたパラメータデータを当該操作量に応じて修正する(ステップS17)一方、操作イベントが発生しないときには、ステップS17をスキップしてステップS18に進む。
【0079】
ステップS18では、すべてのノブ24_1〜8について、ステップS16およびS17の処理を完了したか否かを、インデックスiが“8”であるか否かにより判別し、i≠8、すなわち未処理のノブ24_iが残っているときには、インデックスiを“1”だけインクリメントした(ステップS19)後に、前記ステップS16に戻って前述の処理を繰り返す一方、i=8、すなわちすべてのノブ24_iに対して処理を完了したときにはステップS20に進む。
【0080】
ステップS20では、インデックスiを“1”に設定する。ここで、インデックスiは、前記ステップS15〜19で使用したインデックスと同一名称が付与されているが、その作用は異なるものである。本ステップのインデックスiは、1または2のいずれかの整数値を採り、第1または2シーンスイッチ21または22のいずれのスイッチに対応するかを示すものである。なお、インデックスiは、以下に説明する各種制御処理中で頻繁に出現するが、いずれも、名称は同一であってもその作用は異なっている。
【0081】
続くステップS21では、第iシーンスイッチSCENSW2iの押圧イベントが発生したか否かを判別し、押圧イベントが発生したときには、トーンバッファTONEBUF1の第iシーンバッファSCENEBUFiに格納されているトーンパラメータデータを補間値バッファSCENEBUFintpに転送し(ステップS22)、インデックスiで示されるセットフラグsetflg_iをセットする一方、他方のセットフラグsetflg_j(j≠i)をリセットする(ステップS23)。
【0082】
このように、第iシーンスイッチSCENSW2iを押下すると、それに対応する第iシーンバッファSCENEBUFiの内容が補間値バッファSCENEBUFintpに転送されて、第iシーンスイッチSCENSW2iに割り当てられた音色が選択される。すなわち、第iシーンスイッチSCENSW2iが押下されると、その押下前にシーンスライダ23の操作に応じて補間された音色が選択されていたとしても、その音色は無効になり、第iシーンスイッチSCENSW2iに割り当てられた音色が有効になる。
【0083】
一方、ステップS21で、押鍵イベントが発生しないときには、ステップS22およびS23をスキップしてステップS24に進む。
【0084】
ステップS24では、インデックスiが“2”であるか否かを判別し、i≠2、すなわちステップS21〜S23の処理を行うべきシーンスイッチが残っているときにはステップS25に進み、インデックスiを“1”だけインクリメントした後に前記ステップS21に戻る一方、i=2、すなわちすべてのシーンスイッチに対してステップS21〜S23の処理を完了したときには図11のステップS26に進む。
【0085】
ステップS26では、セットフラグsetflg_1が“1”であるか否かを判別し、setflg_1=1のときには、前記シーンスライダ23の位置を検出し、0〜127のいずれかの整数値に変換して記憶するために、RAM7のCPUワーキングエリアに設けられた領域SCSLDOPの値(以下、この領域に格納された値を「シーンスライダ操作位置SCSLDOP」という)が“0”であるか否かを判別する(ステップS27)。
【0086】
ステップS27で、SCSLDOP=0、すなわちシーンスライダ23が図2において最下位の位置まで下げられているときには、セットフラグsetflg_1をリセットする(ステップS28)一方、SCSLDOP≠0のときには、ステップS28をスキップしてステップS29に進む。
【0087】
一方、ステップS26で、setflg_1=0のときには、ステップS27およびS28をスキップしてステップS29に進む。
【0088】
ステップS29では、セットフラグsetflg_2が“1”であるか否かを判別し、setflg_1=1のときには、シーンスライダ操作位置SCSLDOPが“127”であるか否かを判別する(ステップS30)。
【0089】
ステップS30で、SCSLDOP=127、すなわちシーンスライダ23が図2において最上位の位置まで上げられているときには、セットフラグsetflg_2をリセットする(ステップS31)一方、SCSLDOP≠127のときには、ステップS31をスキップしてステップS32に進む。
【0090】
一方、ステップS29で、setflg_2=0のときには、ステップS30およびS31をスキップしてステップS32に進む。
【0091】
ステップS32では、シーンスライダ23の操作イベントが発生したか否かを判別し、その操作イベントが発生したときには、setflg_1,2がともに“0”であるか否かを判別する(ステップS33)。
【0092】
ステップS33で、setflg_1=0&setflg_2=0、すなわち第1シーンスイッチ21が有効な状態で、シーンスライダ23が最下位の位置まで下げられた後の操作イベントのとき、または第2シーンスイッチ22が有効な状態で、シーンスライダ23が最上位の位置まで上げられた後の操作イベントのときには、シーンスライダ操作位置SCSLDOPに応じて、まず、次式(1)により、第1シーンバッファSCENEBUF1および第2シーンバッファSCENEBUF2にそれぞれ格納されている数値型パラメータデータの補間演算を、該各パラメータデータ毎に全数値型パラメータデータに亘って実行し(ステップS34およびS35)、次いで、次式(2)により、非数値型パラメータデータの設定を実行した(ステップS36およびS37)後に、本音色指定・補間・編集処理を終了する。
【0093】
nd(SCENEBUFintp) ← f[SCSLDOP,nd(SCENEBUF1),nd(SCENEBUF2)] ‥‥(1)
ただし、“nd”は、数値型データであることを示し、“f”は、数値型データnd(SCENEBUFi)の補間演算アルゴリズムに応じて決定される関数を示している。前述したように、本実施の形態では、補間演算アルゴリズムとして直線補間を用いているため、上式(1)の右辺は、具体的には、次式(1)′のように書き表すことができる。
【0094】
f[SCSLDOP,nd(SCENEBUF1),nd(SCENEBUF2)] = [(SCSLDOPmax-SCSLDOP)×nd(SCENEBUF1)+SCSLDOP×nd(SCENEBUF2)]/SCSLDOPmax ‥‥(1)′
なお、補間演算アルゴリズムは直線補間に限らず、指数、対数、その他各種の曲線により補間を行うようにしてもよい。このとき、パラメータ毎に補間演算アルゴリズムを指定できるようにしてよい。また、パラメータによって補間する/しないを選択設定できるようにしてもよい。
【0095】
sd(SCENEBUFintp) ← f[SCSLDOP,sd(SCENEBUF1),sd(SCENEBUF2)] ‥‥(2)
ただし、“sd”は、非数値型データであることを示し、“f”は、選択型データsd(SCENEBUFi)の補間アルゴリズムに応じて決定される関数を示している。
【0096】
補間されるデータが選択型データである場合には、補間アルゴリズムとしては、上記各種曲線補間を単純に採用することはできないため、上式(2)は、たとえば次式(2)′のように書き表すことができる。
【0097】
【数1】
なお、選択型データsd(SCENEBUFi)が3通り以上の設定範囲を有する場合には、この設定範囲に応じて適宜閾値を設定し、シーンスライダ操作位置SCSLDOPに応じて順次切り換えていくようにすればよい。また、演奏中または発音中に切り換えるとノイズが発生するような障害を起こすようなパラメータは補間対象から除外し、所定の設定値に固定するようにしてもよい。さらに、パラメータ毎に取り扱い方法を変更するようにしてもよい。
【0098】
また、セットフラグsetflg_iに応じてまたは同期して、前記図2のLED30および31を点灯制御するようにしてもよい。たとえば、第iシーンスイッチSCENSW2iに割り当てられた音色が選択されているときには、LED30および31のうち対応するLEDのみ点灯し、シーンスライダ23により補間された音色が選択されているときには、両LED30および31は消灯、または、ともに点灯、またはともに点滅する。補間音色が選択されているときには、補間結果がシーンスイッチ21,22にそれぞれ割り当てられた音色のいずれに近いかに応じて、対応するLED30,31を点灯または点滅にしてもよい。さらに、シーンスライダ23が操作端に達したときには、その端に対応するLED30,31を点灯するようにしてもよい。
【0099】
なお、本実施の形態では、シーンスライダ23として、スライド操作子を採用したが、これに限らず、前述のようにどのような操作子を用いてもよい。さらに、操作子に限らず、楽音合成装置で多用されるエンベロープジェネレータで時間変化する補間信号を生成して利用したり、操作子の操作量を記録したものを読出して利用したりしてもよい。
【0100】
図12および13は、前記図9のステップS4のループシーケンサ処理サブルーチンの詳細な手順を示すフローチャートである。
【0101】
図12において、まず、ループシーケンサの動作モードがプレイモード(L-SEQ_PLAY MODE)であるか否かを判別する(ステップS41)。
【0102】
ここで、動作モードには、このプレイモードと、プログラムモード(L-SEQ_PROGRAM MODE)の2種類のモードがあり、プレイモードは、前記トーンバッファTONEBUF1のループシーケンサバッファLOOP_SEQBUFに格納されたループシーケンサ用データLPSEQDATAに基づいて楽音を生成する処理を行うモードであり、プログラムモードは、このループシーケンサ用データLPSEQDATAを作成するモードである。
【0103】
前記ステップS41で、動作モードがプレイモードでないときには、ループシーケンサ用データLPSEQDATAを選択してループシーケンサバッファLOOP_SEQBUFに転送する処理であるループシーケンサ用データ(LPSEQDATA)選択処理を実行する(ステップS42)一方、動作モードがプレイモードでないときには、ステップS42をスキップしてステップS43に進む。
【0104】
ここで、ループシーケンサ用データ選択処理とは、具体的には、トーンバッファTONEBUF1の共有データバッファCOMPARBUFに格納されたループシーケンサ用データ指定データLOOP_SEQ_INDEXが示すループシーケンサ用データLPSEQDATAをループシーケンサバッファLOOP_SEQBUFに転送する処理をいう。なお、これに限らず、ループシーケンサ用データLPSEQDATAを直接選択できるようにしてもよい。
【0105】
ステップS43では、動作モードがプログラムモードであるか否かを判別し、プログラムモードのときには、ループシーケンサ用データLPSEQDATAを作成したり編集したりするループシーケンサ用データ(LPSEQDATA)作成編集処理を行う(ステップS44)。ここで、ループシーケンサ用データ作成編集処理としては、具体的には、たとえばノブ24_iを用いて前記イベントデータLPSEQ_EVENT_DATAの各データ(音高、タッチ、音長等)を1つずつ作成し、またはこのようにして作成されたデータを変更したりする処理や、その他、前記テンポ値データTEMPOや制御モード選択データCONT_MODE等のループシーケンサに関連する基本データを設定したり変更したりする処理がある。
【0106】
続くステップS45では、ループシーケンサのスタートイベントが発生したか否かを判別する。このスタートイベントは、押鍵、ペダル(図示せず)等の補助操作子の操作、パネルスイッチ2中にループシーケンサのスタート/ストップスイッチ(図示せず)を設け、この押圧イベントの検出、外部からのスタート信号の検出等によって、発生するようにすればよい。
【0107】
ステップS45で、ループシーケンサのスタートイベントが発生したときには、動作モードをプレイモードに移行させた(ステップS46)後に、本ループシーケンサ処理を終了する一方、ループシーケンサのスタートイベントが発生しないときには、何もせずに本ループシーケンサ処理を終了する。
【0108】
一方、ステップS43で、動作モードがプログラムモードでないときには、プレイモードであるか否かを判別し(ステップS47)、プレイモードでないときには、直ちに本ループシーケンサ処理を終了する一方、プレイモードのときには、たとえば本ループシーケンサ処理の停止等の演奏管理処理を行う(ステップS48)。
【0109】
続く図13のステップS49では、演奏を終了すべきか否かを判別し、演奏を終了すべきときには、所定の演奏終了処理を行う(ステップS50)一方、演奏を終了すべきでないとき、すなわち演奏を継続するときにはステップS51に進む。
【0110】
ステップS51では、制御モードCONT_MODE、すなわち前記ループシーケンサバッファLOOP_SEQBUFの制御モード選択データCONT_MODEにより示されるモードがノーマル(normal)モードか否かを判別し、CONT_MODE=normalのときには、ループシーケンサバッファLOOP_SEQBUFに格納されているデータに基づいて演奏イベントを発生するループシーケンス(LOOP_SEQ)演奏処理サブルーチン(図14を用いて後述する)を実行した(ステップS52)後に、本ループシーケンサ処理を終了する。
【0111】
一方、ステップS51で、CONT_MODE≠normalのときには、前記ノートシフト鍵域におけるキーオンイベントが発生したか否かを判別し(ステップS53)、ノートシフト鍵域におけるキーオンイベントが発生したときには、このキーオンイベントに対応するキーコード(keycode)に応じた値(本実施の形態では、前述したように、該キーコードと所定の基準鍵との音程数)をノートシフト値shift_value1として記憶する(ステップS54)。
【0112】
一方、ステップS53で、ノートシフト鍵域におけるキーオンイベントが発生しないときには、前記パターンセレクト鍵域におけるキーオンイベントが発生したか否かを判別し(ステップS55)、パターンセレクト鍵域におけるキーオンイベントが発生したときには、前記ステップS54と同様に、このキーオンイベントに対応するキーコード(keycode)に応じた値をノートシフト値shift_value2として記憶する(ステップS56)一方、パターンセレクト鍵域におけるキーオンイベントが発生しないときには、何もせずにステップS57に進む。
【0113】
ステップS57では、制御モードCONT_MODEがノートシフトモードであるか否かを判別し、ノートシフトモードのときには、指定されたループシーケンサ用データLPSEQDATA、すなわちループシーケンサバッファLOOP_SEQBUFに記憶されたデータに基づいて、かつ音高を前記ノートシフト値shift_value1に応じて一律変更したループシーケンス演奏イベントを発生させる(ステップS58)。
【0114】
一方、ステップS57で、制御モードCONT_MODEがノートシフトモードでないときには、パターンセレクトモードであるか否かを判別し(ステップS59)、パターンセレクトモードのときには、前記ノートシフト値shift_value2に応じてパターン変更してループシーケンス演奏イベントを発生させる(ステップS60)一方、制御モードCONT_MODEがパターンセレクトモードでないときには、ノートシフト&パターンセレクト共用モードであるか否かを判別する(ステップS61)。
【0115】
ステップS61で、制御モードCONT_MODEがノートシフト&パターンセレクト共用モードのときには、ノートシフト値shift_value1に応じて音高を一律変更するとともに、ノートシフト値shift_value2に応じてパターンを変更してループシーケンス演奏イベントを発生させる(ステップS62)一方、制御モードCONT_MODEがノートシフト&パターンセレクト共用モードでないときには、何もせずに本ループシーケンサ処理を終了する。
【0116】
図14は、前記ステップS52のループシーケンス演奏処理サブルーチンの詳細な手順を示すフローチャートである。本ループシーケンス演奏処理では、ループ読出し態様LOOP_TYPEがフォーワードのとき、すなわち前記ループシーケンサバッファLOOP_SEQBUFのループ読出し態様データLOOP_TYPEがフォーワードを示すデータのときの制御処理のみを説明し、他の読出し態様の制御処理を省略しているが、これは、他の読出し態様の制御処理は、本処理を基本にして少しの変更で簡単に実現することができるからである。したがって、実際には、前記6種類のループ読出し態様LOOP_TYPEに応じて、それぞれ固有のループシーケンス演奏処理を行うように構成されている。
【0117】
同図において、まず、イベントカウンタLPSEQ_event_counterの値に応じて、ループシーケンサバッファLOOP_SEQBUFに格納されたシーケンスデータLPSEQ_DATA(LPSEQ_event_counter)を読出す(ステップS71)。イベントカウンタLPSEQ_event_counterは、ループシーケンサバッファLOOP_SEQBUFに格納されたシーケンスデータLPSEQ_DATAのうちいずれか1つのシーケンスデータLPSEQ_DATA(LPSEQ_event_counter)を指示するソフトカウンタである。ここで、ソフトカウンタとは、前記CPUワーキングエリアに確保された領域を用いて計数を行うカウンタをいい、以下、ソフトカウンタというときには、この種のカウンタを示している。
【0118】
次に、読み出されたシーケンスデータLPSEQ_DATA(LPSEQ_event_counter)がイベントデータであるか否かを判別し(ステップS72)、イベントデータではなく、デュレーションデータのときには、そのデュレーション値を、デュレーションタイマDURATION_timerに設定する(ステップS73)一方、イベントデータのときには、ステップS73をスキップしてステップS74に進む。ここで、デュレーションタイマDURATION_timerとは、イベントデータ間の時間間隔を示すデュレーションデータ値を、たとえば所定の時間毎にダウンカウントして、イベントデータの発生タイミングを生成するソフトタイマである。ここで、ソフトタイマとは、上記ソフトカウンタと同様に、CPUワーキングエリアに確保された領域を用いて計時を行うタイマをいい、以下、ソフトタイマというときには、この種のタイマを示している。
【0119】
なお、シーケンスデータLPSEQ_DATAとして、イベントデータのみが格納される場合には、上記ステップS72およびS73の処理は必要ないが、たとえば、図6で説明したように、ディスク等の記憶媒体からループシーケンサ用データLPSEQDATAdをロードした場合には、そのシーケンスデータLPSEQ_DATAは、イベントデータに加えてデュレーションデータも含むことがあるため、この場合を担保する意味で、ステップS72およびS73の処理を行っている。
【0120】
ステップS74では、(演奏)イベントの発生タイミングか否かを判別する。ここで、イベントの発生タイミングか否かの判別は、シーケンスデータLPSEQ_DATAにデュレーションデータが含まれている場合には、デュレーションタイマDURATION_timerが“0”であるか否か、シーケンスデータLPSEQ_DATAにデュレーションデータが含まれていない場合には、前記ループシーケンサバッファLOOP_SEQBUFのベースユニットデータBASE_UNITとして設定された設定時間が経過したか否かを判別することによって行われる。
【0121】
なお、ベースユニットデータBASE_UNITとしては、絶対時間データを採るようにしてもよいし、相対値データ(たとえば、所定の基準クロックに対する相対値)を採るようにしてもよい。
【0122】
ステップS74で、イベントの発生タイミングでないときには、直ちに本ループシーケンス演奏処理を終了する一方、イベントの発生タイミングのときには、読み出されたシーケンスデータLPSEQ_DATA(LPSEQ_event_counter)に基づいて演奏イベントを発生させる(ステップS75)。
【0123】
次いで、イベントカウンタLPSEQ_event_counterの値が、前記ループシーケンサバッファLOOP_SEQBUFのステップ数データLSEQ_STEP_Noに一致するか否かを判別し(ステップS76)、LPSEQ_event_counter=LSEQ_STEP_Noのときには、イベントカウンタLPSEQ_event_counterを初期化して、イベントカウンタLPSEQ_event_counterが最初に読出したイベントデータの位置を指示するようにした(ステップS77)後に、本ループシーケンス演奏処理を終了する。
【0124】
一方、ステップS76で、LPSEQ_event_counter≠LSEQ_STEP_Noのときには、イベントカウンタLPSEQ_event_counterが、前記ループシーケンサバッファLOOP_SEQBUFのステップホールドデータSTEP_HOLDの値に一致するか否かを判別し(ステップS78)、LPSEQ_event_counter≠STEP_HOLDのときには、イベントカウンタLPSEQ_event_counterを“1”だけインクリメントした(ステップS79)後に、本ループシーケンス演奏処理を終了する一方、LPSEQ_event_counter=STEP_HOLDのときには、何もせずに本ループシーケンス演奏処理を終了する。このようにして、ステップS78の処理により、ステップホールドデータSTEP_HOLDとして、イベントデータLPSEQ_EVENT_DATAのうちいずれかのイベントのステップ番号が記憶されているときには、第1ステップのイベントからステップホールドデータSTEP_HOLDが示すステップのイベントまで順次演奏イベントが発生すると、その後、ステップホールドデータSTEP_HOLDが示す演奏イベントが繰り返し発生する。
【0125】
なお、ループ読出し態様データLOOP_TYPEとして、他の読出し態様が設定されているときには、上記フォワードのループシーケンス演奏処理を次のように修正する。
【0126】
すなわち、バックワードが設定されているときには、シーケンスデータLPSEQ_DATAを後端から読出し、先頭に到達したときには、再び後端から繰り返して読出すように、イベントカウンタLPSEQ_event_counterを制御する。
【0127】
オルタネートが設定されているときには、最初上記フォワードのループシーケンス処理に従ってシーケンスデータLPSEQ_DATAを読出し、その後端に到達したときには、上記バックワードのループシーケンス処理に従ってシーケンスデータLPSEQ_DATAを読出し、先頭に到達したときには、再びフォワードのループシーケンス演奏処理というように読出し制御を行う。
【0128】
他の読み出し態様の読出し制御についても、同様にして簡単な修正で実現することができるので、その説明を省略する。
【0129】
図15〜19は、前記図9のステップS5のフリーEG処理サブルーチンの詳細な手順を示すフローチャートである。
【0130】
図15において、まず、フリーEG処理における動作モードのチェックを行う(ステップS81)。ここで、動作モードには、大きく分けて、フリーEGレコーディングモードおよびフリーEGプレイモードの2種類のモードがある。フリーEGレコーディングモードには、前記フリーEGバッファFREE_EGBUFの各トラックTRACK1〜4を1つずつ指定して、当該トラックに割り当てられたノブ24_iの操作状態を記録するフリーEG1トラックレコーディングモード(FEG_1track_REC)およびこの各トラックTRACK1〜4にそれぞれ割り当てられたノブ24_iの操作状態を、全トラック一度に記録するフリーEGオールトラックレコーディングモード(FEG_alltrk_REC)の2種類のモードがある。そして、フリーEGプレイモードには、一度フリーEGプレイの指示を行うと、たとえば所定の停止操作を行ったり、前記フリーEGデータ格納領域FREE_EG_DATAのループ読出し態様データLOOP_TYPEがループ読出しオフに設定されているときに全トラックTRACK1〜4の読出しを完了した等の特別な操作や動作を行わない限りフリーEGプレイ(ループ読出し)を継続するフリーモード(FREE_MODE)および鍵盤1の所定の鍵を押下しているときのみフリーEGプレイを続けるモードの2種類のモードがある。なお、上記各モードの選択は、前記パネルスイッチ2の図示しない動作モードスイッチによって行うようにしてもよいし、前記トーンモードスイッチ26を併用して行うようにしてもよい。
【0131】
ここで、フリーEGレコーディングモードのレコーディング時に操作されるノブ24_iとその操作値によって制御されるパラメータとの対応関係は、たとえば、通常のパラメータ設定時に、前記パラメータメニュースイッチ25の操作で決定されたノブ24_iとパラメータとの対応関係をそのまま使用するようにしてもよいし、また、レコーディング時に限定して、各ノブ24_iに個別に制御対象パラメータを割り当てるようにしてもよい。このとき、割り当てられる制御対象パラメータは、1つでもよいし、複数個でもよい。複数個のパラメータを1つのノブ24_iまたは1つのトラックTRACKiのフリーEGデータとして割り当てるようにした場合には、パラメータ毎に感度調整等を行えるようにすれば、さらに自由度の高い制御が可能になる。
【0132】
また、フリーEGプレイモードのプレイ時においても、各トラックTRACKi毎に制御対象パラメータを変更できるようにしてもよい。
【0133】
さらに、トラックTRACK1〜4のうち複数個のトラックの出力を任意に組み合わせて演算し、その演算結果により、パラメータを制御するようにしてもよい。
【0134】
また、さらに、レコーディング時に、ノブ24_1〜8のうち、操作された複数のノブの操作値を組み合わせて演算し、その演算結果を1つのトラックTRACKiに記録するようにしてもよい。
【0135】
次に、動作モードがフリーEGレコーディングモードであるか否かを判別し(ステップS82)、フリーEGレコーディングモードでないときには、フリーEGプレイモードであるため、図18のステップS122以降のフリーEGプレイモード処理に移行する一方、フリーEGレコーディングモードのときには、前記フリーEGデータレコーディング中フラグFEG_rec_flg(図10のステップS14参照)が“0”か否かを判別する(ステップS83)。
【0136】
ステップS83で、FEG_rec_flg=1、すなわちフリーEGデータレコーディング中のときには、図17のステップS109以降のフリーEGデータレコーディング中処理に移行する一方、FEG_rec_flg=0、すなわちフリーEGデータレコーディング以前の前処理のときにはステップS84に進む。
【0137】
ステップS84では、フリーEG1トラックレコーディングモードを指定する指定イベントが発生したか否かを判別する。この指定イベントは、たとえば、前記パネルスイッチ2の図示しない動作モード指定スイッチを操作することによって発生する。もちろん、指定イベントは、これに限らず、前記パラメータメニュースイッチ25と同様のメニュースイッチを設けるとともに、その切換えメニュー中に動作モードの指定をノブ24_iに割り当て可能なメニューを設け、そのノブ24_iを操作することによって発生するようにしてもよい。
【0138】
ステップS84で、フリーEG1トラックレコーディングモードを指定する指定イベントが発生したときには、動作モードをフリーEG1トラックレコーディングモードに移行させ(ステップS85)、各トラックTRACK1〜4のトラック状態をチェックしてそのチェック結果を表示する(ステップS86)。
【0139】
続くステップS87では、空きトラックがあるか否かを判別し、空きトラックがあるときには、そのトラック番号を、前記CPUワーキングエリアの所定位置に確保された領域rec_track(以下、この領域に格納された内容を「レコーディングトラックrec_track」という)に格納し(ステップS88)、レコーディングトラックrec_trackが示すTRACK(rec_track)を初期化した(ステップS89)後に、本フリーEG処理を終了する。
【0140】
一方、ステップS87で、空きトラックがないときには、トラックTRACK1〜4のいずれかのトラックに重ね書き(オーバーライト)を行う旨のアラーム表示を行った(ステップS90)後に、本フリーEG処理を終了する。
【0141】
一方、ステップS84で、フリーEG1トラックレコーディングモード指定イベントが発生しないときには、動作モードがフリーEG1トラックレコーディングモードであり、かつトラック指定イベントが発生したか否かを判別する(ステップS91)。
【0142】
ステップS91で、トラック指定イベントが発生したときには、前記ステップS86と同様にして、その指定イベントが示すトラックTRACKx(xは、1〜4のいずれかの整数値)のトラック状態をチェックするとともに表示し(ステップS92)、トラックTRACKxは空き状態か否かを判別する(ステップS93)。
【0143】
ステップS93で、トラックTRACKxが空き状態のときには、前記ステップS88およびS89と同様に、レコーディングトラックrec_trackにこのトラック番号xを格納し(ステップS94)、トラックTRACKxを初期化した(ステップS95)後に、本フリーEG処理を終了する一方、トラックTRACKxに既にデータが書き込まれているときには、レコーディングトラックrec_trackにトラック番号1を格納し(ステップS96)、トラックTRACK1を初期化した(ステップS97)後に、前記ステップS90に進み、アラーム表示を行う。
【0144】
一方、ステップS91で、動作モードがフリーEG1トラックレコーディングモードでないか、またはトラック指定イベントが発生しないときには、図16のステップS98に進む。
【0145】
ステップS98では、フリーEGオールトラックレコーディングモードを指定する指定イベントが発生したか否かを判別し、この指定イベントが発生したときには、動作モードをフリーEG1トラックレコーディングモードに移行させ(ステップS99)、全トラックTRACK1〜4のトラック状態をチェックしてそのチェック結果を表示する(ステップS100)。
【0146】
続くステップS101では、全トラックTRACK1〜4が空き状態であるか否かを判別し、いずれかのトラックに既にデータが書き込まれているときには、前記ステップS90と同様にして、アラーム表示を行い(ステップS102)、全トラックTRACK1〜4の初期化を行った後にステップS104に進む一方、全トラックTRACK1〜4が空き状態であるときには、ステップS102およびS103をスキップしてステップS104に進む。
【0147】
ステップS104では、レコーディングトラックrec_trackに“0”を格納した後に、本フリーEG処理を終了する。
【0148】
一方、ステップS98で、フリーEGオールトラックレコーディングモード指定イベントが発生しないときには、フリーEGレコーディングスタート(FEG_REC START)イベントが発生したか否かを判別する(ステップS105)。
【0149】
ステップS105で、フリーEGレコーディングスタートイベントが発生したときには、前記フリーEGデータレコーディング中フラグFEG_rec_flgをセットするとともに、各トラックTRACK1〜4におけるフリーEGデータ、すなわちノブ24_iの操作状態(操作イベント)の書き込み位置をステップ数で示すソフトカウンタであるイベントカウンタevcountを“0”に初期化し(ステップS106)、現在フリーEGデータレコーディング中であることを示す表示(“FEG_RECORDING”)等のフリーEGデータレコーディング中に行うべき関連処理を行った(ステップS107)後に、本フリーEG処理を終了する。
【0150】
一方、ステップS105で、フリーEGレコーディングスタートイベントが発生しないときには、発生したイベントに応じたその他イベント処理(たとえば、記録対象ノブ24_1〜8の選択や時間分解能設定等)を行った(ステップS108)後に、本フリーEG処理を終了する。
【0151】
図17のステップS109では、各トラックTRACK1〜4にノブ24_iの操作状態を書き込むタイミングか否かを判別する。この書き込みタイミングは、前記ループシーケンサバッファLOOP_SEQBUFのベースユニットデータBASE_UNITを基準にして、すなわちベースユニットデータBASE_UNITに対応する時間毎に発生する。
【0152】
ステップS109で、書き込みタイミングでないときには、直ちに本フリーEG処理を終了する一方、書き込みタイミングのときには、動作モードがフリーEG1トラックレコーディングモードであるか否かを判別する(ステップS110)。
【0153】
ステップS110で、動作モードがフリーEG1トラックレコーディングモードのときには、イベントカウンタevcountが示すトラックTRACK(evcount)に、その割り当てられたノブ24_iの操作状態を記録するフリーEG1トラックレコーディング処理(ステップS111〜S114)を行った後に、本フリーEG処理を終了する一方、動作モードがフリーEG1トラックレコーディングモードでないとき、すなわちフリーEGオールトラックレコーディングモードのときには、全トラックTRACK1〜4に、それぞれ割り当てられたノブ24_iの操作状態を記録するフリーEGオールトラックレコーディング処理(ステップS115〜121)を行った後に、本フリーEG処理を終了する。
【0154】
具体的には、フリーEG1トラックレコーディング処理は、次に示す通りである。
【0155】
まず、ノブKNOBy(yは、割り当てられたノブの番号を示す)の操作値を、前記フリーEGバッファFREE_EGBUFのレコーディングトラックrec_trackにより示されるトラックTRACK(rec_track)内のフリーEGデータ格納領域FREE_EG_DATA中、イベントカウンタevcountにより示されるステップ位置の領域KNOBDATA(rec_track,evcount)に書き込む(ステップS111)。
【0156】
次に、イベントカウンタevcountの値がフリーEGデータ格納領域FREE_EG_DATAに記憶可能な最大ステップ数FEG_STEPより小さいか否かを判別し(ステップS112)、evcount<FEG_STEPのときには、イベントカウンタevcountを“1”だけインクリメントする(ステップS113)一方、evcount=FEG_STEPのときには、所定のフリーEGレコーディング終了処理を行うとともに、前記フリーEGデータレコーディング中フラグFEG_rec_flgをリセットする(ステップS114)。
【0157】
また、フリーEGオールトラックレコーディング処理は、次に示す通りである。
【0158】
まず、インデックスiを“1”に初期化する(ステップS115)。
【0159】
次に、ノブKNOByi(yiは、トラックTRACKiに割り当てられたノブの番号を示す)の操作値を、前記ステップS111と同様に、インデックスiにより示されるトラックTRACKi内の、イベントカウンタevcountにより示されるステップ位置の領域KNOBDATA(i,evcount)に書き込む(ステップS116)。
【0160】
そして、インデックスiが“4”か否か、すなわち全トラックTRACK1〜4に対して書き込みを終了したか否かを判別し、まだ書き込みトラックが残っているとき(i≠4)には、インデックスiを“1”だけインクリメントした(ステップS118)後に前記ステップS116に戻る一方、全トラックTRACK1〜4に対して書き込みを終了したとき(i=4)にはステップS119に進む。
【0161】
ステップS119〜S121は、それぞれ前記ステップS112〜S114の処理と同様であるため、その説明を省略する。
【0162】
なお、本実施の形態では、イベントカウンタevcountを全トラックTRACK1〜4で共通にしたが、これに限らず、各トラックTRACKi毎にイベントカウンタevcountiを設け、各トラックTRACKi個別に記録ステップ数を設定できるようにしてもよい。
【0163】
また、本実施の形態では、ベースユニットデータBASE_UNITの値に対応する時間毎に、ノブ24_1〜8の操作値を記録するように構成したが、これに限らず、ノブ24_1〜8の操作状態に変化がない区間が連続する場合には、変化が起こるまで前変化イベントから新変化イベントの間はベースユニットデータBASE_UNITを基準にした時間間隔数を記録するようにしてもよい。ノブ24_1〜8の操作状態が、たとえば図25に示す状態のときには、白抜き矢印の個数(3個)を記録する。このようにすることより、フリーEGデータの容量を圧縮することができる。
【0164】
図18のステップS122では、動作モードがフリーEGプレイモードであるか否かを判別し、フリーEGプレイモードでないときには、直ちに本フリーEG処理を終了する一方、フリーEGプレイモードのときにはステップS123に進む。
【0165】
ステップS123では、フリーEGプレイモードにおいてそのプレイ中であることを“1”で示すフリーEGプレイ中フラグFEG_play_flgが“0”か否かを判別し、FEG_play_flg=0のときには、ステップS124に進み、フリーEGプレイに移行する前段の処理を行う一方、FEG_play_flg=1のときには、図19のステップS132に進み、フリーEGプレイ中の処理を行う。
【0166】
ステップS124では、フリーEGプレイスタート(FEG_PLAY START)イベントが発生したか否かを判別し、フリーEGプレイスタートイベントが発生しないときには、直ちに本フリーEG処理を終了する一方、フリーEGプレイスタートイベントが発生したときにはステップS125に進む。
【0167】
ここで、フリーEGプレイスタートイベントは、たとえば、前記パネルスイッチ2の何らかのスイッチ操作、鍵盤1の任意の押鍵イベントの検出、音色の選択、図示しないフットペダル等の演奏補助操作子の操作イベントの検出、MIDI信号の所定のメッセージの検出等により発生する。この他、フリーEGプレイモードが選択され、所定のトラックに再生すべきデータが格納されているときには、特別な操作をしなくてもそのままフリーEGプレイスタートイベントを発生させて、フリーEGプレイを行うようにしてもよい。
【0168】
ステップS125では、前記フリーEGバッファFREE_EGBUFのモード指定データTEMPO_SYNC/ABSOLUTEとして、テンポ同期モード(TEMPO_SYNC)が設定されているか否かを判別し、テンポ同期モードが設定されているときには、フリーEGバッファFREE_EGBUFのベースユニットデータBASE_UNITと共有データバッファCOMPARBUFのテンポデータTEMPOに応じて(たとえば、ベースユニットデータBASE_UNITに基準テンポ値とテンポデータ値TEMPOとの比の値を乗算して)フリーEGデータ格納領域FREE_EG_DATA内のデータを1ステップ分読み出す時間間隔を決定し、その結果(換算値)をタイムステップtimestepとする。
【0169】
一方、ステップS125で、モード指定データTEMPO_SYNC/ABSOLUTEとして、絶対時間モード(ABSOLUTE)が設定されているときには、前記フリーEGバッファFREE_EGBUFの絶対時間データLENGTHに基づいて1ステップ分読み出す時間間隔を、次式(3)により演算して決定し、その結果をタイムステップtimestepとする。
【0170】
timestep=LENGTH/n ‥‥(3)
ただし、nは、フリーEGデータ格納領域FREE_EG_DATAに格納されているデータ数を示す。
【0171】
続くステップS128では、フリーEGデータ格納領域FREE_EG_DATAのキースケーリングデータRATE_KSが“0”でなく、かつ動作モードが前記フリーモード(FREE_MODE)でないか否かを判別し、この判別結果が肯定(“YES”)のとき、すなわちRATE_KS≠0&/FREE_MODE(“/”は、論理否定を意味する)のときには、次式(4)により、タイムステップtimestepを変更する(ステップS129)一方、ステップS128の判別結果が否定(“NO”)、すなわちRATE_KS=0またはフリーモードFREE_MODEのときには、ステップS129をスキップしてステップS130に進む。
【0172】
timestep=timestep×f(kc,RATE_KS) ‥‥(4)
ただし、fは独立変数が2変数(kc,RATE_KS)の関数であり、キーコードkcおよびキースケーリングデータRATE_KSが決定されると、正の値が1つ決定されるものであればどのようなものであってもよい。この関数値fは、キーコードkcおよびキースケーリングデータRATE_KSを用いて演算により求めるようにしてもよいし、テーブルデータを用意しておき、このテーブルデータを、キーコードkcおよびキースケーリングデータRATE_KSに基づいて検索して求めるようにしてもよい。
【0173】
ステップS130では、タイムステップtimestepの値を、前記フリーEGデータ格納領域FREE_EG_DATA内のデータを1ステップ分読み出すタイミングを決定するソフトタイマである読出しタイマTIMERにセットして、この読出しタイマTIMERをスタートさせ、次いで、ステップS131では、前記フリーEGプレイ中フラグFEG_play_flgをセットした後に、本フリーEG処理を終了する。
【0174】
図19のステップS132では、動作モードがフリーモードか否かを判別し、フリーモードでないときにはステップS133に進み、前記フリーEGプレイを継続するために割り当てられた鍵がすべて離鍵(キーオフイベント)されたか否かを判別し、いずれかの鍵が押鍵されているときにはステップS134に進む。
【0175】
ステップS134では、前記読出しタイマTIMERをチェックすることにより、前記フリーEGデータ格納領域FREE_EG_DATA内のデータの読出しタイミングであるか否かを判別し、その結果、読出しタイミングでないときには、直ちに本フリーEG処理を終了する一方、読出しタイミングのときには、ループ再生が指示されているか否かを判別する(ステップS135)。この判別は、前記フリーEGバッファFREE_EGBUFのループ読出し態様データLOOP_TYPEに基づいて行う。具体的には、ループ読出し態様データLOOP_TYPEの値が“5”以下か否かを判別する。
【0176】
ステップS135で、ループ再生が指示されているとき、すなわちLOOP_TYPE≦5のときには、ループ読出し態様データLOOP_TYPEとして、フォワード(forward)が設定されているか否かを判別し、フォワードが設定されているとき、すなわちLOOP_TYPE=1のときには、前述したフォワードの読出し態様に従って、各トラックTRACK1〜4毎に対応するフリーEGデータ格納領域FREE_EG_DATA内のデータKNOBDATAi(iは、現在指定されている読出しステップ位置を示す)を読出し(ステップS137)、このデータKNOBDATAiを、前記フリーEGバッファFREE_EGBUFの領域KNOBDATAiに格納した(ステップS138)後に、本フリーEG処理を終了する。
【0177】
一方、ステップS136で、ループ読出し態様データLOOP_TYPEとして、フォワードが設定されていないとき、すなわちLOOP_TYPE≠1のときには、ループ読出し態様データLOOP_TYPEとして、バックワード(backward)が設定されているか否かを判別する(ステップS139)。
【0178】
ステップS139で、ループ読出し態様データLOOP_TYPEとして、バックワードが設定されているとき、すなわちLOOP_TYPE=2のときには、前述したバックワードの読出し態様に従って、各トラックTRACK1〜4毎に対応するフリーEGデータ格納領域FREE_EG_DATA内のデータKNOBDATAiを読出し(ステップS140)、前記ステップS138に進む一方、ループ読出し態様データLOOP_TYPEとして、バックワードが設定されていないとき、すなわちLOOP_TYPE≠2のときにはステップS141に進む。
【0179】
ステップS141では、ループ読出し態様データLOOP_TYPEとして、オルタネート(alternate)が設定されているか否かを判別し、オルタネートが設定されているとき、すなわちLOOP_TYPE=3のときには、前述したオルタネートの読出し態様に従って、各トラックTRACK1〜4毎に対応するフリーEGデータ格納領域FREE_EG_DATA内のデータKNOBDATAiを読出し(ステップS142)、前記ステップS138に進む一方、ループ読出し態様データLOOP_TYPEとして、オルタネートが設定されていないとき、すなわちLOOP_TYPE≠3のときにはステップS143に進む。
【0180】
ステップS143では、ループ読出し態様データLOOP_TYPEとして、ハーフ(half)が設定されているか否かを判別し、ハーフが設定されているとき、すなわちLOOP_TYPE=4のときには、前述したハーフの読出し態様に従って、各トラックTRACK1〜4毎に対応するフリーEGデータ格納領域FREE_EG_DATA内のデータKNOBDATAiを読出し(ステップS144)前記ステップS138に進む一方、ループ読出し態様データLOOP_TYPEとして、ハーフが設定されていないとき、すなわちLOOP_TYPE≠4のときには、ループ読出し態様データLOOP_TYPEとしては、ハーフオルタネートが設定されているため、前述したハーフオルタネートの読出し態様に従って、各トラックTRACK1〜4毎に対応するフリーEGデータ格納領域FREE_EG_DATA内のデータKNOBDATAiを読出し(ステップS145)前記ステップS138に進む。
【0181】
一方、ステップS135で、ループ再生が指示されていないとき、すなわちLOOP_TYPE=6のときには、前述したループ読出しオフの読出し態様に従って、各トラックTRACK1〜4毎に対応するフリーEGデータ格納領域FREE_EG_DATA内のデータKNOBDATAiを読出し(ステップS146)前記ステップS138に進む。
【0182】
一方、ステップS132で、動作モードがフリーモードのときには、フリーモードを終了するための前記指示イベントが発生したか否かを判別し(ステップS147)、この指示イベントが発生したときには、所定のフリーEGプレイ終了処理を行うとともに、前記フリーEGプレイ中フラグFEG_play_flgをリセットした(ステップS148)後に、本フリーEG処理を終了する一方、この指示イベントが発生しないときには、前記ステップS134に進み、指定されたループ読出し態様に応じてループ読出しを行う。
【0183】
上記ステップS147で、フリーモード終了指示イベントは、前記ステップS124で説明したフリーEGプレイスタートイベントと同様に、何らかの操作や指示信号の検出等によって発生するものとする。
【0184】
一方、ステップS133で、フリーEGプレイを継続するために割り当てられた鍵がすべて離鍵されたときには、前記ステップS148に進み、フリーEGプレイ中フラグFEG_play_flgのリセットを含む所定のフリーEGプレイ終了処理を行った後に、本フリーEG処理を終了する。
【0185】
前述したように、フリーEGプレイモード中のフリーモードでないモードは、所定の鍵、すなわち本実施の形態では、フリーEGプレイを継続するために割り当てられた鍵を押鍵している間フリーEGプレイを続けるモードであるため、上記ステップS133ではこの離鍵を判別している。そして、すべての鍵が離鍵されると、上記ステップS148のフリーEG終了処理によりフリーEGプレイを停止して、フリーEGデータの出力を終了する。ここで、フリーEG終了処理とは、たとえば発音中の楽音の音量を所定値に漸時収束させる等の処理をいい、フリーモードでないモードにおけるフリーEGプレイ中に、フリーEGプレイを行う要因となる鍵が離鍵されると、通常の振幅EGのように発音中の楽音は徐々に消音される。
【0186】
一方、フリーEGプレイモード中のフリーモードは、前述したように、特別な操作を行わない限りフリーEGプレイを継続するモードであるため、このモードで出力されるフリーEGデータのデータ列は、フリーラン動作のLFO(Low Frequancy Oscillator)から出力されるデータ列のように、周期性を有することになる。
【0187】
なお、本実施の形態では、フリーモードまたはフリーモードでないモードの選択を、全トラックTRACK1〜4に対して一律に行うようにしたが、これに限らず、トラックTRACK1〜4毎に選択設定できるようにしてもよい。
【0188】
また、前記ステップS109〜S121で各トラックTRACK1〜4に書き込まれたフリーEGデータ、または前記ROM6のフリーEG用データのFREE_EGの各トラックTRACK1〜4に格納されているフリーEGデータを、たとえば前記RAM7のトーンバッファTONEBUF1〜kまたはトーンパラメータデータTONEPARu1〜un内の各トラックTRACK1〜4にコピーできるようにしてもよい。たとえば、全トラックTRACK1〜4のフリーEGデータをすべて他のトラックTRACK1〜4にコピーするとき(このときは、ある音色における全トラックTRACK1〜4のフリーEGデータを他の音色のトラックTRACK1〜4にコピーすることが多い)、コピー元の音色とコピー先の音色とをそれぞれユーザが指定すると、この指示に応じて、CPU5は、コピー元の音色データ内の全トラックTRACK1〜4に記憶されている全フリーEGデータを読み出して、コピー先の音色データ内のトラックTRACK1〜4に格納する。コピー元の音色データは、ROM6またはRAM7に格納されているものに限らず、前記図6で説明したように、フロッピディスクやCD−ROM、サーバコンピュータの各種記憶媒体に記憶されたものであってもよい。さらに、全トラックTRACK1〜4を一単位としてコピーするのではなく、その中の1トラック以上のトラックを選択してコピーするようにしてもよい。
【0189】
なお、コピー元のトラックにデータが格納されていないときに、コピーの指示がなされた場合には、コピーを行わずにアラーム等でユーザに知らせるようにしてもよい。
【0190】
また、コピー元のトラックTRACK1〜4中一部のトラックが空トラックである場合には、そのトラックは、コピー処理を行わず、データが格納されているトラックのみコピー処理を行うようにする。これにより、無駄なコピー作業(データの転送処理)を省略することができる。このとき、コピー先のトラックを空トラック分詰めてコピーするようにしてもよい。これにより、トラックを整理することができるとともに、空きトラックが生成されないため、記憶容量を削除させることができる。たとえば、コピー元のトラックTRACK1〜4のうち、トラックTRACK3が空きトラックであり、他のトラックTRACKn1〜4にコピーする場合には、TRACK1→TRACKn1,TRACK2→TRACKn2,TRACK3→無視,TRACK4→TRACKn3のようにコピーされる。
【0191】
図20は、前記図9のステップS6のパラメータ時変処理サブルーチンの詳細な手順を示すフローチャートである。
【0192】
同図において、まず、インデックスiを“1”に初期化する(ステップS151)。
【0193】
次に、前記音源回路15のレジスタTGPARREGch1〜j(図5参照)のチャンネル中、インデックスiが示すチャンネルiは発音中か否かを判別し(ステップS152)、発音中のときには、該チャンネルiはフリーEG制御すべきチャンネルか否かを判別する(ステップS153)。
【0194】
ステップS153で、チャンネルiがフリーEG制御すべきチャンネルのときには、前記トーンバッファTONEBUF1〜k中、チャンネルiに対応するトーンバッファ(本実施の形態では、トーンバッファTONEBUF1)のフリーEGバッファFREE_EGBUFに格納された各トラックTRACK1〜4の各割り当てデータDESIGNATIONに従って、当該割り当てられているシーンバッファSCENEBUFのパラメータを対応フリーEGバッファFREE_EGBUFのデータKNOBDATAの値に応じて変更し、チャンネルiのレジスタTGPARREGchiに転送する(ステップS154)。
【0195】
一方、ステップS153で、チャンネルiがフリーEG制御すべきチャンネルでないときには、割り当てられているシーンバッファSCENEBUFのパラメータを、チャンネルiのレジスタTGPARREGchiに転送する(ステップS155)。
【0196】
続くステップS156では、前記音源回路15の全チャンネル、すなわちチャンネルjまで、上記ステップS152〜155の処理を終了したか否かを判別し、まだ処理すべきチャンネルが残っているときには、インデックスiを“1”だけインクリメントして、前記ステップS152に戻る一方、全チャンネルについて処理を完了したときには、本パラメータ時変制御処理を終了する。
【0197】
図21〜23は、前記図9のステップS7の発音処理サブルーチンの詳細な手順を示すフローチャートである。
【0198】
図21において、まず、何らかのキーオン(keyon)イベントが発生したか否かを判別し(ステップS161)、キーオンイベントが発生しないときには、図23のステップS184に進む一方、キーオンイベントが発生したときには、そのキーオンイベントが前記図12〜14で説明したループシーケンサ処理で発生したものであるか否かを判別する(ステップS162)。
【0199】
ステップS162で、発生したキーオンイベントがループシーケンサ処理で発生したものであるときには、ステップS166に進み、前記トーンモードスイッチ26により選択された各種トーンモードに応じた発音処理を行う一方、発生したキーオンイベントがループシーケンサ処理で発生したものでないときには、前記制御モードCONT_MODEが前記ノーマル(normal)モードか否かを判別し、CONT_MODE=normalのとき、すなわち通常の押鍵音を発生するモードのときには、前記ステップS166に進み、CONT_MODE≠normalのときにはステップS164に進む。
【0200】
ステップS164では、制御モードCONT_MODEが前記ノートシフト&パターンセレクト共用モード(note_shift&patern_select)か否かを判別し、CONT_MODE=note_shift&patern_selectのときには、押鍵に対して発音はされないため、何もせずに本発音処理を終了する一方、制御モードCONT_MODEがノートシフト&パターンセレクト共用モードでないとき、すなわち前記ノートシフトモードまたはパターンセレクトモードのときには、押鍵が通常の押鍵音を発音する鍵域内のものであるか否かを判別する(ステップS165)。
【0201】
ステップS165で、押鍵が通常の押鍵音を発音する鍵域内のものであるときには、前記ステップS166に進む一方、押鍵が通常の押鍵音を発音する鍵域内のものでないとき、すなわちノートシフト鍵域またはパターンセレクト鍵域内のものであるときには、何もせずに本発音処理を終了する。
【0202】
ステップS166では、前記トーンモードとしてシングルトーンモードが選択されているか否かを判別し、シングルトーンモードが選択されているときには、音源回路15の空きチャンネルx(xは、1〜jのいずれかの整数値)に対して所定の発音割当処理を行い(ステップS167)、チャンネルxに対応するレジスタTGPARREGchxに、当該キーオンイベントの押鍵情報(たとえば、キーコードKCやキータッチTOUCH等)、前記共有データバッファCOMPARBUFの内容および補間値バッファSCENEBUFintpの内容を転送し(ステップS168)、音源回路15のチャンネルxに対してキーオン指示(発音指示)を行った(ステップS169)後に、本発音処理を終了する。
【0203】
一方、ステップS166で、トーンモードとしてシングルトーンモードが選択されていないときには、デュアルトーンモードが選択されているか否かを判別し(図22のステップS170)、デュアルトーンモードが選択されているときには、音源回路15の空きチャンネルx,y(xは、1〜jのいずれかの整数値であり、yは、xを除いた1〜jのいずれかの整数値である)に対して所定の発音割当処理を行い(ステップS171)、前記ステップS168と同様に、チャンネルxに対応するレジスタTGPARREGchxに、当該キーオンイベントの押鍵情報、共有データバッファCOMPARBUFの内容および補間値バッファSCENEBUFintpの内容を転送し(ステップS172)、チャンネルyに対応するレジスタTGPARREGchyに、当該キーオンイベントの押鍵情報、共有データバッファCOMPARBUFの内容および前記第2シーンバッファバッファSCENEBUF2の内容を転送し(ステップS173)、音源回路15のチャンネルxおよびyに対して、それぞれキーオン指示を行った(ステップS174)後に、本発音処理を終了する。
【0204】
一方、ステップS170で、トーンモードとしてデュアルトーンモードが選択されていないときには、スプリットトーンモードが選択されているか否かを判別し(ステップS175)、スプリットトーンモードが選択されているときには、当該キーオンイベントが前記シーンスライダ23の操作状態に応じて補間した音色で発音する鍵域内の押鍵に対するものであるか否かという条件(Ch.x_Split発音条件)が成立しているか否かを判別する(ステップS176)。
【0205】
ステップS176で、この発音条件が成立しているときには、ステップS177〜S179で、前記ステップS167〜S169と同様の処理を行って、当該キーオンイベントに対する発音指示を行う一方、この発音条件が成立していないときには、ステップS177〜S179をスキップしてステップS180に進む。
【0206】
ステップS180では、当該キーオンイベントが前記第2シーンスイッチ22に設定された音色で発音する鍵域内の押鍵に対するものであるか否かという条件(Ch.y_Split発音条件)が成立しているか否かを判別し、この発音条件が成立していないときには、何もせずに本発音処理を終了する一方、この発音条件が成立しているときには、音源回路15の空きチャンネルy(yは、xを除いた1〜jのいずれかの整数値)に対して所定の発音割当処理を行い(ステップS181)、チャンネルyに対応するレジスタTGPARREGchyに、当該キーオンイベントの押鍵情報、共有データバッファCOMPARBUFの内容および第2シーンバッファSCENEBUF2の内容を転送し(ステップS182)、音源回路15のチャンネルyに対してキーオン指示を行った(ステップS183)後に、本発音処理を終了する。
【0207】
なお、前述したように、スプリットトーンモードにおいて、補間音色で発音する鍵域と第2シーンスイッチ22に設定された音色で発音する鍵域との間に重なった鍵域がある場合には、前記キーオンイベントは、Ch.x_Split発音条件およびCh.y_Split発音条件をともに満足するため、1つの押鍵(キーオンイベント)に対して2種類の異なった音色(補間音色と第2シーンスイッチ22に設定された音色)の楽音が発音される。
【0208】
一方、ステップS175で、トーンモードとしてスプリットトーンモードが選択されていないときには、直ちに本発音処理を終了する。
【0209】
図23のステップS184では、キーオフイベントが発生したか否かを判別し、キーオフイベントが発生したときには、当該キーオフイベントに対応するキーオフ処理を実行した(ステップS185)後に、本発音処理を終了する一方、キーオフイベントが発生しないときには、前記図1のMIDII/F13を介して外部からMIDI信号のプログラムチェンジイベント(MIDI_Program_Change)を受信したか否かを判別する(ステップS186)。
【0210】
ステップS186で、プログラムチェンジイベントを受信したときには、前記図10のステップS12と同様に、このプログラムチェンジイベントで指定された音色qのパラメータを所定のバッファに転送して展開し(ステップS187)、前記ステップS13と同様に、セットフラグsetflg_1をセットするとともに、セットフラグsetflg_2をリセットした(ステップS188)後に、本発音処理を終了する。
【0211】
一方、ステップS186で、プログラムチェンジイベントを受信しないときには、その他のイベント処理を実行した後に、本発音処理を終了する。
【0212】
なお、ステップS190に示すように、ステップS186からステップS187に移行する前に、MIDI信号のチャンネルを確認し、新音色に移行するか否かをユーザに確認するようにしてもよい。
【0213】
なお、上記発音処理では、ループシーケンサ処理で発生したイベントもユーザ演奏により発生したイベントも、同一のトーンモードで発音するようにしたがこれに限らず、各々独立のトーンモードを設定して発音態様を決定できるようにしてもよい。また、各イベントには、MIDIチャンネルを設定できるようにし、そのMIDIチャンネル毎にトーンモードを設定するようにしてもよい。さらに、両者の組合せにしてもよい。
【0214】
このように、本実施の形態では、ループシーケンサの制御モードとしてノーマルモード、ノートシフトモード、パターンセレクトモードおよびノートシフト&パターンセレクト共用モードの4種類のモードを設け、押鍵に対して発生する楽音情報(キーイベント)を、その本来の目的、すなわち発生すべき楽音を指示する目的(ノーマルモード)のみならず、ループシーケンサの読出しパターンを変更したり、そのパターンを構成する楽音の楽音特性(音高)を変更したりするような制御指示目的(ノートシフト&パターンセレクト共用モード)のみ、または、本来の目的および制御指示目的双方の目的(ノートシフトモードまたはパターンセレクトモード)に使用するようにしたので、簡単な操作で、多様な演奏パターンを生成するとともに、その演奏パターンを構成する楽音の楽音特性を変更することができる。
【0215】
なお、本実施の形態では、本発明を自動演奏装置の形態で構成したが、これに限らず、パーソナルコンピュータとアプリケーションプログラムの形態で構成することもできる。このアプリケーションプログラムは、磁気ディスク、光ディスク、半導体メモリ等の記憶媒体に記憶させ、パーソナルコンピュータに供給するようにしてもよいし、ネットワークを介して供給するようにしてもよい。
【0216】
また、本実施の形態では、図1に示すように、本発明を音源装置(音源回路12、効果回路13およびサウンドシステム14)および自動演奏装置(CPU5)を内蔵した自動演奏装置で実現したが、これに限らず、それぞれ別体の装置で構成し、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各装置を接続して本発明を実現するようにしてもよい。
【0217】
さらに、本発明の適用装置としては、電子楽器、ゲームやカラオケ等のアミューズメント機器、テレビジョン等の各種家電機器、パーソナルコンピュータに代表されるコンピュータ装置およびシステム等が考えられる。
【0218】
【発明の効果】
以上説明したように、本発明に依れば、第1のモードが選択設定された場合には、読出し開始指示操作子の操作によって読み出し開始の指示がなされた後、読み出し開始指示操作子すべての操作終了が検出されるまで、楽音制御手段による楽音制御がなされる一方、第2のモードが選択設定された場合には、所定の停止操作または操作軌跡情報の読み出し完了が検出されるまで、前記楽音制御手段による楽音制御がなされるので、演奏の幅をより拡げることが可能となる効果を奏する。
【図面の簡単な説明】
【図1】本発明の実施の一形態に係る自動演奏装置の概略構成を示すブロック図である。
【図2】図1の自動演奏装置のパネル面に配設されたパネルスイッチ2を示す図である。
【図3】図1のROMのメモリマップの一例およびROMに記憶された各種データのデータフォーマットの一例を示す図である。
【図4】図1のRAMのメモリマップの一例およびRAMに設けられたトーンバッファのデータフォーマットの一例を示す図である。
【図5】図1の音源回路内に設けられたパラメータレジスタの構成の一例を示す図である。
【図6】図1のフロッピディスクやCD−ROM、サーバコンピュータの各種記憶媒体に記憶されたトーンパラメータデータTONEPARdおよびループシーケンサ用データLPSEQDATAdの一例を示す図である。
【図7】図3の共有パラメータデータCOMPARのデータ構造の一例を示す図である。
【図8】図3のトーンパラメータデータSCENEiのデータ構造およびトーンパラメータデータSCENEiに含まれる各種パラメータの機能を示す図である。
【図9】図1の自動演奏装置、特にCPUが実行するメインルーチンの手順を示すフローチャートである。
【図10】図9の音色指定・補間・編集処理サブルーチンの詳細な手順を示すフローチャートである。
【図11】図9の音色指定・補間・編集処理サブルーチンの詳細な手順を示すフローチャートである。
【図12】図9のループシーケンサ処理サブルーチンの詳細な手順を示すフローチャートである。
【図13】図9のループシーケンサ処理サブルーチンの詳細な手順を示すフローチャートである。
【図14】図13のループシーケンス演奏処理サブルーチンの詳細な手順を示すフローチャートである。
【図15】図9のフリーEG処理サブルーチンの詳細な手順を示すフローチャートである。
【図16】図9のフリーEG処理サブルーチンの詳細な手順を示すフローチャートである。
【図17】図9のフリーEG処理サブルーチンの詳細な手順を示すフローチャートである。
【図18】図9のフリーEG処理サブルーチンの詳細な手順を示すフローチャートである。
【図19】図9のフリーEG処理サブルーチンの詳細な手順を示すフローチャートである。
【図20】図9のパラメータ時変処理サブルーチンの詳細な手順を示すフローチャートである。
【図21】図9の発音処理サブルーチンの詳細な手順を示すフローチャートである。
【図22】図9の発音処理サブルーチンの詳細な手順を示すフローチャートである。
【図23】図9の発音処理サブルーチンの詳細な手順を示すフローチャートである。
【図24】ループ読出し態様の一例を示す図である。
【図25】フリーEGデータレコーディング時におけるノブの操作状態の書込み方法の他の一例を説明するための図である。
【符号の説明】
1 鍵盤
2 パネルスイッチ
5 CPU
6 ROM
7 RAM
10 FDD(フロッピディスクドライブ)
11 HDD(ハードディスクドライブ)
12 CD−ROM(コンパクトディスク−リード・オンリ・メモリドライブ)
Claims (1)
- 複数の演奏操作子と、
入力された楽音発生指示情報に応じて楽音を発生する楽音発生手段と、
演奏操作子の操作軌跡情報を記憶する操作軌跡情報記憶手段と、
該記憶された操作軌跡情報を読出す操作軌跡情報読出し手段と、
該操作軌跡情報の読出し開始を指示する読出し開始指示操作子と、
前記操作軌跡情報読出し手段により操作軌跡情報が読み出されたときに、該読み出された操作軌跡情報に基づいて前記楽音発生手段により発生された楽音を制御する楽音制御手段と、
前記読出し開始指示操作子の操作によって読み出し開始の指示がなされた後、前記読出し開始指示操作子すべての操作終了が検出されるまで、前記楽音制御手段による楽音制御を行う第1のモードと、該第1のモード時とは異なる所定の停止操作または操作軌跡情報の読み出し完了が検出されるまで、前記楽音制御手段による楽音制御を行う第2のモードとを選択的に設定する設定手段と
を有することを特徴とする自動演奏装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11626597A JP3541615B2 (ja) | 1997-01-14 | 1997-04-18 | 自動演奏装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9-17468 | 1997-01-14 | ||
JP1746897 | 1997-01-14 | ||
JP11626597A JP3541615B2 (ja) | 1997-01-14 | 1997-04-18 | 自動演奏装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10260680A JPH10260680A (ja) | 1998-09-29 |
JP3541615B2 true JP3541615B2 (ja) | 2004-07-14 |
Family
ID=26353983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11626597A Expired - Fee Related JP3541615B2 (ja) | 1997-01-14 | 1997-04-18 | 自動演奏装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3541615B2 (ja) |
-
1997
- 1997-04-18 JP JP11626597A patent/JP3541615B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10260680A (ja) | 1998-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002515987A (ja) | リアルタイム音楽作成システム | |
JP3770293B2 (ja) | 演奏状態の視覚的表示方法および演奏状態の視覚的表示プログラムが記録された記録媒体 | |
JP3521838B2 (ja) | 演奏動作表示装置、及び記録媒体 | |
JP3830615B2 (ja) | 自動演奏装置 | |
JP3541615B2 (ja) | 自動演奏装置 | |
JP4211709B2 (ja) | 自動演奏装置および同装置に適用されるコンピュータプログラム | |
JP3603599B2 (ja) | 演奏システムの視覚的表示方法および演奏システムの視覚的表示プログラムが記録されたコンピュータ読み取り可能な記録媒体 | |
JP3844286B2 (ja) | 電子楽器の自動伴奏装置 | |
JP2773638B2 (ja) | 自動演奏装置 | |
JP3606125B2 (ja) | 演奏制御装置及び方法 | |
JP3528051B2 (ja) | 演奏動作表示装置、及び記録媒体 | |
JPH10288987A (ja) | 電子楽器及び楽音制御データ発生装置 | |
JP3843688B2 (ja) | 楽曲データ編集装置 | |
JP3758041B2 (ja) | 楽音制御データ発生装置 | |
JP4214845B2 (ja) | 自動アルペジオ装置および同装置に適用されるコンピュータプログラム | |
JP5277814B2 (ja) | 電子音楽装置及びプログラム | |
JP3555255B2 (ja) | 自動伴奏装置 | |
JP3173704B2 (ja) | 自動演奏装置 | |
JP3988812B2 (ja) | 自動演奏制御装置 | |
JP2003050577A (ja) | 演奏動作表示装置、及びプログラム | |
JP3324318B2 (ja) | 自動演奏装置 | |
JP2947150B2 (ja) | 自動演奏装置 | |
JP3480001B2 (ja) | 自動演奏データ編集装置 | |
JPH11143463A (ja) | 自動演奏装置 | |
JP3451936B2 (ja) | 試聴用楽曲データ設定方法および試聴用楽曲データ設定プログラムが記録された記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040126 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040309 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040322 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090409 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090409 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100409 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110409 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120409 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130409 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140409 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |