(57)【特許請求の範囲】
【請求項１】
一連の演奏音をサンプリングした親波形を記憶する第１の記憶手段と、
該第１の記憶手段に記憶された親波形を第１の閾値を用いて該波形の立上りを検出し、該立上がりを分割点として複数の子波形に分割する分割手段と、
該分割手段によって分割された複数の子波形各々を示すブロック情報を記憶する第２の記憶手段と
を備えた電子楽器の音素材処理装置。
【請求項２】
該分割手段は、分割済の子波形の内、少なくとも１つに対して再度分割処理が指示されたときに、該子波形について、該子波形を分割するに用いた前記第１の閾値と異なる第２の閾値を用いて該子波形をさらに分割すると共に、該子波形に換えて再度分割された新たな子波形各々を示すように、該第２の記憶手段に記憶されたブロック情報を更新する手段を備えたことを特徴とする請求項１記載の電子楽器の音素材処理装置。
【請求項３】
該第２の記憶手段に記憶されたブロック情報により示される各々の子波形が、前記分割前の親波形においてそれぞれ対応する順番で順次連続して付される波形番号情報と、各々の子波形の長さに対応したタイミング情報からなるシーケンスデータを作成するシーケンスデータ作成手段を更に備えた請求項１〜２のいずれかに記載の電子楽器の音素材処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は例えば演奏者が行った生演奏などの音素材を一音一音に分割する電子楽器の音素材処理装置に関するものである。
【０００２】
【従来の技術】
生演奏の例えばリズム楽器音や音声、種々の効果音などの音素材を予め録音しておいて、これを他の演奏音と同期させて演奏する手法がある。例えば特開平７−２４４４８０号公報には、演奏者が生演奏した一連の演奏音をＰＣＭ録音し、更にその録音した演奏データを時間軸上で例えば等容量毎に複数のデータに分割してブロック化するとともに各ブロック化された演奏データにキーナンバー（ノート番号）を割り当てておき、他の演奏音の演奏タイミングに合わせて人がキーボード等により押鍵してそのキーナンバーに対応したブロックの演奏データを読み出し演奏させることで、他の演奏音との同期多重録音を容易に行えるようにした電子楽器の演奏データ処理方法について記載されている。
【０００３】
【発明が解決しようとする課題】
しかし、上述の処理方法では、演奏データを分割してブロック化する際に、等容量毎に複数に分割するものであるので、分割されたブロックが演奏のビートの細かさと対応しなくなるおそれがある。次表はこれを説明するもので、１６ビートと４ビートの１小節分の演奏を等容量毎に分割した際の分割の態様を示すものである。
【０００４】
0003635361.tif 000002
【０００５】
例えば、図１０（ａ）は１６ビートの演奏データを４ブロックに分割したもので１つのブロックには４つの演奏音が入っている。この４ブロックに分割した１６ビートの演奏データを演奏速度が半分の他の演奏音と同期させた場合には、図１０（ｂ）に示すように、他の演奏音のタイミングに合わせて押鍵する毎に対応するキーナンバーのブロックの４つの演奏音が元の演奏データと同じテンポで演奏されるが、その後は次の押鍵があるまで空白期間となるため、不自然な演奏音になる。
【０００６】
なお、この１６ビートの演奏データを１６ブロックに分割した場合には１つのブロックに１つの演奏音が入るため、他の演奏音のタイミングに合わせて押鍵する毎に１つの演奏音が演奏されることになるので、問題はない。
【０００７】
また、図１０（ｃ）は４ビートの演奏データを４ブロックに分割したもので、１つのブロックには１つの演奏音が入っている。この場合には問題ない。しかし、図１０（ｄ）に示されるように、この４ビートの演奏データを１６ブロックに分割した場合には、１つのブロックに１つの演奏音波形の１／４部分が入ることになるので、これを再生すると不自然な演奏音となる。
【０００８】
この対策として、ブロックに分割する際に分割するブロック数を選択できるように構成することも考えられるが、この方法でも、演奏の一部のみが細かなビートで演奏されている場合などには対応できない。
【０００９】
したがって、本発明は、生演奏などから得た音素材を、演奏のビートの細かさにも対応して音単位に的確に分割しブロック化できるようにすることを目的とする。
また、分割結果の個々のデータを即座に自動演奏できるようにすることも目的とする。
【００ １０】
【課題を解決するための手段】
上述の課題を解決するために、本発明に係る電子楽器の音素材処理装置は、一連の演奏音をサンプリングした親波形を記憶する第１の記憶手段と、該第１の記憶手段に記憶された親波形を第１の閾値を用いて該波形の立上りを検出し、該立上がりを分割点として複数の子波形に分割する分割手段と、該分割手段によって分割された複数の子波形各々を示すブロック情報を記憶する第２の記憶手段を備える。このように閾値を用いることで、音素材を演奏のビートの細かさに対応して的確に分割、ブロック化することが容易にできる。
【００１１】
上述の分割手段は、分割済の子波形の内、少なくとも１つに対して再度分割処理が指示されたときに、該子波形について、該子波形を分割するに用いた前記第１の閾値と異なる第２の閾値を用いて該子波形をさらに分割すると共に、該子波形に換えて再度分割された新たな子波形各々を示すように、該第２の記憶手段に記憶されたブロック情報を更新する手段を含むように構成してもよい。
【００１４】
また本発明に係る電子楽器の音素材処理装置は、該第２の記憶手段に記憶されたブロック情報により示される各々の子波形が、前記分割前の親波形においてそれぞれ対応する順番で順次連続して付される波形番号情報と、各々の子波形の長さに対応したタイミング情報からなるシーケンスデータを作成するシーケンスデータ作成手段を更に備える。このシーケンスデータに基づいて、分割した個々の子波形を即座に自動演奏することができ、元の親波形を再生することもできる。
【００１６】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図２は本発明の一実施例としての電子楽器を示すブロック図であり、この電子楽器は演奏データを分割し、テンポ情報に同期させるための機能を備えている。この電子楽器システムは、演奏データ分割処理と全体の制御を行う中央処理装置（ＣＰＵ）１、装置全体の制御のためのプログラム等が格納されたリード・オンリー・メモリ（ＲＯＭ）２、演奏データが格納されたりＣＰＵのワーキングエリアとして使用されるランダム・アクセス・メモリ（ＲＡＭ）３、制御パラメータを確認しながら操作を行う表示部４と操作子部５、演奏データの入力を行うＡ／Ｄ変換部６、演奏データの出力を行うＤ／Ａ変換部７、出力される演奏データの音色等を制御する音色制御部８、演奏データやＭＩＤＩクロックデータの入出力を行うＭＩＤＩ入出力端子９を含み構成される。
【００１７】
図３にはこの電子楽器の操作を行う操作パネルの例が示される。この操作パネルは制御パラメータ等を表示する表示部４とパラメータの設定等の各種操作を行う操作子部５からなる。操作子部５は５１〜５５の各種操作子からなる。ここで、５１は表示部４に表示されたパラメータの値を変化させて設定するためのダイヤル式のロータリ・エンコーダであり、このロータリ・エンコーダ５１で設定されるパラメータは、閾値（スレッショルドレベル）、開始ポイント、終了ポイント、ピッチ、レベルがある。５２はＹＥＳ／ＮＯの指示を選択するスイッチ、５３は演奏データの分割処理を指示するための解析（アナライズ）スイッチ、５４は表示部４に表示されるパラメータを選択するためのパラメータ選択スイッチ、５５1 〜５５4 は分割した演奏データを発音させ確認するための再生用スイッチである。なお、図示の例ではこの再生用スイッチは４つのみを示しているが、実際は分割する子ウェーブの数分だけ用意する。
【００１８】
ここで本明細書では、分割する前の一連の演奏データを親ウェーブ、分割された個々の演奏データを子ウェーブと呼ぶことにする。再生用スイッチ５５1 〜５５4 は、後述するように、分割された複数の子ウェーブにそれぞれ対応付けられており、この再生用スイッチ５５1 〜５５4 の何れかを押すことでそれに対応する分割された子ウェーブが再生される。また、分割処理の対象となる親ウェーブが複数ある場合にそれらの親ウェーブにもそれぞれ対応付けられており、解析スイッチ５３を押しながら再生用スイッチ５５1 〜５５4 のどれかを押した場合には、その押した再生用スイッチに対応した親ウェーブについて演奏データ再構築モードに入るようになっている。
【００１９】
この実施例の電子楽器の動作を説明する。まず、原理的な動作について図１を参照して説明する。
【００２０】
図１は、ある演奏データを分割した場合の例を示すもので、図１（ａ）は元の親ウェーブの波形を示し、図１（ｂ）は分割処理の態様を示すものである。図中の波形を形成している各棒線は演奏音波形をサンプリングした各サンプル値を表す。図１（ｂ）に示すように、親ウェーブに対し、第１回目の閾値ＴＨ１を設定し親ウェーブがこの閾値ＴＨ１を超えてから一旦閾値ＴＨ１以下に減少し再び超えるまでの部分を１つのブロックとして分割を行うと、７つの子ウェーブに分割される。
【００２１】
この場合、１、２、３、４、６、７番目の子ウェーブについては、１つのブロック内における演奏音のピーク値は１つであるからそれぞれ１つの演奏音を含む子ウェーブといえる。しかし、５番目の子ウェーブについては、１つのブロック内に２つのピーク値があるから、この子ウェーブは２つの演奏音を含んでいるものである。よって、５番目の子ウェーブはさらに分割する必要があるので、５番目の子ウェーブを指定し、再度、閾値ＴＨ１よりも大きな適当な閾値ＴＨ２を設定して２回目の分割にリトライする。図１（ｂ）の例では、この２回目の分割により、第１回目の５番目の子ウェーブがさらに２つに分割され、その結果、２回の分割実行で８つの子ウェーブに分割された状態が示されている。
【００２２】
なお、ノイズ的なピーク値に対してもブロック化されてしまわないように、１ブロックの最小時間（例えば１００ｍｓ）をあらかじめ決めておいて、それより短いブロックが作成されそうな場合は、その後のブロックに自動的に組み込まれるようにしてもよい。
【００２３】
上述の原理的な動作を行うための処理を以下に説明する。
図４は演奏データ再構築ルーチンのフローチャートであり、この演奏データ再構築ルーチンは、図示しないメインルーチン中のパネル処理ルーチン（パネル上のスイッチなどをスキャンして状態を調べるルーチン）において、解析スイッチ５３を押しながら再生用スイッチ５５1 〜５５4 のどれかを押したのを検出したことを契機として読み出されて、その押した再生用スイッチに対応した親ウェーブについて演奏データ再構築処理を行う。
【００２４】
演奏データ再構築モードに入ると、該当する親ウェーブが既に分割済であるか調べ（ステップＳ２）、既に分割済である場合は、所定のスイッチを押すことによって、既に分割されている演奏データを再生するプレイモードか、さらに分割し直す解析モード（アナライズモード）かを選択する（ステップＳ３）。プレイモードの場合にはこの演奏データ再構築ルーチンを終了する（ステップＳ１０）。ステップＳ２で親ウェーブがまだ分割済でないと判定された場合は解析モードになる。
【００２５】
解析モードにおいては、該当する親ウェーブを形成しているサンプル値のうちの最大値と最小値を検索し（ステップＳ４）、検索された最大値から最小値を引いた値を１２８分割したものを分解能の単位とし、この分解能で操作子を用いて閾値（センス値）の設定を行う（ステップＳ５）。この設定は操作者が表示部４に表示された閾値を見ながら手動で調整してもよいし、１回目、２回目の分割処理に対しあらかじめ定められた値を制御プログラムが自動的に設定するものであってもよい。なお、閾値の設定にあたっては、親ウェープの絶対値の波形をディレイに表示してユーザが閾値を設定しやすいようにする。
【００２６】
閾値の設定が終わると、表示部４に分割を行うか否かの問い合わせ表示がされるので、分割を行う場合はＹＥＳスイッチ５２を押し、分割しない場合はＮＯスイッチ５２を押す（ステップＳ６）。ＹＥＳスイッチ５２を押すと分割処理が実行され（ステップＳ７）、ＮＯスイッチ５２を押すとこの演奏データ再構築ルーチンを終了する（ステップＳ１０）。この分割処理（ステップＳ７）の詳細は図５に示すフローチャートを参照して後述する。
【００２７】
分割が終了すると、分割された演奏データと、その発音タイミングに基づき、シーケンスデータが作成される（ステップＳ８）。このシーケンスデータの作成方法については後述する。
【００２８】
分割処理が終了すると、表示部４に分割処理を再実行するかの問い合わせ表示がされる（ステップＳ９）。このとき、再生用スイッチ５５1 〜５５4 には今行った分割処理で分割された個々の演奏データ（子ウェーブ）を演奏するシーケンスデータが割り当てられており、この再生用スイッチ５５1 〜５５4 を操作することによって分割された個々の演奏データをそれぞれ再生して確認することができる。この再生確認によって、親ウェーブの分割が正しく行われたか否かを耳で聴いて判断できるので、正しくできている場合には再実行“ＮＯ”をＮＯスイッチ５２で指示する。正しくできていない場合には再実行“ＹＥＳ”をＹＥＳスイッチ５２で指示する。この際、表示部４の表示を見ながら操作子部５を操作することによって、親ウェーブの分割を閾値を設定し直してもう一度最初から全部やり直すか（ＡＬＬ選択）、あるいは分割が正常にできなかった一部の子ウェーブについてだけ更に閾値を再設定して分割処理をするか、を選択することができる。
【００２９】
再実行“ＹＥＳ”の指示がされたときはステップＳ５〜Ｓ８を繰り返す。一部の子ウェーブについてだけ更に閾値を設定して分割処理をする場合は、これが２回目以降の分割処理となる。このような分割処理を繰り返すことによって、最終的に、全ての子ウェーブが１つの演奏音だけからなるように、親ウェーブを分割することができる。
【００３０】
次に図５のフローチャートを参照して演奏データの分割処理について説明する。分割の対象となる親ウェーブの演奏データの先頭にポインタＰＴＲを設定する（ステップＳ７０２）。このポインタＰＴＲは以降、逐次に１つずつインクリメントされてウェーブの処理位置をサンプリング数の単位で示す。なお、このポインタＰＴＲの設定では、図４のフローチャートの再実行ステップ９において再実行が指示された場合、その際にＡＬＬ（親ウェーブの分割処理のやり直し）が選択されていれば親ウェーブの先頭が、また任意の子ウェーブが選択されていればその子ウェーブの先頭が設定される。
【００３１】
次いで、先頭の子ウェーブ用パラメータに開始ポイント（子ウェーブのブロックの先頭位置）を設定する。すなわち子ウェーブの開始ポイントを記憶しておくパラメータバッファに開始ポイントを書き込む（ステップＳ７０３）。この場合も、再実行ステップＳ９においてＡＬＬが選択されているときは先頭の子ウェーブのパラメータバッファに親ウェーブの先頭を開始ポイントとして設定し、任意の子ウェーブが選択されている場合にはその子ウェーブのパラメータバッファに書き込まれている開始ポイントをそのまま用いる。
【００３２】
なお、この子ウェーブのパラメータバッファには後述する終了ポイント（子ウェーブのブロックの最後尾位置）も書き込まれる。
【００３３】
次いで、フラグＦＬＡＧをオフにする（ステップＳ７０４）。このフラグＦＬＡＧは、次の子ウェーブの先頭を認識するためのもので、子ウェーブのサンプル値が閾値よりも小さくなったこと（サンプル値＜閾値）でオンされ、次にそのオン状態で閾値よりも大きいサンプル値（サンプル値≧閾値）を検出したら、それが次の子ウェーブの先頭であることを示す。
【００３４】
なお、上記ではサンプル値が閾値より小さいとフラグを反転とすると説明したが、より具体的には、ゼロクロス点付近で頻繁にフラグが反転してしまうことを防ぐために、所定回数サンプル値が閾値より小さいことを確認してから初めてフラグをオンにする。あるいは、他の実施例として、例えば１０ｍｓ毎の絶対値の最大値を順次に閾値と比較する。図１、図１０の各振幅はこの時間毎の絶対値の最大値を表示したものであって、この最大値に基づいて分割点を決定する。
【００３５】
以降、ポインタＰＴＲから演奏データの振幅レベル（サンプル値）を１サンプル毎に検索していき、サンプル値＞閾値か否かを判定する（ステップＳ７０５）。サンプル値が閾値よりも大きい場合、すなわち演奏音が検出された場合には（ステップＳ７０５）、さらにフラグＦＬＡＧがオンか否かを判定し（ステップＳ７０６）、フラグＦＬＡＧがオフの場合は、ポインタを１つ更新して（ステップＳ７０７）、次のサンプル値と比較する（ステップＳ７０５）。
【００３６】
サンプル値が閾値よりも小さくなった場合、すなわち検出された演奏音が終了したと判定された場合は、ポインタＰＴＲを１つ更新するとともにフラグＦＬＡＧをオンして（ステップＳ７０８）、次のサンプル値との比較を行う（ステップＳ７０５）。
【００３７】
上記のステップＳ７０６でフラグＦＬＡＧがオンと判定される状態は、演奏音が終了したと判定されてから再び演奏音が検出されたことを意味する。すなわち、次の子ウェーブのブロックの先頭が検出されたことになる。この場合には、子ウェーブの長さが一定以上に達しているか否かを判定する（ステップＳ７０９）。一定の長さ以上に達していない場合は、上記演奏音と思って検出したものがノイズである可能性が高いので、フラグＦＬＡＧを再びオフにして（ステップＳ７１０）、ポインタを更新し（ステップＳ７０７）、次のサンプル値との比較を再び行う（ステップＳ７０５）。このようにステップＳ７０９で子ウェーブの長さが一定以上か見るのは、上述のようにノイズ除去のためであり、また、子ウェーブの番号が不連続にならないよう番号の付け替えも行う。
【００３８】
子ウェーブの長さが一定以上に達している場合は（ステップＳ７０９）、子ウェーブの終了ポイントを記憶しておくパラメータバッファに終了ポイントを書き込むとともに、フラグＦＬＡＧをオフに設定する（ステップＳ７１１）。これによって、子ウェーブのパラメータバッファには、分割処理がされた結果として、親ウェーブ中の任意のポイントが、子ウェーブの開始ポイントと終了ポイントとして書き込まれる。なお、このようにフラグがオフになったところを分割点とするものであるが、より詳しく説明すると、分割点と判定したすぐ前の（マイナスからプラスへの）ゼロクロス点で最初にプラスとなったアドレスを開始ポイントとし、その一つ前のアドレスを終了アドレスとする。
【００３９】
なお、この実施例では最終アドレスと開始アドレスをこの時点で検出しているが、子ウェースの最終アドレスは、各サンプルのレベルが閾値より所定回数小さくなってから次のゼロクロス点を最終アドレスとし、次の子アドレスの開始アドレスは上述のように閾値レベルを超えた直前のゼロクロスアドレスとするようにしてもよい。また、最終アドレスを検出するための閾値レベルと開始アドレスを検出するための閾値レベルをそれぞれ設定できるようにしてもよい。
【００４０】
次いでポインタＰＴＲを１つ更新して（ステップＳ７１２）、次のサンプル値を参照し、分割の対象となるウェーブの終端に達しているか否かを判定する（ステップＳ７１３）。ウェーブの終端でなければ、次の子ウェーブの開始ポイントを記憶しておくパラメータバッファに開始ポイントを書き込み（ステップＳ７１４）、ステップＳ７０５以降の処理を繰り返す。ウェーブの終端であれば、この分割処理ルーチンを終了する（ステップＳ７１５）。
【００４１】
次に、上記の分割処理によって得た複数の子ウェーブに基づき親ウェーブのシーケンスデータを作成する方法について図７、図８を参照して説明する。
図７に示されるように、上記の分割処理で得た複数の子ウェーブとそのパラメータに基づき、各子ウェーブに先頭から順番にウェーブ番号を付けるとともに、分割された各子ウェーブの開始ポイントを基にして、各子ウェーブの発音タイミングからゲートタイムを計算し、シーケンスデータを作成する。このゲートタイムは一の子ウェーブの発音時から次の子ウェーブ発音までのインターバルである。シーケンスデータの構成は、〔ゲートタイム＋子ウェーブ番号〕になっていて、ゲートタイム経過後に子ウェーブを開始ポイントから終了ポイントまで再生する。このゲートタイムと子ウェーブ番号のデータはそれぞれ１バイトからなる。
【００４２】
このシーケンスデータの作成手順は次のとおりである。
▲１▼最初に再生される子ウェーブ（表では第１番）の開始ポイントをそのまま先頭のゲートタイムとする。
▲２▼２番目に再生される子ウェーブの開始ポイントから、最初に再生される子ウェーブの開始ポイントを引いた値を、２番目のゲートタイムとする。
▲３▼以下、Ｎ＋１番目に再生される子ウェーブの開始ポイントから、Ｎ番目に再生される子ウェーブの開始ポイントを引いた値をＮ番目のゲートタイムとする。
▲４▼最後のウェーブ番号は“ＦＦ”とする。再生時にはこの“ＦＦ”番号を再生するところで、再生を終了させる。
【００４３】
図７にはシーケンスデータ作成のための子ウェーブのパラメータ例が、図８には作成されたシーケンスデータの例が示される。開始／終了ポイントおよびゲートタイムは１６進数で表示されている。ゲートタイムが“ＦＦ”の長さを超える場合には次のバイトもゲートタイムに用いられる。図８の例では４番目のゲートタイムは“ＦＦ＋１３”の長さである。演奏テンポの変更があった場合にはこのゲートタイムの値を変更する。
【００４４】
また上述の子ウェーブ番号すなわち分割した個々の子ウェーブをそれぞれ再生用スイッチ５５1 〜５５4 に割り当てる。
【００４５】
上記の子ウェーブ番号にノート番号（すなわちキーナンバー）を割り当ててもよい。図９はその例を示す。ここでは４種類の親ウェーブＡ、Ｂ、Ｃ、Ｄがあり、各親ウェーブＡ、Ｂ、Ｃ、Ｄはそれぞれ１６個の子ウェーブＡ−１〜Ａ１６、Ｂ−１〜Ｂ１６、Ｃ−１〜Ｃ１６、Ｄ−１〜Ｄ１６に分割されている。子ウェーブＡ−１から順番に自動的に図示のようにノート番号を割り当てる。これにより、〔ゲートタイム＋ノート番号〕でシーケンスデータを作成することができ、シーケンスデータ中のノート番号を音階の順番で配置することで、シーケンスデータにより元の親ウェーブの演奏音を元のまま再生することができる。
【００４６】
上記のシーケンスデータ例では、シーケンスデータのタイミング情報をゲートタイムにより表現し演奏テンポに合わせてこのゲートタイムを変えるするようにしたが、この他に、このタイミング情報をＭＩＤＩクロックで表現し外部等からのＭＩＤＩクロックを用いて演奏テンポに合わせるようにするものであってもよい。
【００４７】
例えば、親ウェーブのサンプリング周波数をＦS 〔Ｈz 〕とすると、１サンプル当たりの所要時間は、
１サンプル＝１／ＦS 〔sec 〕
である。ここで、親ウェーブのテンポをＴ〔bpm 〕とする。この単位〔bpm 〕は１分間当りの４分音符の数である。ＭＩＤＩクロックの長さＴCLK は、４分音符１つが２４ＭＩＤＩクロックに相当するから、
Ｔclk ＝Ｔ／６０×２４〔sec 〕
である。よって、第１番目の子ウェーブから第２番目の子ウェーブが発音されるまでの時間は、Ｎ1 、Ｎ2 をそれぞれ第１、２番目の子ウェーブの開始ポイントとすると、
0003635361.tif 000003
となる。
【００４８】
このように、シーケンスデータのタイミング情報をＭＩＤＩクロックで表現すると、内部や外部からのＭＩＤＩクロックによって、上記シーケンスデータ中のタイミング情報を調整することで、上記シーケンスデータによる親ウェーブの再生音を他の演奏データの再生音に簡単に同期させることができる。
【００４９】
次に、上記で作成したシーケンスデータの再生処理を説明する。図６はシーケンスデータ再生ルーチンのフローチャートである。この再生ルーチンは、図示しないメインルーチン中のパネル処理ルーチンで、再生用スイッチ５５1 〜５５4 の何れかが押されたことによって読み出されて実行される（ステップＳ１１）。
【００５０】
まず、シーケンスデータの先頭の１バイト（つまりゲートタイム）をカウンタエリアに格納する（ステップＳ１２）。この格納した値が“ＦＦ”であれば、フラグをオンにする。。このカウンタエリアの値は所定時間毎に逐次にデクリメントされることでカウンタとしての役目をする。またポインタをシーケンスデータの先頭に置く。このポインタはシーケンスデータ再生の進行をシーケンスデータのバイト単位で管理するためのものである。
【００５１】
次に、タイマを起動する（ステップＳ１３）。このタイマにより所定時間が経過する毎にタイマ割込みを発生させる。タイマ割込みがあるか否かを判定し（ステップＳ１４）、タイマ割込みを受けたら、カウンタエリアに設定した値（ゲートタイム）を１つカウントダウンする（ステップＳ１５）。カウンタの値がカウンタ値≦１か否かを判定し、「０」になっていなければタイマ割込み毎にカウンタの値のデクリメントを続ける（ステップＳ１４〜Ｓ１６）。
【００５２】
カウンタの値が「０」になったら（ステップＳ１７）、設定したゲートタイムが経過したことを意味するので、ポインタを１つカウントアップし（ステップＳ１７）、先にカウンタエリアに設定したデータ（ゲートタイム）が“ＦＦ”か否かをフラグを参照して判定する（ステップＳ１８）。このデータが“ＦＦ”であれば（ステップＳ７１４）、先にシーケンスデータ作成の説明で述べたようにゲータタイムは“ＦＦ＋○○”であり、まだゲートタイムが終了しておらずカウントダウンが続くので、シーケンスデータから“ＦＦ”の次のバイトのデータ（残りのゲートタイム○○）を読み出してカウンタに格納し（ステップＳ１９）、この値が「０」となるまでカウントダウンを繰り返す（ステップＳ１４〜Ｓ１９）。
【００５３】
ステップＳ１８の判定において、次のデータが“ＦＦ”でなければ、フラグをオフにリセットし、子ウェーブ番号をワークエリアに格納してから、カウンタにシーケンスデータから読み出した次のゲートタイムのデータをセットする（ステップＳ２０）。
【００５４】
この後、子ウェーブの再生処理を行う（ステップＳ２１）。子ウェーブの再生処理が終わったら、シーケンスデータが終了か否かを判定し（ステップＳ２２）、この処理をシーケンスデータが終了するまで繰り返す（ステップＳ１４〜Ｓ２２）。シーケンスデータが終了したら、このシーケンスデータ再生ルーチンを終了する（ステップＳ２３）。
【００５５】
子ウェーブの再生にあたっては、音色制御部８によって、分割した子ウェーブの読出し毎に音色の制御を行って分割後の演奏音毎に音色の制御を行うようにしてもよい。また、この音色制御は、外部から入力された音色制御情報に対応して、読み出された子ウェーブの音色を制御するように構成してもよい。また、作成したシーケンスデータに音色等の制御情報を記録するようにし、音色制御部で分割した演奏データ毎に音色等の制御を行うようにしてもよい。
【００５６】
なお、上述の実施例では、テンポが速くなると、前後の子ウェーブが重なって鳴ることになるので、この場合には、後発優先で先に鳴っていた子ウェーブの音を消す、あるいは重なる部分をクロスフェードさせるなどするとよい。
【００５７】
本発明の実施にあたっては種々の変形形態が可能である。
例えば、上述の実施例では、１回目の分割処理の結果、２つ以上の演奏音が含まれた子ウェーブが生じた場合には、２回目の分割処理を閾値を変えて行うことでこの子ウェーブをさらに細かく分割するようにしたが、本発明はこれに限られるものではなく、操作者がその２つ以上の演奏音を含む子ウェーブを再生し耳で聴いて子ウェーブ中のどの時間位置に各演奏音があるかを掴み、子ウェーブの２回目の分割位置を手動操作により子ウェーブの時間軸上で時間をパラメータにして指定することで、子ウェーブをさらに細かく分割するようにしてもよい。
【００５８】
また、上述の実施例では、１回目の分割の後に、１音だけに分割し切れていないブロックを閾値を変えて２回目以降の分割を行うことで、１音だけのブロックに細分化しているが、これに代えて、初めから複数の閾値を用意しておいて、親ウェーブをこれらの複数の閾値と比較してそれぞれの比較結果を蓄えておいて、親ウェーブとの比較処理が終わった時点でこれらの比較結果に基づいて一挙に１音だけのブロックに分割していくのもであってもよい。
【００５９】
また、上述の実施例では、親ウェーブのシーケンスデータを他の演奏データに同期させる方法として、ゲートタイムを変える方法とタイミング情報をＭＩＤＩクロックで表現してＭＩＤＩクロックで制御する方法を述べたが、本発明はこれに限られるものではなく、例えばシーケンスデータはそのままにして相対的に再生タイミングを変えるようにしてもよい。すなわち、前述の図６に示すシーケンスデータ再生ルーチンにおいて、ステップＳ１３で起動するタイマを、タイマカウンタＴＣの値を任意に設定できるようにしてこのタイマカウンタＴＣを一定時間間隔で１ずつ減少させてＴＣ＝０になった時にタイマから割込みが発生するように構成する。これによりＴＣの設定値が小さければ割込みが頻繁にかかり、ＴＣの設定値が大きければ割込みがかかる周期が長くなる。よって、再生タイミングを内部的に変える場合にはこのタイマカウンタＴＣの値を内部で任意に設定し、再生タイミングを外部から変える場合にはこのタイマカウンタＴＣの値を外部クロックを用いて設定するようにする。
【００６０】
また上述の実施例では、分割した演奏データ（子ウェーブ）を再生する場合には元の演奏データ（親ウェーブ）からその子ウェーブに対応する箇所を部分的に読み出すようにしたが、分割したことによって得られた開始ポイントと終了ポイントに対応する区間の演奏データを各子ウェーブの演奏データとして別途メモリに書き込むようにしてもよい。
【００６１】
【発明の効果】
以上に説明したように、本発明によれば、生演奏などから得た音素材を、演奏のビートの細かさに対応して的確に分割、ブロック化することができる。
また、分割結果から得たシーケンスデータを用いれば、分割した個々の子波形演奏データを即座に自動演奏することができる。
【図面の簡単な説明】
【図１】本発明の実施例の原理的な動作を説明するために図である。
【図２】本発明の実施例装置のブロック構成を示す図である。
【図３】実施例装置の操作パネルの例を示す図である。
【図４】実施例装置において実行される演奏データ再構築ルーチンのフローチャートである。
【図５】実施例装置において実行される演奏データ分割処理ルーチンのフローチャートである。
【図６】実施例装置において実行されるシーケンスデータ再生ルーチンのフローチャートである。
【図７】実施例装置におけるシーケンスデータ作成のための子ウェーブ・パラメータの例を示す図である。
【図８】実施例装置におけるシーケンスデータの例を示す図である。
【図９】子ウェーブ番号にノート番号を割り当てる例を示す図である。
【図１０】ブロックの分割と演奏のビートの細かさの対応の問題点を説明する図である。
【符号の説明】
１  ＣＰＵ                      ２  ＲＯＭ
３  ＲＡＭ                      ４  表示部
５  操作子部                    ６  Ａ／Ｄ変換部
７  Ｄ／Ａ変換部                ８  音色制御部
９  ＭＩＤＩ入出力部
５１  ロータリエンコーダ        ５２  ＹＥＳ／ＮＯスイッチ
５３  解析スイッチ              ５４  パラメータ選択スイッチ
５５1 〜５５4   再生用スイッチ
【図１】
0003635361.tif 000004
【図２】
0003635361.tif 000005
【図３】
0003635361.tif 000006
【図４】
0003635361.tif 000007
【図５】
0003635361.tif 000008
【図６】
0003635361.tif 000009
【図７】
0003635361.tif 000010
【図８】
0003635361.tif 000011
【図９】
0003635361.tif 000012
【図１０】
0003635361.tif 000013