(57)【要約】【課題】  スクリプトに従って状態情報に応じた所定の動作を実行する。【解決手段】  機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを解釈し実行する。スクリプトを解釈し実行する際には、操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を取得し、該状態情報に基づきスクリプトに記述された制御構文の条件判定を行い、楽音制御を実行する内部コマンドを生成する。内部コマンドは、制御手段が解釈し実行可能な制御命令である。制御手段は、この内部コマンドに基づき状態情報に応じた楽音制御を実行する。これにより、ユーザはスクリプトを生成するだけで、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを変更することが容易にできるようになる。【選択図】        図２
2009025449.tif 000002
【特許請求の範囲】
【請求項１】
１乃至複数の操作子と、
前記操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を記憶する記憶手段と、
解釈し実行可能な制御命令である所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する制御手段と、
機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを取得するスクリプト取得手段と、
スクリプトを解釈し実行可能なスクリプト実行手段であって、前記取得したスクリプトを解釈する際に前記状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行うと共に、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成するものと
を具えてなり、
前記制御手段は、スクリプトの実行に応じて楽音制御を行うことを特徴とする電子音楽装置。
【請求項２】
前記取得したスクリプトを解釈し実行する際に、前記状態情報を前記スクリプト実行手段が解釈可能な所定形式のデータ文字列に変換する一方で、前記スクリプトに記述された前記スクリプト実行手段が解釈し実行可能なテキスト形式のコマンド文字列を、前記制御手段が解釈し実行可能な所定のデータ形式の内部コマンドに変換する変換手段をさらに具えた請求項１に記載の電子音楽装置。
【請求項３】
前記変換手段は、さらに前記スクリプトに記述された前記スクリプト実行手段が解釈し実行可能なテキスト形式の状態情報を、前記制御手段が解釈し実行可能な所定のデータ形式の状態情報に変換することを特徴とする請求項２に記載の電子音楽装置。
【請求項４】
コンピュータに、
１乃至複数の操作子の操作に応じて決定される、当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を所定の記憶手段に記憶する手順と、
解釈し実行可能な制御命令である所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する手順と、
機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであり、少なくとも制御構文を含んで記述されたスクリプトを取得する手順と、
前記取得したスクリプトを解釈する際に前記状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行うと共に、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成する手順と
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、当該機器の操作／設定状態に応じて、予め決められた所定の動作を実行する電子音楽装置及びプログラムに関する。特に、機械語への変換作業を自動化して簡単に実行できるようにした汎用の簡易プログラムであるスクリプトに従って、電子音楽装置における操作／設定状態に応じた所定の動作を実行させる技術に関する。
【背景技術】
【０００２】
従来から、電子楽器などの電子音楽装置において、設定操作子の操作に応じて決定されるパラメータ値や演奏操作子の操作に応じて発生されるイベントデータ等に応じて（本明細書では、これらの当該機器における現状の操作状態又は設定状態の少なくともいずれか（内部状態とも呼ぶ）に対応した情報を総称して状態情報と呼ぶ）、動作を異ならせて実行する技術が知られている。こうした技術に関連するものとしては、例えば下記に示す特許文献１に記載されている発明がその一例である。この特許文献１に記載の従来技術は、鍵が押下されることにより発生されるノートオン（押鍵）イベントデータ（状態情報に該当する）に含まれるノートナンバに応じて、キースケーリングされた複数のパラメータを一括して修正することで「音像定位位置」を設定する技術について開示している。
【特許文献１】特開平7-244483号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記した従来技術においては、該電子音楽装置における状態情報と対応する実行すべき動作とが組み合わされた内部プログラムが予め電子音楽装置内に記憶されており、該内部プログラムの制御の元に上記動作を実行するようにしている。前記内部プログラムはメーカが予め用意し、ユーザに対して予め機器に組み込むなどして提供される、電子音楽装置のＣＰＵが解釈して実行可能な専用のプログラムであって、そのプログラム内容として記述されている状態情報と実行すべき動作（動作態様だけでなく動作させるべき動作対象を含む）の組み合わせは固定である。
【０００４】
ところで、ユーザによっては状態情報に応じて実行すべき動作を変更したい場合がある。例えば、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを変更したい場合がある。そのためには、状態情報と対応する動作との組み合わせを変更する必要がある。しかし、上述したように、状態情報と実行すべき動作の組み合わせは１つの内部プログラム内においては固定的である。そのため、メーカが状態情報と実行すべき動作の組み合わせが異なる多数の内部プログラムを予め用意しておき、これを個々のユーザに対して提供することが考えられるが、個々に要望が異なる全てのユーザに応えられるだけの考えうる全ての組み合わせをもつ内部プログラムを予め用意することは現実的でない。また、ユーザ自身が適宜に内部プログラムを書き換えたり新たな内部プログラムを作成することが考えられるが、内部プログラムは機械語若しくはアセンブリ言語等の低級言語で記述されており、こうした内部プログラムは公知のようにＣＰＵのアーキテクチャやＯＳ（Operating System）等のプラットフォームに依存するものであって移植性がないだけでなく、またそのプログラム内容を書き換えるには非常に高度なプログラミング知識を有していなければならず、一般のユーザがプログラム内容を書き換えたり新たに作成したりするのは非常に難しい。したがって、一般のユーザは電子音楽装置に予め用意されていない状態情報と動作対象の組み合わせ以外について、異なる動作を行うべき状態情報や、状態情報に応じて実行すべき動作対象そのものやその動作態様などを、好みに合わせて自由に設定することができず使いづらい、という問題点があった。
【０００５】
本発明は上述の点に鑑みてなされたもので、予め電子音楽装置に用意されていない状態情報や動作対象の組み合わせであっても、ユーザが適宜に設定することが簡単にできるようにした電子音楽装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る電子音楽装置は、１乃至複数の操作子と、前記操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を記憶する記憶手段と、解釈し実行可能な制御命令である所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する制御手段と、機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを取得するスクリプト取得手段と、スクリプトを解釈し実行可能なスクリプト実行手段であって、前記取得したスクリプトを解釈する際に前記状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行うと共に、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成するものとを具えてなり、前記制御手段はスクリプトの実行に応じて楽音制御を行うことを特徴とする。
【０００７】
この発明によると、スクリプトの実行に従って、１乃至複数の操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報に応じた楽音制御を実行する。すなわち、スクリプト実行手段は、機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを解釈し実行する。スクリプトを解釈する際には前記状態情報を取得して、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行う。そして、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成する。この内部コマンドは、楽音制御を行う制御手段が解釈し実行可能な制御命令である。したがって、制御手段は、該生成された所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する。これにより、一般のユーザであっても必要に応じてスクリプトを生成するだけで、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを変更することが容易にできるようになって、ユーザは好みにあわせた動作を行う電子音楽装置に自由にカスタマイズすることができるようになる。また、汎用のスクリプトを用いることから、電子音楽装置のプラットフォームに左右されずに、新旧の既存の電子音楽装置に対しても広く適用することができ有利である。
【０００８】
本発明は、装置の発明として構成し、実施することができるのみならず、方法の発明として構成し実施することができる。また、本発明は、コンピュータまたはＤＳＰ等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
【発明の効果】
【０００９】
この発明によれば、汎用のスクリプトを用いて、操作子の操作に応じて決定される状態情報に基づく条件判定を行い、該条件判定に従って所定の楽音制御を実行する内部コマンドを生成するようにしたことから、ユーザは好みにあわせた動作を行う電子音楽装置に自由にカスタマイズすることがスクリプトを生成するだけで容易にできるようになる、という効果を得る。
【発明を実施するための最良の形態】
【００１０】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
【００１１】
図１は、この発明に係る電子音楽装置の全体構成の一実施例を示したハード構成ブロック図である。本実施例に示す電子音楽装置は例えば電子楽器であって、マイクロプロセッサユニット（ＣＰＵ）１、リードオンリメモリ（ＲＯＭ）２、ランダムアクセスメモリ（ＲＡＭ）３からなるマイクロコンピュータによって制御される。ＣＰＵ１は、この電子音楽装置全体の動作を制御する。このＣＰＵ１に対して、通信バス１Ｄ（例えばデータ及びアドレスバス）を介してＲＯＭ２、ＲＡＭ３、記憶装置４、検出回路５，６、表示回路７、音源・効果回路８、通信インタフェース（Ｉ／Ｆ）９がそれぞれ接続されている。ＲＯＭ２は、ＣＰＵ１により実行あるいは参照される各種制御プログラム（ＯＳや、該ＯＳ上で動作するスクリプト実行エンジンを含む）や各種データ等を格納する。ＲＡＭ３は、ＣＰＵ１が所定のプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。ＲＡＭ３の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。
【００１２】
記憶装置４は、各種データやＣＰＵ１が実行する各種制御プログラム等を記憶する。例えば、当該機器の状態情報に応じて動作を異ならせて予め決められた所定の動作を実行する、公知のスクリプト言語（例えばperlなど）によりテキスト形式で記述されたスクリプトを記憶する（後述する図２に示すスクリプト記憶部Ｖ参照）。演奏操作子５Ａの操作に応じて発生するイベントデータ、設定操作子６Ａの操作に応じて発生するパラメータ値等の「状態情報」を操作子毎に記憶する（後述する図２に示す状態記憶部Ｄ参照）。この「状態情報」は、演奏操作子５Ａの操作状態や設定操作子６Ａの操作に応じたパラメータ設定状態等を反映した情報であることから、電子音楽装置における現状の操作状態又は設定状態の少なくともいずれか（内部状態）を表す情報であるといえる。
【００１３】
記憶装置４は上記の他にも、ＣＰＵ１が直接解釈・実行可能なデータ形式で記憶されている前記状態情報を、スクリプトを実行する公知のスクリプト実行エンジン（後述する図２に示すスクリプト実行部Ｏ参照）が解釈して処理可能なデータ形式である所定の文字列（これを内部状態文字列と呼ぶ）に変換するための、あるいは反対にスクリプト実行エンジンで処理可能なデータ形式である内部状態文字列を、ＣＰＵ１が直接解釈・実行可能なデータ形式の状態情報に変換するための「変換テーブル」（「変換ルール」であってもよい）を記憶する（図示せず）。勿論、これに限らず、ＣＰＵ１が直接解釈・実行可能なデータ形式（例えば２進数）でデータを管理する内部管理形式と、スクリプト実行エンジンが所定のスクリプトに基づき解釈・処理できるデータ形式（例えば１０進数）でデータを管理するスクリプト管理形式とを一致させるために、各管理形式間で相互にデータ変換を行うことができればどのような形態であってもよい。さらに、記憶装置４は、スクリプト実行エンジンがスクリプトを解釈し実行可能な、スクリプトに記述されている電子音楽装置制御用のコマンド文字列を、ＣＰＵ１が直接解釈し実行可能な内部コマンド（機械語）に変換するための、コマンド文字列と内部コマンドとの対応関係を示す「コマンド変換テーブル（あるいはインタプリタ）」などを記憶する（図示せず）。なお、上記各変換テーブル等は、電子音楽装置に固有のライブラリとして提供されるものである。勿論、ユーザが適宜に変更したり作成したりすることができてもよい。
【００１４】
なお、上述したＲＯＭ２に制御プログラム（ＯＳやスクリプト実行エンジン）が記憶されていない場合、この記憶装置４（例えばハードディスク）に制御プログラムを記憶させておき、それをＲＡＭ３に読み込むことにより、ＲＯＭ２に制御プログラムを記憶している場合と同様の動作をＣＰＵ１にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、記憶装置４はハードディスク（HD）に限られず、フレキシブルディスク（FD）、コンパクトディスク（CD‐ROM・CD‐RAM）、光磁気ディスク（MO）、あるいはDVD（Digital Versatile Disk）等の様々な形態の記憶媒体を利用する記憶装置であればどのようなものであってもよい。あるいは、フラッシュメモリなどの半導体メモリであってもよい。この記憶媒体は電子音楽装置に対して着脱自在としてもよいし、着脱不可でもよい。着脱自在な場合はパーソナルコンピュータ等の外部機器を使って、ユーザが作成したスクリプトを記憶装置に書き込んだ後、電子音楽装置に装着することで、ＣＰＵ１がスクリプトを利用できるようにする。一方、着脱不可の場合は、電子音楽装置本体の操作子を使ってスクリプトを作成して記憶媒体に書き込むか、あるいは外部機器を使って作成したスクリプトを、後述する通信インタフェース経由で電子音楽装置用に取り込み記憶媒体に書き込むことで、ＣＰＵ１がスクリプトを利用できるようにする。
【００１５】
演奏操作子５Ａは、楽音の音高を選択するための複数の鍵を備えた例えば鍵盤等のようなものであり、各鍵に対応してキースイッチを有しており、この演奏操作子５Ａ（鍵盤等）はユーザ自身の手弾きによるマニュアル演奏に使用することができるのは勿論のこと、音色や効果等を設定する手段などとして使用することもできる。検出回路５は、演奏操作子５Ａの各鍵の押圧及び離鍵を検出することによって検出出力を生じる。設定操作子（スイッチ等）６Ａは、例えば演奏の際に使用する音色・効果あるいは音量やテンポ等などの各種演奏パラメータを設定する設定スイッチ、スクリプトを選択する選択スイッチ、あるいは選択したスクリプトの実行を指示する実行スイッチ等、各種の操作子を含んで構成される。勿論、設定操作子６Ａは上記した以外にも音高、音色、効果等を選択・設定・制御するために数値データ入力用のテンキーや文字データ入力用のキーボード、あるいはディスプレイ７Ａに表示された各種画面の位置を指定するポインタを操作するマウスなどの各種操作子を含んでいてもよい。検出回路６は、上記設定操作子６Ａの操作状態を検出し、その操作状態に応じたスイッチ情報等をデータ及びアドレスバス１Ｄを介してＣＰＵ１に出力する。上述したように、上記各操作子５Ａ，６Ａがそれぞれ操作されることに応じて、前記記憶装置４にノートオン／オフイベントデータやパラメータ値等の状態情報が操作された操作子毎に記憶される。
【００１６】
表示回路７は例えば液晶表示パネル（ＬＣＤ）やＣＲＴ等から構成されるディスプレイ７Ａに、上記スイッチ操作に応じた各種画面を表示するのは勿論のこと、ＲＯＭ２や記憶装置４に記憶されている各種データあるいはＣＰＵ１の制御状態などを表示することもできる。演奏者はディスプレイ７Ａに表示されるこれらの各種情報を参照することで、演奏の際に使用する各種演奏パラメータの設定や自動演奏曲の選択などを容易に行うことができる。
【００１７】
音源・効果回路７は複数のチャンネルで楽音信号の同時発生が可能であり、通信バス１Ｄを経由して与えられた演奏情報を入力し、この演奏情報に基づいて楽音を合成して楽音信号を発生する。また、発生した楽音信号に対して効果を付与することもできる。音源・効果回路８から発生される楽音信号は、アンプやスピーカなどを含むサウンドシステム８Ａから発音される。この音源・効果回路８とサウンドシステム８Ａの構成には、従来のいかなる構成を用いてもよい。例えば、音源・効果回路８はFM、PCM、物理モデル、フォルマント合成等の各種楽音合成方式のいずれを採用してもよく、また専用のハードウェアで構成してもよいし、ＣＰＵ１によるソフトウェア処理で構成してもよい。
【００１８】
通信インタフェース（Ｉ／Ｆ）９は、図示を省略した外部機器と当該電子音楽装置との間でMIDI形式の演奏データを送受信するMIDI入出力インタフェース、MIDI以外のデータや制御プログラムなどの各種情報を送受信するデータ入出力インタフェースとしての機能を備えた、例えばRS-232C、USB（ユニバーサル・シリアル・バス）、IEEE1394（アイトリプルイー1394）、ブルートゥース（商標）、赤外線送受信器等のインタフェースである。あるいは、LAN（Local Area Network）やインターネット、電話回線等の有線あるいは無線の通信ネットワークを介して、電子音楽装置とネットワーク上の外部機器（例えば、サーバ装置）とを接続することができ、電子音楽装置とサーバ装置との間でMIDIデータや各種情報，スクリプトなどを送受信することができるネットワークインタフェースであってもよい。こうした通信インタフェース９は、有線あるいは無線のものいずれかでなく双方を具えていてよい。
【００１９】
なお、演奏操作子４Ａは鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、演奏操作子４Ａやディスプレイ７Ａあるいは音源・効果回路８などを１つの装置本体に内蔵したものに限らず、それぞれが別々に構成され、通信インタフェースや各種ネットワーク等の通信手段を用いて各装置を接続するように構成されたものであってもよいことは言うまでもない。さらに、本発明に係る電子音楽装置は上記したような電子楽器の形態に限らず、自動演奏ピアノ，ミキサー，レコーダーなど、どのような形態の電子音楽装置・機器に適用してもよい。
【００２０】
次に、図１に示した電子音楽装置における、予め記憶されたスクリプトに従う、当該機器の内部状態に応じて予め決められた所定の異なる動作に制御を切り替える処理を行う機能の概要について、図２を用いて説明する。図２は、図１に示した電子音楽装置においてスクリプトに従った動作を行う機能の概略を示す機能ブロック図である。
【００２１】
電子音楽装置において、操作部Ａ（演奏操作子５Ａや設定操作子６Ａ）が操作されると、制御部Ｘ（ＣＰＵ１）は電子音楽装置の状態情報（現状の内部状態）を各操作子の操作態様や操作量等にあわせて変更する。そして、この状態情報の変更に応じて表示部Ｂ（表示回路７）に対してディスプレイ７Ａ上に表示する関連項目の表示内容を変更する指示を行ったり、あるいは音源部Ｃ（音源・効果回路８）に対して楽音信号を制御する指示を行ったりするのは従来どおりであるが、これに加えて変更した状態情報を状態記憶部Ｄに記憶する。すなわち、状態記憶部Ｄは、演奏操作子５Ａの操作に応じて発生するイベントデータ、設定操作子６Ａの操作に応じて発生するパラメータ値等の「状態情報」を操作された操作子毎に記憶する。具体例を挙げると、例えば演奏操作子５Ａが押鍵操作された場合には、状態記憶部Ｄに電子音楽装置の状態情報として「ノートオンイベントデータ」が記憶されるし、音色を変更する設定操作子６Ａが操作された場合には、状態記憶部Ｄに電子音楽装置の状態情報として「音色パラメータ値」が記憶される。
【００２２】
スクリプト記憶部Ｖは、公知のスクリプト言語（例えばPerlなど）によりテキスト形式で記述された、プラットフォームに依存しない汎用のスクリプトを取得し記憶する。このスクリプトは機械語への変換作業を自動化して簡単に実行できるようにした簡易プログラムであって、本実施例においては当該機器の現状の状態情報に応じて予め決められた所定の異なる動作を実行するための、if文やfor文，while文，case文,until文などの所謂「制御構文」を少なくとも含んで記述されている。これらの制御構文において判断される条件として、状態記憶部Ｄに記憶されている電子音楽装置の状態情報が利用される。
【００２３】
スクリプトの一例を以下に示す。ここでは、複数の設定操作子６Ａのうち１番が付されているノブの値に応じて、２番が付されているノブのレンジを自動的に変更設定するように制御するスクリプト（ただし、スクリプト言語はperl）を例に示している。
（スクリプトの一例）
#!/usr/bin/perl
#電子音楽装置XXのライブラリを使えるように宣言。
use EMI_XX_Contorol_Library;
while（1）{
#１番のノブの状態を監視し、変化があったら変化した値を取得する。
val=watchKnob（1）
#変化後の値が70〜80だったら、
#２番のノブのレンジを最小:110〜最大:120に設定する。
if（val>=70&&val<=80）{
setKnobRange（2,110,120）;
}
}
【００２４】
こうしたスクリプトは、ユーザがパーソナルコンピュータ等を使用して自由にテキスト形式で記述することで作成することができ、該作成したスクリプトを電子音楽装置の記憶装置４に多数記憶しておくことができる。また、電子音楽装置を供給するメーカからプリセットのスクリプトとして提供され、予め電子音楽装置内に記憶されていてもよい。さらには、ネットワーク上のサーバ装置等からそこに記憶されている他のユーザ等が作成したスクリプトをダウンロード（取得）して記憶するようにしてもよいし、着脱可能な記憶媒体からスクリプトをロード（取得）して記憶するようにしてもよい。勿論、電子音楽装置自体がスクリプトを記述するためのエディタ機能などのプログラミング環境を備えていて、ユーザ自らが電子音楽装置のみを使用してプログラミングしたスクリプトを記憶することができてよい。
【００２５】
上記例に示したスクリプトにおいて、while文において条件として利用する電子音楽装置の状態情報は「１番のノブの状態に変化がある」ことであって、その場合に実行する処理は以降に続く「if文で記述された処理」である。そして、該if文において条件として利用する電子音楽装置の状態情報は「１番のノブの変化後の値（対応するパラメータ値）が70〜80である」ことであって、その場合に実行する動作は「２番のノブのレンジを最小:110〜最大:120に設定する」処理である。「SetKnobRange（2,110,120）」は、「２番のノブのレンジを最小:110〜最大:120に設定する」よう電子音楽装置に対して指示するための、電子音楽装置制御用のコマンド文字列「SetKnobRange」と内部状態文字列「（2,110,120）」である。電子音楽装置制御用のコマンド文字列の他の例を示すと、例えば「onoff button/A」（ボタンＡを押した状態とする）、「right knob/B」（ノブＢを右に回した状態とする）、「down cursor」（カーソルを下に移動する）などがある。
【００２６】
図２の説明に戻って、スクリプト実行部Ｏは汎用のスクリプト実行エンジン（ソフトウェアプログラムであって、図示していないがコンパイラやリンカ、若しくはインタプリタ等を実装していてよい）であって、スクリプトを解釈し実行する。当然のことながら、本電子音楽装置のＯＳは、このスクリプト実行エンジンを動作させることが可能なＯＳである。言い換えると、電子音楽装置が搭載しているＯＳで動作するスクリプト実行エンジンを電子音楽装置に組み込むようにする。一例として、スクリプト実行エンジンはPerlであり、ＯＳはUNIX（商標）系のＯＳが挙げられるが、勿論これらに限られるものではない。上記したように、スクリプトには電子音楽装置の状態情報が条件として記述されるが、制御部Ｘが処理可能なデータ形式とスクリプト実行エンジンが処理可能なデータ形式とは異なることから、スクリプト実行部Ｏでは状態記憶部Ｄに記憶された状態情報をそのまま利用することはできない。また、スクリプトには電子音楽装置制御用のコマンド文字列が記述されているが、スクリプトの実行に伴いコマンド文字列を制御命令として制御部Ｘに送ったとしても、制御部Ｘではそうしたコマンド文字列を解釈することができないので制御を行うことができない。すなわち、スクリプト実行部Ｏはスクリプトを実行しても、そのままでは直接電子音楽装置を制御することができない。
【００２７】
そこで、本発明においては、制御部Ｘとスクリプト実行部Ｏとの間に制御-スクリプトインタフェース（Ｉ／Ｆ）部Ｉを設けている。この制御-スクリプトインタフェース（Ｉ／Ｆ）部Ｉは、スクリプト実行部Ｏと制御部Ｘとの間でそれぞれが扱うことのできる命令／データ形式への橋渡し（変換）を相互に行うものである。命令／データ形式の変換を行う際には、状態情報の変換（データ変換）に関して「変換テーブル」等を参照して、コマンド文字列の変換（コマンド変換）に関して「コマンド変換テーブル」等を参照する。すなわち、「変換テーブル」等を参照して、ＣＰＵ１が直接解釈・実行可能なデータ形式で記憶されている状態情報を、スクリプトを実行する公知のスクリプト実行エンジンが解釈して処理可能なデータ形式である所定の文字列（内部状態文字列）に変換する、あるいは反対にスクリプト実行エンジンで処理可能なデータ形式である内部状態文字列を、ＣＰＵ１が直接解釈・実行可能なデータ形式の状態情報に変換する。また、「コマンド変換テーブル」等を参照して、スクリプトに記述されている解釈・実行可能な電子音楽装置制御用のコマンド文字列を、ＣＰＵ１が直接解釈・実行可能な内部コマンドに変換する。こうした命令／データ形式の変換を介することで、スクリプト実行部Ｏは状態情報を条件として使用したスクリプトを実行することができ、該スクリプト実行部Ｏによるスクリプトの実行に応じて、制御部Ｘは操作部Ａや表示部Ｂや音源部Ｃを制御、つまり電子音楽装置の動作を制御することができるようにしている。
【００２８】
次に、本実施例に示す電子音楽装置において、予め用意（あるいは取得）されたスクリプトに従って、電子音楽装置における現状の設定／操作状態（状態情報）に応じて動作を異ならせる上記した機能を実現する具体的な処理について、図３〜図７を用いて説明する。図３は、上記機能を実現する「制御処理」の一実施例を示すフローチャートである。当該処理は、電子音楽装置の電源オンに応じてＣＰＵ１が開始する処理であって、制御部Ｘの機能に該当する。
【００２９】
ステップＳ１は、初期化処理を実行する。初期化処理としては、レジスタのクリアや初期設定等がある。具体的には、前回実行したスクリプトに対応するネイティブ・コードのクリア、電源オン時における現状の設定／操作状態（状態情報）の初期設定などである。ステップＳ２は、「操作子処理」を実行する。この「操作子処理」は、各操作子毎に予め対応付けられている公知である本来の処理を実行する。例えば、設定操作子６Ａが操作された場合には、音色や効果等の楽音制御にかかるパラメータ値を設定する。演奏操作子５Ａが押鍵操作された場合には、操作された鍵に対応付けられているノートナンバを含むノートイベントデータを生成し、これに基づき楽音を発音する。勿論、こうした本来の処理は、予めメーカによって提供され電子音楽装置に記憶されている、ＣＰＵ１が直接解釈して実行することができる内部プログラム（つまりスクリプトでない）に従って行われることは言うまでもない。
【００３０】
ステップＳ３は、「制御→スクリプトインタフェース処理」を実行する（後述する図４参照）。ステップＳ４は、「スクリプト→制御インタフェース処理」を実行する（後述する図５参照）。ステップＳ５は、「スクリプト解釈処理」を実行する（後述する図６参照）。ステップＳ５は、その他の処理を実行する。その他の処理としては、例えばユーザがスクリプトを任意に編集／作成するスクリプト編集／作成処理などがある。なお、ユーザがスクリプトを編集／作成する際には、電子音楽装置において予めメーカから提供され記憶済みである所定のライブラリ（上述したスクリプトの例では、「EMI_XX_Contorol_Library」）に登録されている多数のコマンド文字列の中から、ユーザ所望の動作を行う内部コマンドに対応するコマンド文字列を記述することが必要である。
【００３１】
図４は、「制御→スクリプトインタフェース処理」（図３のステップＳ３参照）の一実施例を示すフローチャートである。この処理は、制御‐スクリプトＩ／Ｆ部Ｉの機能に該当する。ステップＳ１１は、状態記憶部Ｄをチェックする。ステップＳ１２は、状態記憶部Ｄに記憶された各操作子に対応するいずれかの状態情報が変化したか否かを判定する。例えば、演奏操作子５Ａのある鍵に対応する状態情報が「ノートオン」から「ノートオフ」に変化したか、音色を変更する設定操作子６Ａに対応する状態情報の「音色パラメータ値」が変化したか等を判定する。この状態情報が変化したか否かの判定は、操作子の前後の状態情報を比較する、判定フラグを用いる等、適宜の方法を採用してよい。各操作子に対応するいずれかの状態情報が変化したと判定した場合には（ステップＳ１２のＹＥＳ）、変化のあった状態情報を文字列に変換し、スクリプトに記述されている制御構文内で用いられている変数に格納する（ステップＳ１３）。すなわち、「変換テーブル」等を参照して、ＣＰＵ１が直接解釈・実行可能なデータ形式で記憶されている状態情報を、スクリプトを実行する公知のスクリプト実行エンジンが解釈して処理可能なデータ形式である所定の文字列（内部状態文字列）に変換する。このようにして、電子音楽装置における各操作子の操作を監視することで、各操作子の最新の操作状態を反映した制御をスクリプト実行部Ｏから制御部Ｘに対してフィードバックすることができるようにしている。
【００３２】
図５は、「スクリプト→制御インタフェース処理」（図３のステップＳ４参照）の一実施例を示すフローチャートである。この処理は、制御‐スクリプトＩ／Ｆ部Ｉの機能に該当する。ステップＳ２１は、スクリプト実行部Ｏによるスクリプトの実行に伴って、電子音楽装置制御用のコマンド文字列（制御構文）が発生されたか否かを判定する。電子音楽装置制御用のコマンド文字列が発生されたと判定した場合には（ステップＳ２１のＹＥＳ）、制御‐スクリプトＩ／Ｆ部Ｉにより該コマンド文字列を内部コマンドに変換し、制御部Ｘに供給する（ステップＳ２２）。すなわち、「コマンド変換テーブル」等を参照して、スクリプトに記述されている解釈・実行可能な電子音楽装置制御用のコマンド文字列を、ＣＰＵ１が直接解釈・実行可能な内部コマンドに変換する。このようにして、スクリプト実行部Ｏによるスクリプトの実行を監視し、電子音楽装置に対するコマンド文字列の発生に応じて電子音楽装置の制御を行うことができるようにしている。
【００３３】
ステップＳ２３は、スクリプトの実行に伴って内部状態文字列に変化があるか否かを判定する。内部状態文字列に変化があると判定した場合には（ステップＳ２３のＹＥＳ）、内部状態文字列を状態情報に変換し、制御部Ｘに供給する（ステップＳ２４）。すなわち、「変換テーブル」等を参照して、スクリプト実行エンジンで処理可能なデータ形式である内部状態文字列を、ＣＰＵ１が直接解釈・実行可能なデータ形式の状態情報に変換する。これにより、スクリプトに記述されたコマンド（例えば計算式や代入式等）に基づき変化しうる内部状態文字列に従って、状態情報の書き換えや新規設定等を行い電子音楽装置を制御することができるようにしている。
【００３４】
図６は、「スクリプト解釈処理」（図３のステップＳ５参照）の一実施例を示すフローチャートである。この処理は、スクリプト実行部Ｏの機能に該当する。ステップＳ３１は、実行スイッチ等の操作に基づくスクリプト実行指示が行われたか否かを判定する。スクリプト実行指示が行われていないと判定した場合には（ステップＳ３１のＮＯ）、当該処理を終了する。一方、スクリプト実行指示が行われたと判定した場合には（ステップＳ３１のＹＥＳ）、スクリプト記憶部Ｖに記憶済みの多数のスクリプト（ファイル）の中から読み出すべきスクリプトを指定する（ステップＳ３２）。この読み出すべきスクリプト（ファイル）は、ユーザがスクリプト実行指示したスクリプトである。ステップＳ３３は、前記指定されたスクリプトを記憶装置４からＲＡＭ３に読み込む。ＲＡＭ３に読み込まれたスクリプトは、実行前にコンパイルされる。
【００３５】
ステップＳ３４は、スクリプトを解釈して次に実行すべきプログラム内容がコマンドであるか否かを判定する。コマンドである場合には（ステップＳ３４のＹＥＳ）、コマンドを実行する（ステップＳ３５）。この際に、スクリプトに記述されているコマンドが電子音楽装置制御用のコマンド文字列であって、制御部Ｘが直接解釈して実行できるものでない場合には、上記したようにコマンド変換を行ってから制御部Ｘに対して供給する（図５のステップＳ２２及びＳ２４参照）。一方、該コマンドが電子音楽装置制御用のコマンド文字列であって、制御部Ｘが直接解釈して実行できるものである場合には、上記したコマンド変換を行うことなく制御部Ｘに対してそのままコマンドを供給する。該コマンドが電子音楽装置制御用のコマンド文字列でない場合には、制御部Ｘに対してコマンドを供給することなく、スクリプト実行部Ｏでコマンドに従う処理を実行する。ステップＳ３６は、スクリプトを解釈して次に実行すべきプログラム内容が制御構文であるか否かを判定する。制御構文である場合には（ステップＳ３６のＹＥＳ）、制御構文ごとの処理を実行する。制御構文ごとの処理については後述する（図７参照）。ステップＳ３８は、スクリプトに記述されたコマンド文字列や制御構文に基づく一連の処理を全て終了したか否かを判定する。一連の処理全てが終了したと判定した場合には（ステップＳ３８のＹＥＳ）、当該処理を終了する。他方、一連の処理全てが終了していないと判定した場合には（ステップＳ３８のＮＯ）、ステップＳ３４の処理に戻って引き続きスクリプトに記述されているプログラム内容に従って処理を順に実行する。
【００３６】
図７は、「制御構文毎の処理」（図６のステップＳ３７参照）の一実施例を示すフローチャートである。図７（Ａ）は制御構文が「while文」である場合の繰り返し制御の流れを、図７（Ｂ）は制御構文が「if文」である場合の分岐制御の流れを概念的にそれぞれ示したものである。なお、「for文」,「until文」などの他の制御構文についても同様に、スクリプトにおいて各制御構文に後続して記述された内部状態に関する条件に基づいて処理を実行することから、ここでは説明を省略する。
【００３７】
制御構文が「while文」である場合、図７（Ａ）に示すように、ステップＳ４１は、スクリプトにおいて「while文」に後続して記述された内部状態に関する条件を評価する。ステップＳ４２は、条件の評価が「真（true）」であるか否かを判定する。条件の評価が「真（true）」である場合には（ステップＳ４２のＹＥＳ）、記述されているプログラム内容に従って所定の処理（例えば処理Ａ）を実行する（ステップＳ４３）。ステップＳ４３の処理実行後にはステップＳ４１の処理に戻り、ステップＳ４１〜ステップＳ４３の処理を繰り返し実行する。すなわち、電子音楽装置の内部状態が変更されて、上記ステップＳ４２において条件の評価が「偽（false）」になるまで繰り返し同じ処理を実行する。
【００３８】
一方、制御構文が「if文」である場合、図７（Ｂ）に示すように、ステップＳ５１は、スクリプトにおいて「if文」に後続して記述された内部状態に関する条件を評価する。ステップＳ５２は、条件の評価が「真（true）」であるか否かを判定する。条件の評価が「真（true）」である場合には（ステップＳ５２のＹＥＳ）、記述されているプログラム内容に従って所定の処理（例えば処理Ａ）を実行する（ステップＳ５３）。一方、条件の評価が「真（true）」でなく「偽（false）」である場合には（ステップＳ５２のＮＯ）、記述されているプログラム内容に従って前記条件の評価が「真（true）」である場合に実行する処理Ａとは異なる所定の処理（例えば処理Ｂ）を実行する（ステップＳ５４）。すなわち、電子音楽装置の内部状態に応じて処理を切り替えて実行する。
【００３９】
以上のように、機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述された汎用のスクリプトの実行に従って、１乃至複数の操作子の操作に応じて決定される当該機器における操作／設定状態を表す状態情報に応じた楽音制御を実行するようにした。すなわち、スクリプトを解釈する際に状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行って、該条件判定に応じて制御部Ｘが解釈／実行可能な制御命令である内部コマンドを生成する。制御部Ｘは、該生成された内部コマンドに基づき楽音制御を行う。これにより、一般のユーザであっても必要に応じてスクリプトを生成するだけで、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを容易に変更することができるようになる。
【００４０】
なお、演奏操作子５Ａや設定操作子６Ａは自動動作機構を有してなり、スクリプトの実行に伴って状態情報を変更したり新規に設定したりするだけでなく、自動的に各操作子が変更後（あるは新規設定後）の状態情報に対応する所定位置まで動作するようになっていてよい。
なお、状態情報は電子音楽装置内で動作しうる楽音制御プログラムの起動状態等を示す情報であってもよい。
【図面の簡単な説明】
【００４１】
【図１】この発明に係る電子音楽装置の全体構成の一実施例を示したハード構成ブロック図である。
【図２】電子音楽装置においてスクリプトに従った動作を行う機能の概略を示す機能ブロック図である。
【図３】制御処理の一実施例を示すフローチャートである。
【図４】制御→スクリプトインタフェース処理の一実施例を示すフローチャートである。
【図５】スクリプト→制御インタフェース処理の一実施例を示すフローチャートである。
【図６】スクリプト解釈処理の一実施例を示すフローチャートである。
【図７】制御構文毎の処理の一実施例を示すフローチャートであり、図７（Ａ）は制御構文が「while文」である場合の繰り返し制御を、図７（Ｂ）は制御構文が「if文」である場合の分岐制御を示す。
【符号の説明】
【００４２】
１…ＣＰＵ、２…ＲＯＭ、３…ＲＡＭ、４…記憶装置、５，６…検出回路、５Ａ…演奏操作子、６Ａ…設定操作子、７…表示回路、７Ａ…ディスプレイ、８…音源・効果回路、８Ａ…サウンドシステム、９…通信インタフェース、１Ｄ…通信バス、Ａ…操作部、Ｂ…表示部、Ｃ…音源部、Ｄ…状態記憶部、Ｉ…制御‐スクリプトインタフェース（Ｉ／Ｆ）部、Ｏ…スクリプト実行部、Ｖ…スクリプト記憶部、Ｘ…制御部
【図１】
2009025449.tif 000003
【図２】
2009025449.tif 000004
【図３】
2009025449.tif 000005
【図４】
2009025449.tif 000006
【図５】
2009025449.tif 000007
【図６】
2009025449.tif 000008
【図７】
2009025449.tif 000009