説明

電子音楽装置及びプログラム

【課題】 スクリプトに従って状態情報に応じた所定の動作を実行する。
【解決手段】 機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを解釈し実行する。スクリプトを解釈し実行する際には、操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を取得し、該状態情報に基づきスクリプトに記述された制御構文の条件判定を行い、楽音制御を実行する内部コマンドを生成する。内部コマンドは、制御手段が解釈し実行可能な制御命令である。制御手段は、この内部コマンドに基づき状態情報に応じた楽音制御を実行する。これにより、ユーザはスクリプトを生成するだけで、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを変更することが容易にできるようになる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、当該機器の操作/設定状態に応じて、予め決められた所定の動作を実行する電子音楽装置及びプログラムに関する。特に、機械語への変換作業を自動化して簡単に実行できるようにした汎用の簡易プログラムであるスクリプトに従って、電子音楽装置における操作/設定状態に応じた所定の動作を実行させる技術に関する。
【背景技術】
【0002】
従来から、電子楽器などの電子音楽装置において、設定操作子の操作に応じて決定されるパラメータ値や演奏操作子の操作に応じて発生されるイベントデータ等に応じて(本明細書では、これらの当該機器における現状の操作状態又は設定状態の少なくともいずれか(内部状態とも呼ぶ)に対応した情報を総称して状態情報と呼ぶ)、動作を異ならせて実行する技術が知られている。こうした技術に関連するものとしては、例えば下記に示す特許文献1に記載されている発明がその一例である。この特許文献1に記載の従来技術は、鍵が押下されることにより発生されるノートオン(押鍵)イベントデータ(状態情報に該当する)に含まれるノートナンバに応じて、キースケーリングされた複数のパラメータを一括して修正することで「音像定位位置」を設定する技術について開示している。
【特許文献1】特開平7-244483号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
上記した従来技術においては、該電子音楽装置における状態情報と対応する実行すべき動作とが組み合わされた内部プログラムが予め電子音楽装置内に記憶されており、該内部プログラムの制御の元に上記動作を実行するようにしている。前記内部プログラムはメーカが予め用意し、ユーザに対して予め機器に組み込むなどして提供される、電子音楽装置のCPUが解釈して実行可能な専用のプログラムであって、そのプログラム内容として記述されている状態情報と実行すべき動作(動作態様だけでなく動作させるべき動作対象を含む)の組み合わせは固定である。
【0004】
ところで、ユーザによっては状態情報に応じて実行すべき動作を変更したい場合がある。例えば、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを変更したい場合がある。そのためには、状態情報と対応する動作との組み合わせを変更する必要がある。しかし、上述したように、状態情報と実行すべき動作の組み合わせは1つの内部プログラム内においては固定的である。そのため、メーカが状態情報と実行すべき動作の組み合わせが異なる多数の内部プログラムを予め用意しておき、これを個々のユーザに対して提供することが考えられるが、個々に要望が異なる全てのユーザに応えられるだけの考えうる全ての組み合わせをもつ内部プログラムを予め用意することは現実的でない。また、ユーザ自身が適宜に内部プログラムを書き換えたり新たな内部プログラムを作成することが考えられるが、内部プログラムは機械語若しくはアセンブリ言語等の低級言語で記述されており、こうした内部プログラムは公知のようにCPUのアーキテクチャやOS(Operating System)等のプラットフォームに依存するものであって移植性がないだけでなく、またそのプログラム内容を書き換えるには非常に高度なプログラミング知識を有していなければならず、一般のユーザがプログラム内容を書き換えたり新たに作成したりするのは非常に難しい。したがって、一般のユーザは電子音楽装置に予め用意されていない状態情報と動作対象の組み合わせ以外について、異なる動作を行うべき状態情報や、状態情報に応じて実行すべき動作対象そのものやその動作態様などを、好みに合わせて自由に設定することができず使いづらい、という問題点があった。
【0005】
本発明は上述の点に鑑みてなされたもので、予め電子音楽装置に用意されていない状態情報や動作対象の組み合わせであっても、ユーザが適宜に設定することが簡単にできるようにした電子音楽装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係る電子音楽装置は、1乃至複数の操作子と、前記操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を記憶する記憶手段と、解釈し実行可能な制御命令である所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する制御手段と、機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを取得するスクリプト取得手段と、スクリプトを解釈し実行可能なスクリプト実行手段であって、前記取得したスクリプトを解釈する際に前記状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行うと共に、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成するものとを具えてなり、前記制御手段はスクリプトの実行に応じて楽音制御を行うことを特徴とする。
【0007】
この発明によると、スクリプトの実行に従って、1乃至複数の操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報に応じた楽音制御を実行する。すなわち、スクリプト実行手段は、機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを解釈し実行する。スクリプトを解釈する際には前記状態情報を取得して、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行う。そして、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成する。この内部コマンドは、楽音制御を行う制御手段が解釈し実行可能な制御命令である。したがって、制御手段は、該生成された所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する。これにより、一般のユーザであっても必要に応じてスクリプトを生成するだけで、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを変更することが容易にできるようになって、ユーザは好みにあわせた動作を行う電子音楽装置に自由にカスタマイズすることができるようになる。また、汎用のスクリプトを用いることから、電子音楽装置のプラットフォームに左右されずに、新旧の既存の電子音楽装置に対しても広く適用することができ有利である。
【0008】
本発明は、装置の発明として構成し、実施することができるのみならず、方法の発明として構成し実施することができる。また、本発明は、コンピュータまたはDSP等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
【発明の効果】
【0009】
この発明によれば、汎用のスクリプトを用いて、操作子の操作に応じて決定される状態情報に基づく条件判定を行い、該条件判定に従って所定の楽音制御を実行する内部コマンドを生成するようにしたことから、ユーザは好みにあわせた動作を行う電子音楽装置に自由にカスタマイズすることがスクリプトを生成するだけで容易にできるようになる、という効果を得る。
【発明を実施するための最良の形態】
【0010】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
【0011】
図1は、この発明に係る電子音楽装置の全体構成の一実施例を示したハード構成ブロック図である。本実施例に示す電子音楽装置は例えば電子楽器であって、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータによって制御される。CPU1は、この電子音楽装置全体の動作を制御する。このCPU1に対して、通信バス1D(例えばデータ及びアドレスバス)を介してROM2、RAM3、記憶装置4、検出回路5,6、表示回路7、音源・効果回路8、通信インタフェース(I/F)9がそれぞれ接続されている。ROM2は、CPU1により実行あるいは参照される各種制御プログラム(OSや、該OS上で動作するスクリプト実行エンジンを含む)や各種データ等を格納する。RAM3は、CPU1が所定のプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。
【0012】
記憶装置4は、各種データやCPU1が実行する各種制御プログラム等を記憶する。例えば、当該機器の状態情報に応じて動作を異ならせて予め決められた所定の動作を実行する、公知のスクリプト言語(例えばperlなど)によりテキスト形式で記述されたスクリプトを記憶する(後述する図2に示すスクリプト記憶部V参照)。演奏操作子5Aの操作に応じて発生するイベントデータ、設定操作子6Aの操作に応じて発生するパラメータ値等の「状態情報」を操作子毎に記憶する(後述する図2に示す状態記憶部D参照)。この「状態情報」は、演奏操作子5Aの操作状態や設定操作子6Aの操作に応じたパラメータ設定状態等を反映した情報であることから、電子音楽装置における現状の操作状態又は設定状態の少なくともいずれか(内部状態)を表す情報であるといえる。
【0013】
記憶装置4は上記の他にも、CPU1が直接解釈・実行可能なデータ形式で記憶されている前記状態情報を、スクリプトを実行する公知のスクリプト実行エンジン(後述する図2に示すスクリプト実行部O参照)が解釈して処理可能なデータ形式である所定の文字列(これを内部状態文字列と呼ぶ)に変換するための、あるいは反対にスクリプト実行エンジンで処理可能なデータ形式である内部状態文字列を、CPU1が直接解釈・実行可能なデータ形式の状態情報に変換するための「変換テーブル」(「変換ルール」であってもよい)を記憶する(図示せず)。勿論、これに限らず、CPU1が直接解釈・実行可能なデータ形式(例えば2進数)でデータを管理する内部管理形式と、スクリプト実行エンジンが所定のスクリプトに基づき解釈・処理できるデータ形式(例えば10進数)でデータを管理するスクリプト管理形式とを一致させるために、各管理形式間で相互にデータ変換を行うことができればどのような形態であってもよい。さらに、記憶装置4は、スクリプト実行エンジンがスクリプトを解釈し実行可能な、スクリプトに記述されている電子音楽装置制御用のコマンド文字列を、CPU1が直接解釈し実行可能な内部コマンド(機械語)に変換するための、コマンド文字列と内部コマンドとの対応関係を示す「コマンド変換テーブル(あるいはインタプリタ)」などを記憶する(図示せず)。なお、上記各変換テーブル等は、電子音楽装置に固有のライブラリとして提供されるものである。勿論、ユーザが適宜に変更したり作成したりすることができてもよい。
【0014】
なお、上述したROM2に制御プログラム(OSやスクリプト実行エンジン)が記憶されていない場合、この記憶装置4(例えばハードディスク)に制御プログラムを記憶させておき、それをRAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、記憶装置4はハードディスク(HD)に限られず、フレキシブルディスク(FD)、コンパクトディスク(CD‐ROM・CD‐RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の様々な形態の記憶媒体を利用する記憶装置であればどのようなものであってもよい。あるいは、フラッシュメモリなどの半導体メモリであってもよい。この記憶媒体は電子音楽装置に対して着脱自在としてもよいし、着脱不可でもよい。着脱自在な場合はパーソナルコンピュータ等の外部機器を使って、ユーザが作成したスクリプトを記憶装置に書き込んだ後、電子音楽装置に装着することで、CPU1がスクリプトを利用できるようにする。一方、着脱不可の場合は、電子音楽装置本体の操作子を使ってスクリプトを作成して記憶媒体に書き込むか、あるいは外部機器を使って作成したスクリプトを、後述する通信インタフェース経由で電子音楽装置用に取り込み記憶媒体に書き込むことで、CPU1がスクリプトを利用できるようにする。
【0015】
演奏操作子5Aは、楽音の音高を選択するための複数の鍵を備えた例えば鍵盤等のようなものであり、各鍵に対応してキースイッチを有しており、この演奏操作子5A(鍵盤等)はユーザ自身の手弾きによるマニュアル演奏に使用することができるのは勿論のこと、音色や効果等を設定する手段などとして使用することもできる。検出回路5は、演奏操作子5Aの各鍵の押圧及び離鍵を検出することによって検出出力を生じる。設定操作子(スイッチ等)6Aは、例えば演奏の際に使用する音色・効果あるいは音量やテンポ等などの各種演奏パラメータを設定する設定スイッチ、スクリプトを選択する選択スイッチ、あるいは選択したスクリプトの実行を指示する実行スイッチ等、各種の操作子を含んで構成される。勿論、設定操作子6Aは上記した以外にも音高、音色、効果等を選択・設定・制御するために数値データ入力用のテンキーや文字データ入力用のキーボード、あるいはディスプレイ7Aに表示された各種画面の位置を指定するポインタを操作するマウスなどの各種操作子を含んでいてもよい。検出回路6は、上記設定操作子6Aの操作状態を検出し、その操作状態に応じたスイッチ情報等をデータ及びアドレスバス1Dを介してCPU1に出力する。上述したように、上記各操作子5A,6Aがそれぞれ操作されることに応じて、前記記憶装置4にノートオン/オフイベントデータやパラメータ値等の状態情報が操作された操作子毎に記憶される。
【0016】
表示回路7は例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイ7Aに、上記スイッチ操作に応じた各種画面を表示するのは勿論のこと、ROM2や記憶装置4に記憶されている各種データあるいはCPU1の制御状態などを表示することもできる。演奏者はディスプレイ7Aに表示されるこれらの各種情報を参照することで、演奏の際に使用する各種演奏パラメータの設定や自動演奏曲の選択などを容易に行うことができる。
【0017】
音源・効果回路7は複数のチャンネルで楽音信号の同時発生が可能であり、通信バス1Dを経由して与えられた演奏情報を入力し、この演奏情報に基づいて楽音を合成して楽音信号を発生する。また、発生した楽音信号に対して効果を付与することもできる。音源・効果回路8から発生される楽音信号は、アンプやスピーカなどを含むサウンドシステム8Aから発音される。この音源・効果回路8とサウンドシステム8Aの構成には、従来のいかなる構成を用いてもよい。例えば、音源・効果回路8はFM、PCM、物理モデル、フォルマント合成等の各種楽音合成方式のいずれを採用してもよく、また専用のハードウェアで構成してもよいし、CPU1によるソフトウェア処理で構成してもよい。
【0018】
通信インタフェース(I/F)9は、図示を省略した外部機器と当該電子音楽装置との間でMIDI形式の演奏データを送受信するMIDI入出力インタフェース、MIDI以外のデータや制御プログラムなどの各種情報を送受信するデータ入出力インタフェースとしての機能を備えた、例えばRS-232C、USB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)、ブルートゥース(商標)、赤外線送受信器等のインタフェースである。あるいは、LAN(Local Area Network)やインターネット、電話回線等の有線あるいは無線の通信ネットワークを介して、電子音楽装置とネットワーク上の外部機器(例えば、サーバ装置)とを接続することができ、電子音楽装置とサーバ装置との間でMIDIデータや各種情報,スクリプトなどを送受信することができるネットワークインタフェースであってもよい。こうした通信インタフェース9は、有線あるいは無線のものいずれかでなく双方を具えていてよい。
【0019】
なお、演奏操作子4Aは鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、演奏操作子4Aやディスプレイ7Aあるいは音源・効果回路8などを1つの装置本体に内蔵したものに限らず、それぞれが別々に構成され、通信インタフェースや各種ネットワーク等の通信手段を用いて各装置を接続するように構成されたものであってもよいことは言うまでもない。さらに、本発明に係る電子音楽装置は上記したような電子楽器の形態に限らず、自動演奏ピアノ,ミキサー,レコーダーなど、どのような形態の電子音楽装置・機器に適用してもよい。
【0020】
次に、図1に示した電子音楽装置における、予め記憶されたスクリプトに従う、当該機器の内部状態に応じて予め決められた所定の異なる動作に制御を切り替える処理を行う機能の概要について、図2を用いて説明する。図2は、図1に示した電子音楽装置においてスクリプトに従った動作を行う機能の概略を示す機能ブロック図である。
【0021】
電子音楽装置において、操作部A(演奏操作子5Aや設定操作子6A)が操作されると、制御部X(CPU1)は電子音楽装置の状態情報(現状の内部状態)を各操作子の操作態様や操作量等にあわせて変更する。そして、この状態情報の変更に応じて表示部B(表示回路7)に対してディスプレイ7A上に表示する関連項目の表示内容を変更する指示を行ったり、あるいは音源部C(音源・効果回路8)に対して楽音信号を制御する指示を行ったりするのは従来どおりであるが、これに加えて変更した状態情報を状態記憶部Dに記憶する。すなわち、状態記憶部Dは、演奏操作子5Aの操作に応じて発生するイベントデータ、設定操作子6Aの操作に応じて発生するパラメータ値等の「状態情報」を操作された操作子毎に記憶する。具体例を挙げると、例えば演奏操作子5Aが押鍵操作された場合には、状態記憶部Dに電子音楽装置の状態情報として「ノートオンイベントデータ」が記憶されるし、音色を変更する設定操作子6Aが操作された場合には、状態記憶部Dに電子音楽装置の状態情報として「音色パラメータ値」が記憶される。
【0022】
スクリプト記憶部Vは、公知のスクリプト言語(例えばPerlなど)によりテキスト形式で記述された、プラットフォームに依存しない汎用のスクリプトを取得し記憶する。このスクリプトは機械語への変換作業を自動化して簡単に実行できるようにした簡易プログラムであって、本実施例においては当該機器の現状の状態情報に応じて予め決められた所定の異なる動作を実行するための、if文やfor文,while文,case文,until文などの所謂「制御構文」を少なくとも含んで記述されている。これらの制御構文において判断される条件として、状態記憶部Dに記憶されている電子音楽装置の状態情報が利用される。
【0023】
スクリプトの一例を以下に示す。ここでは、複数の設定操作子6Aのうち1番が付されているノブの値に応じて、2番が付されているノブのレンジを自動的に変更設定するように制御するスクリプト(ただし、スクリプト言語はperl)を例に示している。
(スクリプトの一例)
#!/usr/bin/perl
#電子音楽装置XXのライブラリを使えるように宣言。
use EMI_XX_Contorol_Library;

while(1){
#1番のノブの状態を監視し、変化があったら変化した値を取得する。
val=watchKnob(1)
#変化後の値が70〜80だったら、
#2番のノブのレンジを最小:110〜最大:120に設定する。
if(val>=70&&val<=80){
setKnobRange(2,110,120);
}
}
【0024】
こうしたスクリプトは、ユーザがパーソナルコンピュータ等を使用して自由にテキスト形式で記述することで作成することができ、該作成したスクリプトを電子音楽装置の記憶装置4に多数記憶しておくことができる。また、電子音楽装置を供給するメーカからプリセットのスクリプトとして提供され、予め電子音楽装置内に記憶されていてもよい。さらには、ネットワーク上のサーバ装置等からそこに記憶されている他のユーザ等が作成したスクリプトをダウンロード(取得)して記憶するようにしてもよいし、着脱可能な記憶媒体からスクリプトをロード(取得)して記憶するようにしてもよい。勿論、電子音楽装置自体がスクリプトを記述するためのエディタ機能などのプログラミング環境を備えていて、ユーザ自らが電子音楽装置のみを使用してプログラミングしたスクリプトを記憶することができてよい。
【0025】
上記例に示したスクリプトにおいて、while文において条件として利用する電子音楽装置の状態情報は「1番のノブの状態に変化がある」ことであって、その場合に実行する処理は以降に続く「if文で記述された処理」である。そして、該if文において条件として利用する電子音楽装置の状態情報は「1番のノブの変化後の値(対応するパラメータ値)が70〜80である」ことであって、その場合に実行する動作は「2番のノブのレンジを最小:110〜最大:120に設定する」処理である。「SetKnobRange(2,110,120)」は、「2番のノブのレンジを最小:110〜最大:120に設定する」よう電子音楽装置に対して指示するための、電子音楽装置制御用のコマンド文字列「SetKnobRange」と内部状態文字列「(2,110,120)」である。電子音楽装置制御用のコマンド文字列の他の例を示すと、例えば「onoff button/A」(ボタンAを押した状態とする)、「right knob/B」(ノブBを右に回した状態とする)、「down cursor」(カーソルを下に移動する)などがある。
【0026】
図2の説明に戻って、スクリプト実行部Oは汎用のスクリプト実行エンジン(ソフトウェアプログラムであって、図示していないがコンパイラやリンカ、若しくはインタプリタ等を実装していてよい)であって、スクリプトを解釈し実行する。当然のことながら、本電子音楽装置のOSは、このスクリプト実行エンジンを動作させることが可能なOSである。言い換えると、電子音楽装置が搭載しているOSで動作するスクリプト実行エンジンを電子音楽装置に組み込むようにする。一例として、スクリプト実行エンジンはPerlであり、OSはUNIX(商標)系のOSが挙げられるが、勿論これらに限られるものではない。上記したように、スクリプトには電子音楽装置の状態情報が条件として記述されるが、制御部Xが処理可能なデータ形式とスクリプト実行エンジンが処理可能なデータ形式とは異なることから、スクリプト実行部Oでは状態記憶部Dに記憶された状態情報をそのまま利用することはできない。また、スクリプトには電子音楽装置制御用のコマンド文字列が記述されているが、スクリプトの実行に伴いコマンド文字列を制御命令として制御部Xに送ったとしても、制御部Xではそうしたコマンド文字列を解釈することができないので制御を行うことができない。すなわち、スクリプト実行部Oはスクリプトを実行しても、そのままでは直接電子音楽装置を制御することができない。
【0027】
そこで、本発明においては、制御部Xとスクリプト実行部Oとの間に制御-スクリプトインタフェース(I/F)部Iを設けている。この制御-スクリプトインタフェース(I/F)部Iは、スクリプト実行部Oと制御部Xとの間でそれぞれが扱うことのできる命令/データ形式への橋渡し(変換)を相互に行うものである。命令/データ形式の変換を行う際には、状態情報の変換(データ変換)に関して「変換テーブル」等を参照して、コマンド文字列の変換(コマンド変換)に関して「コマンド変換テーブル」等を参照する。すなわち、「変換テーブル」等を参照して、CPU1が直接解釈・実行可能なデータ形式で記憶されている状態情報を、スクリプトを実行する公知のスクリプト実行エンジンが解釈して処理可能なデータ形式である所定の文字列(内部状態文字列)に変換する、あるいは反対にスクリプト実行エンジンで処理可能なデータ形式である内部状態文字列を、CPU1が直接解釈・実行可能なデータ形式の状態情報に変換する。また、「コマンド変換テーブル」等を参照して、スクリプトに記述されている解釈・実行可能な電子音楽装置制御用のコマンド文字列を、CPU1が直接解釈・実行可能な内部コマンドに変換する。こうした命令/データ形式の変換を介することで、スクリプト実行部Oは状態情報を条件として使用したスクリプトを実行することができ、該スクリプト実行部Oによるスクリプトの実行に応じて、制御部Xは操作部Aや表示部Bや音源部Cを制御、つまり電子音楽装置の動作を制御することができるようにしている。
【0028】
次に、本実施例に示す電子音楽装置において、予め用意(あるいは取得)されたスクリプトに従って、電子音楽装置における現状の設定/操作状態(状態情報)に応じて動作を異ならせる上記した機能を実現する具体的な処理について、図3〜図7を用いて説明する。図3は、上記機能を実現する「制御処理」の一実施例を示すフローチャートである。当該処理は、電子音楽装置の電源オンに応じてCPU1が開始する処理であって、制御部Xの機能に該当する。
【0029】
ステップS1は、初期化処理を実行する。初期化処理としては、レジスタのクリアや初期設定等がある。具体的には、前回実行したスクリプトに対応するネイティブ・コードのクリア、電源オン時における現状の設定/操作状態(状態情報)の初期設定などである。ステップS2は、「操作子処理」を実行する。この「操作子処理」は、各操作子毎に予め対応付けられている公知である本来の処理を実行する。例えば、設定操作子6Aが操作された場合には、音色や効果等の楽音制御にかかるパラメータ値を設定する。演奏操作子5Aが押鍵操作された場合には、操作された鍵に対応付けられているノートナンバを含むノートイベントデータを生成し、これに基づき楽音を発音する。勿論、こうした本来の処理は、予めメーカによって提供され電子音楽装置に記憶されている、CPU1が直接解釈して実行することができる内部プログラム(つまりスクリプトでない)に従って行われることは言うまでもない。
【0030】
ステップS3は、「制御→スクリプトインタフェース処理」を実行する(後述する図4参照)。ステップS4は、「スクリプト→制御インタフェース処理」を実行する(後述する図5参照)。ステップS5は、「スクリプト解釈処理」を実行する(後述する図6参照)。ステップS5は、その他の処理を実行する。その他の処理としては、例えばユーザがスクリプトを任意に編集/作成するスクリプト編集/作成処理などがある。なお、ユーザがスクリプトを編集/作成する際には、電子音楽装置において予めメーカから提供され記憶済みである所定のライブラリ(上述したスクリプトの例では、「EMI_XX_Contorol_Library」)に登録されている多数のコマンド文字列の中から、ユーザ所望の動作を行う内部コマンドに対応するコマンド文字列を記述することが必要である。
【0031】
図4は、「制御→スクリプトインタフェース処理」(図3のステップS3参照)の一実施例を示すフローチャートである。この処理は、制御‐スクリプトI/F部Iの機能に該当する。ステップS11は、状態記憶部Dをチェックする。ステップS12は、状態記憶部Dに記憶された各操作子に対応するいずれかの状態情報が変化したか否かを判定する。例えば、演奏操作子5Aのある鍵に対応する状態情報が「ノートオン」から「ノートオフ」に変化したか、音色を変更する設定操作子6Aに対応する状態情報の「音色パラメータ値」が変化したか等を判定する。この状態情報が変化したか否かの判定は、操作子の前後の状態情報を比較する、判定フラグを用いる等、適宜の方法を採用してよい。各操作子に対応するいずれかの状態情報が変化したと判定した場合には(ステップS12のYES)、変化のあった状態情報を文字列に変換し、スクリプトに記述されている制御構文内で用いられている変数に格納する(ステップS13)。すなわち、「変換テーブル」等を参照して、CPU1が直接解釈・実行可能なデータ形式で記憶されている状態情報を、スクリプトを実行する公知のスクリプト実行エンジンが解釈して処理可能なデータ形式である所定の文字列(内部状態文字列)に変換する。このようにして、電子音楽装置における各操作子の操作を監視することで、各操作子の最新の操作状態を反映した制御をスクリプト実行部Oから制御部Xに対してフィードバックすることができるようにしている。
【0032】
図5は、「スクリプト→制御インタフェース処理」(図3のステップS4参照)の一実施例を示すフローチャートである。この処理は、制御‐スクリプトI/F部Iの機能に該当する。ステップS21は、スクリプト実行部Oによるスクリプトの実行に伴って、電子音楽装置制御用のコマンド文字列(制御構文)が発生されたか否かを判定する。電子音楽装置制御用のコマンド文字列が発生されたと判定した場合には(ステップS21のYES)、制御‐スクリプトI/F部Iにより該コマンド文字列を内部コマンドに変換し、制御部Xに供給する(ステップS22)。すなわち、「コマンド変換テーブル」等を参照して、スクリプトに記述されている解釈・実行可能な電子音楽装置制御用のコマンド文字列を、CPU1が直接解釈・実行可能な内部コマンドに変換する。このようにして、スクリプト実行部Oによるスクリプトの実行を監視し、電子音楽装置に対するコマンド文字列の発生に応じて電子音楽装置の制御を行うことができるようにしている。
【0033】
ステップS23は、スクリプトの実行に伴って内部状態文字列に変化があるか否かを判定する。内部状態文字列に変化があると判定した場合には(ステップS23のYES)、内部状態文字列を状態情報に変換し、制御部Xに供給する(ステップS24)。すなわち、「変換テーブル」等を参照して、スクリプト実行エンジンで処理可能なデータ形式である内部状態文字列を、CPU1が直接解釈・実行可能なデータ形式の状態情報に変換する。これにより、スクリプトに記述されたコマンド(例えば計算式や代入式等)に基づき変化しうる内部状態文字列に従って、状態情報の書き換えや新規設定等を行い電子音楽装置を制御することができるようにしている。
【0034】
図6は、「スクリプト解釈処理」(図3のステップS5参照)の一実施例を示すフローチャートである。この処理は、スクリプト実行部Oの機能に該当する。ステップS31は、実行スイッチ等の操作に基づくスクリプト実行指示が行われたか否かを判定する。スクリプト実行指示が行われていないと判定した場合には(ステップS31のNO)、当該処理を終了する。一方、スクリプト実行指示が行われたと判定した場合には(ステップS31のYES)、スクリプト記憶部Vに記憶済みの多数のスクリプト(ファイル)の中から読み出すべきスクリプトを指定する(ステップS32)。この読み出すべきスクリプト(ファイル)は、ユーザがスクリプト実行指示したスクリプトである。ステップS33は、前記指定されたスクリプトを記憶装置4からRAM3に読み込む。RAM3に読み込まれたスクリプトは、実行前にコンパイルされる。
【0035】
ステップS34は、スクリプトを解釈して次に実行すべきプログラム内容がコマンドであるか否かを判定する。コマンドである場合には(ステップS34のYES)、コマンドを実行する(ステップS35)。この際に、スクリプトに記述されているコマンドが電子音楽装置制御用のコマンド文字列であって、制御部Xが直接解釈して実行できるものでない場合には、上記したようにコマンド変換を行ってから制御部Xに対して供給する(図5のステップS22及びS24参照)。一方、該コマンドが電子音楽装置制御用のコマンド文字列であって、制御部Xが直接解釈して実行できるものである場合には、上記したコマンド変換を行うことなく制御部Xに対してそのままコマンドを供給する。該コマンドが電子音楽装置制御用のコマンド文字列でない場合には、制御部Xに対してコマンドを供給することなく、スクリプト実行部Oでコマンドに従う処理を実行する。ステップS36は、スクリプトを解釈して次に実行すべきプログラム内容が制御構文であるか否かを判定する。制御構文である場合には(ステップS36のYES)、制御構文ごとの処理を実行する。制御構文ごとの処理については後述する(図7参照)。ステップS38は、スクリプトに記述されたコマンド文字列や制御構文に基づく一連の処理を全て終了したか否かを判定する。一連の処理全てが終了したと判定した場合には(ステップS38のYES)、当該処理を終了する。他方、一連の処理全てが終了していないと判定した場合には(ステップS38のNO)、ステップS34の処理に戻って引き続きスクリプトに記述されているプログラム内容に従って処理を順に実行する。
【0036】
図7は、「制御構文毎の処理」(図6のステップS37参照)の一実施例を示すフローチャートである。図7(A)は制御構文が「while文」である場合の繰り返し制御の流れを、図7(B)は制御構文が「if文」である場合の分岐制御の流れを概念的にそれぞれ示したものである。なお、「for文」,「until文」などの他の制御構文についても同様に、スクリプトにおいて各制御構文に後続して記述された内部状態に関する条件に基づいて処理を実行することから、ここでは説明を省略する。
【0037】
制御構文が「while文」である場合、図7(A)に示すように、ステップS41は、スクリプトにおいて「while文」に後続して記述された内部状態に関する条件を評価する。ステップS42は、条件の評価が「真(true)」であるか否かを判定する。条件の評価が「真(true)」である場合には(ステップS42のYES)、記述されているプログラム内容に従って所定の処理(例えば処理A)を実行する(ステップS43)。ステップS43の処理実行後にはステップS41の処理に戻り、ステップS41〜ステップS43の処理を繰り返し実行する。すなわち、電子音楽装置の内部状態が変更されて、上記ステップS42において条件の評価が「偽(false)」になるまで繰り返し同じ処理を実行する。
【0038】
一方、制御構文が「if文」である場合、図7(B)に示すように、ステップS51は、スクリプトにおいて「if文」に後続して記述された内部状態に関する条件を評価する。ステップS52は、条件の評価が「真(true)」であるか否かを判定する。条件の評価が「真(true)」である場合には(ステップS52のYES)、記述されているプログラム内容に従って所定の処理(例えば処理A)を実行する(ステップS53)。一方、条件の評価が「真(true)」でなく「偽(false)」である場合には(ステップS52のNO)、記述されているプログラム内容に従って前記条件の評価が「真(true)」である場合に実行する処理Aとは異なる所定の処理(例えば処理B)を実行する(ステップS54)。すなわち、電子音楽装置の内部状態に応じて処理を切り替えて実行する。
【0039】
以上のように、機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述された汎用のスクリプトの実行に従って、1乃至複数の操作子の操作に応じて決定される当該機器における操作/設定状態を表す状態情報に応じた楽音制御を実行するようにした。すなわち、スクリプトを解釈する際に状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行って、該条件判定に応じて制御部Xが解釈/実行可能な制御命令である内部コマンドを生成する。制御部Xは、該生成された内部コマンドに基づき楽音制御を行う。これにより、一般のユーザであっても必要に応じてスクリプトを生成するだけで、異なる動作を行うべき状態情報の種類を変更したり、状態情報に応じて実行すべき動作対象そのものやその動作態様などを容易に変更することができるようになる。
【0040】
なお、演奏操作子5Aや設定操作子6Aは自動動作機構を有してなり、スクリプトの実行に伴って状態情報を変更したり新規に設定したりするだけでなく、自動的に各操作子が変更後(あるは新規設定後)の状態情報に対応する所定位置まで動作するようになっていてよい。
なお、状態情報は電子音楽装置内で動作しうる楽音制御プログラムの起動状態等を示す情報であってもよい。
【図面の簡単な説明】
【0041】
【図1】この発明に係る電子音楽装置の全体構成の一実施例を示したハード構成ブロック図である。
【図2】電子音楽装置においてスクリプトに従った動作を行う機能の概略を示す機能ブロック図である。
【図3】制御処理の一実施例を示すフローチャートである。
【図4】制御→スクリプトインタフェース処理の一実施例を示すフローチャートである。
【図5】スクリプト→制御インタフェース処理の一実施例を示すフローチャートである。
【図6】スクリプト解釈処理の一実施例を示すフローチャートである。
【図7】制御構文毎の処理の一実施例を示すフローチャートであり、図7(A)は制御構文が「while文」である場合の繰り返し制御を、図7(B)は制御構文が「if文」である場合の分岐制御を示す。
【符号の説明】
【0042】
1…CPU、2…ROM、3…RAM、4…記憶装置、5,6…検出回路、5A…演奏操作子、6A…設定操作子、7…表示回路、7A…ディスプレイ、8…音源・効果回路、8A…サウンドシステム、9…通信インタフェース、1D…通信バス、A…操作部、B…表示部、C…音源部、D…状態記憶部、I…制御‐スクリプトインタフェース(I/F)部、O…スクリプト実行部、V…スクリプト記憶部、X…制御部

【特許請求の範囲】
【請求項1】
1乃至複数の操作子と、
前記操作子の操作に応じて決定される当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を記憶する記憶手段と、
解釈し実行可能な制御命令である所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する制御手段と、
機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであって、少なくとも制御構文を含んで記述されたスクリプトを取得するスクリプト取得手段と、
スクリプトを解釈し実行可能なスクリプト実行手段であって、前記取得したスクリプトを解釈する際に前記状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行うと共に、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成するものと
を具えてなり、
前記制御手段は、スクリプトの実行に応じて楽音制御を行うことを特徴とする電子音楽装置。
【請求項2】
前記取得したスクリプトを解釈し実行する際に、前記状態情報を前記スクリプト実行手段が解釈可能な所定形式のデータ文字列に変換する一方で、前記スクリプトに記述された前記スクリプト実行手段が解釈し実行可能なテキスト形式のコマンド文字列を、前記制御手段が解釈し実行可能な所定のデータ形式の内部コマンドに変換する変換手段をさらに具えた請求項1に記載の電子音楽装置。
【請求項3】
前記変換手段は、さらに前記スクリプトに記述された前記スクリプト実行手段が解釈し実行可能なテキスト形式の状態情報を、前記制御手段が解釈し実行可能な所定のデータ形式の状態情報に変換することを特徴とする請求項2に記載の電子音楽装置。
【請求項4】
コンピュータに、
1乃至複数の操作子の操作に応じて決定される、当該機器における操作又は設定状態の少なくともいずれかを表す状態情報を所定の記憶手段に記憶する手順と、
解釈し実行可能な制御命令である所定の内部コマンドに基づき、前記記憶した状態情報に応じた楽音制御を実行する手順と、
機械語への変換作業を自動化して簡単に実行できる汎用の簡易プログラムであり、少なくとも制御構文を含んで記述されたスクリプトを取得する手順と、
前記取得したスクリプトを解釈する際に前記状態情報を取得し、該取得した状態情報に基づきスクリプトに記述された制御構文の条件判定を行うと共に、該条件判定に応じて所定の楽音制御を実行する内部コマンドを生成する手順と
を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate