(57)【要約】      （修正有）【課題】命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令であっても、所定の待ち時間待機されて実行される。【解決手段】イベントがあれば（ステップ７１）、プログラム／データ記憶部のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され（ステップ７２）、待ち時間情報がタイマにストアされ、待ち時間が経過すると（ステップ７３）、命令引数のパラメータが楽音信号発生部５に送られる（ステップ７５）。タイマインタラプト信号が送られてくれば、この待ち時間情報に対応する命令が終了され、次の命令が実行される（ステップ７４〜７９）。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。【選択図】図１０
2012230421.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【請求項２】
複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置に対して、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加させ、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加させて上記記憶手段に記憶させる処理と、
これらの時間情報に応じた待ち時間が経過したか否かを判別させ、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる処理とを実行させること特徴とする命令処理のためのコンピュータプログラム。
【請求項３】
複数の命令を実行するコントロール手段と、
この複数の命令を記憶する記憶手段と、
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶させる付加手段と、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【請求項４】
音楽的エフェクトの設定、変更または終了について、複数の命令を実行するコントロール手段と、
この複数の命令を記憶する記憶手段と、
この複数の命令に、所定の時間にわたる消音の命令を付加し、この命令の次に、この消音の時間より短い待ち時間の音楽的エフェクトの設定または変更の命令とを付加して上記記憶手段に記憶させる付加手段と、
これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【請求項５】
上記命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令は、音楽的ファクタを入力または変更する手段から入力された情報、電子楽器間で送受されるＭＩＤＩ形式の情報、楽音の発生または終了を指示する装置から入力または変更された情報である請求項３または４記載の命令処理装置。
【請求項６】
複数の作業それぞれが実行される優先順位が記憶され、新たな作業の割り込みがあると、新たな作業の優先順位が高くなるように、これらの優先順位が変更され、
当該作業が終了すると、この作業の優先順位が低くなるように、これらの優先順位が変更されることを特徴とする請求項３、４または５記載の命令処理装置。
【請求項７】
優先順位は、上記待ち時間に応じた時間が経過する間、低く設定されることを特徴とする請求項６記載の命令処理装置。
【請求項８】
上記待ち時間に応じた時間が経過したとき、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了させることを特徴とする請求項３、４または５記載の命令処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令処理装置及び命令処理方法に関し、特に命令処理に無駄な空き時間が生じないような効率的に命令を処理するものに関する。
【背景技術】
【０００２】
従来、命令処理にあたっては、時刻や待ち時間を指定して実行を命令する時刻・時間指定方式や、命令の処理の順序を指定し、命令実行の時刻は指定しない順序指定方式があった。例えば、ＭＩＤＩ形式の電子楽器間で送受されるミディ（ＭＩＤＩ）データは、この命令実行の時刻は指定しない順序指定形式となっている。
【０００３】
上記時刻・時間指定方式では、メールボックスなどのメモリに時刻情報または待ち時間付きの命令が格納され、受信側のＣＰＵ／コントローラなどによって、このメールボックスの命令が順次閲覧されて、上記時刻情報が現在時刻に一致したら、または待ち時間に応じた時間が経過したら、この命令が実行される。
【０００４】
また、上記順序指定方式では、メモリ／待ち行列に実行の順番に命令が格納／書き込まれ、受信側のＣＰＵ／コントローラなどによって、このメモリ／待ち行列の命令が順番に読み出され、順次実行され、上記時間情報または時刻情報はこの順序指定方式にはない。
【０００５】
【特許文献１】特開平１１−１３４１２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、命令の中には実行時刻・実行時間を指定するという命令もあり、このような命令が含まれる複数の命令が順次実行される場合には、上記時刻・時間指定方式では、実行の順番が各時刻に制限され、同一時間・時刻を指定された複数の命令の実行順序が不定となり、処理を待つすべての命令の指定時間・時刻を比較する必要があり、また現在時刻が上記時刻に到達するまで、または待ち時間に応じた時間が経過するまで、無駄に待ち時間が費やされてしまうという問題があった。また、上記順序指定方式では、時刻情報がもともと無いため、ある時刻またはある経過時間を指定して命令を実行させることができなかった。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本件発明では、発令順に命令が処理される命令実行システムに対して、命令の実行までの待ち時間または時刻を有する命令、及びその直後に実行すべき命令を発令する際に、前者に適切な待ち時間または時刻情報を付与して発令し、次いで後者に待ち時間が最小となるような待ち時間または時刻情報を付与して発令するようにする。
【発明の効果】
【０００８】
これにより、待ち時間・時刻を有する命令が正しく待ち時間を経過した後または正しい時刻に実行され、またこれに続いて実行されるべき待ち時間・時刻を有さない命令が正しい順序で実行される。
【０００９】
エフェクトモード切替えのとき、フェードアウト実行後、一定時間経過を待ってモード切替えと、パラメータ転送とを行わなくてはならない。そうしなと、ノイズが入ったり聴覚上違和感が発生するからである。パラメータ転送の方はモード切替え後直ちに実行してもノイズが入らないが、モード切替えと、パラメータ転送との実行順序を逆にはできない。モードは、エフェクトの種類を指す。
【００１０】
メールボックス方式では、全部のメールが走査された上で時間データが比較される。しかし、同一時間データの命令の後先／優先順位／実行順位は判断ができない。ＦＩＦＯ（ファーストインファーストアウト）方式では、順位を間違えることはなく、全命令を走査する必要はない。しかし、実行するまでの待機時間を実現することが難しい。
【００１１】
本発明では、ＦＩＦＯ方式の命令に発行時刻と待ち時間または待ち時刻のデータを付加し、モード切替えには消音の待機時間を付加し、パラメータ転送には待機時間を最小にして付加するようにしたので、実行の順番が間違わず、待機時間を実現しながら、モード切替えとパラメータ転送とが実行される。
【００１２】
上記待ち時間情報は、命令の発令時刻から該命令が実行されるべき時刻までの時間間隔を示す。また、上記待ち時刻情報は、該命令が実行されるべき時刻を示す。上記その直後に実行すべき命令の、見た目の実行時刻は、上記命令の実行までの待ち時間または時刻を有する命令の実行時刻以前になる。しかし、この場合でも、実際に上記その直後に実行すべき命令が実行されるのは、上記命令の実行までの待ち時間または時刻を有する命令の実行時刻より後になる。
【発明を実施するための最良の形態】
【００１３】
（１）全体回路
図１は、命令処理方法を実現する全体回路、命令処理方法のためのコンピュータプログラムを実行する全体回路、並びに命令処理装置または電子楽器の全体回路１を示す。
【００１４】
キーボード１１の各キーは、楽音の発音及び消音を指示するもので、キースキャン回路１２によってスキャンされ、キーオン、キーオフを示すデータが検出され、前回のスキャンが行われた際に検出された各キーのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が為され、イベントがあれば外部インタラプト信号ＯＩＮがキースキャン回路からコントローラ２に送り込まれる。
【００１５】
このキーボード１１の各キーには段差タッチスイッチなどの速度センサー、加速度センサー、圧力センサーが設けられ、段差スイッチごとに上記スキャンが行われ、各段差スイッチの先頭のオン／オフごとにオンイベント／オフイベントの検出が行われる。この段差スイッチなどのセンサーによってタッチの速さと強さを示す上記タッチ情報つまりイニシャルタッチデータとアフタタッチデータとが発生される。なお、キーボード１１は、電子弦楽器、電子吹奏（管）楽器、電子打楽器（パッド等）、コンピュータのキーボード等で代用される。
【００１６】
パネルスイッチ群１３の各スイッチは、スイッチスキャン回路１４によって、スキャンされる。このスキャンにより、各スイッチのオン、オフを示すデータが検出され、前回のスキャンが行われた際に検出された各スイッチのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が為され、イベントがあれば外部インタラプト信号ＯＩＮがキースキャン回路からコントローラ２に送り込まれる。
【００１７】
ミディ（ＭＩＤＩ）回路１５は、外部接続された電子楽器との間で演奏情報や楽音波形信号の送受を行うためのインターフェースである。この演奏情報はＭＩＤＩ（ミュージカルインスツルメントデジタルインターフェース）規格のもので、この演奏情報に基づいた発音も行われる。
【００１８】
ミディ回路１５に情報が外部から送り込まれると、外部インタラプト信号ＯＩＮがミデイィ回路１５からコントローラ２に送り込まれる。この外部インタラプト信号ＯＩＮは上記キースキャン回路、スイッチスキャン回路あるいはミディ回路１５に限らず、本命令処理装置に接続された外部接続機器からも送られてくる。
【００１９】
上記キーボード１１、パネルスイッチ群１３またはミディ回路１５には、自動演奏装置も含まれる。これらキーボード１１、パネルスイッチ群１３、ミディ回路１５及び自動演奏装置から発生された演奏情報（楽音発生情報）は、楽音を発生させるための情報である。
【００２０】
上記演奏情報（楽音発生情報）は、音楽的ファクタ（因子）情報であり、音高（音域）情報（音高決定因子）、発音時間情報、演奏分野情報、発音数情報、共鳴度情報などである。発音時間情報は楽音の発音開始からの経過時間を示す。演奏分野情報は、演奏パート情報、楽音パート情報、楽器パート情報等を示し、例えばメロディ、伴奏、コード、ベース、リズム、ＭＩＤＩ等に対応したり、または上鍵盤、下鍵盤、足鍵盤、ソロ鍵盤、ＭＩＤＩ等に対応したりしている。
【００２１】
上記音高情報はキーナンバデータＫＮとして取り込まれる。このキーナンバデータＫＮはオクターブデータ（音域データ）と音名データとからなる。演奏分野情報は、パートナンバデータＰＮとして取り込まれ、このパートナンバデータＰＮは各演奏エリアを識別するデータであって、発音操作された楽音がどの演奏エリアからのものかによって設定される。
【００２２】
発音時間情報は、トーンタイムデータＴＭとして取り込まれ、キーオンイベントからのタイムカウントデータに基づいたり、またはエンベロープフェーズなどが転用されたりする。この発音時間情報は特願平６−２１９３２４号明細書及び図面に発音開始からの経過時間情報として詳しく示される。
【００２３】
発音数情報は同時に発音している楽音の数を示し、例えばアサインメントメモリ４０のオン／オフデータが「１」の楽音の数に基づき、この数は特願平６−２４２８７８号の図９及び図１５、特願平６−２４７６８５５号の図８及び図１８、特願平６−２７６８５７号の図９及び図２０、特願平６−２７６８５８号の図９及び図２１のフローチャートに基づいて求められる。
【００２４】
さらに、上記パネルスイッチ群１３には各種スイッチが設けられ、この各種スイッチは音色タブレット、エフェクトスイッチ、リズムスイッチ、ペダル、ホイール、レバー、ダイヤル、ハンドル、タッチスイッチ等であって楽器用のものである。このペダルはダンパーペダル、サスティンペダル、ミュートペダル、ソフトペダル等である。パネルスイッチ群１３には、エフェクトモード切替えスイッチ、エフェクトパラメータスイッチなどが設けられ、エフェクトのモード設定／切替え、エフェクトのパラメータの設定などが行なわれる。
【００２５】
この各種スイッチより、楽音制御情報が発生され、この楽音制御情報は発生された楽音を制御する情報であって音楽的ファクタ（因子）情報であり、音色情報（音色決定因子）、タッチ情報（発音指示操作の速さ／強さ）、発音数情報、共鳴度情報、エフェクト情報、リズム情報、音像（ステレオ）情報、クオンタイズ情報、変調情報、テンポ情報、音量情報、エンベロープ情報等である。これら音楽的ファクタ情報も上記演奏情報（楽音情報）に合体され、上記各種スイッチより入力されるほか、上記自動演奏情報に合体されたり、上記インターフェースで送受される演奏情報に合体されたりする。
【００２６】
上記音色情報は、鍵盤楽器（ピアノ等）、管楽器（フルート等）、弦楽器（バイオリン等）、打楽器（ドラム等）の楽器（発音媒体／発音手段）の種類等に対応しており、トーンナンバデータＴＮとして取り込まれる。上記エンベロープ情報は、エンベロープレベルＥＬ、エンベロープタイムＥＴ、エンベロープフェーズＥＦなどである。
【００２７】
このような音楽的ファクタ情報は、コントローラ２へ送られ、後述の各種信号、データ、パラメータの切り換えが行われ、楽音の内容が決定される。上記演奏情報（楽音発生情報）及び楽音制御情報はコントローラ２で処理され、各種データが楽音波形発生部５へ送られ、楽音波形信号ＭＷが発生される。コントローラ２はＣＰＵなどからなり、場合によってＤＳＰ（デジタルシグナルプロセッサ）、ＲＯＭ及び／またはＲＡＭなどを含む。このようなコントローラ２は、図１の回路ごとに分散されて設けられてもよい。
【００２８】
プログラム／データ記憶部４には、楽音波形信号が記憶され、場合によってミディ回路１５から送られてきた楽音波形信号が書き込まれる。このプログラム／データ記憶部４の楽音波形信号は、情報記憶部７に直接またはバスラインを介してコピーされて、他の装置に組み込まれ、楽音信号発生部５に転送される。
【００２９】
プログラム／データ記憶部４（内部記憶媒体／手段）はＲＯＭまたは書き込み可能なＲＡＭ、フラッシュメモリまたはＥＥＰＲＯＭ等の記憶装置からなり、光ディスクまたは磁気ディスク等の着脱自在な情報記憶部７（外部記憶媒体／手段）に記憶されるコンピュータのプログラムが書き写され記憶される（インストール／転送される）。またプログラム／データ記憶部４には外部の電子楽器またはコンピュータから上記ミディ回路１５または送受信装置を介して送信されるプログラムも記憶される（インストール／転送される）。このプログラムの記憶媒体は通信媒体も含む。
【００３０】
このインストール（転送／複写）は、情報記憶部７が本楽音生成装置にセットされたとき、または本楽音生成装置の電源が投入されたとき自動的に実行され、または操作者による操作によってインストールされる。上記プログラムは、コントローラ２が各種処理を行うための後述するフローチャートに応じたプログラムである。
【００３１】
なお、本装置に予め別のオペレーティングシステム、その他のプログラムが記憶され、上記プログラムはこれらのオペレーティングシステム、その他のプログラムとともに実行されてもよい。このプログラムは本装置（コンピュータ本体）にインストールされ実行されたときに、別のプログラムとともにまたは単独で請求項（クレーム）に記載された処理・機能を実行させることができればよい。なお、このようなオペレーティングシステムなどは後述するフローチャートで示されるものであるが、本装置に無くても良い。
【００３２】
また、このプログラムの一部又は全部が本装置以外の１つ以上の別装置に記憶されて実行され、本装置と別装置との間には通信手段を介して、これから処理するデータ／既に処理されたデータ／プログラムが送受され、本装置及び別装置全体として、本発明が実行されてもよい。
【００３３】
このプログラム／データ記憶部４には、上述した音楽的ファクタ情報、上述した各種データ及びその他の各種データも記憶される。この各種データには時分割処理に必要なデータや時分割チャンネルへの割当のためデータ等も含まれる。
【００３４】
楽音信号発生部５では、上記楽音波形信号がいったん記憶され、指定された音高に応じた速度で読み出され、エンベロープ波形信号が合成されて、サウンドシステム６で楽音として出力され放音される。この楽音信号発生部にはＤＳＰ（デジタルシグナルプロセッサ）が設けられている。ＤＳＰでは、上記エフェクトに応じた処理が実行され、エフェクト制御された楽音がサウンドシステム６から出力され放音される。
【００３５】
このような楽音波形信号の波形は、上述の音色、タッチ、音高、音域、発音時間、演奏分野、発音数、共鳴度などの情報によって、切り換えられ変化される。このような楽音波形信号は伸張再生前の圧縮記憶状態のものが楽音信号発生部５に記憶され、楽音信号発生部５で伸張再生されてもよい。
【００３６】
タイミング発生部３からは、楽音生成装置の全回路の同期を取るためのタイミングコントロール信号が各回路に出力される。このタイミングコントロール信号は、各周期のクロック信号のほか、これらのクロック信号を論理積または論理和した信号、時分割処理のチャンネル分割時間の周期を持つ信号、チャンネルナンバデータＣＨＮｏ、タイムカウントデータＴＩなどを含むが、含まれなくてもよい。
【００３７】
また、このタイミング発生部３から一定周期ごと、例えば２００マイクロ秒ごとの周期インタラプト信号ＳＩＮが上記コントローラ２に送られる。上記タイムカウントデータＴＩは、絶対時間つまり時間の経過を示し、このタイムカウントデータＴＩのオーバーフローリセットから次のオーバーフローリセットまでの周期は、各楽音のうち最も長い発音時間、または最も長いジョブまたはイベントの処理時間より長く、場合によって数倍に設定される。このタイムカウントデータＴＩは無くてもよい。
【００３８】
本装置では複数のジョブが並列に動作しており、この周期インタラプト信号ＳＩＮの出力を契機として、上記オペレーティングシステムによって、現種実行しているジョブから別のジョブに制御が移行される。この周期インタラプト信号ＳＩＮの周期は、該切替えがあまり頻繁になって切替え処理自体が負担になるほど短くなく、かつ本装置の応答が遅れるほど長くなく、例えば２００マイクロ秒に設定される。
【００３９】
タイマ１６は、フリ−ランタイプである。このタイマ１６のオーバーフローリセットから次のオーバーフローリセットまでの周期は、もっとも長いジョブ処理時間より長く、場合によって最も長いジョブまたはイベント処理より長く、場合によって数倍に設定される。このタイマ１６のカウントの分解能は誤差として実用上問題がないだけの時間幅例えば１０マイクロ秒とされる。
【００４０】
なお、タイマ１６の値は、命令実行までの待ち時間または時刻として後述の命令キューにストアされるほか、各種の時間に関連する用途に用いてもよい。また、タイマ１６には、命令実行までの待ち時間に応じた１つまたは複数の時間情報がストアされ、経過時間が所定周期、例えば１０マイクロ秒でデクリメントまたはインクリメントされ、この各時間情報に応じた待ち時間が経過するごとに、タイマインタラプト信号ＴＩＮが上記コントローラ（ＣＰＵ）２またはその他の回路などへ送り込まれて、時間情報に応じた待ち時間が経過したことが判別されてもよい。
【００４１】
上記命令キューに待ち時間を記憶する場合は、命令発行時刻としてこの現在時刻がストアされ、また待ち時間として所定の時問がストアされる。一方、上記命令キューに待ち時刻が記憶される場合は、命令発行時間としてこの現在時刻がストアされ、待ち時刻として現在時刻に所定の時間を加算した値がストアされる。その後他の処理が行われるなどの時間経過の後、該命令を処理する段に於いて、現在時刻が該回路によって命令発行時より進められた値となっている。
【００４２】
そこで命令キューに待ち時間を記憶する場合、キューにストアされた命令発行時刻と待ち時間とが加算されれば命令を実行すべき時刻が得られるが、この加算結果と上記進められた現在時間とが比較されることによって待ち時問が経ったかどうかが判別される。同様に命令キューに待ち時刻が記憶される場合、キューにストアされた待ち時刻と上記進められた現在時刻とが比較されることによって待ち時刻が過ぎたかどうかが判別される。
【００４３】
（２）プログラム／データ記憶部４
図２は上記プログラム／データ記憶部４に設けられた命令キューの構造を示す。命令キューは複数のコラム（連続した記憶エリアの塊、実施例では６ワードの連続した記憶エリア）からなっている。各コラムは上記プログラム／データ記憶部４のＲＡＭ内の空きエリアに分散して設けられているが、先頭及び末尾コラムのアドレスがレジストされ、各コラムのアドレスを直前のコラムが記憶しているために順次読み出すことができる。
【００４４】
一コラムが読み出されたら、上記レジストされた先頭コラムのアドレスが、読み出したコラムに記憶された次コラム（読み出し開始の時点で二番目のコラム）のアドレスに書き変えられ、これによって、読み出されたコラムが占めるエリアを開放することができる。
【００４５】
また、コラムを追加する場合は、まず上記レジストされた末尾コラムのアドレスから末尾のコラムを探し、このコラムに記憶された次アドレスに新たなコラムの命令をセットする。次に上記末尾コラムのアドレスのレジストを、新たに命令をセットしたコラムのアドレスに書き変える。
【００４６】
最後に上記ＲＡＭ内にコラムのサイズ分だけの連続した記憶エリアを探し、その先頭アドレスを該新たなコラムの「次コラムのアドレス」としてセットする。この各コラムに記憶された命令は図８及び図９に記載されたジョブから図１０に記載されたジョブへのジョブ間通信として受け渡される。
【００４７】
この各コラムに記憶された各命令は、各命令の実行までの待ち時間、または各命令が実行されるべき待ち時刻情報を有しており、後述する図８／図９のジョブから図１０のジョブへのジョブ間通信で渡される命令群であるが、待ち時間／時刻情報を省略してその他のジョブ間通信(例えば図８と図１１)にも用いてもよい。
【００４８】
上記ミディ回路１５、または上記スイッチスキャン回路１４によって、上記楽音信号発生部５のＤＳＰで動作するエフェクトのモード切替えが指示された場合、
上記命令キューには待ち時間または時刻を適切に設定されたエフェクトモード切替え命令と、待ち時間を最小または待ち時到をエフェクトモード切替え命令と同程度以前に設定されたエフェクトパラメータ設定命令が連続したコラムにセットされる。
【００４９】
上記ミディ回路１５、上記キーボードスキャン回路１２、または上記スイッチスキャン回路１４によって、上記エフェクトのモード切替え及び／またはエフェクトのパラメータ設定以外の指示があった場合（例えば、押・離鍵、音色変更、コントロール変更など）、これらの命令には直ちに対応することが予め判っているため、待ち時間／待ち時刻情報を省略して上記命令キューを用いて図１１のジョブなどに命令を渡してもよい。
【００５０】
１命令をストアするコラムは複数のデータを連続したアドレスに記憶している。コラムに記憶された命令データは、命令内容、命令引数、発行時刻、時間情報、次コラムのアドレスなどからなっている。命令内容は上記ＤＳＰに命令される内容を示す。命令内容は２つのバイトからなり、上位バイトは命令タイプつまりエフェクトモード切替えかエフェクトパラメータ設定かを示し、下位バイトは切替えまたは設定するエフェクトのパート番号を示す。
【００５１】
命令引数は、２つのワードからなり、上位バイトは第一パラメータ値を示し、下位バイトは第二パラメータ値を示す。命令タイプがエフェクトモード切替えである場合、命令引数はモード番号を表す。エフェクトモードとはエフェクトの種類であり、リバーブ、エコー、イコライザ等を示す。
【００５２】
また、命令タイプがエフェクトパラメータ切替えである場、命令引数はそれぞれのエフェクトモードにおけるパラメータ値を表す。 例えばエフェクトモードがリバーブの場合、
エフェクトパラメータは初期反射時間、後部残響時間など、エフェクトモードがエコーの場合、エフェクトパラメータはディレイタイム、リピートレートなど、エフェクトモードがイコライザの場合、エフェクトパラメータはハイバンドゲイン、ローバンドゲインなどを表す。これらの命令引数は２つのバイトから成り、上位バイトは第１パラメータ値を、下位バイトは第２パラメータ値を示す。
【００５３】
上記発行時刻はこの命令が発行された時刻を示し、上記タイマ１６が示す現在時刻がセットされる。この発行時刻は、上記エフェクトモード切替え命令及びそれに続くエフェクトパラメータ設定命令を発行する際に、上記タイマ１６からコントローラ２によって読み取られ、上記命令キューに書き込まれる。次コラムアドレスはこの命令の次に実行すべき命令が記憶されているコラムのアドレスを示す。
【００５４】
上記時問情報は、上記エフェクトモード切替え命令が発行されてから実行されるまでの待ち時間、及び上記エフェクトパラメータ設定命令が発行されてから実行されるまでの待ち時間を示す。このとき、エフェクトモード切替え命令の時間情報が適切な待ち時問を示すのに対し、エフェクトパラメータ設定命令の待ち時間は最小の待ち時間を示すので、見かけ上エフェクトパラメータを設定してからエフェクトモードを切り替えるようになる。しかし、エフェクトパラメータ設定命令は必ずエフェクトモード切替え命令の実行後に実行されるので、上述のような順序逆転は生じない。
【００５５】
この時間情報は、上記エフェクトモード切替え命令及びエフェクトパラメータ設定命令が実行されるべき時刻であっても良い。この場合、命令発行時刻を タイマ１６から読み出し、エフェクトモード切替え命令が必要とする待ち時間を加えて時間情報としてセットする。エフェクトパラメータ設定命令の時間情報には、この時間情報以前の値をセットするので、見かけ上エフェクトパラメータを設定してからエフェクトモードを切り替えるようになる。しかし、エフェクトパラメータ設定命令は必ずエフェクトモード切替え命令の実行後に実行されるので、上述のような順序逆転は生じない。
【００５６】
上記のように、 ミディ回路１５またはスイッチスキャン回路１４で発生したエフェクトモード切替えイベントに応じて、適切な待ち時間または時刻を付与されたエフェクトモード切替え命令とエフェクトパラメータ設定命令が命令キュー図２に書き込まれる。
【００５７】
時間情報が待ち時間の場合、上記発行時刻と時間情報の加算値はタイマ１６でカウントされている現在時刻と比較され、実行時刻に達したことが判別されるが、上記待ち行列にストアされている間、時間情報がタイマ１６の歩進毎に順次デクリメントされ、負になるのをもって実行時刻に達したことを判別しても良い。このデクリメントのためにタイマインタラプト信号ＴＩＮを用いても良い。
【００５８】
また、時間情報が待ち時刻の場合、上記時間情報はタイマ１６でカウントされている現在時刻と比較され、実行時刻に達したことが判別されるが、上記待ち行列にストアされている間、時間情報がタイマ１６の歩進毎に順次デクリメントされ、発行時刻以前になるのをもって実行時刻に達したことを判別しても良い。このデクリメントのためにタイマインタラプト信号ＴＩＮを用いても良い。
【００５９】
上記時間情報が待ち時問か待ち時刻かに依らず、各命令が収められたコラムはプログラム／データ記憶部４のＲＡＭ内の任意の位置に配置されて良い。ただし、それらは上記レジストされた先頭及び末尾アドレスと、各コラム内の次コラムアドレスによって、いずれの場合も書きこまれ、発行された順に読み出され実行される。
【００６０】
上記エフェクトモード切替え命令の時間情報は、待ち時間データの場合、現在発音中の楽音がＤＳＰによりフェードアウト処理され、モード切替えによるノイズが発生しなくなるのに十分な時問、例えば１００マイクロ秒に相当する値に設定される。待ち時刻データの場合は、現在時刻に１００マイクロ秒に相当する値を加えた値に設定される。
【００６１】
上記エフェクトパラメータ設定命令の時間情報は、待ち時間データの場合、設定しうる最小値（例えばゼロ、またはゼロ値を何らかの目的で他用している場合は「１」など）に設定される。待ち時刻データの場合は、現在時刻から先行するエフェクトモード切替え命令の待ち時刻データの間のいずれかの値、もしくはその前後の値に設定される。
【００６２】
プログラム／データ記憶部４には、この他に本発明に係るプログラム、該プログラムが動作するためのデータ、および該プログラムが値を一時記憶するための一時記憶エリアなどが設置される。
【００６３】
（３）全体処理
図３は上記コントローラ（ＣＰＵ）２によって実行される全体処理のフローチャートを示す。この全体処理は、本命令処理装置の電源オンによって開始され、電源オフまでステップ０２〜０６の処理の一部が繰り返し実行される。まず、プログラム／データ記憶部４の初期化など種々のイニシャライズ処理が行われる（ステップ０１）。
【００６４】
このイニシャライズ処理では、上記プログラムの命令を実行／処理するのに必要な初期データ、モードデータまたは音楽的ファクタ（音色、タッチ、音高、発音時間）データなどが上記プログラム／データ記憶部４、コントローラ２内の上記ＲＡＭ、楽音信号発生部５またはサウンドシステム６に書き込まれる等され、後述するそれぞれのジョブ（作業）処理の起動／準備がなされる。
【００６５】
次いで、外部割込みを契機として発生する割込みイベントＥＶが発生されていなければ（ステップ０２）、後述する各ジョブのいずれかを起動するジョブ処理が実行される（ステップ０３）。また、外部割込みを契機として発生する割込みイベントＥＶが発生されていれば、その割込みイベントＥＶが電源ボタンの押下によるものの場合（ステップ０４）、後述する終了処理が実行される（ステップ０５）。
【００６６】
一方、ステップ０４で割込みイベントＥＶが電源ボタンの押下によるものでなければ、割込処理（ステップ０６）が実行される。割込処理では、発生した割込（押鍵、離鍵、音色制御、発音制御など）の内容に応じて、それを処理すべきジョブ（後述する）の優先度が最上位に上げられ、それ以外のジョブの優先順位が下げられ、割込みイベントＥＶがクリアされる。
【００６７】
この後、制御は（Ａ）の位置に移動される。この時点で割込みイベントＥＶはクリアされているので、ステップ０２ではジョブ処理（ステップ０３）が選択される。ステップ０３では、上記割込みに対応するジョブの優先順位が最上位となっているので、当該ジョブがステップ０３によって実行される。
【００６８】
（４）周期割込みルーチン／処理
図４は周期割込みルーチン／処理のフローチャートを示す。このルーチン／処理は、上記タイミング発生部３からの周期インタラプト信号ＳＩＮがコントローラ２に送られるごとに実行される。まず、優先変更処理が行なわれ（ステップ１１）、戻り先格納処理が実行され（ステップ１２）、上記ステップ０１とステップ０２の間の処理位置Ａに戻る。
【００６９】
上記優先変更処理（ステップ１１）では、直前までコントローラ２が実行していた処理の優先順位が下げられて、後述する休眠状態でない他のジョブの優先順位が上げられる。上記戻り先格納処理（ステップ１２）では、この周期割込みルーチン／処理の直前まで実行されていた処理位置などがＲＡＭなどに格納される。
【００７０】
（５）外部割込みルーチン／処理
図５は上記コントローラ（ＣＰＵ）２によって実行される外部割込みルーチン／処理のフローチャートを示す。このルーチン／処理は、ミディ回路１５などの外部接続機器からの外部インタラプト信号ＯＩＮがコントローラ２に送られるごとに実行される。まず、戻り先格納処理が実行される（ステップ２１）。
【００７１】
次いで、ドライバ処理で、外部から送られてきた情報が取り込まれ（ステップ２２）、割込みイベントＥＶ処理で、取り込まれた情報が一連の命令として完結していれば、割込みイベントＥＶが発生されて（ステップ２３）、上記ステップ０１とステップ０２の間の処理位置Ａに戻る。
【００７２】
この戻り先格納処理（ステップ２１）は上記ステップ１２と同じ動作である。
【００７３】
上記ステップ２２で取り込まれる情報は、一連または一つの命令が複数の情報に分割されて所定量例えば１バイトずつ送られて来ることがある。例えばＭＩＤＩデータでは数バイトからなるコマンドが１バイトずつ送られる。
【００７４】
（６）ジョブ処理（ステップ０３）
図６は上記ステップ０３のジョブ処理を示す。まず後述の複数のジョブそれぞれにつき、どのジョブの優先順位が高いか判断され（ステップ３１）、一番優先順位の高いジョブが実行される（ステップ３２）。この優先順位は、上記ステップ０６、１１などで設定／変更されたものである。ステップ３２は後述のいずれかのジョブの実行を、そのジョブが最後に実行されたステップの次のステップから再開するが、当該ジョブが後述する休眠状態に入っている場合は例外としてそのジョブの先頭から実行を再開する。
【００７５】
この各ジョブでは上述のエフェクトモード切替え、エフェクトパラメータ設定の他、音色番号変更、ビブラートなどの音楽的効果、音高（トランスポーズ、チューンなど）情報、トーン（高調波成分含有率、フィルタカットオフ周波数など）情報、タッチ(ベロシティ感度、オフセットなど）情報、エンベロープ（アタック、ディケイ、リリースなど）情報などの設定または変更処理といった楽音制御処理が実行される。
【００７６】
このジョブ処理によって、上記複数のジョブのいずれかが実行されるが、各ジョブの実行中は、上記タイマ割込み、外部割込みが許可されている。これら割込みにより周期割込みまたは外部割込みルーチン／処理が呼び出され、実行された後は、各ジョブの割込みの発生した場所の次ではなく、図３の（Ａ）の位置に復帰する。この際に、上記割込みの発生した場所の次の位置は各割込みルーチン内で保存され、当ジョブ処理ルーチンが各ジョブを再度実行させる場合は、上記保存された位置から実行が再開される。
【００７７】
（７）終了処理（ステップ０５）
図７は上記ステップ０５の終了処理のフローチャートを示す。まず、割込みを指示するタイマ、外部または周期のインタラプト信号ＴＩＮ、ＯＩＮまたはＳＩＮが送られてきても、割込み処理を禁止する（ステップ４１）。これにより、終了処理が割込み処理に優先され、終了が遅れてしまうことがなくなる。
【００７８】
したがって、上述の待ち時間情報に応じた時間が経過するまでに、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了することになる。
【００７９】
次いで、プログラム／データ記憶部に、電源遮断時に記憶を維持している書換え可能なメモリ（フラッシュメモリやバックアップバッテリ付きＲＡＭなど）がある場合は、編集可能なデータがＲＡＭから上記メモリに転写される（ステップ４２）。編集可能なデータを記憶しているＲＡＭが電源遮断時に記憶を維持しているメモリである場合は、この動作は不要となる。その後、電源回路に対し電源切断が命令されて（ステップ４３）、処理が終了される。
【００８０】
（８）イベント処理ジョブ
図８はコントローラ２に於いてステップ０３が並列に実行させる複数のジョブの一つであるイベント処理ジョブを示す。まずキーボードスキャン回路１２で押鍵イベントまたは離鍵イベントが発生すると、上記外部割込が発生し、割込みイベントＥＶが発生する。このためステップ０６が駆動されてジョブの優先順位が変化し、押鍵及び離鍵を処理するジョブとして当イベント処理ジョブが最優先となり、ジョブ処理ステップ０３が当ジョブを動作させる。
【００８１】
同様にスイッチスキャン回路１４で音色変更、コントロール変更等のイベントが発生した場合もステップ０３が当ジョブを動作させる。さらに、ミディ回路１５で一連のＭＩＤＩコマンドを受信し終えた場合も、ステップ０３が当ジョブを動作させる。当ジョブは最後にタイマまたは外部割込みにより中断した場所の次から動作を再開するが、処理の続きを実行した後先頭（ステップ５１）に戻る。
【００８２】
この時点で以前から蓄積されているイベントがあればそのイベントを、なければ最後に発生したイベントを実行する（ステップ５１）。イベントがキーオンまたはオフイベントであった場合（ステップ５２）楽音信号発生部５および外部接続機器に、該キーの音高に応じた楽音で発音を開始、または終了するよう指示が送信される（ステップ５３）。
【００８３】
また、イベントが音色変更、コントロール変更などのパネルイベントであった場合（ステップ５４）、この音色変更、コントロール変更などが楽音信号発生部５および外部接続機器に送信される（ステップ５５）。
【００８４】
さらに、イベントがＭＩＤＩイベントであった場合、そのＭＩＤＩイベントが楽音信号発生部５に送信される（ステップ５７）。ＭＩＤＩイベントをさらに外部接続機器に送信しても良い。一方、ステップ５１で当ジョブが処理すべきイベントが発生していない場合、当ジョブは休眠状態となる（ステップ５８）。
【００８５】
この休眠状態では、当ジョブは自分自身の優先順位を最下位にし、他の休眠していないジョブの優先順位を１ずつ上げ、休止命令や無限ルーブなどの休眠コマンドが実行される。休眠状態からの復帰は上記ステップ０６で、当ジョブで処理すべきイベントが発生したときに行われる。休眠状態から復帰する場合は、処理は最後に中断した位置の次からではなく、ジョブの先頭（ステップ５１）からとなる。
【００８６】
この休眠処理によって、外部割込みが発生し、割込み処理（ステップ０６）、ジョブ処理（ステップ０３）を経由して、当ジョブが再度駆動させられるまで、当ジョブが休眠される。これにより、他のジョブが優先して実行され、コントローラ２（ＣＰＵ）が効率よく使用される。
【００８７】
このイベント処理ジョブはジョブ処理（ステップ０３）から駆動される独立したジョブ（アプリケーション、プロセス、タスクなどと呼んでも良い）として記載されているが、図３乃至図７と一体に動作する単一のプログラムの一部であっても良い。
【００８８】
（９）パネル処理（ステップ５５）
図９は上記ステップ５５のパネル処理のフローチャートを示す。まず、エフェクトモードについて切替え操作、設定操作または変更操作があれば（ステップ６１）、上記楽音信号発生部５のＤＳＰの使用権が獲得される（ステップ６２）。
【００８９】
この使用権は以下の手順で獲得される。まずプログラム／データ記億部４にデバイス（この場合はＤＳＰ）毎に設けられた図示しないＦＩＦＯ（ファーストインファーストアウト）メモリの最後に当ジョブを示す識別コードが追加される。次いで、当ジョブの優先順位が最下位から二番目に設定される。そして上記ＦＩＦＯメモリの先頭を観察し、当ジョブの識別コードが先頭に来るのを待つ。
【００９０】
当ジョブの識別コードが先頭に着いたら、当ジョブの優先順位を元に戻す。このとき優先順位を下げるのは、使用権獲得までの間に、他のジョブを優先して実行させ、ＤＳＰの使用権を握っているジョブが早く使用を終えて使用権を開放するためである。また、優先順位を最下位でなく最下位から二番目にするのは、休眠状態と区別するためである。
【００９１】
本実施例では使用権渡得はイベントではないので、休眠状態と同じにしてしまうとジョブの実行が遅れることがある。上記に代えて、使用権の獲得をイベントとなるようにして優先順位を最下位にしても良い。
【００９２】
この使用権の獲得と開放は、コントローラ２（ＣＰＵ）上で並列に動作する複数のジョブが使用を競合する可能性のあるすべてのデバイスについて、各ジョブで必ず行われる。本発明では上記ＤＳＰの他、同じ楽音信号発生部５にある音源回路、プログラム／データ記憶部４に設けられたトーンデータテーブル、レジストメモリテーブルなどに対して、上記ＦＩＦＯメモリがそれぞれ別途設けられ、別途使用権の獲得と開放が行われる。なお、使用権獲得と開放にはＦＩＦＯメモリを用いる上記の方法以外の方法が用いられても良い。
【００９３】
次いで、発生中の楽音のミュート処理が行なわれる（ステップ６３）。このミュート処理では、楽音信号発生部５に於いて、イベントの発生した当該パートで発音中の楽音につき、所定時間例えば１００マイクロ秒をかけて徐々に消音を行うようＤＳＰに指示する処理が行われる。この消音が完了すれば、エフェクトモードを切り替えても雑音が発生することがないが、当該指示を行った直後は、まだノイズ無しでエフェクトモードを切り替えることはできないので、この段階ではエフェクトモード切替えはＤＳＰに指示しない。
【００９４】
そして、上記ＤＳＰの上記使用権が開放され（ステップ６４）、即ち上記ＦＩＦＯメモリが歩進され、次いでエフェクトモード切替え命令が、１００マイクロ秒の待ち時間、または現在時刻の１００マイクロ秒後の待ち時刻とともに図２に示す命令キューに１コラム書き込まれた上で、エフェクトモード切替えの割込みイベントＥＶが発行される（ステップ６５）。
【００９５】
さらに、切替え後の初期パラメータを設定させるために、エフェクトパラメータ設定命令が待ち時間ゼロ、または現在時刻から上記待ち時刻と略同一の値までの適切な値を示す待ち時刻／待ち時間とともに、上記命令キューに１コラム書き込まれた上で、エフェクトパラメータ設定の割込みイベントＥＶが発行される（ステップ６６）。各コラムの次アドレスは上記の方法で１コラム書き込む毎に設定する。このとき、エフェクトモード切替え命令を外部にも送信する。
【００９６】
これにより図２の命令キューの最後のコラムにエフェクトモード切替え命令とエフェクトパラメータ設定命令が書き込まれる。この場合、エフェクトモード切替え命令は、例えば、命令内容が０ｘＥ００３（上位二桁がエフェクトモード切替えを示すコード、下位二桁が切替えパート）、命令引数は０ｘ０００３（エフェクトモード番号で、例えばイコライザを示す)、発行時刻はステップ６５の時点でタイマ１６を読み出した値、待機時間は０ｘ０００Ａ（＝１０、値１毎に１０マイクロ秒を示す）となる。
【００９７】
また、エフェクトパラメータ設定命令は、例えば、命令内容が０ｘＥ１０３（上位二桁がエフェクトパラメータ設定を示すコード、下位二桁が設定パートで切替えパートに同じ）、命令引数は０ｘ１Ｄ３Ｆ（上位二桁がハイバンドゲイン、下位二桁がローバンドゲイン）、発行時刻はエフェクトモード切替え命令の発行時刻と同じく、ステップ６５の時点でタイマ１６を読み出した値、待機時間は０ｘ００００（待ち時間無し）となる。
【００９８】
さらに、待ち時間に代えて待ち時刻を記録する場合、エフェクトモード切替え命令の待機時間は発行時刻に０ｘ０００Ａを加えた値、エフェクトパラメータ設定命令の待機時間は発行時刻付近からエフェクトモード切替え命令の待機時間付近のどの値でも良い。また、発行時刻はステップ６３からステップ６５までのどこで採取するようにも構成することができる。
【００９９】
これにより、必要な待機時間を伴ってエフェクトモード切替え命令と、このエフェクトモード切替え命令の実行後直ちに実行されて、待機時間を必要とせず処理順序だけが定められるエフェクトパラメータとが、命令キューに書き込まれることで、パネルスイッチ群から入力された命令が後述のジョブに送出されることができ、必要な待機時間の後に上記二つの命令が書き込み順序通りに実行される。
【０１００】
このような、待ち時間情報の付加は、パネルスイッチ群１３から入力されたエフェクトモード切替え命令のほか、上記ミディ回路１５を通じて外部から送られてくるエフェクトモード切替え命令にも使用される。また、その他のパネル、ミディ回路１５から入力される命令やキーボード１１から入力される命令についても、一定の待機時間の後に実行される命令の直後に、該命令の実行後ただちに実行される命令が必要な場合は上記方法が使用されてもよい。
【０１０１】
また、パネルスイッチ群１３の各種スイッチの操作／イベントが、エフェクトについて設定操作または変更操作でなければ（ステップ６１）、この操作／イベントに応じた音楽的ファクタ情報が、楽音信号発生部５またはサウンドシステム６に送られ、プログラム／データ記憶部４に書き込まれまたは外部接続機器に送信される（ステップ６７）。
【０１０２】
なお、上記ステップ６５及びステップ６６の処理はひとまとめに行なわれてもよい。
【０１０３】
（１０）命令実行ジョブ
図１０はコントローラ２に於いてステップ０３が並列に実行させる複数のジョブの一つである命令実行ジョブのフローチャートを示す。図９のステップ６５でエフェクトモード切換えイベントが発生した後、ステップ５１で処理するイベントがなくなると、図８のジョブはステップ５８より休眠状態に入る。
【０１０４】
その後周期インタラプト信号ＳＩＮによって周期割込みが発生して（Ａ）の位置に戻ると、ステップ０２によってステップ６５で発生した割込みイベント（エフェクトモード切替えイベント）が発見され、ステップ０４を経てステップ０６にて当ジョブの優先順位が上げられる。
【０１０５】
（Ａ）に戻ると、さらにステップ６６で発生したイベントが発見され、ステップ０４を経てステップ０６にて当ジョブの優先順位が再度上げられる（が、この二度目の優先順位変更は実質何もしない）。そして（Ａ）の位置に戻る。以上によりステップ６５およびステップ６６のイベントはいずれもクリアされるので、他にイベントが発生していなければステップ０２を経てステップ０３に移動して当ジョブに制御が移る。
【０１０６】
他のイベントが発生している場合は、そのイベントを処理し終えた後に、やはりステップ０２を経てステップ０３に移動して当ジョブに制御が移る。当ジョブでは前回処理を中断した場所の次から処理を行い、すべての処理中のイベントが終了した後、先頭に戻る。また、当ジョブが休眠中であった場合は、先頭（ステップ７１）から処理を再開する。
【０１０７】
ここで、ステップ６５および６６で発生したイベントが新たに存在するので、ステップ７１では'Ｙ'、即ちステップ７２へ進む。次に、命令キューから１コラムの命令が読み出され、発行時刻に待ち時間を加えた値、または待ち時刻をレジストする（ステップ７２）。次いで、タイマ１６から現在時刻が読み出され、上記レジストした値と比較される（ステップ７３）。
【０１０８】
比較の結果、まだ現在時刻の方が後である場合、当ジョブの優先順位が最下位から二番目に下げられ、現在時刻が上記レジストした値より後になるまで繰り返される。この間にＤＳＰではステップ６３で指示したフェードアウト処理が実行される。また、上記繰り返しの間、当ジョブの優先順位が低く設定されているので、当ジョブ以外のジョブの処理が優先して処理される。
【０１０９】
現在時刻と上記レジストした値を比較することで時間待ちする代わりに、上記命令キュー内の待ち時間情報を、周期インタラプト信号ＳＩＮとは異なる周期のタイマ割込信号（例えばＴＩＮ）毎に減算し、値がゼロになるのを待つても良い。待ち時間情報に代えて待ち時刻情報を用いる場合は、同様に周期インタラプト信号ＳＩＮとは異なる周期のタイマ割込信号（例えばＴＩＮ）毎に減算し、この待ち時刻情報が命令発行時刻以下となるのを待つても良い。
【０１１０】
こうして待ち時間が経過する、または待ち時刻に到達すると（ステップ７３）、上記ステップ６２と同様に上記楽音信号発生部５のＤＳＰの使用権が獲得され（ステップ７４、ステップ７５、ステップ７７）、楽音信号発生部５のＤＳＰによるエフェクトモードが切り替えられ（ステップ７６）、またはエフェクトパラメータが設定される（ステップ７８）。この結果、上記イベントがエフェクトモード切替えである場合、ステップ６３のＤＳＰに対するフェードアウト開始命令の後、適切な時間（例えば１００マイクロ秒）後にエフェクトモードが切り替えられる。
【０１１１】
一方、上記イベントがエフェクトパラメータ設定である場合、待ち時間または待ち時刻が最小となっているので、命令キューから読み出され次第エフェクトパラメータの設定が上記楽音信号発生部５のＤＳＰに命令される。しかし、エフェクトパラメータの設定命令は、図９のように、必ずエフェクトモード切換え命令の後に書きこまれるので、全体として命令発行後、必要な待ち時問を経てエフェクトモー
ドが切り替わり、その後直ちにエフェクトパラメータが設定される、という正しい手順を経ることとなる。
【０１１２】
例えば、上記エフェクトモードがリバーブに切り替えられた場合、上記パラメータは初期反射時間、後期残響時間などとなる。さらに、上記エフェクトモードがエコーに切り替えられた場合、上記パラメータはリピートタイム、リピートレートなどとなる。また、上記エフェクトモードがイコライザに切り替えられた場合、上記パラメータはハイバンドゲイン、ローバンドゲインなどとなる。
【０１１３】
次いで、上記ステップ６４と同様に、上記楽音信号発生部５のＤＳＰの上記使用権が開放され（ステップ７９）、上記ステップ７１に戻る。
【０１１４】
上記例でいえば、ステップ６３のミュート処理後、規定時間（１００マイクロ秒）後にエフェクトモードが切り替えられることにより、楽音信号発生部５のＤＳＰがフェードアウトを実行している最中にエフェクトモードが切り替わることに起因するノイズの発生を抑えるとともに、モード切換え後直ちにエフェクトパラメータ設定が行われ、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間が付加された命令と待ち時間が付加されない（最小に設定された）命令が、この待ち時間情報に応じた時間経過後に順次実行されていく。
【０１１５】
当ジョブは、何のイベントも無ければ（ステップ７１）、上記ステップ５８と同様に休眠状態に入る（ステップ８０）。休眠状態の際の動作、休眠状態からの複帰の際の動作はステップ５８および図８の場合と同様である。
【０１１６】
この休眠処理によって、当該ジョブの実行を指示する命令が発生し、上記ジョブ処理（ステップ０３）によってジョブが処理を再開させられるまで、当該ジョブが休眠される。これにより、他のジョブが優先されて処理され、コントローラ２（ＣＰＵ）が効率よく使用される。
【０１１７】
（１１）時変数ジョブ
図１１はコントローラ２によってステップ０３と並列に実行される複数のジョブの１つである時変数処理ジョブのフローチャートを示す。このジョブは、図８／図９のジョブ及び図１０のジョブと異なり、イベントを処理しないので、周期インタラプト信号ＳＩＮに対応する周期割込処理（図４）による優先順位変更のみを受けて、ジョブ処理（ステップ０３）によって略定期的に駆動される。この時変数は、時間の経過に従って制御値／生成値が変化する情報／データ／パラメータである。
【０１１８】
まず、楽音信号発生部５の複数チャンネル例えば９６チャンネルの０チャンネルからの各チャンネルにつき（ステップ９１、９７）、ビブラート値などの時変数データが読み込まれ（ステップ９２）、上記ステップ６２、７４と同様に上記コントローラ２の使用権が獲得される（ステップ９３）。次いで、このビブラート値などの時変数データが時間経過に応じて変更され（ステップ９４）、上記ステップ６４、７８と同様に、コントローラ２の上記使用権が開放される（ステップ９５）。
【０１１９】
以上のステップ９１〜９７の処理がチャンネル毎に繰り返され、全てのチャンネルが処理された場合、先頭のチャンネルに戻って処理が繰り返される（ステップ９７）。この時変数処理は上記ステップ０３によって、前回処理を終えた時点の次から駆動され、一定時間処理されると、周期インタラプト信号ＳＩＮに対応する周期割込みの処理（図４）による優先順位変更を受けて処理が中断される。そして他のジョブが実行された後、略一定時間後に再度上述の手順で処理が再開され、以下上述の処理を繰り返す。
【０１２０】
（１２）他の実施の形態
本件発明は上記実施例に限定されず、本件発明の趣旨を逸脱しない範囲で種々変更可能である。例えば、本命令処理装置で処理される命令は、待ち時間の必要な命令であるが、場合によって待ち時間の不要な命令が含まれてもよい。
【０１２１】
上述の時変数ジョブでは、手動演奏または自動演奏などに応じたイベントが外部割込みＥＶとして生成され、外部割込処理でこのイベントデータに応じたジョブが上述のイベント処理ジョブなどで実行されてもよい。
【０１２２】
ここで、ステップ１１で、イベント処理ジョブの優先順位が最上位とされ、これ以外の休眠中ではないジョブの優先順位が一つずつ下げられ、割込みイベントＥＶがクリアされる。
【０１２３】
この後、上記ステップ０１とステップ０２の間の処理位置Ａに戻るが、この場合には外部割込みＥＶがクリアされているので、ステップ０２でＮＯと判断されて、このような優先順位が上げられたジョブが実行される（ステップ０３）。
【０１２４】
本命令処理装置で処理できる、その他の待ち時間の必要な命令には、例えば、パラメータ計算から発音開始までに時間のあるキーオンディレイ、キーオンからビブラート開始まで時間のあるディレイビブラート、キーオンから一定時間後に自動的に消音されるゲート処理などがある。
【０１２５】
本命令処理装置で処理される命令は、上記リバーブ、エコー、イコライザのほか、コーラス、オートパン、オートワウ、フェイズシフタ、フランジャー、ディストーションなど、楽音信号発生部５のＤＳＰを使用する命令に使用できる。また、上記命令キューには、上記エフェクトなどに関する命令の他に、ビブラート、ポルタメント、グライド、グリッサンド、トリル、トレモロ、マンドリン、ビッチチェンジ、トランスポーズ、チューン、エンベロープ波形変更（レベル、スピードまたはレート）、タッチ感度、イニシャル／アフタータッチなど楽音信号発生部５のＤＳＰを使用しない命令が、上記使用する命令に混在して書きこまれていても良い。
【０１２６】
また、本発明は電子楽器またはコンピュータなどにおいて実施され得る。上記各図の回路の機能はソフトウエア（フローチャート）によって実施されても良いし、上記各図のフローチャートの機能はハードウエア（回路）によって実施されてもよい。各請求項記載の発明は、当該発明をコンピュータに実行させるコンピュータプログラムを記憶した媒体、コンピュータプログラムの通信装置（方法）、楽音発生装置（方法）、楽音制御装置（方法）としても実現可能である。
【０１２７】
本発明における各命令の実行はオペレーティウングシステムそのものを含んでいるが、図８以降を含め、図３乃至図１１すべてを一体化したプログラムとして構成することもできる。その際に上記プログラムを別のオペレーティングシステムの上でアプリケーションとして動作させることもできる。
【０１２８】
（５）他の発明の効果
[１]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、  命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、  これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【０１２９】
[２]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置に対して、  命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加させ、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加させて上記記憶手段に記憶させる処理と、  これらの時間情報に応じた待ち時間が経過したか否かを判別させ、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる処理とを実行させること特徴とする命令処理のためのコンピュータプログラム。
【０１３０】
[３]複数の命令を実行するコントロール手段と、  この複数の命令を記憶する記憶手段と、  命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶させる付加手段と、  これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。
【０１３１】
[４]音楽的エフェクトの設定、変更または終了について、複数の命令を実行するコントロール手段と、  この複数の命令を記憶する記憶手段と、  この複数の命令に、所定の時間にわたる消音の命令を付加し、この命令の次に、この消音の時間より短い待ち時間の音楽的エフェクトの設定または変更の命令とを付加して上記記憶手段に記憶させる付加手段と、  これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令を上記コントロール手段に実行させる時間判別手段とを備えたことを特徴とする命令処理装置。上記複数の命令は音楽的エフェクトの設定、変更または終了の命令であり、先頭に所定時間にわたる消音の命令が付加されることを特徴とする請求項３記載の命令処理装置。これにより、音楽的エフェクト変更時の音感上の違和感を解消できる。
【０１３２】
[５]上記命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令は、音楽的ファクタを入力または変更する手段から入力された情報、電子楽器間で送受されるＭＩＤＩ形式の情報、楽音の発生または終了を指示する装置から入力または変更された情報である請求項３または４記載の命令処理装置。これにより、種々の命令が、実行の順番が入れ替わらずに、時間順に整理されて実行される。
【０１３３】
[６]複数の作業それぞれが実行される優先順位が記憶され、新たな作業の割り込みがあると、新たな作業の優先順位が高くなるように、これらの優先順位が変更され、  当該作業が終了すると、この作業の優先順位が低くなるように、これらの優先順位が変更されることを特徴とする請求項３、４または５記載の命令処理装置。これにより、時間順に整理される命令であっても、実行の優先順位を変更できる。
【０１３４】
[７]優先順位の変更は上記待ち時間に応じた時間が経過するときには実行されないことを特徴とする請求項６記載の命令処理装置。これにより、命令の優先順位が入れ替わっても、時間順までは変更されない。
【０１３５】
[８]上記待ち時間に応じた時間が経過したとき、命令処理装置全体の終了の命令があると、この待ち時間情報に対応した命令を実行しないで、命令処理装置全体を終了させることを特徴とする請求項３、４または５記載の命令処理装置。これにより、終了の命令が他の命令に優先される。
【産業上の利用可能性】
【０１３６】
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令であっても、所定の待ち時間待機させて実行させる。イベントがあれば（ステップ８０）、プログラム／データ記憶部４のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され（ステップ７１）、待ち時間情報がタイマ１６にストアされ（ステップ７２）、待ち時間が経過すると（ステップ８１）、命令引数のパラメータが楽音信号発生部５に送られる（ステップ７５）。
【０１３７】
タイマインタラプト信号ＴＩＮが送られてくれば（ステップ７９）、この待ち時間情報に対応する命令が終了され（ステップ８０）、次の命令が実行される（ステップ７３〜７８）。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。
【図面の簡単な説明】
【０１３８】
【図１】命令処理装置または電子楽器などの全体回路１を示す。
【図２】プログラム／データ記憶部４にストアされるプログラムを示す。
【図３】全体処理のフローチャートを示す。
【図４】タイマ割込み処理のフローチャートを示す。
【図５】外部割込み処理のフローチャートを示す。
【図６】上記ステップ０３のジョブ処理のフローチャートを示す。
【図７】上記ステップ０５の終了処理のフローチャートを示す。
【図８】イベント処理ジョブのフローチャートを示す。
【図９】上記ステップ５５のパネル処理のフローチャートを示す。
【図１０】命令実行ジョブのフローチャートを示す。
【図１１】時変数ジョブのフローチャートを示す。
【符号の説明】
【０１３９】
１…全体回路、２…コントローラ（ＣＰＵ）、
３…タイミング発生部、４…プログラム／データ記憶部、
５…楽音信号発生部、６…サウンドシステム、７…情報記憶部、
１１…キーボード、１２…キーボードスキャン回路、
１３…パネルスイッチ群、１４…スイッチスキャン回路、
１５…ミディ回路、１６…タイマ。
【図１】
2012230421.tif 000003
【図３】
2012230421.tif 000004
【図４】
2012230421.tif 000005
【図５】
2012230421.tif 000006
【図６】
2012230421.tif 000007
【図７】
2012230421.tif 000008
【図８】
2012230421.tif 000009
【図９】
2012230421.tif 000010
【図１０】
2012230421.tif 000011
【図１１】
2012230421.tif 000012
【図２】
2012230421.tif 000013
【手続補正書】
【提出日】平成24年7月27日(2012.7.27)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
上記ミディ回路１５、または上記スイッチスキャン回路１４によって、上記楽音信号発生部５のＤＳＰで動作するエフェクトのモード切替えが指示された場合、上記命令キューには待ち時間または時刻を適切に設定されたエフェクトモード切替え命令と、待ち時間を最小または待ち時刻をエフェクトモード切替え命令と同程度以前に設定されたエフェクトパラメータ設定命令が連続したコラムにセットされる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
また、命令タイプがエフェクトパラメータ切替えである場合、命令引数はそれぞれのエフェクトモードにおけるパラメータ値を表す。例えばエフェクトモードがリバーブの場合、エフェクトパラメータは初期反射時間、後部残響時間など、エフェクトモードがエコーの場合、エフェクトパラメータはディレイタイム、リピートレートなど、エフェクトモードがイコライザの場合、エフェクトパラメータはハイバンドゲイン、ローバンドゲインなどを表す。これらの命令引数は２つのバイトから成り、上位バイトは第１パラメータ値を、下位バイトは第２パラメータ値を示す。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００９１
【補正方法】変更
【補正の内容】
【００９１】
本実施例では使用権獲得はイベントではないので、休眠状態と同じにしてしまうとジョブの実行が遅れることがある。上記に代えて、使用権の獲得をイベントとなるようにして優先順位を最下位にしても良い。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１０８
【補正方法】変更
【補正の内容】
【０１０８】
比較の結果、まだ現在時刻の方が前である場合、当ジョブの優先順位が最下位から二番目に下げられ、現在時刻が上記レジストした値より後になるまで繰り返される。この間にＤＳＰではステップ６３で指示したフェードアウト処理が実行される。また、上記繰り返しの間、当ジョブの優先順位が低く設定されているので、当ジョブ以外のジョブの処理が優先して処理される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１２８
【補正方法】変更
【補正の内容】
【０１２８】
（１３）他の発明の効果
[１]複数の命令を実行するコントロール手段と、この複数の命令を記憶する記憶手段と、を備えた装置において、  命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令を受け取ったとき、先頭の命令に所定の待ち時間の先頭時間情報を付加し、この先頭の命令に続く命令に、この先頭時間情報より短い待ち時間の続き時間情報を付加して上記記憶手段に記憶し、  これらの時間情報に応じた待ち時間が経過したか否かを判別し、この待ち時間に応じた時間が経過したとき、この時間情報に対応した命令が上記コントロール手段によって実行されることを特徴とする命令処理方法。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１３６
【補正方法】変更
【補正の内容】
【０１３６】
命令の実行までの待ち時間または時刻を有さず、実行の順序で発生される複数の命令であっても、所定の待ち時間待機させて実行させる。イベントがあれば（ステップ７１）、プログラム／データ記憶部４のプログラムの先頭の命令内容、命令引数、待ち時間情報が読み出され（ステップ７２）、待ち時間情報がタイマ１６にストアされ、待ち時間が経過すると（ステップ７３）、命令引数のパラメータが楽音信号発生部５に送られる（ステップ７５）。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１３７
【補正方法】変更
【補正の内容】
【０１３７】
タイマインタラプト信号ＴＩＮが送られてくれば、この待ち時間情報に対応する命令が終了され、次の命令が実行される（ステップ７４〜７９）。例えば、ミュート処理が終了され、ビブラート処理が開始される、またはビブラート処理が終了される。こうして、待ち時間情報が付加された命令が、この待ち時間情報に応じた時間経過ごとに、順次実行されていく。
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2012230421.tif 000014
【手続補正書】
【提出日】平成24年7月28日(2012.7.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＣＰＵによって実行される複数のジョブであって、該ジョブが、ＣＰＵが実行する処理プログラムによって所定の手順で切り替えられるジョブのプログラムにおいて、上記複数のジョブが使用を競合う可能性のあるデバイスの使用権獲得方法であって、各ジョブにおいて、
デバイスに対応して設けられたＦＩＦＯ（ファーストインファーストアウト）メモリの最後に自ジョブの識別コードを記憶させるステップと、
自ジョブの優先度を休眠状態以外では最も低いものに設定するステップと、
上記識別コードが上記ＦＩＦＯの先頭に来るのを待つステップと、
上記識別コードが上記ＦＩＦＯの先頭に達したら自ジョブの上記優先順位を元に戻すステップとを備え、
上記処理プログラムは所定の場合に上記ＣＰＵが実行するジョブを最も優先度の高いものに切り替えるものであることを特徴とする使用権獲得方法。