命令処理装置及び命令処理方法。
【課題】命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令であっても、所定の待ち時間待機されて実行される。
【解決手段】イベントがあれば(ステップ71)、プログラム/データ記憶部のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され(ステップ72)、待ち時間情報がタイマにストアされ、待ち時間が経過すると(ステップ73)、命令引数のパラメータが楽音信号発生部5に送られる(ステップ75)。タイマインタラプト信号が送られてくれば、この待ち時間情報に対応する命令が終了され、次の命令が実行される(ステップ74〜79)。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。
【解決手段】イベントがあれば(ステップ71)、プログラム/データ記憶部のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され(ステップ72)、待ち時間情報がタイマにストアされ、待ち時間が経過すると(ステップ73)、命令引数のパラメータが楽音信号発生部5に送られる(ステップ75)。タイマインタラプト信号が送られてくれば、この待ち時間情報に対応する命令が終了され、次の命令が実行される(ステップ74〜79)。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、命令処理装置及び命令処理方法に関し、特に命令処理に無駄な空き時間が生じないような効率的に命令を処理するものに関する。
【背景技術】
【0002】
従来、命令処理にあたっては、時刻や待ち時間を指定して実行を命令する時刻・時間指定方式や、命令の処理の順序を指定し、命令実行の時刻は指定しない順序指定方式があった。例えば、MIDI形式の電子楽器間で送受されるミディ(MIDI)データは、この命令実行の時刻は指定しない順序指定形式となっている。
【0003】
上記時刻・時間指定方式では、メールボックスなどのメモリに時刻情報または待ち時間付きの命令が格納され、受信側のCPU/コントローラなどによって、このメールボックスの命令が順次閲覧されて、上記時刻情報が現在時刻に一致したら、または待ち時間に応じた時間が経過したら、この命令が実行される。
【0004】
また、上記順序指定方式では、メモリ/待ち行列に実行の順番に命令が格納/書き込まれ、受信側のCPU/コントローラなどによって、このメモリ/待ち行列の命令が順番に読み出され、順次実行され、上記時間情報または時刻情報はこの順序指定方式にはない。
【0005】
【特許文献1】特開平11−134128号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところが、命令の中には実行時刻・実行時間を指定するという命令もあり、このような命令が含まれる複数の命令が順次実行される場合には、上記時刻・時間指定方式では、実行の順番が各時刻に制限され、同一時間・時刻を指定された複数の命令の実行順序が不定となり、処理を待つすべての命令の指定時間・時刻を比較する必要があり、また現在時刻が上記時刻に到達するまで、または待ち時間に応じた時間が経過するまで、無駄に待ち時間が費やされてしまうという問題があった。また、上記順序指定方式では、時刻情報がもともと無いため、ある時刻またはある経過時間を指定して命令を実行させることができなかった。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本件発明では、発令順に命令が処理される命令実行システムに対して、命令の実行までの待ち時間または時刻を有する命令、及びその直後に実行すべき命令を発令する際に、前者に適切な待ち時間または時刻情報を付与して発令し、次いで後者に待ち時間が最小となるような待ち時間または時刻情報を付与して発令するようにする。
【発明の効果】
【0008】
これにより、待ち時間・時刻を有する命令が正しく待ち時間を経過した後または正しい時刻に実行され、またこれに続いて実行されるべき待ち時間・時刻を有さない命令が正しい順序で実行される。
【0009】
エフェクトモード切替えのとき、フェードアウト実行後、一定時間経過を待ってモード切替えと、パラメータ転送とを行わなくてはならない。そうしなと、ノイズが入ったり聴覚上違和感が発生するからである。パラメータ転送の方はモード切替え後直ちに実行してもノイズが入らないが、モード切替えと、パラメータ転送との実行順序を逆にはできない。モードは、エフェクトの種類を指す。
【0010】
メールボックス方式では、全部のメールが走査された上で時間データが比較される。しかし、同一時間データの命令の後先/優先順位/実行順位は判断ができない。FIFO(ファーストインファーストアウト)方式では、順位を間違えることはなく、全命令を走査する必要はない。しかし、実行するまでの待機時間を実現することが難しい。
【0011】
本発明では、FIFO方式の命令に発行時刻と待ち時間または待ち時刻のデータを付加し、モード切替えには消音の待機時間を付加し、パラメータ転送には待機時間を最小にして付加するようにしたので、実行の順番が間違わず、待機時間を実現しながら、モード切替えとパラメータ転送とが実行される。
【0012】
上記待ち時間情報は、命令の発令時刻から該命令が実行されるべき時刻までの時間間隔を示す。また、上記待ち時刻情報は、該命令が実行されるべき時刻を示す。上記その直後に実行すべき命令の、見た目の実行時刻は、上記命令の実行までの待ち時間または時刻を有する命令の実行時刻以前になる。しかし、この場合でも、実際に上記その直後に実行すべき命令が実行されるのは、上記命令の実行までの待ち時間または時刻を有する命令の実行時刻より後になる。
【発明を実施するための最良の形態】
【0013】
(1)全体回路
図1は、命令処理方法を実現する全体回路、命令処理方法のためのコンピュータプログラムを実行する全体回路、並びに命令処理装置または電子楽器の全体回路1を示す。
【0014】
キーボード11の各キーは、楽音の発音及び消音を指示するもので、キースキャン回路12によってスキャンされ、キーオン、キーオフを示すデータが検出され、前回のスキャンが行われた際に検出された各キーのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が為され、イベントがあれば外部インタラプト信号OINがキースキャン回路からコントローラ2に送り込まれる。
【0015】
このキーボード11の各キーには段差タッチスイッチなどの速度センサー、加速度センサー、圧力センサーが設けられ、段差スイッチごとに上記スキャンが行われ、各段差スイッチの先頭のオン/オフごとにオンイベント/オフイベントの検出が行われる。この段差スイッチなどのセンサーによってタッチの速さと強さを示す上記タッチ情報つまりイニシャルタッチデータとアフタタッチデータとが発生される。なお、キーボード11は、電子弦楽器、電子吹奏(管)楽器、電子打楽器(パッド等)、コンピュータのキーボード等で代用される。
【0016】
パネルスイッチ群13の各スイッチは、スイッチスキャン回路14によって、スキャンされる。このスキャンにより、各スイッチのオン、オフを示すデータが検出され、前回のスキャンが行われた際に検出された各スイッチのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が為され、イベントがあれば外部インタラプト信号OINがキースキャン回路からコントローラ2に送り込まれる。
【0017】
ミディ(MIDI)回路15は、外部接続された電子楽器との間で演奏情報や楽音波形信号の送受を行うためのインターフェースである。この演奏情報はMIDI(ミュージカルインスツルメントデジタルインターフェース)規格のもので、この演奏情報に基づいた発音も行われる。
【0018】
ミディ回路15に情報が外部から送り込まれると、外部インタラプト信号OINがミデイィ回路15からコントローラ2に送り込まれる。この外部インタラプト信号OINは上記キースキャン回路、スイッチスキャン回路あるいはミディ回路15に限らず、本命令処理装置に接続された外部接続機器からも送られてくる。
【0019】
上記キーボード11、パネルスイッチ群13またはミディ回路15には、自動演奏装置も含まれる。これらキーボード11、パネルスイッチ群13、ミディ回路15及び自動演奏装置から発生された演奏情報(楽音発生情報)は、楽音を発生させるための情報である。
【0020】
上記演奏情報(楽音発生情報)は、音楽的ファクタ(因子)情報であり、音高(音域)情報(音高決定因子)、発音時間情報、演奏分野情報、発音数情報、共鳴度情報などである。発音時間情報は楽音の発音開始からの経過時間を示す。演奏分野情報は、演奏パート情報、楽音パート情報、楽器パート情報等を示し、例えばメロディ、伴奏、コード、ベース、リズム、MIDI等に対応したり、または上鍵盤、下鍵盤、足鍵盤、ソロ鍵盤、MIDI等に対応したりしている。
【0021】
上記音高情報はキーナンバデータKNとして取り込まれる。このキーナンバデータKNはオクターブデータ(音域データ)と音名データとからなる。演奏分野情報は、パートナンバデータPNとして取り込まれ、このパートナンバデータPNは各演奏エリアを識別するデータであって、発音操作された楽音がどの演奏エリアからのものかによって設定される。
【0022】
発音時間情報は、トーンタイムデータTMとして取り込まれ、キーオンイベントからのタイムカウントデータに基づいたり、またはエンベロープフェーズなどが転用されたりする。この発音時間情報は特願平6−219324号明細書及び図面に発音開始からの経過時間情報として詳しく示される。
【0023】
発音数情報は同時に発音している楽音の数を示し、例えばアサインメントメモリ40のオン/オフデータが「1」の楽音の数に基づき、この数は特願平6−242878号の図9及び図15、特願平6−2476855号の図8及び図18、特願平6−276857号の図9及び図20、特願平6−276858号の図9及び図21のフローチャートに基づいて求められる。
【0024】
さらに、上記パネルスイッチ群13には各種スイッチが設けられ、この各種スイッチは音色タブレット、エフェクトスイッチ、リズムスイッチ、ペダル、ホイール、レバー、ダイヤル、ハンドル、タッチスイッチ等であって楽器用のものである。このペダルはダンパーペダル、サスティンペダル、ミュートペダル、ソフトペダル等である。パネルスイッチ群13には、エフェクトモード切替えスイッチ、エフェクトパラメータスイッチなどが設けられ、エフェクトのモード設定/切替え、エフェクトのパラメータの設定などが行なわれる。
【0025】
この各種スイッチより、楽音制御情報が発生され、この楽音制御情報は発生された楽音を制御する情報であって音楽的ファクタ(因子)情報であり、音色情報(音色決定因子)、タッチ情報(発音指示操作の速さ/強さ)、発音数情報、共鳴度情報、エフェクト情報、リズム情報、音像(ステレオ)情報、クオンタイズ情報、変調情報、テンポ情報、音量情報、エンベロープ情報等である。これら音楽的ファクタ情報も上記演奏情報(楽音情報)に合体され、上記各種スイッチより入力されるほか、上記自動演奏情報に合体されたり、上記インターフェースで送受される演奏情報に合体されたりする。
【0026】
上記音色情報は、鍵盤楽器(ピアノ等)、管楽器(フルート等)、弦楽器(バイオリン等)、打楽器(ドラム等)の楽器(発音媒体/発音手段)の種類等に対応しており、トーンナンバデータTNとして取り込まれる。上記エンベロープ情報は、エンベロープレベルEL、エンベロープタイムET、エンベロープフェーズEFなどである。
【0027】
このような音楽的ファクタ情報は、コントローラ2へ送られ、後述の各種信号、データ、パラメータの切り換えが行われ、楽音の内容が決定される。上記演奏情報(楽音発生情報)及び楽音制御情報はコントローラ2で処理され、各種データが楽音波形発生部5へ送られ、楽音波形信号MWが発生される。コントローラ2はCPUなどからなり、場合によってDSP(デジタルシグナルプロセッサ)、ROM及び/またはRAMなどを含む。このようなコントローラ2は、図1の回路ごとに分散されて設けられてもよい。
【0028】
プログラム/データ記憶部4には、楽音波形信号が記憶され、場合によってミディ回路15から送られてきた楽音波形信号が書き込まれる。このプログラム/データ記憶部4の楽音波形信号は、情報記憶部7に直接またはバスラインを介してコピーされて、他の装置に組み込まれ、楽音信号発生部5に転送される。
【0029】
プログラム/データ記憶部4(内部記憶媒体/手段)はROMまたは書き込み可能なRAM、フラッシュメモリまたはEEPROM等の記憶装置からなり、光ディスクまたは磁気ディスク等の着脱自在な情報記憶部7(外部記憶媒体/手段)に記憶されるコンピュータのプログラムが書き写され記憶される(インストール/転送される)。またプログラム/データ記憶部4には外部の電子楽器またはコンピュータから上記ミディ回路15または送受信装置を介して送信されるプログラムも記憶される(インストール/転送される)。このプログラムの記憶媒体は通信媒体も含む。
【0030】
このインストール(転送/複写)は、情報記憶部7が本楽音生成装置にセットされたとき、または本楽音生成装置の電源が投入されたとき自動的に実行され、または操作者による操作によってインストールされる。上記プログラムは、コントローラ2が各種処理を行うための後述するフローチャートに応じたプログラムである。
【0031】
なお、本装置に予め別のオペレーティングシステム、その他のプログラムが記憶され、上記プログラムはこれらのオペレーティングシステム、その他のプログラムとともに実行されてもよい。このプログラムは本装置(コンピュータ本体)にインストールされ実行されたときに、別のプログラムとともにまたは単独で請求項(クレーム)に記載された処理・機能を実行させることができればよい。なお、このようなオペレーティングシステムなどは後述するフローチャートで示されるものであるが、本装置に無くても良い。
【0032】
また、このプログラムの一部又は全部が本装置以外の1つ以上の別装置に記憶されて実行され、本装置と別装置との間には通信手段を介して、これから処理するデータ/既に処理されたデータ/プログラムが送受され、本装置及び別装置全体として、本発明が実行されてもよい。
【0033】
このプログラム/データ記憶部4には、上述した音楽的ファクタ情報、上述した各種データ及びその他の各種データも記憶される。この各種データには時分割処理に必要なデータや時分割チャンネルへの割当のためデータ等も含まれる。
【0034】
楽音信号発生部5では、上記楽音波形信号がいったん記憶され、指定された音高に応じた速度で読み出され、エンベロープ波形信号が合成されて、サウンドシステム6で楽音として出力され放音される。この楽音信号発生部にはDSP(デジタルシグナルプロセッサ)が設けられている。DSPでは、上記エフェクトに応じた処理が実行され、エフェクト制御された楽音がサウンドシステム6から出力され放音される。
【0035】
このような楽音波形信号の波形は、上述の音色、タッチ、音高、音域、発音時間、演奏分野、発音数、共鳴度などの情報によって、切り換えられ変化される。このような楽音波形信号は伸張再生前の圧縮記憶状態のものが楽音信号発生部5に記憶され、楽音信号発生部5で伸張再生されてもよい。
【0036】
タイミング発生部3からは、楽音生成装置の全回路の同期を取るためのタイミングコントロール信号が各回路に出力される。このタイミングコントロール信号は、各周期のクロック信号のほか、これらのクロック信号を論理積または論理和した信号、時分割処理のチャンネル分割時間の周期を持つ信号、チャンネルナンバデータCHNo、タイムカウントデータTIなどを含むが、含まれなくてもよい。
【0037】
また、このタイミング発生部3から一定周期ごと、例えば200マイクロ秒ごとの周期インタラプト信号SINが上記コントローラ2に送られる。上記タイムカウントデータTIは、絶対時間つまり時間の経過を示し、このタイムカウントデータTIのオーバーフローリセットから次のオーバーフローリセットまでの周期は、各楽音のうち最も長い発音時間、または最も長いジョブまたはイベントの処理時間より長く、場合によって数倍に設定される。このタイムカウントデータTIは無くてもよい。
【0038】
本装置では複数のジョブが並列に動作しており、この周期インタラプト信号SINの出力を契機として、上記オペレーティングシステムによって、現種実行しているジョブから別のジョブに制御が移行される。この周期インタラプト信号SINの周期は、該切替えがあまり頻繁になって切替え処理自体が負担になるほど短くなく、かつ本装置の応答が遅れるほど長くなく、例えば200マイクロ秒に設定される。
【0039】
タイマ16は、フリ−ランタイプである。このタイマ16のオーバーフローリセットから次のオーバーフローリセットまでの周期は、もっとも長いジョブ処理時間より長く、場合によって最も長いジョブまたはイベント処理より長く、場合によって数倍に設定される。このタイマ16のカウントの分解能は誤差として実用上問題がないだけの時間幅例えば10マイクロ秒とされる。
【0040】
なお、タイマ16の値は、命令実行までの待ち時間または時刻として後述の命令キューにストアされるほか、各種の時間に関連する用途に用いてもよい。また、タイマ16には、命令実行までの待ち時間に応じた1つまたは複数の時間情報がストアされ、経過時間が所定周期、例えば10マイクロ秒でデクリメントまたはインクリメントされ、この各時間情報に応じた待ち時間が経過するごとに、タイマインタラプト信号TINが上記コントローラ(CPU)2またはその他の回路などへ送り込まれて、時間情報に応じた待ち時間が経過したことが判別されてもよい。
【0041】
上記命令キューに待ち時間を記憶する場合は、命令発行時刻としてこの現在時刻がストアされ、また待ち時間として所定の時問がストアされる。一方、上記命令キューに待ち時刻が記憶される場合は、命令発行時間としてこの現在時刻がストアされ、待ち時刻として現在時刻に所定の時間を加算した値がストアされる。その後他の処理が行われるなどの時間経過の後、該命令を処理する段に於いて、現在時刻が該回路によって命令発行時より進められた値となっている。
【0042】
そこで命令キューに待ち時間を記憶する場合、キューにストアされた命令発行時刻と待ち時間とが加算されれば命令を実行すべき時刻が得られるが、この加算結果と上記進められた現在時間とが比較されることによって待ち時問が経ったかどうかが判別される。同様に命令キューに待ち時刻が記憶される場合、キューにストアされた待ち時刻と上記進められた現在時刻とが比較されることによって待ち時刻が過ぎたかどうかが判別される。
【0043】
(2)プログラム/データ記憶部4
図2は上記プログラム/データ記憶部4に設けられた命令キューの構造を示す。命令キューは複数のコラム(連続した記憶エリアの塊、実施例では6ワードの連続した記憶エリア)からなっている。各コラムは上記プログラム/データ記憶部4のRAM内の空きエリアに分散して設けられているが、先頭及び末尾コラムのアドレスがレジストされ、各コラムのアドレスを直前のコラムが記憶しているために順次読み出すことができる。
【0044】
一コラムが読み出されたら、上記レジストされた先頭コラムのアドレスが、読み出したコラムに記憶された次コラム(読み出し開始の時点で二番目のコラム)のアドレスに書き変えられ、これによって、読み出されたコラムが占めるエリアを開放することができる。
【0045】
また、コラムを追加する場合は、まず上記レジストされた末尾コラムのアドレスから末尾のコラムを探し、このコラムに記憶された次アドレスに新たなコラムの命令をセットする。次に上記末尾コラムのアドレスのレジストを、新たに命令をセットしたコラムのアドレスに書き変える。
【0046】
最後に上記RAM内にコラムのサイズ分だけの連続した記憶エリアを探し、その先頭アドレスを該新たなコラムの「次コラムのアドレス」としてセットする。この各コラムに記憶された命令は図8及び図9に記載されたジョブから図10に記載されたジョブへのジョブ間通信として受け渡される。
【0047】
この各コラムに記憶された各命令は、各命令の実行までの待ち時間、または各命令が実行されるべき待ち時刻情報を有しており、後述する図8/図9のジョブから図10のジョブへのジョブ間通信で渡される命令群であるが、待ち時間/時刻情報を省略してその他のジョブ間通信(例えば図8と図11)にも用いてもよい。
【0048】
上記ミディ回路15、または上記スイッチスキャン回路14によって、上記楽音信号発生部5のDSPで動作するエフェクトのモード切替えが指示された場合、
上記命令キューには待ち時間または時刻を適切に設定されたエフェクトモード切替え命令と、待ち時間を最小または待ち時到をエフェクトモード切替え命令と同程度以前に設定されたエフェクトパラメータ設定命令が連続したコラムにセットされる。
【0049】
上記ミディ回路15、上記キーボードスキャン回路12、または上記スイッチスキャン回路14によって、上記エフェクトのモード切替え及び/またはエフェクトのパラメータ設定以外の指示があった場合(例えば、押・離鍵、音色変更、コントロール変更など)、これらの命令には直ちに対応することが予め判っているため、待ち時間/待ち時刻情報を省略して上記命令キューを用いて図11のジョブなどに命令を渡してもよい。
【0050】
1命令をストアするコラムは複数のデータを連続したアドレスに記憶している。コラムに記憶された命令データは、命令内容、命令引数、発行時刻、時間情報、次コラムのアドレスなどからなっている。命令内容は上記DSPに命令される内容を示す。命令内容は2つのバイトからなり、上位バイトは命令タイプつまりエフェクトモード切替えかエフェクトパラメータ設定かを示し、下位バイトは切替えまたは設定するエフェクトのパート番号を示す。
【0051】
命令引数は、2つのワードからなり、上位バイトは第一パラメータ値を示し、下位バイトは第二パラメータ値を示す。命令タイプがエフェクトモード切替えである場合、命令引数はモード番号を表す。エフェクトモードとはエフェクトの種類であり、リバーブ、エコー、イコライザ等を示す。
【0052】
また、命令タイプがエフェクトパラメータ切替えである場、命令引数はそれぞれのエフェクトモードにおけるパラメータ値を表す。 例えばエフェクトモードがリバーブの場合、
エフェクトパラメータは初期反射時間、後部残響時間など、エフェクトモードがエコーの場合、エフェクトパラメータはディレイタイム、リピートレートなど、エフェクトモードがイコライザの場合、エフェクトパラメータはハイバンドゲイン、ローバンドゲインなどを表す。これらの命令引数は2つのバイトから成り、上位バイトは第1パラメータ値を、下位バイトは第2パラメータ値を示す。
【0053】
上記発行時刻はこの命令が発行された時刻を示し、上記タイマ16が示す現在時刻がセットされる。この発行時刻は、上記エフェクトモード切替え命令及びそれに続くエフェクトパラメータ設定命令を発行する際に、上記タイマ16からコントローラ2によって読み取られ、上記命令キューに書き込まれる。次コラムアドレスはこの命令の次に実行すべき命令が記憶されているコラムのアドレスを示す。
【0054】
上記時問情報は、上記エフェクトモード切替え命令が発行されてから実行されるまでの待ち時間、及び上記エフェクトパラメータ設定命令が発行されてから実行されるまでの待ち時間を示す。このとき、エフェクトモード切替え命令の時間情報が適切な待ち時問を示すのに対し、エフェクトパラメータ設定命令の待ち時間は最小の待ち時間を示すので、見かけ上エフェクトパラメータを設定してからエフェクトモードを切り替えるようになる。しかし、エフェクトパラメータ設定命令は必ずエフェクトモード切替え命令の実行後に実行されるので、上述のような順序逆転は生じない。
【0055】
この時間情報は、上記エフェクトモード切替え命令及びエフェクトパラメータ設定命令が実行されるべき時刻であっても良い。この場合、命令発行時刻を タイマ16から読み出し、エフェクトモード切替え命令が必要とする待ち時間を加えて時間情報としてセットする。エフェクトパラメータ設定命令の時間情報には、この時間情報以前の値をセットするので、見かけ上エフェクトパラメータを設定してからエフェクトモードを切り替えるようになる。しかし、エフェクトパラメータ設定命令は必ずエフェクトモード切替え命令の実行後に実行されるので、上述のような順序逆転は生じない。
【0056】
上記のように、 ミディ回路15またはスイッチスキャン回路14で発生したエフェクトモード切替えイベントに応じて、適切な待ち時間または時刻を付与されたエフェクトモード切替え命令とエフェクトパラメータ設定命令が命令キュー図2に書き込まれる。
【0057】
時間情報が待ち時間の場合、上記発行時刻と時間情報の加算値はタイマ16でカウントされている現在時刻と比較され、実行時刻に達したことが判別されるが、上記待ち行列にストアされている間、時間情報がタイマ16の歩進毎に順次デクリメントされ、負になるのをもって実行時刻に達したことを判別しても良い。このデクリメントのためにタイマインタラプト信号TINを用いても良い。
【0058】
また、時間情報が待ち時刻の場合、上記時間情報はタイマ16でカウントされている現在時刻と比較され、実行時刻に達したことが判別されるが、上記待ち行列にストアされている間、時間情報がタイマ16の歩進毎に順次デクリメントされ、発行時刻以前になるのをもって実行時刻に達したことを判別しても良い。このデクリメントのためにタイマインタラプト信号TINを用いても良い。
【0059】
上記時間情報が待ち時問か待ち時刻かに依らず、各命令が収められたコラムはプログラム/データ記憶部4のRAM内の任意の位置に配置されて良い。ただし、それらは上記レジストされた先頭及び末尾アドレスと、各コラム内の次コラムアドレスによって、いずれの場合も書きこまれ、発行された順に読み出され実行される。
【0060】
上記エフェクトモード切替え命令の時間情報は、待ち時間データの場合、現在発音中の楽音がDSPによりフェードアウト処理され、モード切替えによるノイズが発生しなくなるのに十分な時問、例えば100マイクロ秒に相当する値に設定される。待ち時刻データの場合は、現在時刻に100マイクロ秒に相当する値を加えた値に設定される。
【0061】
上記エフェクトパラメータ設定命令の時間情報は、待ち時間データの場合、設定しうる最小値(例えばゼロ、またはゼロ値を何らかの目的で他用している場合は「1」など)に設定される。待ち時刻データの場合は、現在時刻から先行するエフェクトモード切替え命令の待ち時刻データの間のいずれかの値、もしくはその前後の値に設定される。
【0062】
プログラム/データ記憶部4には、この他に本発明に係るプログラム、該プログラムが動作するためのデータ、および該プログラムが値を一時記憶するための一時記憶エリアなどが設置される。
【0063】
(3)全体処理
図3は上記コントローラ(CPU)2によって実行される全体処理のフローチャートを示す。この全体処理は、本命令処理装置の電源オンによって開始され、電源オフまでステップ02〜06の処理の一部が繰り返し実行される。まず、プログラム/データ記憶部4の初期化など種々のイニシャライズ処理が行われる(ステップ01)。
【0064】
このイニシャライズ処理では、上記プログラムの命令を実行/処理するのに必要な初期データ、モードデータまたは音楽的ファクタ(音色、タッチ、音高、発音時間)データなどが上記プログラム/データ記憶部4、コントローラ2内の上記RAM、楽音信号発生部5またはサウンドシステム6に書き込まれる等され、後述するそれぞれのジョブ(作業)処理の起動/準備がなされる。
【0065】
次いで、外部割込みを契機として発生する割込みイベントEVが発生されていなければ(ステップ02)、後述する各ジョブのいずれかを起動するジョブ処理が実行される(ステップ03)。また、外部割込みを契機として発生する割込みイベントEVが発生されていれば、その割込みイベントEVが電源ボタンの押下によるものの場合(ステップ04)、後述する終了処理が実行される(ステップ05)。
【0066】
一方、ステップ04で割込みイベントEVが電源ボタンの押下によるものでなければ、割込処理(ステップ06)が実行される。割込処理では、発生した割込(押鍵、離鍵、音色制御、発音制御など)の内容に応じて、それを処理すべきジョブ(後述する)の優先度が最上位に上げられ、それ以外のジョブの優先順位が下げられ、割込みイベントEVがクリアされる。
【0067】
この後、制御は(A)の位置に移動される。この時点で割込みイベントEVはクリアされているので、ステップ02ではジョブ処理(ステップ03)が選択される。ステップ03では、上記割込みに対応するジョブの優先順位が最上位となっているので、当該ジョブがステップ03によって実行される。
【0068】
(4)周期割込みルーチン/処理
図4は周期割込みルーチン/処理のフローチャートを示す。このルーチン/処理は、上記タイミング発生部3からの周期インタラプト信号SINがコントローラ2に送られるごとに実行される。まず、優先変更処理が行なわれ(ステップ11)、戻り先格納処理が実行され(ステップ12)、上記ステップ01とステップ02の間の処理位置Aに戻る。
【0069】
上記優先変更処理(ステップ11)では、直前までコントローラ2が実行していた処理の優先順位が下げられて、後述する休眠状態でない他のジョブの優先順位が上げられる。上記戻り先格納処理(ステップ12)では、この周期割込みルーチン/処理の直前まで実行されていた処理位置などがRAMなどに格納される。
【0070】
(5)外部割込みルーチン/処理
図5は上記コントローラ(CPU)2によって実行される外部割込みルーチン/処理のフローチャートを示す。このルーチン/処理は、ミディ回路15などの外部接続機器からの外部インタラプト信号OINがコントローラ2に送られるごとに実行される。まず、戻り先格納処理が実行される(ステップ21)。
【0071】
次いで、ドライバ処理で、外部から送られてきた情報が取り込まれ(ステップ22)、割込みイベントEV処理で、取り込まれた情報が一連の命令として完結していれば、割込みイベントEVが発生されて(ステップ23)、上記ステップ01とステップ02の間の処理位置Aに戻る。
【0072】
この戻り先格納処理(ステップ21)は上記ステップ12と同じ動作である。
【0073】
上記ステップ22で取り込まれる情報は、一連または一つの命令が複数の情報に分割されて所定量例えば1バイトずつ送られて来ることがある。例えばMIDIデータでは数バイトからなるコマンドが1バイトずつ送られる。
【0074】
(6)ジョブ処理(ステップ03)
図6は上記ステップ03のジョブ処理を示す。まず後述の複数のジョブそれぞれにつき、どのジョブの優先順位が高いか判断され(ステップ31)、一番優先順位の高いジョブが実行される(ステップ32)。この優先順位は、上記ステップ06、11などで設定/変更されたものである。ステップ32は後述のいずれかのジョブの実行を、そのジョブが最後に実行されたステップの次のステップから再開するが、当該ジョブが後述する休眠状態に入っている場合は例外としてそのジョブの先頭から実行を再開する。
【0075】
この各ジョブでは上述のエフェクトモード切替え、エフェクトパラメータ設定の他、音色番号変更、ビブラートなどの音楽的効果、音高(トランスポーズ、チューンなど)情報、トーン(高調波成分含有率、フィルタカットオフ周波数など)情報、タッチ(ベロシティ感度、オフセットなど)情報、エンベロープ(アタック、ディケイ、リリースなど)情報などの設定または変更処理といった楽音制御処理が実行される。
【0076】
このジョブ処理によって、上記複数のジョブのいずれかが実行されるが、各ジョブの実行中は、上記タイマ割込み、外部割込みが許可されている。これら割込みにより周期割込みまたは外部割込みルーチン/処理が呼び出され、実行された後は、各ジョブの割込みの発生した場所の次ではなく、図3の(A)の位置に復帰する。この際に、上記割込みの発生した場所の次の位置は各割込みルーチン内で保存され、当ジョブ処理ルーチンが各ジョブを再度実行させる場合は、上記保存された位置から実行が再開される。
【0077】
(7)終了処理(ステップ05)
図7は上記ステップ05の終了処理のフローチャートを示す。まず、割込みを指示するタイマ、外部または周期のインタラプト信号TIN、OINまたはSINが送られてきても、割込み処理を禁止する(ステップ41)。これにより、終了処理が割込み処理に優先され、終了が遅れてしまうことがなくなる。
【0078】
したがって、上述の待ち時間情報に応じた時間が経過するまでに、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了することになる。
【0079】
次いで、プログラム/データ記憶部に、電源遮断時に記憶を維持している書換え可能なメモリ(フラッシュメモリやバックアップバッテリ付きRAMなど)がある場合は、編集可能なデータがRAMから上記メモリに転写される(ステップ42)。編集可能なデータを記憶しているRAMが電源遮断時に記憶を維持しているメモリである場合は、この動作は不要となる。その後、電源回路に対し電源切断が命令されて(ステップ43)、処理が終了される。
【0080】
(8)イベント処理ジョブ
図8はコントローラ2に於いてステップ03が並列に実行させる複数のジョブの一つであるイベント処理ジョブを示す。まずキーボードスキャン回路12で押鍵イベントまたは離鍵イベントが発生すると、上記外部割込が発生し、割込みイベントEVが発生する。このためステップ06が駆動されてジョブの優先順位が変化し、押鍵及び離鍵を処理するジョブとして当イベント処理ジョブが最優先となり、ジョブ処理ステップ03が当ジョブを動作させる。
【0081】
同様にスイッチスキャン回路14で音色変更、コントロール変更等のイベントが発生した場合もステップ03が当ジョブを動作させる。さらに、ミディ回路15で一連のMIDIコマンドを受信し終えた場合も、ステップ03が当ジョブを動作させる。当ジョブは最後にタイマまたは外部割込みにより中断した場所の次から動作を再開するが、処理の続きを実行した後先頭(ステップ51)に戻る。
【0082】
この時点で以前から蓄積されているイベントがあればそのイベントを、なければ最後に発生したイベントを実行する(ステップ51)。イベントがキーオンまたはオフイベントであった場合(ステップ52)楽音信号発生部5および外部接続機器に、該キーの音高に応じた楽音で発音を開始、または終了するよう指示が送信される(ステップ53)。
【0083】
また、イベントが音色変更、コントロール変更などのパネルイベントであった場合(ステップ54)、この音色変更、コントロール変更などが楽音信号発生部5および外部接続機器に送信される(ステップ55)。
【0084】
さらに、イベントがMIDIイベントであった場合、そのMIDIイベントが楽音信号発生部5に送信される(ステップ57)。MIDIイベントをさらに外部接続機器に送信しても良い。一方、ステップ51で当ジョブが処理すべきイベントが発生していない場合、当ジョブは休眠状態となる(ステップ58)。
【0085】
この休眠状態では、当ジョブは自分自身の優先順位を最下位にし、他の休眠していないジョブの優先順位を1ずつ上げ、休止命令や無限ルーブなどの休眠コマンドが実行される。休眠状態からの復帰は上記ステップ06で、当ジョブで処理すべきイベントが発生したときに行われる。休眠状態から復帰する場合は、処理は最後に中断した位置の次からではなく、ジョブの先頭(ステップ51)からとなる。
【0086】
この休眠処理によって、外部割込みが発生し、割込み処理(ステップ06)、ジョブ処理(ステップ03)を経由して、当ジョブが再度駆動させられるまで、当ジョブが休眠される。これにより、他のジョブが優先して実行され、コントローラ2(CPU)が効率よく使用される。
【0087】
このイベント処理ジョブはジョブ処理(ステップ03)から駆動される独立したジョブ(アプリケーション、プロセス、タスクなどと呼んでも良い)として記載されているが、図3乃至図7と一体に動作する単一のプログラムの一部であっても良い。
【0088】
(9)パネル処理(ステップ55)
図9は上記ステップ55のパネル処理のフローチャートを示す。まず、エフェクトモードについて切替え操作、設定操作または変更操作があれば(ステップ61)、上記楽音信号発生部5のDSPの使用権が獲得される(ステップ62)。
【0089】
この使用権は以下の手順で獲得される。まずプログラム/データ記億部4にデバイス(この場合はDSP)毎に設けられた図示しないFIFO(ファーストインファーストアウト)メモリの最後に当ジョブを示す識別コードが追加される。次いで、当ジョブの優先順位が最下位から二番目に設定される。そして上記FIFOメモリの先頭を観察し、当ジョブの識別コードが先頭に来るのを待つ。
【0090】
当ジョブの識別コードが先頭に着いたら、当ジョブの優先順位を元に戻す。このとき優先順位を下げるのは、使用権獲得までの間に、他のジョブを優先して実行させ、DSPの使用権を握っているジョブが早く使用を終えて使用権を開放するためである。また、優先順位を最下位でなく最下位から二番目にするのは、休眠状態と区別するためである。
【0091】
本実施例では使用権渡得はイベントではないので、休眠状態と同じにしてしまうとジョブの実行が遅れることがある。上記に代えて、使用権の獲得をイベントとなるようにして優先順位を最下位にしても良い。
【0092】
この使用権の獲得と開放は、コントローラ2(CPU)上で並列に動作する複数のジョブが使用を競合する可能性のあるすべてのデバイスについて、各ジョブで必ず行われる。本発明では上記DSPの他、同じ楽音信号発生部5にある音源回路、プログラム/データ記憶部4に設けられたトーンデータテーブル、レジストメモリテーブルなどに対して、上記FIFOメモリがそれぞれ別途設けられ、別途使用権の獲得と開放が行われる。なお、使用権獲得と開放にはFIFOメモリを用いる上記の方法以外の方法が用いられても良い。
【0093】
次いで、発生中の楽音のミュート処理が行なわれる(ステップ63)。このミュート処理では、楽音信号発生部5に於いて、イベントの発生した当該パートで発音中の楽音につき、所定時間例えば100マイクロ秒をかけて徐々に消音を行うようDSPに指示する処理が行われる。この消音が完了すれば、エフェクトモードを切り替えても雑音が発生することがないが、当該指示を行った直後は、まだノイズ無しでエフェクトモードを切り替えることはできないので、この段階ではエフェクトモード切替えはDSPに指示しない。
【0094】
そして、上記DSPの上記使用権が開放され(ステップ64)、即ち上記FIFOメモリが歩進され、次いでエフェクトモード切替え命令が、100マイクロ秒の待ち時間、または現在時刻の100マイクロ秒後の待ち時刻とともに図2に示す命令キューに1コラム書き込まれた上で、エフェクトモード切替えの割込みイベントEVが発行される(ステップ65)。
【0095】
さらに、切替え後の初期パラメータを設定させるために、エフェクトパラメータ設定命令が待ち時間ゼロ、または現在時刻から上記待ち時刻と略同一の値までの適切な値を示す待ち時刻/待ち時間とともに、上記命令キューに1コラム書き込まれた上で、エフェクトパラメータ設定の割込みイベントEVが発行される(ステップ66)。各コラムの次アドレスは上記の方法で1コラム書き込む毎に設定する。このとき、エフェクトモード切替え命令を外部にも送信する。
【0096】
これにより図2の命令キューの最後のコラムにエフェクトモード切替え命令とエフェクトパラメータ設定命令が書き込まれる。この場合、エフェクトモード切替え命令は、例えば、命令内容が0xE003(上位二桁がエフェクトモード切替えを示すコード、下位二桁が切替えパート)、命令引数は0x0003(エフェクトモード番号で、例えばイコライザを示す)、発行時刻はステップ65の時点でタイマ16を読み出した値、待機時間は0x000A(=10、値1毎に10マイクロ秒を示す)となる。
【0097】
また、エフェクトパラメータ設定命令は、例えば、命令内容が0xE103(上位二桁がエフェクトパラメータ設定を示すコード、下位二桁が設定パートで切替えパートに同じ)、命令引数は0x1D3F(上位二桁がハイバンドゲイン、下位二桁がローバンドゲイン)、発行時刻はエフェクトモード切替え命令の発行時刻と同じく、ステップ65の時点でタイマ16を読み出した値、待機時間は0x0000(待ち時間無し)となる。
【0098】
さらに、待ち時間に代えて待ち時刻を記録する場合、エフェクトモード切替え命令の待機時間は発行時刻に0x000Aを加えた値、エフェクトパラメータ設定命令の待機時間は発行時刻付近からエフェクトモード切替え命令の待機時間付近のどの値でも良い。また、発行時刻はステップ63からステップ65までのどこで採取するようにも構成することができる。
【0099】
これにより、必要な待機時間を伴ってエフェクトモード切替え命令と、このエフェクトモード切替え命令の実行後直ちに実行されて、待機時間を必要とせず処理順序だけが定められるエフェクトパラメータとが、命令キューに書き込まれることで、パネルスイッチ群から入力された命令が後述のジョブに送出されることができ、必要な待機時間の後に上記二つの命令が書き込み順序通りに実行される。
【0100】
このような、待ち時間情報の付加は、パネルスイッチ群13から入力されたエフェクトモード切替え命令のほか、上記ミディ回路15を通じて外部から送られてくるエフェクトモード切替え命令にも使用される。また、その他のパネル、ミディ回路15から入力される命令やキーボード11から入力される命令についても、一定の待機時間の後に実行される命令の直後に、該命令の実行後ただちに実行される命令が必要な場合は上記方法が使用されてもよい。
【0101】
また、パネルスイッチ群13の各種スイッチの操作/イベントが、エフェクトについて設定操作または変更操作でなければ(ステップ61)、この操作/イベントに応じた音楽的ファクタ情報が、楽音信号発生部5またはサウンドシステム6に送られ、プログラム/データ記憶部4に書き込まれまたは外部接続機器に送信される(ステップ67)。
【0102】
なお、上記ステップ65及びステップ66の処理はひとまとめに行なわれてもよい。
【0103】
(10)命令実行ジョブ
図10はコントローラ2に於いてステップ03が並列に実行させる複数のジョブの一つである命令実行ジョブのフローチャートを示す。図9のステップ65でエフェクトモード切換えイベントが発生した後、ステップ51で処理するイベントがなくなると、図8のジョブはステップ58より休眠状態に入る。
【0104】
その後周期インタラプト信号SINによって周期割込みが発生して(A)の位置に戻ると、ステップ02によってステップ65で発生した割込みイベント(エフェクトモード切替えイベント)が発見され、ステップ04を経てステップ06にて当ジョブの優先順位が上げられる。
【0105】
(A)に戻ると、さらにステップ66で発生したイベントが発見され、ステップ04を経てステップ06にて当ジョブの優先順位が再度上げられる(が、この二度目の優先順位変更は実質何もしない)。そして(A)の位置に戻る。以上によりステップ65およびステップ66のイベントはいずれもクリアされるので、他にイベントが発生していなければステップ02を経てステップ03に移動して当ジョブに制御が移る。
【0106】
他のイベントが発生している場合は、そのイベントを処理し終えた後に、やはりステップ02を経てステップ03に移動して当ジョブに制御が移る。当ジョブでは前回処理を中断した場所の次から処理を行い、すべての処理中のイベントが終了した後、先頭に戻る。また、当ジョブが休眠中であった場合は、先頭(ステップ71)から処理を再開する。
【0107】
ここで、ステップ65および66で発生したイベントが新たに存在するので、ステップ71では'Y'、即ちステップ72へ進む。次に、命令キューから1コラムの命令が読み出され、発行時刻に待ち時間を加えた値、または待ち時刻をレジストする(ステップ72)。次いで、タイマ16から現在時刻が読み出され、上記レジストした値と比較される(ステップ73)。
【0108】
比較の結果、まだ現在時刻の方が後である場合、当ジョブの優先順位が最下位から二番目に下げられ、現在時刻が上記レジストした値より後になるまで繰り返される。この間にDSPではステップ63で指示したフェードアウト処理が実行される。また、上記繰り返しの間、当ジョブの優先順位が低く設定されているので、当ジョブ以外のジョブの処理が優先して処理される。
【0109】
現在時刻と上記レジストした値を比較することで時間待ちする代わりに、上記命令キュー内の待ち時間情報を、周期インタラプト信号SINとは異なる周期のタイマ割込信号(例えばTIN)毎に減算し、値がゼロになるのを待つても良い。待ち時間情報に代えて待ち時刻情報を用いる場合は、同様に周期インタラプト信号SINとは異なる周期のタイマ割込信号(例えばTIN)毎に減算し、この待ち時刻情報が命令発行時刻以下となるのを待つても良い。
【0110】
こうして待ち時間が経過する、または待ち時刻に到達すると(ステップ73)、上記ステップ62と同様に上記楽音信号発生部5のDSPの使用権が獲得され(ステップ74、ステップ75、ステップ77)、楽音信号発生部5のDSPによるエフェクトモードが切り替えられ(ステップ76)、またはエフェクトパラメータが設定される(ステップ78)。この結果、上記イベントがエフェクトモード切替えである場合、ステップ63のDSPに対するフェードアウト開始命令の後、適切な時間(例えば100マイクロ秒)後にエフェクトモードが切り替えられる。
【0111】
一方、上記イベントがエフェクトパラメータ設定である場合、待ち時間または待ち時刻が最小となっているので、命令キューから読み出され次第エフェクトパラメータの設定が上記楽音信号発生部5のDSPに命令される。しかし、エフェクトパラメータの設定命令は、図9のように、必ずエフェクトモード切換え命令の後に書きこまれるので、全体として命令発行後、必要な待ち時問を経てエフェクトモー
ドが切り替わり、その後直ちにエフェクトパラメータが設定される、という正しい手順を経ることとなる。
【0112】
例えば、上記エフェクトモードがリバーブに切り替えられた場合、上記パラメータは初期反射時間、後期残響時間などとなる。さらに、上記エフェクトモードがエコーに切り替えられた場合、上記パラメータはリピートタイム、リピートレートなどとなる。また、上記エフェクトモードがイコライザに切り替えられた場合、上記パラメータはハイバンドゲイン、ローバンドゲインなどとなる。
【0113】
次いで、上記ステップ64と同様に、上記楽音信号発生部5のDSPの上記使用権が開放され(ステップ79)、上記ステップ71に戻る。
【0114】
上記例でいえば、ステップ63のミュート処理後、規定時間(100マイクロ秒)後にエフェクトモードが切り替えられることにより、楽音信号発生部5のDSPがフェードアウトを実行している最中にエフェクトモードが切り替わることに起因するノイズの発生を抑えるとともに、モード切換え後直ちにエフェクトパラメータ設定が行われ、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間が付加された命令と待ち時間が付加されない(最小に設定された)命令が、この待ち時間情報に応じた時間経過後に順次実行されていく。
【0115】
当ジョブは、何のイベントも無ければ(ステップ71)、上記ステップ58と同様に休眠状態に入る(ステップ80)。休眠状態の際の動作、休眠状態からの複帰の際の動作はステップ58および図8の場合と同様である。
【0116】
この休眠処理によって、当該ジョブの実行を指示する命令が発生し、上記ジョブ処理(ステップ03)によってジョブが処理を再開させられるまで、当該ジョブが休眠される。これにより、他のジョブが優先されて処理され、コントローラ2(CPU)が効率よく使用される。
【0117】
(11)時変数ジョブ
図11はコントローラ2によってステップ03と並列に実行される複数のジョブの1つである時変数処理ジョブのフローチャートを示す。このジョブは、図8/図9のジョブ及び図10のジョブと異なり、イベントを処理しないので、周期インタラプト信号SINに対応する周期割込処理(図4)による優先順位変更のみを受けて、ジョブ処理(ステップ03)によって略定期的に駆動される。この時変数は、時間の経過に従って制御値/生成値が変化する情報/データ/パラメータである。
【0118】
まず、楽音信号発生部5の複数チャンネル例えば96チャンネルの0チャンネルからの各チャンネルにつき(ステップ91、97)、ビブラート値などの時変数データが読み込まれ(ステップ92)、上記ステップ62、74と同様に上記コントローラ2の使用権が獲得される(ステップ93)。次いで、このビブラート値などの時変数データが時間経過に応じて変更され(ステップ94)、上記ステップ64、78と同様に、コントローラ2の上記使用権が開放される(ステップ95)。
【0119】
以上のステップ91〜97の処理がチャンネル毎に繰り返され、全てのチャンネルが処理された場合、先頭のチャンネルに戻って処理が繰り返される(ステップ97)。この時変数処理は上記ステップ03によって、前回処理を終えた時点の次から駆動され、一定時間処理されると、周期インタラプト信号SINに対応する周期割込みの処理(図4)による優先順位変更を受けて処理が中断される。そして他のジョブが実行された後、略一定時間後に再度上述の手順で処理が再開され、以下上述の処理を繰り返す。
【0120】
(12)他の実施の形態
本件発明は上記実施例に限定されず、本件発明の趣旨を逸脱しない範囲で種々変更可能である。例えば、本命令処理装置で処理される命令は、待ち時間の必要な命令であるが、場合によって待ち時間の不要な命令が含まれてもよい。
【0121】
上述の時変数ジョブでは、手動演奏または自動演奏などに応じたイベントが外部割込みEVとして生成され、外部割込処理でこのイベントデータに応じたジョブが上述のイベント処理ジョブなどで実行されてもよい。
【0122】
ここで、ステップ11で、イベント処理ジョブの優先順位が最上位とされ、これ以外の休眠中ではないジョブの優先順位が一つずつ下げられ、割込みイベントEVがクリアされる。
【0123】
この後、上記ステップ01とステップ02の間の処理位置Aに戻るが、この場合には外部割込みEVがクリアされているので、ステップ02でNOと判断されて、このような優先順位が上げられたジョブが実行される(ステップ03)。
【0124】
本命令処理装置で処理できる、その他の待ち時間の必要な命令には、例えば、パラメータ計算から発音開始までに時間のあるキーオンディレイ、キーオンからビブラート開始まで時間のあるディレイビブラート、キーオンから一定時間後に自動的に消音されるゲート処理などがある。
【0125】
本命令処理装置で処理される命令は、上記リバーブ、エコー、イコライザのほか、コーラス、オートパン、オートワウ、フェイズシフタ、フランジャー、ディストーションなど、楽音信号発生部5のDSPを使用する命令に使用できる。また、上記命令キューには、上記エフェクトなどに関する命令の他に、ビブラート、ポルタメント、グライド、グリッサンド、トリル、トレモロ、マンドリン、ビッチチェンジ、トランスポーズ、チューン、エンベロープ波形変更(レベル、スピードまたはレート)、タッチ感度、イニシャル/アフタータッチなど楽音信号発生部5のDSPを使用しない命令が、上記使用する命令に混在して書きこまれていても良い。
【0126】
また、本発明は電子楽器またはコンピュータなどにおいて実施され得る。上記各図の回路の機能はソフトウエア(フローチャート)によって実施されても良いし、上記各図のフローチャートの機能はハードウエア(回路)によって実施されてもよい。各請求項記載の発明は、当該発明をコンピュータに実行させるコンピュータプログラムを記憶した媒体、コンピュータプログラムの通信装置(方法)、楽音発生装置(方法)、楽音制御装置(方法)としても実現可能である。
【0127】
本発明における各命令の実行はオペレーティウングシステムそのものを含んでいるが、図8以降を含め、図3乃至図11すべてを一体化したプログラムとして構成することもできる。その際に上記プログラムを別のオペレーティングシステムの上でアプリケーションとして動作させることもできる。
【0128】
(5)他の発明の効果
[1]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、 命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、 これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【0129】
[2]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置に対して、 命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加させ、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加させて上記記憶手段に記憶させる処理と、 これらの時間情報に応じた待ち時間が経過したか否かを判別させ、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる処理とを実行させること特徴とする命令処理のためのコンピュータプログラム。
【0130】
[3]複数の命令を実行するコントロール手段と、 この複数の命令を記憶する記憶手段と、 命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶させる付加手段と、 これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【0131】
[4]音楽的エフェクトの設定、変更または終了について、複数の命令を実行するコントロール手段と、 この複数の命令を記憶する記憶手段と、 この複数の命令に、所定の時間にわたる消音の命令を付加し、この命令の次に、この消音の時間より短い待ち時間の音楽的エフェクトの設定または変更の命令とを付加して上記記憶手段に記憶させる付加手段と、 これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。上記複数の命令は音楽的エフェクトの設定、変更または終了の命令であり、先頭に所定時間にわたる消音の命令が付加されることを特徴とする請求項3記載の命令処理装置。これにより、音楽的エフェクト変更時の音感上の違和感を解消できる。
【0132】
[5]上記命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令は、音楽的ファクタを入力または変更する手段から入力された情報、電子楽器間で送受されるMIDI形式の情報、楽音の発生または終了を指示する装置から入力または変更された情報である請求項3または4記載の命令処理装置。これにより、種々の命令が、実行の順番が入れ替わらずに、時間順に整理されて実行される。
【0133】
[6]複数の作業それぞれが実行される優先順位が記憶され、新たな作業の割り込みがあると、新たな作業の優先順位が高くなるように、これらの優先順位が変更され、 当該作業が終了すると、この作業の優先順位が低くなるように、これらの優先順位が変更されることを特徴とする請求項3、4または5記載の命令処理装置。これにより、時間順に整理される命令であっても、実行の優先順位を変更できる。
【0134】
[7]優先順位の変更は上記待ち時間に応じた時間が経過するときには実行されないことを特徴とする請求項6記載の命令処理装置。これにより、命令の優先順位が入れ替わっても、時間順までは変更されない。
【0135】
[8]上記待ち時間に応じた時間が経過したとき、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了させることを特徴とする請求項3、4または5記載の命令処理装置。これにより、終了の命令が他の命令に優先される。
【産業上の利用可能性】
【0136】
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令であっても、所定の待ち時間待機させて実行させる。イベントがあれば(ステップ80)、プログラム/データ記憶部4のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され(ステップ71)、待ち時間情報がタイマ16にストアされ(ステップ72)、待ち時間が経過すると(ステップ81)、命令引数のパラメータが楽音信号発生部5に送られる(ステップ75)。
【0137】
タイマインタラプト信号TINが送られてくれば(ステップ79)、この待ち時間情報に対応する命令が終了され(ステップ80)、次の命令が実行される(ステップ73〜78)。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。
【図面の簡単な説明】
【0138】
【図1】命令処理装置または電子楽器などの全体回路1を示す。
【図2】プログラム/データ記憶部4にストアされるプログラムを示す。
【図3】全体処理のフローチャートを示す。
【図4】タイマ割込み処理のフローチャートを示す。
【図5】外部割込み処理のフローチャートを示す。
【図6】上記ステップ03のジョブ処理のフローチャートを示す。
【図7】上記ステップ05の終了処理のフローチャートを示す。
【図8】イベント処理ジョブのフローチャートを示す。
【図9】上記ステップ55のパネル処理のフローチャートを示す。
【図10】命令実行ジョブのフローチャートを示す。
【図11】時変数ジョブのフローチャートを示す。
【符号の説明】
【0139】
1…全体回路、2…コントローラ(CPU)、
3…タイミング発生部、4…プログラム/データ記憶部、
5…楽音信号発生部、6…サウンドシステム、7…情報記憶部、
11…キーボード、12…キーボードスキャン回路、
13…パネルスイッチ群、14…スイッチスキャン回路、
15…ミディ回路、16…タイマ。
【技術分野】
【0001】
本発明は、命令処理装置及び命令処理方法に関し、特に命令処理に無駄な空き時間が生じないような効率的に命令を処理するものに関する。
【背景技術】
【0002】
従来、命令処理にあたっては、時刻や待ち時間を指定して実行を命令する時刻・時間指定方式や、命令の処理の順序を指定し、命令実行の時刻は指定しない順序指定方式があった。例えば、MIDI形式の電子楽器間で送受されるミディ(MIDI)データは、この命令実行の時刻は指定しない順序指定形式となっている。
【0003】
上記時刻・時間指定方式では、メールボックスなどのメモリに時刻情報または待ち時間付きの命令が格納され、受信側のCPU/コントローラなどによって、このメールボックスの命令が順次閲覧されて、上記時刻情報が現在時刻に一致したら、または待ち時間に応じた時間が経過したら、この命令が実行される。
【0004】
また、上記順序指定方式では、メモリ/待ち行列に実行の順番に命令が格納/書き込まれ、受信側のCPU/コントローラなどによって、このメモリ/待ち行列の命令が順番に読み出され、順次実行され、上記時間情報または時刻情報はこの順序指定方式にはない。
【0005】
【特許文献1】特開平11−134128号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところが、命令の中には実行時刻・実行時間を指定するという命令もあり、このような命令が含まれる複数の命令が順次実行される場合には、上記時刻・時間指定方式では、実行の順番が各時刻に制限され、同一時間・時刻を指定された複数の命令の実行順序が不定となり、処理を待つすべての命令の指定時間・時刻を比較する必要があり、また現在時刻が上記時刻に到達するまで、または待ち時間に応じた時間が経過するまで、無駄に待ち時間が費やされてしまうという問題があった。また、上記順序指定方式では、時刻情報がもともと無いため、ある時刻またはある経過時間を指定して命令を実行させることができなかった。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本件発明では、発令順に命令が処理される命令実行システムに対して、命令の実行までの待ち時間または時刻を有する命令、及びその直後に実行すべき命令を発令する際に、前者に適切な待ち時間または時刻情報を付与して発令し、次いで後者に待ち時間が最小となるような待ち時間または時刻情報を付与して発令するようにする。
【発明の効果】
【0008】
これにより、待ち時間・時刻を有する命令が正しく待ち時間を経過した後または正しい時刻に実行され、またこれに続いて実行されるべき待ち時間・時刻を有さない命令が正しい順序で実行される。
【0009】
エフェクトモード切替えのとき、フェードアウト実行後、一定時間経過を待ってモード切替えと、パラメータ転送とを行わなくてはならない。そうしなと、ノイズが入ったり聴覚上違和感が発生するからである。パラメータ転送の方はモード切替え後直ちに実行してもノイズが入らないが、モード切替えと、パラメータ転送との実行順序を逆にはできない。モードは、エフェクトの種類を指す。
【0010】
メールボックス方式では、全部のメールが走査された上で時間データが比較される。しかし、同一時間データの命令の後先/優先順位/実行順位は判断ができない。FIFO(ファーストインファーストアウト)方式では、順位を間違えることはなく、全命令を走査する必要はない。しかし、実行するまでの待機時間を実現することが難しい。
【0011】
本発明では、FIFO方式の命令に発行時刻と待ち時間または待ち時刻のデータを付加し、モード切替えには消音の待機時間を付加し、パラメータ転送には待機時間を最小にして付加するようにしたので、実行の順番が間違わず、待機時間を実現しながら、モード切替えとパラメータ転送とが実行される。
【0012】
上記待ち時間情報は、命令の発令時刻から該命令が実行されるべき時刻までの時間間隔を示す。また、上記待ち時刻情報は、該命令が実行されるべき時刻を示す。上記その直後に実行すべき命令の、見た目の実行時刻は、上記命令の実行までの待ち時間または時刻を有する命令の実行時刻以前になる。しかし、この場合でも、実際に上記その直後に実行すべき命令が実行されるのは、上記命令の実行までの待ち時間または時刻を有する命令の実行時刻より後になる。
【発明を実施するための最良の形態】
【0013】
(1)全体回路
図1は、命令処理方法を実現する全体回路、命令処理方法のためのコンピュータプログラムを実行する全体回路、並びに命令処理装置または電子楽器の全体回路1を示す。
【0014】
キーボード11の各キーは、楽音の発音及び消音を指示するもので、キースキャン回路12によってスキャンされ、キーオン、キーオフを示すデータが検出され、前回のスキャンが行われた際に検出された各キーのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が為され、イベントがあれば外部インタラプト信号OINがキースキャン回路からコントローラ2に送り込まれる。
【0015】
このキーボード11の各キーには段差タッチスイッチなどの速度センサー、加速度センサー、圧力センサーが設けられ、段差スイッチごとに上記スキャンが行われ、各段差スイッチの先頭のオン/オフごとにオンイベント/オフイベントの検出が行われる。この段差スイッチなどのセンサーによってタッチの速さと強さを示す上記タッチ情報つまりイニシャルタッチデータとアフタタッチデータとが発生される。なお、キーボード11は、電子弦楽器、電子吹奏(管)楽器、電子打楽器(パッド等)、コンピュータのキーボード等で代用される。
【0016】
パネルスイッチ群13の各スイッチは、スイッチスキャン回路14によって、スキャンされる。このスキャンにより、各スイッチのオン、オフを示すデータが検出され、前回のスキャンが行われた際に検出された各スイッチのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が為され、イベントがあれば外部インタラプト信号OINがキースキャン回路からコントローラ2に送り込まれる。
【0017】
ミディ(MIDI)回路15は、外部接続された電子楽器との間で演奏情報や楽音波形信号の送受を行うためのインターフェースである。この演奏情報はMIDI(ミュージカルインスツルメントデジタルインターフェース)規格のもので、この演奏情報に基づいた発音も行われる。
【0018】
ミディ回路15に情報が外部から送り込まれると、外部インタラプト信号OINがミデイィ回路15からコントローラ2に送り込まれる。この外部インタラプト信号OINは上記キースキャン回路、スイッチスキャン回路あるいはミディ回路15に限らず、本命令処理装置に接続された外部接続機器からも送られてくる。
【0019】
上記キーボード11、パネルスイッチ群13またはミディ回路15には、自動演奏装置も含まれる。これらキーボード11、パネルスイッチ群13、ミディ回路15及び自動演奏装置から発生された演奏情報(楽音発生情報)は、楽音を発生させるための情報である。
【0020】
上記演奏情報(楽音発生情報)は、音楽的ファクタ(因子)情報であり、音高(音域)情報(音高決定因子)、発音時間情報、演奏分野情報、発音数情報、共鳴度情報などである。発音時間情報は楽音の発音開始からの経過時間を示す。演奏分野情報は、演奏パート情報、楽音パート情報、楽器パート情報等を示し、例えばメロディ、伴奏、コード、ベース、リズム、MIDI等に対応したり、または上鍵盤、下鍵盤、足鍵盤、ソロ鍵盤、MIDI等に対応したりしている。
【0021】
上記音高情報はキーナンバデータKNとして取り込まれる。このキーナンバデータKNはオクターブデータ(音域データ)と音名データとからなる。演奏分野情報は、パートナンバデータPNとして取り込まれ、このパートナンバデータPNは各演奏エリアを識別するデータであって、発音操作された楽音がどの演奏エリアからのものかによって設定される。
【0022】
発音時間情報は、トーンタイムデータTMとして取り込まれ、キーオンイベントからのタイムカウントデータに基づいたり、またはエンベロープフェーズなどが転用されたりする。この発音時間情報は特願平6−219324号明細書及び図面に発音開始からの経過時間情報として詳しく示される。
【0023】
発音数情報は同時に発音している楽音の数を示し、例えばアサインメントメモリ40のオン/オフデータが「1」の楽音の数に基づき、この数は特願平6−242878号の図9及び図15、特願平6−2476855号の図8及び図18、特願平6−276857号の図9及び図20、特願平6−276858号の図9及び図21のフローチャートに基づいて求められる。
【0024】
さらに、上記パネルスイッチ群13には各種スイッチが設けられ、この各種スイッチは音色タブレット、エフェクトスイッチ、リズムスイッチ、ペダル、ホイール、レバー、ダイヤル、ハンドル、タッチスイッチ等であって楽器用のものである。このペダルはダンパーペダル、サスティンペダル、ミュートペダル、ソフトペダル等である。パネルスイッチ群13には、エフェクトモード切替えスイッチ、エフェクトパラメータスイッチなどが設けられ、エフェクトのモード設定/切替え、エフェクトのパラメータの設定などが行なわれる。
【0025】
この各種スイッチより、楽音制御情報が発生され、この楽音制御情報は発生された楽音を制御する情報であって音楽的ファクタ(因子)情報であり、音色情報(音色決定因子)、タッチ情報(発音指示操作の速さ/強さ)、発音数情報、共鳴度情報、エフェクト情報、リズム情報、音像(ステレオ)情報、クオンタイズ情報、変調情報、テンポ情報、音量情報、エンベロープ情報等である。これら音楽的ファクタ情報も上記演奏情報(楽音情報)に合体され、上記各種スイッチより入力されるほか、上記自動演奏情報に合体されたり、上記インターフェースで送受される演奏情報に合体されたりする。
【0026】
上記音色情報は、鍵盤楽器(ピアノ等)、管楽器(フルート等)、弦楽器(バイオリン等)、打楽器(ドラム等)の楽器(発音媒体/発音手段)の種類等に対応しており、トーンナンバデータTNとして取り込まれる。上記エンベロープ情報は、エンベロープレベルEL、エンベロープタイムET、エンベロープフェーズEFなどである。
【0027】
このような音楽的ファクタ情報は、コントローラ2へ送られ、後述の各種信号、データ、パラメータの切り換えが行われ、楽音の内容が決定される。上記演奏情報(楽音発生情報)及び楽音制御情報はコントローラ2で処理され、各種データが楽音波形発生部5へ送られ、楽音波形信号MWが発生される。コントローラ2はCPUなどからなり、場合によってDSP(デジタルシグナルプロセッサ)、ROM及び/またはRAMなどを含む。このようなコントローラ2は、図1の回路ごとに分散されて設けられてもよい。
【0028】
プログラム/データ記憶部4には、楽音波形信号が記憶され、場合によってミディ回路15から送られてきた楽音波形信号が書き込まれる。このプログラム/データ記憶部4の楽音波形信号は、情報記憶部7に直接またはバスラインを介してコピーされて、他の装置に組み込まれ、楽音信号発生部5に転送される。
【0029】
プログラム/データ記憶部4(内部記憶媒体/手段)はROMまたは書き込み可能なRAM、フラッシュメモリまたはEEPROM等の記憶装置からなり、光ディスクまたは磁気ディスク等の着脱自在な情報記憶部7(外部記憶媒体/手段)に記憶されるコンピュータのプログラムが書き写され記憶される(インストール/転送される)。またプログラム/データ記憶部4には外部の電子楽器またはコンピュータから上記ミディ回路15または送受信装置を介して送信されるプログラムも記憶される(インストール/転送される)。このプログラムの記憶媒体は通信媒体も含む。
【0030】
このインストール(転送/複写)は、情報記憶部7が本楽音生成装置にセットされたとき、または本楽音生成装置の電源が投入されたとき自動的に実行され、または操作者による操作によってインストールされる。上記プログラムは、コントローラ2が各種処理を行うための後述するフローチャートに応じたプログラムである。
【0031】
なお、本装置に予め別のオペレーティングシステム、その他のプログラムが記憶され、上記プログラムはこれらのオペレーティングシステム、その他のプログラムとともに実行されてもよい。このプログラムは本装置(コンピュータ本体)にインストールされ実行されたときに、別のプログラムとともにまたは単独で請求項(クレーム)に記載された処理・機能を実行させることができればよい。なお、このようなオペレーティングシステムなどは後述するフローチャートで示されるものであるが、本装置に無くても良い。
【0032】
また、このプログラムの一部又は全部が本装置以外の1つ以上の別装置に記憶されて実行され、本装置と別装置との間には通信手段を介して、これから処理するデータ/既に処理されたデータ/プログラムが送受され、本装置及び別装置全体として、本発明が実行されてもよい。
【0033】
このプログラム/データ記憶部4には、上述した音楽的ファクタ情報、上述した各種データ及びその他の各種データも記憶される。この各種データには時分割処理に必要なデータや時分割チャンネルへの割当のためデータ等も含まれる。
【0034】
楽音信号発生部5では、上記楽音波形信号がいったん記憶され、指定された音高に応じた速度で読み出され、エンベロープ波形信号が合成されて、サウンドシステム6で楽音として出力され放音される。この楽音信号発生部にはDSP(デジタルシグナルプロセッサ)が設けられている。DSPでは、上記エフェクトに応じた処理が実行され、エフェクト制御された楽音がサウンドシステム6から出力され放音される。
【0035】
このような楽音波形信号の波形は、上述の音色、タッチ、音高、音域、発音時間、演奏分野、発音数、共鳴度などの情報によって、切り換えられ変化される。このような楽音波形信号は伸張再生前の圧縮記憶状態のものが楽音信号発生部5に記憶され、楽音信号発生部5で伸張再生されてもよい。
【0036】
タイミング発生部3からは、楽音生成装置の全回路の同期を取るためのタイミングコントロール信号が各回路に出力される。このタイミングコントロール信号は、各周期のクロック信号のほか、これらのクロック信号を論理積または論理和した信号、時分割処理のチャンネル分割時間の周期を持つ信号、チャンネルナンバデータCHNo、タイムカウントデータTIなどを含むが、含まれなくてもよい。
【0037】
また、このタイミング発生部3から一定周期ごと、例えば200マイクロ秒ごとの周期インタラプト信号SINが上記コントローラ2に送られる。上記タイムカウントデータTIは、絶対時間つまり時間の経過を示し、このタイムカウントデータTIのオーバーフローリセットから次のオーバーフローリセットまでの周期は、各楽音のうち最も長い発音時間、または最も長いジョブまたはイベントの処理時間より長く、場合によって数倍に設定される。このタイムカウントデータTIは無くてもよい。
【0038】
本装置では複数のジョブが並列に動作しており、この周期インタラプト信号SINの出力を契機として、上記オペレーティングシステムによって、現種実行しているジョブから別のジョブに制御が移行される。この周期インタラプト信号SINの周期は、該切替えがあまり頻繁になって切替え処理自体が負担になるほど短くなく、かつ本装置の応答が遅れるほど長くなく、例えば200マイクロ秒に設定される。
【0039】
タイマ16は、フリ−ランタイプである。このタイマ16のオーバーフローリセットから次のオーバーフローリセットまでの周期は、もっとも長いジョブ処理時間より長く、場合によって最も長いジョブまたはイベント処理より長く、場合によって数倍に設定される。このタイマ16のカウントの分解能は誤差として実用上問題がないだけの時間幅例えば10マイクロ秒とされる。
【0040】
なお、タイマ16の値は、命令実行までの待ち時間または時刻として後述の命令キューにストアされるほか、各種の時間に関連する用途に用いてもよい。また、タイマ16には、命令実行までの待ち時間に応じた1つまたは複数の時間情報がストアされ、経過時間が所定周期、例えば10マイクロ秒でデクリメントまたはインクリメントされ、この各時間情報に応じた待ち時間が経過するごとに、タイマインタラプト信号TINが上記コントローラ(CPU)2またはその他の回路などへ送り込まれて、時間情報に応じた待ち時間が経過したことが判別されてもよい。
【0041】
上記命令キューに待ち時間を記憶する場合は、命令発行時刻としてこの現在時刻がストアされ、また待ち時間として所定の時問がストアされる。一方、上記命令キューに待ち時刻が記憶される場合は、命令発行時間としてこの現在時刻がストアされ、待ち時刻として現在時刻に所定の時間を加算した値がストアされる。その後他の処理が行われるなどの時間経過の後、該命令を処理する段に於いて、現在時刻が該回路によって命令発行時より進められた値となっている。
【0042】
そこで命令キューに待ち時間を記憶する場合、キューにストアされた命令発行時刻と待ち時間とが加算されれば命令を実行すべき時刻が得られるが、この加算結果と上記進められた現在時間とが比較されることによって待ち時問が経ったかどうかが判別される。同様に命令キューに待ち時刻が記憶される場合、キューにストアされた待ち時刻と上記進められた現在時刻とが比較されることによって待ち時刻が過ぎたかどうかが判別される。
【0043】
(2)プログラム/データ記憶部4
図2は上記プログラム/データ記憶部4に設けられた命令キューの構造を示す。命令キューは複数のコラム(連続した記憶エリアの塊、実施例では6ワードの連続した記憶エリア)からなっている。各コラムは上記プログラム/データ記憶部4のRAM内の空きエリアに分散して設けられているが、先頭及び末尾コラムのアドレスがレジストされ、各コラムのアドレスを直前のコラムが記憶しているために順次読み出すことができる。
【0044】
一コラムが読み出されたら、上記レジストされた先頭コラムのアドレスが、読み出したコラムに記憶された次コラム(読み出し開始の時点で二番目のコラム)のアドレスに書き変えられ、これによって、読み出されたコラムが占めるエリアを開放することができる。
【0045】
また、コラムを追加する場合は、まず上記レジストされた末尾コラムのアドレスから末尾のコラムを探し、このコラムに記憶された次アドレスに新たなコラムの命令をセットする。次に上記末尾コラムのアドレスのレジストを、新たに命令をセットしたコラムのアドレスに書き変える。
【0046】
最後に上記RAM内にコラムのサイズ分だけの連続した記憶エリアを探し、その先頭アドレスを該新たなコラムの「次コラムのアドレス」としてセットする。この各コラムに記憶された命令は図8及び図9に記載されたジョブから図10に記載されたジョブへのジョブ間通信として受け渡される。
【0047】
この各コラムに記憶された各命令は、各命令の実行までの待ち時間、または各命令が実行されるべき待ち時刻情報を有しており、後述する図8/図9のジョブから図10のジョブへのジョブ間通信で渡される命令群であるが、待ち時間/時刻情報を省略してその他のジョブ間通信(例えば図8と図11)にも用いてもよい。
【0048】
上記ミディ回路15、または上記スイッチスキャン回路14によって、上記楽音信号発生部5のDSPで動作するエフェクトのモード切替えが指示された場合、
上記命令キューには待ち時間または時刻を適切に設定されたエフェクトモード切替え命令と、待ち時間を最小または待ち時到をエフェクトモード切替え命令と同程度以前に設定されたエフェクトパラメータ設定命令が連続したコラムにセットされる。
【0049】
上記ミディ回路15、上記キーボードスキャン回路12、または上記スイッチスキャン回路14によって、上記エフェクトのモード切替え及び/またはエフェクトのパラメータ設定以外の指示があった場合(例えば、押・離鍵、音色変更、コントロール変更など)、これらの命令には直ちに対応することが予め判っているため、待ち時間/待ち時刻情報を省略して上記命令キューを用いて図11のジョブなどに命令を渡してもよい。
【0050】
1命令をストアするコラムは複数のデータを連続したアドレスに記憶している。コラムに記憶された命令データは、命令内容、命令引数、発行時刻、時間情報、次コラムのアドレスなどからなっている。命令内容は上記DSPに命令される内容を示す。命令内容は2つのバイトからなり、上位バイトは命令タイプつまりエフェクトモード切替えかエフェクトパラメータ設定かを示し、下位バイトは切替えまたは設定するエフェクトのパート番号を示す。
【0051】
命令引数は、2つのワードからなり、上位バイトは第一パラメータ値を示し、下位バイトは第二パラメータ値を示す。命令タイプがエフェクトモード切替えである場合、命令引数はモード番号を表す。エフェクトモードとはエフェクトの種類であり、リバーブ、エコー、イコライザ等を示す。
【0052】
また、命令タイプがエフェクトパラメータ切替えである場、命令引数はそれぞれのエフェクトモードにおけるパラメータ値を表す。 例えばエフェクトモードがリバーブの場合、
エフェクトパラメータは初期反射時間、後部残響時間など、エフェクトモードがエコーの場合、エフェクトパラメータはディレイタイム、リピートレートなど、エフェクトモードがイコライザの場合、エフェクトパラメータはハイバンドゲイン、ローバンドゲインなどを表す。これらの命令引数は2つのバイトから成り、上位バイトは第1パラメータ値を、下位バイトは第2パラメータ値を示す。
【0053】
上記発行時刻はこの命令が発行された時刻を示し、上記タイマ16が示す現在時刻がセットされる。この発行時刻は、上記エフェクトモード切替え命令及びそれに続くエフェクトパラメータ設定命令を発行する際に、上記タイマ16からコントローラ2によって読み取られ、上記命令キューに書き込まれる。次コラムアドレスはこの命令の次に実行すべき命令が記憶されているコラムのアドレスを示す。
【0054】
上記時問情報は、上記エフェクトモード切替え命令が発行されてから実行されるまでの待ち時間、及び上記エフェクトパラメータ設定命令が発行されてから実行されるまでの待ち時間を示す。このとき、エフェクトモード切替え命令の時間情報が適切な待ち時問を示すのに対し、エフェクトパラメータ設定命令の待ち時間は最小の待ち時間を示すので、見かけ上エフェクトパラメータを設定してからエフェクトモードを切り替えるようになる。しかし、エフェクトパラメータ設定命令は必ずエフェクトモード切替え命令の実行後に実行されるので、上述のような順序逆転は生じない。
【0055】
この時間情報は、上記エフェクトモード切替え命令及びエフェクトパラメータ設定命令が実行されるべき時刻であっても良い。この場合、命令発行時刻を タイマ16から読み出し、エフェクトモード切替え命令が必要とする待ち時間を加えて時間情報としてセットする。エフェクトパラメータ設定命令の時間情報には、この時間情報以前の値をセットするので、見かけ上エフェクトパラメータを設定してからエフェクトモードを切り替えるようになる。しかし、エフェクトパラメータ設定命令は必ずエフェクトモード切替え命令の実行後に実行されるので、上述のような順序逆転は生じない。
【0056】
上記のように、 ミディ回路15またはスイッチスキャン回路14で発生したエフェクトモード切替えイベントに応じて、適切な待ち時間または時刻を付与されたエフェクトモード切替え命令とエフェクトパラメータ設定命令が命令キュー図2に書き込まれる。
【0057】
時間情報が待ち時間の場合、上記発行時刻と時間情報の加算値はタイマ16でカウントされている現在時刻と比較され、実行時刻に達したことが判別されるが、上記待ち行列にストアされている間、時間情報がタイマ16の歩進毎に順次デクリメントされ、負になるのをもって実行時刻に達したことを判別しても良い。このデクリメントのためにタイマインタラプト信号TINを用いても良い。
【0058】
また、時間情報が待ち時刻の場合、上記時間情報はタイマ16でカウントされている現在時刻と比較され、実行時刻に達したことが判別されるが、上記待ち行列にストアされている間、時間情報がタイマ16の歩進毎に順次デクリメントされ、発行時刻以前になるのをもって実行時刻に達したことを判別しても良い。このデクリメントのためにタイマインタラプト信号TINを用いても良い。
【0059】
上記時間情報が待ち時問か待ち時刻かに依らず、各命令が収められたコラムはプログラム/データ記憶部4のRAM内の任意の位置に配置されて良い。ただし、それらは上記レジストされた先頭及び末尾アドレスと、各コラム内の次コラムアドレスによって、いずれの場合も書きこまれ、発行された順に読み出され実行される。
【0060】
上記エフェクトモード切替え命令の時間情報は、待ち時間データの場合、現在発音中の楽音がDSPによりフェードアウト処理され、モード切替えによるノイズが発生しなくなるのに十分な時問、例えば100マイクロ秒に相当する値に設定される。待ち時刻データの場合は、現在時刻に100マイクロ秒に相当する値を加えた値に設定される。
【0061】
上記エフェクトパラメータ設定命令の時間情報は、待ち時間データの場合、設定しうる最小値(例えばゼロ、またはゼロ値を何らかの目的で他用している場合は「1」など)に設定される。待ち時刻データの場合は、現在時刻から先行するエフェクトモード切替え命令の待ち時刻データの間のいずれかの値、もしくはその前後の値に設定される。
【0062】
プログラム/データ記憶部4には、この他に本発明に係るプログラム、該プログラムが動作するためのデータ、および該プログラムが値を一時記憶するための一時記憶エリアなどが設置される。
【0063】
(3)全体処理
図3は上記コントローラ(CPU)2によって実行される全体処理のフローチャートを示す。この全体処理は、本命令処理装置の電源オンによって開始され、電源オフまでステップ02〜06の処理の一部が繰り返し実行される。まず、プログラム/データ記憶部4の初期化など種々のイニシャライズ処理が行われる(ステップ01)。
【0064】
このイニシャライズ処理では、上記プログラムの命令を実行/処理するのに必要な初期データ、モードデータまたは音楽的ファクタ(音色、タッチ、音高、発音時間)データなどが上記プログラム/データ記憶部4、コントローラ2内の上記RAM、楽音信号発生部5またはサウンドシステム6に書き込まれる等され、後述するそれぞれのジョブ(作業)処理の起動/準備がなされる。
【0065】
次いで、外部割込みを契機として発生する割込みイベントEVが発生されていなければ(ステップ02)、後述する各ジョブのいずれかを起動するジョブ処理が実行される(ステップ03)。また、外部割込みを契機として発生する割込みイベントEVが発生されていれば、その割込みイベントEVが電源ボタンの押下によるものの場合(ステップ04)、後述する終了処理が実行される(ステップ05)。
【0066】
一方、ステップ04で割込みイベントEVが電源ボタンの押下によるものでなければ、割込処理(ステップ06)が実行される。割込処理では、発生した割込(押鍵、離鍵、音色制御、発音制御など)の内容に応じて、それを処理すべきジョブ(後述する)の優先度が最上位に上げられ、それ以外のジョブの優先順位が下げられ、割込みイベントEVがクリアされる。
【0067】
この後、制御は(A)の位置に移動される。この時点で割込みイベントEVはクリアされているので、ステップ02ではジョブ処理(ステップ03)が選択される。ステップ03では、上記割込みに対応するジョブの優先順位が最上位となっているので、当該ジョブがステップ03によって実行される。
【0068】
(4)周期割込みルーチン/処理
図4は周期割込みルーチン/処理のフローチャートを示す。このルーチン/処理は、上記タイミング発生部3からの周期インタラプト信号SINがコントローラ2に送られるごとに実行される。まず、優先変更処理が行なわれ(ステップ11)、戻り先格納処理が実行され(ステップ12)、上記ステップ01とステップ02の間の処理位置Aに戻る。
【0069】
上記優先変更処理(ステップ11)では、直前までコントローラ2が実行していた処理の優先順位が下げられて、後述する休眠状態でない他のジョブの優先順位が上げられる。上記戻り先格納処理(ステップ12)では、この周期割込みルーチン/処理の直前まで実行されていた処理位置などがRAMなどに格納される。
【0070】
(5)外部割込みルーチン/処理
図5は上記コントローラ(CPU)2によって実行される外部割込みルーチン/処理のフローチャートを示す。このルーチン/処理は、ミディ回路15などの外部接続機器からの外部インタラプト信号OINがコントローラ2に送られるごとに実行される。まず、戻り先格納処理が実行される(ステップ21)。
【0071】
次いで、ドライバ処理で、外部から送られてきた情報が取り込まれ(ステップ22)、割込みイベントEV処理で、取り込まれた情報が一連の命令として完結していれば、割込みイベントEVが発生されて(ステップ23)、上記ステップ01とステップ02の間の処理位置Aに戻る。
【0072】
この戻り先格納処理(ステップ21)は上記ステップ12と同じ動作である。
【0073】
上記ステップ22で取り込まれる情報は、一連または一つの命令が複数の情報に分割されて所定量例えば1バイトずつ送られて来ることがある。例えばMIDIデータでは数バイトからなるコマンドが1バイトずつ送られる。
【0074】
(6)ジョブ処理(ステップ03)
図6は上記ステップ03のジョブ処理を示す。まず後述の複数のジョブそれぞれにつき、どのジョブの優先順位が高いか判断され(ステップ31)、一番優先順位の高いジョブが実行される(ステップ32)。この優先順位は、上記ステップ06、11などで設定/変更されたものである。ステップ32は後述のいずれかのジョブの実行を、そのジョブが最後に実行されたステップの次のステップから再開するが、当該ジョブが後述する休眠状態に入っている場合は例外としてそのジョブの先頭から実行を再開する。
【0075】
この各ジョブでは上述のエフェクトモード切替え、エフェクトパラメータ設定の他、音色番号変更、ビブラートなどの音楽的効果、音高(トランスポーズ、チューンなど)情報、トーン(高調波成分含有率、フィルタカットオフ周波数など)情報、タッチ(ベロシティ感度、オフセットなど)情報、エンベロープ(アタック、ディケイ、リリースなど)情報などの設定または変更処理といった楽音制御処理が実行される。
【0076】
このジョブ処理によって、上記複数のジョブのいずれかが実行されるが、各ジョブの実行中は、上記タイマ割込み、外部割込みが許可されている。これら割込みにより周期割込みまたは外部割込みルーチン/処理が呼び出され、実行された後は、各ジョブの割込みの発生した場所の次ではなく、図3の(A)の位置に復帰する。この際に、上記割込みの発生した場所の次の位置は各割込みルーチン内で保存され、当ジョブ処理ルーチンが各ジョブを再度実行させる場合は、上記保存された位置から実行が再開される。
【0077】
(7)終了処理(ステップ05)
図7は上記ステップ05の終了処理のフローチャートを示す。まず、割込みを指示するタイマ、外部または周期のインタラプト信号TIN、OINまたはSINが送られてきても、割込み処理を禁止する(ステップ41)。これにより、終了処理が割込み処理に優先され、終了が遅れてしまうことがなくなる。
【0078】
したがって、上述の待ち時間情報に応じた時間が経過するまでに、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了することになる。
【0079】
次いで、プログラム/データ記憶部に、電源遮断時に記憶を維持している書換え可能なメモリ(フラッシュメモリやバックアップバッテリ付きRAMなど)がある場合は、編集可能なデータがRAMから上記メモリに転写される(ステップ42)。編集可能なデータを記憶しているRAMが電源遮断時に記憶を維持しているメモリである場合は、この動作は不要となる。その後、電源回路に対し電源切断が命令されて(ステップ43)、処理が終了される。
【0080】
(8)イベント処理ジョブ
図8はコントローラ2に於いてステップ03が並列に実行させる複数のジョブの一つであるイベント処理ジョブを示す。まずキーボードスキャン回路12で押鍵イベントまたは離鍵イベントが発生すると、上記外部割込が発生し、割込みイベントEVが発生する。このためステップ06が駆動されてジョブの優先順位が変化し、押鍵及び離鍵を処理するジョブとして当イベント処理ジョブが最優先となり、ジョブ処理ステップ03が当ジョブを動作させる。
【0081】
同様にスイッチスキャン回路14で音色変更、コントロール変更等のイベントが発生した場合もステップ03が当ジョブを動作させる。さらに、ミディ回路15で一連のMIDIコマンドを受信し終えた場合も、ステップ03が当ジョブを動作させる。当ジョブは最後にタイマまたは外部割込みにより中断した場所の次から動作を再開するが、処理の続きを実行した後先頭(ステップ51)に戻る。
【0082】
この時点で以前から蓄積されているイベントがあればそのイベントを、なければ最後に発生したイベントを実行する(ステップ51)。イベントがキーオンまたはオフイベントであった場合(ステップ52)楽音信号発生部5および外部接続機器に、該キーの音高に応じた楽音で発音を開始、または終了するよう指示が送信される(ステップ53)。
【0083】
また、イベントが音色変更、コントロール変更などのパネルイベントであった場合(ステップ54)、この音色変更、コントロール変更などが楽音信号発生部5および外部接続機器に送信される(ステップ55)。
【0084】
さらに、イベントがMIDIイベントであった場合、そのMIDIイベントが楽音信号発生部5に送信される(ステップ57)。MIDIイベントをさらに外部接続機器に送信しても良い。一方、ステップ51で当ジョブが処理すべきイベントが発生していない場合、当ジョブは休眠状態となる(ステップ58)。
【0085】
この休眠状態では、当ジョブは自分自身の優先順位を最下位にし、他の休眠していないジョブの優先順位を1ずつ上げ、休止命令や無限ルーブなどの休眠コマンドが実行される。休眠状態からの復帰は上記ステップ06で、当ジョブで処理すべきイベントが発生したときに行われる。休眠状態から復帰する場合は、処理は最後に中断した位置の次からではなく、ジョブの先頭(ステップ51)からとなる。
【0086】
この休眠処理によって、外部割込みが発生し、割込み処理(ステップ06)、ジョブ処理(ステップ03)を経由して、当ジョブが再度駆動させられるまで、当ジョブが休眠される。これにより、他のジョブが優先して実行され、コントローラ2(CPU)が効率よく使用される。
【0087】
このイベント処理ジョブはジョブ処理(ステップ03)から駆動される独立したジョブ(アプリケーション、プロセス、タスクなどと呼んでも良い)として記載されているが、図3乃至図7と一体に動作する単一のプログラムの一部であっても良い。
【0088】
(9)パネル処理(ステップ55)
図9は上記ステップ55のパネル処理のフローチャートを示す。まず、エフェクトモードについて切替え操作、設定操作または変更操作があれば(ステップ61)、上記楽音信号発生部5のDSPの使用権が獲得される(ステップ62)。
【0089】
この使用権は以下の手順で獲得される。まずプログラム/データ記億部4にデバイス(この場合はDSP)毎に設けられた図示しないFIFO(ファーストインファーストアウト)メモリの最後に当ジョブを示す識別コードが追加される。次いで、当ジョブの優先順位が最下位から二番目に設定される。そして上記FIFOメモリの先頭を観察し、当ジョブの識別コードが先頭に来るのを待つ。
【0090】
当ジョブの識別コードが先頭に着いたら、当ジョブの優先順位を元に戻す。このとき優先順位を下げるのは、使用権獲得までの間に、他のジョブを優先して実行させ、DSPの使用権を握っているジョブが早く使用を終えて使用権を開放するためである。また、優先順位を最下位でなく最下位から二番目にするのは、休眠状態と区別するためである。
【0091】
本実施例では使用権渡得はイベントではないので、休眠状態と同じにしてしまうとジョブの実行が遅れることがある。上記に代えて、使用権の獲得をイベントとなるようにして優先順位を最下位にしても良い。
【0092】
この使用権の獲得と開放は、コントローラ2(CPU)上で並列に動作する複数のジョブが使用を競合する可能性のあるすべてのデバイスについて、各ジョブで必ず行われる。本発明では上記DSPの他、同じ楽音信号発生部5にある音源回路、プログラム/データ記憶部4に設けられたトーンデータテーブル、レジストメモリテーブルなどに対して、上記FIFOメモリがそれぞれ別途設けられ、別途使用権の獲得と開放が行われる。なお、使用権獲得と開放にはFIFOメモリを用いる上記の方法以外の方法が用いられても良い。
【0093】
次いで、発生中の楽音のミュート処理が行なわれる(ステップ63)。このミュート処理では、楽音信号発生部5に於いて、イベントの発生した当該パートで発音中の楽音につき、所定時間例えば100マイクロ秒をかけて徐々に消音を行うようDSPに指示する処理が行われる。この消音が完了すれば、エフェクトモードを切り替えても雑音が発生することがないが、当該指示を行った直後は、まだノイズ無しでエフェクトモードを切り替えることはできないので、この段階ではエフェクトモード切替えはDSPに指示しない。
【0094】
そして、上記DSPの上記使用権が開放され(ステップ64)、即ち上記FIFOメモリが歩進され、次いでエフェクトモード切替え命令が、100マイクロ秒の待ち時間、または現在時刻の100マイクロ秒後の待ち時刻とともに図2に示す命令キューに1コラム書き込まれた上で、エフェクトモード切替えの割込みイベントEVが発行される(ステップ65)。
【0095】
さらに、切替え後の初期パラメータを設定させるために、エフェクトパラメータ設定命令が待ち時間ゼロ、または現在時刻から上記待ち時刻と略同一の値までの適切な値を示す待ち時刻/待ち時間とともに、上記命令キューに1コラム書き込まれた上で、エフェクトパラメータ設定の割込みイベントEVが発行される(ステップ66)。各コラムの次アドレスは上記の方法で1コラム書き込む毎に設定する。このとき、エフェクトモード切替え命令を外部にも送信する。
【0096】
これにより図2の命令キューの最後のコラムにエフェクトモード切替え命令とエフェクトパラメータ設定命令が書き込まれる。この場合、エフェクトモード切替え命令は、例えば、命令内容が0xE003(上位二桁がエフェクトモード切替えを示すコード、下位二桁が切替えパート)、命令引数は0x0003(エフェクトモード番号で、例えばイコライザを示す)、発行時刻はステップ65の時点でタイマ16を読み出した値、待機時間は0x000A(=10、値1毎に10マイクロ秒を示す)となる。
【0097】
また、エフェクトパラメータ設定命令は、例えば、命令内容が0xE103(上位二桁がエフェクトパラメータ設定を示すコード、下位二桁が設定パートで切替えパートに同じ)、命令引数は0x1D3F(上位二桁がハイバンドゲイン、下位二桁がローバンドゲイン)、発行時刻はエフェクトモード切替え命令の発行時刻と同じく、ステップ65の時点でタイマ16を読み出した値、待機時間は0x0000(待ち時間無し)となる。
【0098】
さらに、待ち時間に代えて待ち時刻を記録する場合、エフェクトモード切替え命令の待機時間は発行時刻に0x000Aを加えた値、エフェクトパラメータ設定命令の待機時間は発行時刻付近からエフェクトモード切替え命令の待機時間付近のどの値でも良い。また、発行時刻はステップ63からステップ65までのどこで採取するようにも構成することができる。
【0099】
これにより、必要な待機時間を伴ってエフェクトモード切替え命令と、このエフェクトモード切替え命令の実行後直ちに実行されて、待機時間を必要とせず処理順序だけが定められるエフェクトパラメータとが、命令キューに書き込まれることで、パネルスイッチ群から入力された命令が後述のジョブに送出されることができ、必要な待機時間の後に上記二つの命令が書き込み順序通りに実行される。
【0100】
このような、待ち時間情報の付加は、パネルスイッチ群13から入力されたエフェクトモード切替え命令のほか、上記ミディ回路15を通じて外部から送られてくるエフェクトモード切替え命令にも使用される。また、その他のパネル、ミディ回路15から入力される命令やキーボード11から入力される命令についても、一定の待機時間の後に実行される命令の直後に、該命令の実行後ただちに実行される命令が必要な場合は上記方法が使用されてもよい。
【0101】
また、パネルスイッチ群13の各種スイッチの操作/イベントが、エフェクトについて設定操作または変更操作でなければ(ステップ61)、この操作/イベントに応じた音楽的ファクタ情報が、楽音信号発生部5またはサウンドシステム6に送られ、プログラム/データ記憶部4に書き込まれまたは外部接続機器に送信される(ステップ67)。
【0102】
なお、上記ステップ65及びステップ66の処理はひとまとめに行なわれてもよい。
【0103】
(10)命令実行ジョブ
図10はコントローラ2に於いてステップ03が並列に実行させる複数のジョブの一つである命令実行ジョブのフローチャートを示す。図9のステップ65でエフェクトモード切換えイベントが発生した後、ステップ51で処理するイベントがなくなると、図8のジョブはステップ58より休眠状態に入る。
【0104】
その後周期インタラプト信号SINによって周期割込みが発生して(A)の位置に戻ると、ステップ02によってステップ65で発生した割込みイベント(エフェクトモード切替えイベント)が発見され、ステップ04を経てステップ06にて当ジョブの優先順位が上げられる。
【0105】
(A)に戻ると、さらにステップ66で発生したイベントが発見され、ステップ04を経てステップ06にて当ジョブの優先順位が再度上げられる(が、この二度目の優先順位変更は実質何もしない)。そして(A)の位置に戻る。以上によりステップ65およびステップ66のイベントはいずれもクリアされるので、他にイベントが発生していなければステップ02を経てステップ03に移動して当ジョブに制御が移る。
【0106】
他のイベントが発生している場合は、そのイベントを処理し終えた後に、やはりステップ02を経てステップ03に移動して当ジョブに制御が移る。当ジョブでは前回処理を中断した場所の次から処理を行い、すべての処理中のイベントが終了した後、先頭に戻る。また、当ジョブが休眠中であった場合は、先頭(ステップ71)から処理を再開する。
【0107】
ここで、ステップ65および66で発生したイベントが新たに存在するので、ステップ71では'Y'、即ちステップ72へ進む。次に、命令キューから1コラムの命令が読み出され、発行時刻に待ち時間を加えた値、または待ち時刻をレジストする(ステップ72)。次いで、タイマ16から現在時刻が読み出され、上記レジストした値と比較される(ステップ73)。
【0108】
比較の結果、まだ現在時刻の方が後である場合、当ジョブの優先順位が最下位から二番目に下げられ、現在時刻が上記レジストした値より後になるまで繰り返される。この間にDSPではステップ63で指示したフェードアウト処理が実行される。また、上記繰り返しの間、当ジョブの優先順位が低く設定されているので、当ジョブ以外のジョブの処理が優先して処理される。
【0109】
現在時刻と上記レジストした値を比較することで時間待ちする代わりに、上記命令キュー内の待ち時間情報を、周期インタラプト信号SINとは異なる周期のタイマ割込信号(例えばTIN)毎に減算し、値がゼロになるのを待つても良い。待ち時間情報に代えて待ち時刻情報を用いる場合は、同様に周期インタラプト信号SINとは異なる周期のタイマ割込信号(例えばTIN)毎に減算し、この待ち時刻情報が命令発行時刻以下となるのを待つても良い。
【0110】
こうして待ち時間が経過する、または待ち時刻に到達すると(ステップ73)、上記ステップ62と同様に上記楽音信号発生部5のDSPの使用権が獲得され(ステップ74、ステップ75、ステップ77)、楽音信号発生部5のDSPによるエフェクトモードが切り替えられ(ステップ76)、またはエフェクトパラメータが設定される(ステップ78)。この結果、上記イベントがエフェクトモード切替えである場合、ステップ63のDSPに対するフェードアウト開始命令の後、適切な時間(例えば100マイクロ秒)後にエフェクトモードが切り替えられる。
【0111】
一方、上記イベントがエフェクトパラメータ設定である場合、待ち時間または待ち時刻が最小となっているので、命令キューから読み出され次第エフェクトパラメータの設定が上記楽音信号発生部5のDSPに命令される。しかし、エフェクトパラメータの設定命令は、図9のように、必ずエフェクトモード切換え命令の後に書きこまれるので、全体として命令発行後、必要な待ち時問を経てエフェクトモー
ドが切り替わり、その後直ちにエフェクトパラメータが設定される、という正しい手順を経ることとなる。
【0112】
例えば、上記エフェクトモードがリバーブに切り替えられた場合、上記パラメータは初期反射時間、後期残響時間などとなる。さらに、上記エフェクトモードがエコーに切り替えられた場合、上記パラメータはリピートタイム、リピートレートなどとなる。また、上記エフェクトモードがイコライザに切り替えられた場合、上記パラメータはハイバンドゲイン、ローバンドゲインなどとなる。
【0113】
次いで、上記ステップ64と同様に、上記楽音信号発生部5のDSPの上記使用権が開放され(ステップ79)、上記ステップ71に戻る。
【0114】
上記例でいえば、ステップ63のミュート処理後、規定時間(100マイクロ秒)後にエフェクトモードが切り替えられることにより、楽音信号発生部5のDSPがフェードアウトを実行している最中にエフェクトモードが切り替わることに起因するノイズの発生を抑えるとともに、モード切換え後直ちにエフェクトパラメータ設定が行われ、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間が付加された命令と待ち時間が付加されない(最小に設定された)命令が、この待ち時間情報に応じた時間経過後に順次実行されていく。
【0115】
当ジョブは、何のイベントも無ければ(ステップ71)、上記ステップ58と同様に休眠状態に入る(ステップ80)。休眠状態の際の動作、休眠状態からの複帰の際の動作はステップ58および図8の場合と同様である。
【0116】
この休眠処理によって、当該ジョブの実行を指示する命令が発生し、上記ジョブ処理(ステップ03)によってジョブが処理を再開させられるまで、当該ジョブが休眠される。これにより、他のジョブが優先されて処理され、コントローラ2(CPU)が効率よく使用される。
【0117】
(11)時変数ジョブ
図11はコントローラ2によってステップ03と並列に実行される複数のジョブの1つである時変数処理ジョブのフローチャートを示す。このジョブは、図8/図9のジョブ及び図10のジョブと異なり、イベントを処理しないので、周期インタラプト信号SINに対応する周期割込処理(図4)による優先順位変更のみを受けて、ジョブ処理(ステップ03)によって略定期的に駆動される。この時変数は、時間の経過に従って制御値/生成値が変化する情報/データ/パラメータである。
【0118】
まず、楽音信号発生部5の複数チャンネル例えば96チャンネルの0チャンネルからの各チャンネルにつき(ステップ91、97)、ビブラート値などの時変数データが読み込まれ(ステップ92)、上記ステップ62、74と同様に上記コントローラ2の使用権が獲得される(ステップ93)。次いで、このビブラート値などの時変数データが時間経過に応じて変更され(ステップ94)、上記ステップ64、78と同様に、コントローラ2の上記使用権が開放される(ステップ95)。
【0119】
以上のステップ91〜97の処理がチャンネル毎に繰り返され、全てのチャンネルが処理された場合、先頭のチャンネルに戻って処理が繰り返される(ステップ97)。この時変数処理は上記ステップ03によって、前回処理を終えた時点の次から駆動され、一定時間処理されると、周期インタラプト信号SINに対応する周期割込みの処理(図4)による優先順位変更を受けて処理が中断される。そして他のジョブが実行された後、略一定時間後に再度上述の手順で処理が再開され、以下上述の処理を繰り返す。
【0120】
(12)他の実施の形態
本件発明は上記実施例に限定されず、本件発明の趣旨を逸脱しない範囲で種々変更可能である。例えば、本命令処理装置で処理される命令は、待ち時間の必要な命令であるが、場合によって待ち時間の不要な命令が含まれてもよい。
【0121】
上述の時変数ジョブでは、手動演奏または自動演奏などに応じたイベントが外部割込みEVとして生成され、外部割込処理でこのイベントデータに応じたジョブが上述のイベント処理ジョブなどで実行されてもよい。
【0122】
ここで、ステップ11で、イベント処理ジョブの優先順位が最上位とされ、これ以外の休眠中ではないジョブの優先順位が一つずつ下げられ、割込みイベントEVがクリアされる。
【0123】
この後、上記ステップ01とステップ02の間の処理位置Aに戻るが、この場合には外部割込みEVがクリアされているので、ステップ02でNOと判断されて、このような優先順位が上げられたジョブが実行される(ステップ03)。
【0124】
本命令処理装置で処理できる、その他の待ち時間の必要な命令には、例えば、パラメータ計算から発音開始までに時間のあるキーオンディレイ、キーオンからビブラート開始まで時間のあるディレイビブラート、キーオンから一定時間後に自動的に消音されるゲート処理などがある。
【0125】
本命令処理装置で処理される命令は、上記リバーブ、エコー、イコライザのほか、コーラス、オートパン、オートワウ、フェイズシフタ、フランジャー、ディストーションなど、楽音信号発生部5のDSPを使用する命令に使用できる。また、上記命令キューには、上記エフェクトなどに関する命令の他に、ビブラート、ポルタメント、グライド、グリッサンド、トリル、トレモロ、マンドリン、ビッチチェンジ、トランスポーズ、チューン、エンベロープ波形変更(レベル、スピードまたはレート)、タッチ感度、イニシャル/アフタータッチなど楽音信号発生部5のDSPを使用しない命令が、上記使用する命令に混在して書きこまれていても良い。
【0126】
また、本発明は電子楽器またはコンピュータなどにおいて実施され得る。上記各図の回路の機能はソフトウエア(フローチャート)によって実施されても良いし、上記各図のフローチャートの機能はハードウエア(回路)によって実施されてもよい。各請求項記載の発明は、当該発明をコンピュータに実行させるコンピュータプログラムを記憶した媒体、コンピュータプログラムの通信装置(方法)、楽音発生装置(方法)、楽音制御装置(方法)としても実現可能である。
【0127】
本発明における各命令の実行はオペレーティウングシステムそのものを含んでいるが、図8以降を含め、図3乃至図11すべてを一体化したプログラムとして構成することもできる。その際に上記プログラムを別のオペレーティングシステムの上でアプリケーションとして動作させることもできる。
【0128】
(5)他の発明の効果
[1]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、 命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、 これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【0129】
[2]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置に対して、 命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加させ、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加させて上記記憶手段に記憶させる処理と、 これらの時間情報に応じた待ち時間が経過したか否かを判別させ、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる処理とを実行させること特徴とする命令処理のためのコンピュータプログラム。
【0130】
[3]複数の命令を実行するコントロール手段と、 この複数の命令を記憶する記憶手段と、 命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶させる付加手段と、 これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【0131】
[4]音楽的エフェクトの設定、変更または終了について、複数の命令を実行するコントロール手段と、 この複数の命令を記憶する記憶手段と、 この複数の命令に、所定の時間にわたる消音の命令を付加し、この命令の次に、この消音の時間より短い待ち時間の音楽的エフェクトの設定または変更の命令とを付加して上記記憶手段に記憶させる付加手段と、 これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。上記複数の命令は音楽的エフェクトの設定、変更または終了の命令であり、先頭に所定時間にわたる消音の命令が付加されることを特徴とする請求項3記載の命令処理装置。これにより、音楽的エフェクト変更時の音感上の違和感を解消できる。
【0132】
[5]上記命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令は、音楽的ファクタを入力または変更する手段から入力された情報、電子楽器間で送受されるMIDI形式の情報、楽音の発生または終了を指示する装置から入力または変更された情報である請求項3または4記載の命令処理装置。これにより、種々の命令が、実行の順番が入れ替わらずに、時間順に整理されて実行される。
【0133】
[6]複数の作業それぞれが実行される優先順位が記憶され、新たな作業の割り込みがあると、新たな作業の優先順位が高くなるように、これらの優先順位が変更され、 当該作業が終了すると、この作業の優先順位が低くなるように、これらの優先順位が変更されることを特徴とする請求項3、4または5記載の命令処理装置。これにより、時間順に整理される命令であっても、実行の優先順位を変更できる。
【0134】
[7]優先順位の変更は上記待ち時間に応じた時間が経過するときには実行されないことを特徴とする請求項6記載の命令処理装置。これにより、命令の優先順位が入れ替わっても、時間順までは変更されない。
【0135】
[8]上記待ち時間に応じた時間が経過したとき、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了させることを特徴とする請求項3、4または5記載の命令処理装置。これにより、終了の命令が他の命令に優先される。
【産業上の利用可能性】
【0136】
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令であっても、所定の待ち時間待機させて実行させる。イベントがあれば(ステップ80)、プログラム/データ記憶部4のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され(ステップ71)、待ち時間情報がタイマ16にストアされ(ステップ72)、待ち時間が経過すると(ステップ81)、命令引数のパラメータが楽音信号発生部5に送られる(ステップ75)。
【0137】
タイマインタラプト信号TINが送られてくれば(ステップ79)、この待ち時間情報に対応する命令が終了され(ステップ80)、次の命令が実行される(ステップ73〜78)。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。
【図面の簡単な説明】
【0138】
【図1】命令処理装置または電子楽器などの全体回路1を示す。
【図2】プログラム/データ記憶部4にストアされるプログラムを示す。
【図3】全体処理のフローチャートを示す。
【図4】タイマ割込み処理のフローチャートを示す。
【図5】外部割込み処理のフローチャートを示す。
【図6】上記ステップ03のジョブ処理のフローチャートを示す。
【図7】上記ステップ05の終了処理のフローチャートを示す。
【図8】イベント処理ジョブのフローチャートを示す。
【図9】上記ステップ55のパネル処理のフローチャートを示す。
【図10】命令実行ジョブのフローチャートを示す。
【図11】時変数ジョブのフローチャートを示す。
【符号の説明】
【0139】
1…全体回路、2…コントローラ(CPU)、
3…タイミング発生部、4…プログラム/データ記憶部、
5…楽音信号発生部、6…サウンドシステム、7…情報記憶部、
11…キーボード、12…キーボードスキャン回路、
13…パネルスイッチ群、14…スイッチスキャン回路、
15…ミディ回路、16…タイマ。
【特許請求の範囲】
【請求項1】
複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【請求項2】
複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置に対して、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加させ、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加させて上記記憶手段に記憶させる処理と、
これらの時間情報に応じた待ち時間が経過したか否かを判別させ、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる処理とを実行させること特徴とする命令処理のためのコンピュータプログラム。
【請求項3】
複数の命令を実行するコントロール手段と、
この複数の命令を記憶する記憶手段と、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶させる付加手段と、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【請求項4】
音楽的エフェクトの設定、変更または終了について、複数の命令を実行するコントロール手段と、
この複数の命令を記憶する記憶手段と、
この複数の命令に、所定の時間にわたる消音の命令を付加し、この命令の次に、この消音の時間より短い待ち時間の音楽的エフェクトの設定または変更の命令とを付加して上記記憶手段に記憶させる付加手段と、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【請求項5】
上記命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令は、音楽的ファクタを入力または変更する手段から入力された情報、電子楽器間で送受されるMIDI形式の情報、楽音の発生または終了を指示する装置から入力または変更された情報である請求項3または4記載の命令処理装置。
【請求項6】
複数の作業それぞれが実行される優先順位が記憶され、新たな作業の割り込みがあると、新たな作業の優先順位が高くなるように、これらの優先順位が変更され、
当該作業が終了すると、この作業の優先順位が低くなるように、これらの優先順位が変更されることを特徴とする請求項3、4または5記載の命令処理装置。
【請求項7】
優先順位は、上記待ち時間に応じた時間が経過する間、低く設定されることを特徴とする請求項6記載の命令処理装置。
【請求項8】
上記待ち時間に応じた時間が経過したとき、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了させることを特徴とする請求項3、4または5記載の命令処理装置。
【請求項1】
複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【請求項2】
複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置に対して、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加させ、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加させて上記記憶手段に記憶させる処理と、
これらの時間情報に応じた待ち時間が経過したか否かを判別させ、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる処理とを実行させること特徴とする命令処理のためのコンピュータプログラム。
【請求項3】
複数の命令を実行するコントロール手段と、
この複数の命令を記憶する記憶手段と、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶させる付加手段と、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【請求項4】
音楽的エフェクトの設定、変更または終了について、複数の命令を実行するコントロール手段と、
この複数の命令を記憶する記憶手段と、
この複数の命令に、所定の時間にわたる消音の命令を付加し、この命令の次に、この消音の時間より短い待ち時間の音楽的エフェクトの設定または変更の命令とを付加して上記記憶手段に記憶させる付加手段と、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【請求項5】
上記命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令は、音楽的ファクタを入力または変更する手段から入力された情報、電子楽器間で送受されるMIDI形式の情報、楽音の発生または終了を指示する装置から入力または変更された情報である請求項3または4記載の命令処理装置。
【請求項6】
複数の作業それぞれが実行される優先順位が記憶され、新たな作業の割り込みがあると、新たな作業の優先順位が高くなるように、これらの優先順位が変更され、
当該作業が終了すると、この作業の優先順位が低くなるように、これらの優先順位が変更されることを特徴とする請求項3、4または5記載の命令処理装置。
【請求項7】
優先順位は、上記待ち時間に応じた時間が経過する間、低く設定されることを特徴とする請求項6記載の命令処理装置。
【請求項8】
上記待ち時間に応じた時間が経過したとき、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了させることを特徴とする請求項3、4または5記載の命令処理装置。
【図1】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【公開番号】特開2012−230421(P2012−230421A)
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願番号】特願2012−167328(P2012−167328)
【出願日】平成24年7月27日(2012.7.27)
【分割の表示】特願2008−77138(P2008−77138)の分割
【原出願日】平成20年3月25日(2008.3.25)
【出願人】(000001410)株式会社河合楽器製作所 (563)
【Fターム(参考)】
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願日】平成24年7月27日(2012.7.27)
【分割の表示】特願2008−77138(P2008−77138)の分割
【原出願日】平成20年3月25日(2008.3.25)
【出願人】(000001410)株式会社河合楽器製作所 (563)
【Fターム(参考)】
[ Back to top ]