以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図1は、この発明に係る演奏データ編集プログラムを適用した電子楽器の全体構成の一実施例を示したハード構成ブロック図である。本実施例に示す電子楽器は、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータによって制御される。CPU1は、この電子楽器全体の動作を制御する。このCPU1に対して、通信バス1D(例えばデータ及びアドレスバス)を介してROM2、RAM3、外部インタフェース(I/F)4、入力操作部5、表示部6、外部記憶装置7、音源8がそれぞれ接続されている。ROM2は、CPU1により実行あるいは参照される各種制御プログラムや各種データ等を格納する。RAM3は、CPU1が所定の制御プログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中の制御プログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。
外部インタフェース4は当該電子楽器と外部機器4Aなどとの間で制御プログラムやデータなどの各種情報(例えば表情付け処理(後述の図3参照)、演奏データや表情付け種類情報(後述の図2参照)など)を送受信するための、例えばMIDIインタフェースや通信インタフェースなどである。MIDIインタフェースは、外部機器4A(この場合にはMIDI機器等)から所謂MIDIデータと呼ばれるMIDI形式の演奏データを当該電子楽器へ入力したり、あるいは当該電子楽器からMIDIデータを他のMIDI機器等へ出力するためのインタフェースである。他のMIDI機器はユーザによる操作に応じてMIDIデータを発生する機器であればよく、鍵盤型、ギター型、管楽器型、打楽器型、身振り型等どのようなタイプの操作子を具えた(若しくは、操作形態からなる)機器であってもよい。通信インタフェースは、例えばLANやインターネット、電話回線等の有線あるいは無線の通信ネットワークに接続されており、該通信ネットワークを介して外部機器4A(この場合にはパーソナルコンピュータやサーバコンピュータ等)と接続され、通信ネットワークを介して接続された外部機器4Aで生成された各種プログラムや各種データ等を電子楽器本体にダウンロードするためのインタフェースである。このような外部インタフェース4としては、有線あるいは無線のものいずれかでなく双方を具えていてよい。
なお、上記外部インタフェース4をMIDIインタフェースで構成した場合、該MIDIインタフェースは専用のMIDIインタフェースを用いるものに限らず、RS232-C、USB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)等の汎用のインタフェースを用いてMIDIインタフェースを構成するようにしてもよい。この場合、MIDIイベントデータ以外のデータをも同時に送受信するようにしてもよい。MIDIインタフェースとして上記したような汎用のインタフェースを用いる場合には、他のMIDI機器はMIDIイベントデータ以外のデータも送受信できるようにしてよい。勿論、データフォーマットはMIDI形式のデータに限らず他のデータ形式であってもよく、その場合にはMIDIインタフェースと他のMIDI機器はそれにあった構成とすることは言うまでもない。
入力操作部5は楽音の音高を選択するための複数の鍵を備えた鍵盤等の演奏操作子、あるいは表情付け対象とする演奏データを選択するための選択スイッチなどである。上記鍵盤等の演奏操作子は楽音演奏のために使用できるのは勿論のこと、表情付け対象とする演奏データを直接入力する、あるいは予め記憶されている多数の演奏データの中から表情付け対象とする演奏データを選択するための入力手段として使用することもできる。勿論、入力操作部5はこれら以外にも数値データ入力用のテンキーや文字データ入力用のキーボード、あるいはディスプレイ6Aに表示される所定のポインタを操作するために用いるポインティングデバイス(例えばマウス)などの各種操作子を含んでいてもよい。表示部6は例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイ6Aに、表情付け対象として選択可能な演奏データの一覧を表示するのは勿論のこと、CPU1の制御状態などの各種情報をディスプレイ6Aに表示するためのものである。
外部記憶装置7は、CPU1が実行する各種制御プログラムや各種データなど(表情付け処理(図3参照)、演奏データや表情付け種類情報(図2参照)など)を記憶する。また、前記ROM2に制御プログラムが記憶されていない場合、この外部記憶装置7(例えばハードディスク)に制御プログラムを記憶させておき、それを前記RAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1に実行させることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、外部記憶装置7はハードディスク(HD)に限られず、フレキシブルディスク(FD)、コンパクトディスク(CD)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の着脱自在な様々な形態の外部記録媒体を利用する記憶装置であってもよい。あるいは、半導体メモリなどであってもよい。
音源8は複数のチャンネルで楽音信号の同時発生が可能であり、通信バス1Dを経由して与えられた演奏データ中の演奏情報(例えば、ノートイベントなど)や演奏操作子の操作に応じて発生される演奏情報等を入力し、これらの演奏情報に基づいて楽音信号を発生する。音源8から発生された楽音信号は、アンプやスピーカなどを含むサウンドシステム8Aから発音される。この音源8から発生された楽音信号に対して、効果回路など(図示せず)を用いて所定の効果を付与するようにしてもよい。演奏データの形式はMIDI形式のようなディジタル符号化されたものであってもよいし、PCM、DPCM、ADPCMのような波形サンプルデータ方式からなるものであってもよい。この音源8とサウンドシステム8Aの構成には、従来のいかなる構成を用いてもよい。例えば、音源8はFM、PCM、物理モデル、フォルマント合成等の各種楽音合成方式のいずれを採用してもよく、また専用のハードウェアで構成してもよいし、CPU1によるソフトウェア処理で構成してもよい。
なお、上述した電子楽器において、演奏操作子は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、電子楽器は入力操作部5やディスプレイ6Aあるいは音源8などを1つの電子楽器本体に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信インタフェースを用いて各装置を接続するように構成されたものであってもよいことは言うまでもない。さらに、本発明に係る演奏データ編集プログラムを適用する装置は電子楽器の形態に限らず、パーソナルコンピュータ、携帯電話等の携帯型通信端末、あるいはカラオケ装置やゲーム装置など、どのような形態の装置・機器に適用してもよい。携帯型通信端末に適用した場合、端末のみで所定の機能が完結している場合に限らず、機能の一部をサーバ側に持たせ、端末とサーバとからなるシステム全体として所定の機能を実現するようにしてもよい。
ここで、上述したROM2や外部記憶装置4あるいはRAM3などに記憶されている各種データのうち、演奏データ及び表情付け種類情報について説明する。まず、演奏データについて説明する。演奏データは自動表情付けの際に演奏情報を付与する対象とされるデータであり、例えば1曲分の楽曲全体を表わすデータである。該演奏データは、イベントデータから次のイベントデータまでの時間間隔を示すタイミングデータと、楽音の発音を指示するキーオンデータや楽音の消音を指示するキーオフデータ等の演奏イベントに関するイベントデータとの組み合わせからなる。イベントデータの内容としてはキーオン、キーオフ、テンポ変更、音色変更などがあり、これらのイベントを基にして自動演奏を行うことができるようになっている。この実施例においては、これらのイベントのうちキーオンやキーオフなどの音符に関するイベントを音符データと呼び、テンポ設定や音色変更などのイベントと区別する。後述する表情付け処理においては、演奏データの中から単音状態にある前記音符データを検索し、該検索した音符データに対して奏法に関する所定の制御データを付加する。すなわち、ユーザ所望の奏法に関するデータ編集(つまり表情付け)を行う。
なお、本発明に係る演奏データ編集プログラム及び演奏データ編集装置において用いる演奏データのフォーマットとしては、イベントの発生時刻を曲や小節内における絶対時間で表した『イベント+絶対時間』形式のもの、イベントの発生時刻を1つ前のイベントからの時間で表した『イベント+相対時間』形式のもの、音符の音高と符長あるいは休符と休符長で演奏データを表した『音高(休符)+符長』形式のもの、演奏の最小分解能毎にメモリの領域を確保し、演奏イベントの発生する時刻に対応するメモリ領域にイベントを記憶した『ベタ方式』形式のものなど、どのような形式のものでもよい。また、演奏データは複数チャンネル(パート)分のイベントデータが混在して記録されているもの、つまりイベントデータをその割り当てられたチャンネル(パート)にかかわらず出力順に1列に並べて記憶しているものに限らず、各イベントデータを各チャンネル(パート)毎に独立して記憶するように演奏データを構成してもよいことは言うまでもない。
次に、「表情付け種類情報」について図2を用いて説明する。図2は、「表情付け種類情報」のデータ構成の一実施例を示す概念図である。「表情付け種類情報」とは表情付けを行う際に行われる表情付け方法を各奏法毎に定義したデータであり、図2に示すように奏法の種類と表情付けの方法情報とが対応付けられて記憶されている。「奏法」は演奏データに表情付け可能である奏法の名前を示すデータであり、チョーキング、ハンマリング、プリングなどの各奏法毎に対応するように用意される。また、該「奏法」データには奏法検出用パラメータが対応付けられており(図示せず)、この奏法検出用パラメータは自動表情付け対象の演奏データの中から当該奏法を付加すべき箇所を検索するために用いられるパラメータ、具体的には演奏データ中に存在する単音状態の音符列から奏法を付加すべき音符を特定するためのパラメータである。奏法検出用パラメータは、各奏法毎で定義する内容は異なる。例えば、弦楽器の奏法「チョーキング」の場合には上昇したり下降したりする音符列を特定するように定義されているし、弦楽器の奏法「プリング」の場合には開放弦以外の1音から下降する音符列を特定するように定義されているものである。なお、前記奏法検出用パラメータは予め対応付けられたものに限らず、ユーザが表情付け可能な音符の抽出を行うためのルールとして適宜に設定することができるようになっていてもよい(後述する図3のステップS2参照)。
1つの奏法に対応する1つの「方法情報」は、選択された奏法を付与すべき部分に該奏法に対応する表情付けを行う際に用いる、演奏データを加工する方法に関するデータである。この実施例では、ROM2等に予め記憶済みの実際の演奏をサンプリングした波形データを割り当てることにより奏法を付加する方法(チョーキング波形、ハンマリング波形、プリング波形)、又は演奏データに対して表情付けに関する所定の制御データ(ピッチベンドデータ)を付加することにより奏法を付加するピッチベンド変化のいずれかが1つの奏法に対応して定義付けてある。ピッチベンド変化は一例として「深さ」「速さ」「カーブ」「ディレイ」などの複数種類のパラメータを含むものであり、各奏法毎に必要なパラメータ種類の数や各パラメータで定義する内容は異なる。例えば、奏法「チョーキング」の場合には、「深さ」は音高の変化の程度を表わすパラメータ、「速さ」は音高の変化の速さ又は長さを表わすパラメータ、「カーブ」は音高の変化の変わり方(例えば、直線型変化、上弦曲線型変化、下弦曲線型変化など)を表わすパラメータ、「ディレイ」はチョーキングが始まるまでの経過時間を表わすパラメータである。なお、ピッチベンド変化は「深さ」「速さ」「カーブ」「ディレイ」以外の他のパラメータを含んでいてもよい。また、「深さ」「速さ」「カーブ」「ディレイ」の全てのパラメータを必ずしも含んでいる必要はないし、「深さ」「速さ」「カーブ」「ディレイ」のパラメータを全く含まずに、これら以外の他のパラメータのみを含むものであってもよいことは言うまでもない。ユーザは表情付けを行う際に、該表情付け種類情報において奏法と方法情報との組みあわせ毎に対応付けられている番号(No)を指定することにより、所望の表情付けを行うことができる。
なお、上述したように同じ奏法であっても表情付けの方法(方法情報)は異なる場合がある。例えば、ハンマリング奏法やプリング奏法ではピッチベンドデータを用いて表情付けを行う方法と、波形データをアサインして表情付けを行う方法の2通りの方法がある。このような場合、ピッチベンドデータを用いる方が波形データをアサインする方よりも表情付けの可能判定が厳しくなる。例えば、ピッチベンドデータを用いる場合には、対象の音符の終わりが対象外の次の音符に重なっていると表情付けできなくなる(ただし、対象の音符の終わりを若干早めるなどの修正を行えば可能になる)。
なお、波形データをアサインして表情付けを行う具体例としては、ベロシティに応じて異なる表情の発音が得られるような音源を使用することが考えられる。
なお、表情付け種類情報は上記したようなチョーキング、ハンマリング、プリングなどの連続する2つの音符に対し行う種類に対応するものに限らず、例えばビブラートなどの単独の音符に対し行う種類など他の種類に対応して定義されていてよいことは言うまでもない。
なお、「方法情報」は波形データそのものやピッチベンド変化に限らず、所定のアルゴリズムを定義するようにしてもよい。そうした場合には、当該アルゴリズムに従い各奏法に対応した表情付けが行われる。
上述したように、ユーザは表情付け種類情報において奏法と方法情報との組みあわせ毎に対応付けられている番号を指定するだけで、容易にユーザ所望の奏法を演奏データに対して付加する表情付けを行うことができる。そこで、ユーザ所望の奏法を演奏データに対して付加する「表情付け処理」について説明する。図3は、「表情付け処理」の一実施例を示すフローチャートである。当該処理は、図1に示したCPU1において実行される処理である。以下、図3に示したフローチャートに従って、表情付け処理の動作について説明する。
まず、表情付け対象とする演奏データの選択を行う(ステップS1)。次に、各種ルールの設定を行う(ステップS2)。これら演奏データの選択及び各種ルールの設定処理は、ユーザによる入力操作部5の操作に応じて実行される。各種ルールとは表情付けを行う際に用いる該表情付けを付加するのに適した音符を抽出する条件として設定されるパラメータの1つであり、以降の処理では各種ルールに応じて表情付けが実行される(後述するステップS10、ステップS16参照)。こうした各種ルールの一例としては、例えば音符が単音状態かどうかをチェックする際(後述するステップS7参照)における隣接音との時間的な重なりの許容範囲、運指検出の仕方(後述のステップS8参照)、あるいは1チャンネルでの表情付けが可能な音符の抽出を行うための他のルール(後述のステップS10参照)などがある。さらに、表情付け対象のパート選択(ステップS3)、再生出力時のチャンネルとして1つの再生出力用チャンネルを設定する(ステップS4)。この表情付け対象のパートはデフォルト固定でもよいし、ダイアログ画面などをディスプレイ6A上に表示し、ユーザが該画面を利用しながら任意に設定できるようにしてあってもよい。
ステップS5では、表情付け対象の演奏データから上記ステップS3において選択したパートに関する音符データを1つのチャンネル(パート)のデータとして読み込む。すなわち、表情付け対象とされた演奏データが複数のチャンネルに分かれている場合には当該演奏データを1つのチャンネルに読み込むマージ処理を実行する。このように、表情付けの対象となる演奏データは演奏データ中の特定のパート(1チャンネル)を選択もしくは指定したものでもよいし、演奏データ中の複数のパートを選択・指定して1つのチャンネルにまとめたものでもよい。また、同じ音色の複数のパートを演奏データ中から自動的に探し出して1つにまとめたものでもよい。
ステップS6では、予め記憶されている表情付け種類情報の中からユーザ所望の1乃至複数の奏法に対応した表情付け種類の選択・設定を行う。この際に、表情付けが可能な音符の抽出を行うための他のルールとして、対応する奏法検出パラメータを設定するようにしてもよい。ステップS7では、1つのチャンネルのデータとして読み込まれた各音符データそれぞれに対して単音状態にある音符であるか否かをチェックし、その結果を各音符データに対応させて記憶する。この実施例において、単音状態にある音符とは、当該音符の音長が前後の音符の音長と時間的に重なり合っていない状態にあるものである。ただし、単音状態として必ずしも当該音符の音長が前後の音符の音長と時間的に重なっていない状態であることに限らず、例えば32分音符の音長に相当する時間くらいの許容範囲を持たせて単音状態か否かを判定するようにしてもよい。また、その他にも音符がある程度の長さの音長を持っているもの、あるいは音量を持っているものという他の条件を加えて単音状態にあるか否かを判定するようにしてもよい。
ステップS8では読み込まれた音符データに対して運指を検出し、その結果を音符データに対応させて記憶する。ここで実行する運指検出方法は従来の公知のどのような方法であってもよいことから、説明を省略する。ステップS9では上記ステップS6において選択・設定された表情付け種類情報のうちの1つを有効にし、以下の処理において該有効にした表情付け種類情報に従って演奏データに対して表情付けを行うための準備とする。ステップS10では、読み込まれた音符データの中で単音状態と判断された音符データの中から運指もしくは隣り合う音符データの音高差など(奏法に対応する奏法検出用パラメータに従う)を参照して、現在有効とされている表情付け種類情報の奏法が対応する方法で表情付け可能な音符データを抽出し、現在有効とされている表情付け種類情報の方法情報に基づき表情付けを行う。ステップS11では他に選択された表情付け種類情報があるか否かを判定する。他に選択された表情付け種類情報がある場合には(ステップS11のYES)、ステップS9の処理に戻って上記ステップS9〜ステップS10までの処理を繰り返し行うことによって、他の奏法の表情付けを実行する。一方、他に選択された表情付け種類情報がない場合には(ステップS11のNO)、当該表情付け処理を終了する。
上記「表情付け処理」について具体例を用いて説明する。図4は、表情付け処理についての詳細を説明するための概念図である。ここでは、演奏データに対して弦楽器における奏法の1つであるプリング奏法を付加する場合を例に挙げた。図4(a)は単音状態にある音符の検出処理後、図4(b)は運指の検出処理後、図4(c)は表情付けの付加処理後をそれぞれ示す図である。なお、説明を理解し易くするために、図4に示した各図においては各音符毎に対応する運指情報として数字0〜3を、各音符を表す情報として英字a〜eをそれぞれ便宜的に付記している。
図4(a)に示すように、演奏データ中の5個の音符データa〜e全てが単音状態にある音符データであると判定されたとすると、これらの音符データa〜eがそれぞれ単音状態にあることを記憶する(上記ステップS7参照)。また、これらの音符データa〜eを実際に演奏する際の運指を検出し、各音符データa〜e毎に検出した運指を記憶する(上記ステップS8参照)。ここでは図4(b)に示すように、音符データaに対して運指1(人差し指)、音符データbに対して運指0(開放)、音符データcに対して運指2(中指)、音符データdに対して運指0(開放)、音符データeに対して運指3(薬指)をそれぞれ使用するように運指を検出している。次に、プリング奏法を付加する(上記ステップS10参照)。ここで、弦楽器の奏法「プリング」は開放弦以外の1音から下降する音符列を特定するように定義されている。したがって、図4(c)に示すように、開放弦である音符データb及び音符データdを基点とする音符データb〜音符データcと音符データd〜音符データeに対してはプリング奏法を付加することができず、音符データa〜音符データbと音符データc〜音符データdに対してプリング奏法を付加する。プリング奏法を実現する方法としては、例えば音符データb及び音符データdのそれぞれにプリング奏法の波形データをアサインして表情付けとするようにしてよい。
なお、上述した「表情付け処理」において、種類毎の表情付けが可能な音符情報の抽出は上述した実施例のように運指を元にして行うことに限らず、例えばチョーキングであればチョーキングの連続を禁止するような従来知られた所定のアルゴリズムを用いて行うようにしてもよい。また、再生出力時のチャンネルとして1つの再生出力用チャンネルを設定するようにしたがこれに限らず、複数の再生出力用チャンネルを設定するようにしてもよい。そうした場合には、各再生出力用チャンネルそれぞれに対して選択したパートに関する音符データを1つのチャンネル(パート)のデータとして読み込み、各再生出力用チャンネル毎に表情付けを行うようにしてもよい。
1…CPU、2…ROM、3…RAM、4…通信インタフェース、4A…外部機器、5…入力操作部、6…表示部、6A…ディスプレイ、7…外部記憶装置、8…音源、8A…サウンドシステム、1D…通信バス