(57)【要約】【課題】演奏データ列の逆再生を簡単に可能にする演奏データ列変換プログラムを実現し、かつ演奏データ列への変換処理を簡単かつ短時間で行なう。【解決手段】ステップＳ１６の処理より、元演奏データ列エリア内の演奏データを先頭から順次読み出して、加工処理して逆再生バッファエリアに順次書き込む。この加工処理においては、ノートオンおよびノートオフデータは、それぞれノートオフおよびノートオンデータに変換される。楽音の発生態様制御データに関しては、現在値配列エリア内の同種の発生態様制御データに変更される。同ステップＳ１６の処理により、現在値配列エリア内の発生態様制御データは前記読み出した発生態様制御データで順次更新される。演奏データ列の読み出し終了後、ステップＳ２０の処理により、現在値配列エリアに残っている発生態様制御データは、逆再生バッファエリアの演奏データ列の最後に付加される。【選択図】  図２
2004280001.tif 000002
【特許請求の範囲】
【請求項１】
楽音の発生を制御するための楽音発生制御データおよび前記楽音の発生態様を制御するための発生態様制御データを楽曲の進行に従って時系列で配列した元演奏データ列を、同元演奏データ列の楽曲の進行に従った順方向の読み出しに基づく一連の演奏音を逆再生した一連の演奏音を表す逆再生用演奏データ列に変換する演奏データ列変換プログラムであって、
前記元演奏データ列を順方向に読み出し、前記発生態様制御データが読み出されるごとに同種の発生態様制御データを順次更新記憶する更新記憶ステップと、
前記演奏データ列の読み出しが終了した時点で、前記更新記憶されている発生態様制御データを初期の発生態様制御データとして前記逆再生用演奏データ列に組み込む初期発生態様制御データ設定ステップと
を含むことを特徴とする演奏データ列変換プログラム。
【請求項２】
前記請求項１に記載した演奏データ列変換プログラムにおいて、さらに、
前記演奏データ列の順方向への読み出し中、前記発生態様制御データが読み出されたとき、前記更新記憶ステップの処理により以前に更新記憶されている同種の発生態様制御データが存在する場合には前記読み出された発生態様制御データを前記更新記憶されている同種の発生態様制御データに変換し、前記更新記憶ステップの処理により以前に更新記憶されている同種の発生態様制御データが存在しない場合には前記読み出された発生態様制御データを予め決められた初期データに変換する発生態様制御データ変換ステップを含むことを特徴とする演奏データ列変換プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音の発生を制御するための元の演奏データ列を、逆再生用の演奏データ列に変換する演奏データ列変換プログラムに関する。
【０００２】
【従来の技術】
従来から、演奏データ列を楽曲の進行とは逆方向に時間経過に従って読み出し、楽音の発生を制御するための楽音発生制御データ中の楽音の発生終了を指示するキーオフデータを楽音の発生開始を指示するキーオンデータに変換するとともに、同楽音制御データ中のキーオンデータをキーオフデータに変換して楽音信号発生回路に供給して、演奏データ列を逆再生した演奏音を発生させるリアルタイム逆再生技術は知られている（特許文献１参照）。
【０００３】
また、この場合、音色を選択または変更制御するためのプログラムチェンジデータ、各種制御操作子（メインボリューム、バランスコントロール、トレモロデプス、ポルタメント、ソフトペダルなどの操作子）に関するコントロールチェンジデータ、ピッチベンドを制御するピッチベンドデータなど、楽音の発生態様を制御するための発生態様制御データに関しては、現在位置よりも先頭方向のデータを検索し、同検索された発生態様制御データを楽音信号発生回路に供給して、楽音の発生態様を制御するようにしていた。これは、発生態様制御データは、楽音の発生態様を変更するタイミングでのみ用いられて、楽音の発生態様が以前と同一に維持される範囲内では登場しないものであり、発生態様制御データの制御下におかれる楽音発生制御データ（キーオンデータおよびキーオフデータ）が演奏データ列を順方向に読み出した場合と同じ条件に置かれるようにするためである。
【０００４】
【特許文献１】
特許第２６１６６５６号公報
【０００５】
【発明が解決しようとする課題】
しかし、上記従来の技術は、演奏データ列をリアルタイムで逆方向から読み出して、楽曲の逆再生をリアルタイムで実現するもので、上記特許文献１には、元の演奏データ列を逆再生用の演奏データ列に変換することが開示されていない。したがって、演奏データ列により表された楽曲を逆再生するためには、上記機能を実現するための特殊なプログラムが必ず必要となる。また、元の演奏データ列を逆再生用の演奏データ列に変換しようとする場合、逆再生用の演奏データ列を再生する際における発生態様制御データの初期値の設定が問題となる。また、上記従来の技術にあっては、発生態様制御データが登場するたびに、演奏データ列の先頭方向に同種の発生態様制御データを検索する必要があり、前記プログラムの処理が複雑になるとともに、処理時間が多く必要となるという問題もあった。
【０００６】
【発明の概要】
本発明は、上記問題に対処するためになされたもので、その目的は、元の演奏データ列を逆再生用の演奏データ列に的確かつ迅速に変換することにより、特殊な逆再生プログラムを必要とすることもなく演奏データ列の逆再生を簡単かつ適正に可能にする演奏データ列変換プログラムを提供することにある。
【０００７】
上記目的を達成するために、本発明の構成上の特徴は、楽音の発生を制御するための楽音発生制御データおよび楽音の発生態様を制御するための発生態様制御データを楽曲の進行に従って時系列で配列した元演奏データ列を、同元演奏データ列の楽曲の進行に従った順方向の読み出しに基づく一連の演奏音を逆再生した一連の演奏音を表す逆再生用演奏データ列に変換する演奏データ列変換プログラムであって、元演奏データ列を順方向に読み出し、発生態様制御データが読み出されるごとに同種の発生態様制御データを順次更新記憶する更新記憶ステップと、演奏データ列の読み出しが終了した時点で、前記更新記憶されている発生態様制御データを初期の発生態様制御データとして前記逆再生用演奏データ列に組み込む初期発生態様制御データ設定ステップとを含むことにある。
【０００８】
この場合、発生態様制御データとは、楽音の発生態様を変更するタイミングでのみ用いられて、楽音の発生態様が同じに維持される範囲内では登場しない制御データであり、例えば、ＭＩＤＩ規格におけるプログラムチェンジデータ、コントロールチェンジデータ、ピッチベンドデータなどである。
【０００９】
これによれば、特殊な逆再生プログラムを必要とすることもなく、逆再生用演奏データ列を、元演奏データ列の通常の再生方向とは逆方向に時間経過に従って読み出すだけで、元演奏データ列によって表された楽曲の逆再生が実現される。したがって、本発明の特徴によれば、元演奏データ列によって表された楽曲の逆再生を簡単に行なえるようになる。また、逆再生用演奏データ列の先頭に、適切な発生態様制御データを簡単に設定できる。
【００１０】
また、本発明の他の特徴は、さらに、演奏データ列の順方向への読み出し中、発生態様制御データが読み出されたとき、更新記憶ステップの処理により以前に更新記憶されている同種の発生態様制御データが存在する場合には前記読み出された発生態様制御データを前記更新記憶されている同種の発生態様制御データに変換し、更新記憶ステップの処理により以前に更新記憶されている同種の発生態様制御データが存在しない場合には前記読み出された発生態様制御データを予め決められた初期データに変換する発生態様制御データ変換ステップを含むことにある。
【００１１】
これによれば、楽曲の途中で登場する発生態様制御データに関して、演奏データ列の先頭方向への発生態様制御データの検索を必要としなくなる。したがって、本発明の他の特徴によれば、楽曲の途中で登場する発生態様制御データを、簡単かつ短時間の処理により適切に変換することができるようになる。
【００１２】
【発明の実施の形態】
以下、本発明の一実施形態に係る演奏データ列変換プログラムについて説明すると、図１は、この演奏データ変換プログラムの適用される電子音楽装置を概略的に示すブロック図である。この電子音楽装置としては、鍵盤型電子楽器、非鍵盤型電子楽器（タッチプレート、押しボタン、弦などを演奏操作子として有する電子楽器）、シーケンサ装置、パーソナルコンピュータなどが挙げられる。
【００１３】
この電子音楽装置は、入力操作子群１１、表示器１２および楽音信号発生回路１３を有する。入力操作子群１１は、この電子音楽装置の動作を指示するための複数の操作子からなり、これらの複数の操作子の操作はバス２０に接続された検出回路１４によって検出される。なお、これらの複数の操作子は、スイッチ操作子、ボリューム操作子、マウスなどを含んでおり、鍵盤型電子楽器においては白鍵および黒鍵も含む。表示器１２は、液晶ディスプレイ、ＣＲＴなどで構成され、文字、数字、図形などを表示する。この表示器１２の表示態様は、バス２０に接続された表示制御回路１５によって制御される。
【００１４】
楽音信号発生回路１３は、バス２０に接続されていて後述するＣＰＵ３１の制御のもとに供給される演奏データに基づいて楽音信号を形成して、同楽音信号をサウンドシステム１６に出力する。サウンドシステム１６は、スピーカ、アンプなどを含んでいて、楽音信号発生回路１３からの楽音信号に対応した楽音を発音する。
【００１５】
また、この電子音楽装置は、バス２０にそれぞれ接続されてマイクロコンピュータ本体部を構成するＣＰＵ３１、タイマ３２、ＲＯＭ３３、ＲＡＭ３４を備えているとともに、外部記憶装置３５および通信インターフェース回路３６も備えている。外部記憶装置３５は、この電子音楽装置に予め組み込まれているハードディスクＨＤ、同電子音楽装置に装着可能なコンパクトディスクＣＤ、フレキシブルディスクＦＤなどの種々の記録媒体と、同各記録媒体に対するドライブユニットを含むものであり、大量のデータ及びプログラムを記憶及び読み出し可能にしている。本実施形態の場合、ハードディスクＨＤには、図２の逆再生用演奏データ変換プログラムを含む各種プログラム、および同プログラムの実行時に利用される複数組の曲データなどが記憶されている。これらのプログラムおよび曲データは、予めハードディスクＨＤに記憶されていたり、コンパクトディスクＣＤ、フレキシブルディスクＦＤなどからハードディスクＨＤに供給されたり、後述する外部機器４１又は通信ネットワーク４２を介した外部からハードディスクＨＤに供給されるものである。
【００１６】
一組の曲データは、例えばＭＩＤＩデータによって構成されており、図３に元演奏データ列エリアのデータとして示すように、ノートオンデータ、ノートオフデータ、プログラムチェンジデータ、コントロールチェンジデータ、エンドデータなどからなる。ノートオンデータおよびノートオフデータは、楽音の発生を制御するための楽音発生制御データに属する。ノートオンデータは、楽音の発生開始を指示するもので、ノートオンであることを示す識別データ、および発生される楽音の音名（周波数）を表すノート番号データからなる。ノートオフデータは、楽音の発生終了を指示するもので、ノートオフであることを示す識別データ、および発生されている楽音の音名（周波数）を表すノート番号データからなる。なお、発生される楽音がリズムパートに関するものであれば、前記ノート番号データは、打楽器の種類を表す楽器名データに対応付けられている。
【００１７】
プログラムチェンジデータは、音色を選択または変更制御するためのデータである。コントロールチェンジデータは、各種制御操作子（メインボリューム、バランスコントロール、トレモロデプス、ポルタメント、ソフトペダルなどの操作子）に関連して、音量、効果などの楽音の発生態様を選択または変更制御するものである。また、図示してはいないが、発生態様制御データには、発生楽音のピッチベンドを制御するピッチベンドデータなども含まれる。エンドデータは、一楽曲に関する曲データの終了を示す。
【００１８】
これらの各演奏データには、タイミングデータが付随している。タイミングデータは、例えば曲の先頭からの小節の数、小節内の先頭からの拍の数、拍内のクロック数（拍内のクロックタイミング）などにより、各演奏データによる制御タイミングを表す。そして、ノートオンデータ、ノートオフデータなどの楽音発生制御データは楽音の発生制御の各制御タイミングごとに用意されていて、それらに付随したタイミングデータは楽音発生制御の各制御タイミングをそれぞれ表している。一方、プログラムチェンジデータ、コントロールチェンジデータなどの発生態様制御データは楽音の発生態様の初期の選択およびその変更時にのみ用意されていて、楽音の発生態様が同一に維持される範囲内では登場しないものであり、それらに付随したタイミングデータは楽音の発生態様の初期の選択およびその変更制御タイミングをそれぞれ表している。
【００１９】
通信インターフェース回路３６は、他の電子楽器、パーソナルコンピュータなどの外部機器４１に接続可能となっていて、この電子音楽装置が外部機器４１と各種プログラム及びデータを交信可能となっている。また、通信インターフェース回路３６は、インターネットなどの通信ネットワーク４２を介して外部との接続も可能となっていて、この電子音楽装置が外部と各種プログラム及びデータを交信可能にしている。
【００２０】
次に、上記のように構成した実施形態において、元演奏データ列を逆再生用演奏データ列に変換する動作を説明する。まず、ユーザは、入力操作子群１１を操作して逆再生用演奏データ列変換プログラムをＣＰＵ３１に実行させる。このプログラムの実行は、図２のステップＳ１０にて開始され、ステップＳ１２にてユーザに曲データを選択させる。この選択においては、ユーザは、表示器１２の表示を見ながら入力操作子群１１を操作して、外部記憶装置３５のハードディスクＨＤ内に記憶されている複数組の曲データの中から１組の曲データを指定する。これにより、指定された１組の曲データは、ハードディスクＨＤから読み出されて、ＲＡＭ３４の元演奏データ列エリア（図３参照）に書き込まれる。
【００２１】
また、演奏者が所望とする曲データがハードディスクＨＤに記憶されていない場合には、他の曲データを記憶したコンパクトディスクＣＤ、フレキシブルディスクＦＤから所望の曲データを読み込んで、元演奏データ列エリアに書き込んでもよい。また、通信インターフェース回路３６を介して外部機器４１から所望の曲データを読み込み、または通信インターフェース回路３６および通信ネットワーク４２を介して外部から所望の曲データを読み込んで、元演奏データ列エリアに書き込んでもよい。
【００２２】
次に、ＣＰＵ３１は、ステップＳ１４にて、ＲＡＭ３４内に設けた初期値配列エリア（図３参照）に、プログラムチェンジデータ、コントロールチェンジデータなどの発生態様制御データのための初期値としてそれぞれ予め用意された種々の値をプログラムチェンジデータＩ、コントロールチェンジデータＩなどとして書き込む。また、同ステップＳ１４においては、図３に示すように、ＲＡＭ３４内に前記各種発生態様制御データに対応した欄を有する現在値配列エリアを用意して、各欄の変化フラグを“０”に設定しておく。この変化フラグは、“１”によって演奏データ列中に発生態様制御データが存在したことを表し、“０”によって演奏データ列中に発生態様制御データが存在しなかったことを表す。
【００２３】
前記ステップＳ１４の処理後、ステップＳ１６，Ｓ１８の処理により、元演奏データ列エリアの先頭から順に演奏データを読み出し、同読み出した演奏データを加工してＲＡＭ３４内に設けた逆再生バッファエリア（図３参照）に順次書き込む。この加工においては、ノートオンデータはノートオフデータに変更され、またノートオフデータはノートオンデータに変更される。具体的には、元演奏データがノートオンデータであれば、ノート番号データはそのままに維持されるが、ノートオンデータ中の識別データはノートオフを表す識別データに変更される。また、元演奏データがノートオフデータであれば、ノート番号データはそのままに維持されるが、ノートオフデータ中の識別データはノートオンを表す識別データに変更される。また、ノートオンデータおよびノートオフデータのタイミングデータに関しては、エンドデータのタイミングデータ値から元演奏データのノートオンデータおよびノートオフデータに付随するタイミングデータ値を減算した値に変更される。
【００２４】
プログラムチェンジデータ、コントロールチェンジデータなどの発生態様制御データに関しては、現在値配列エリア内の欄であって前記読み出した発生態様制御データと同種の発生態様制御データを記憶すべき欄の変化フラグが“１”であるか“０”であるかを調べる。変化フラグが“１”であれば、前記読み出した発生態様制御データは、現在値配列エリアの前記欄に記憶されている発生態様制御データに変更される。変化フラグが“０”であれば、前記読み出した発生態様制御データは、初期値配列エリア内に記憶されている発生態様制御データであって、前記読み出した発生態様制御データと同種の発生態様制御データに変更される。また、この発音態様制御データに関しても、それに付随するタイミングデータは、エンドデータのタイミングデータ値から元演奏データの発音態様制御データに付随するタイミングデータ値を減算した値に変更される。
【００２５】
また、前記ステップＳ１６の処理においては、発生態様制御データが読み出された場合には、現在値配列エリア内に記憶されている発生態様制御データであって、前記読み出された発生態様制御データと同種の発生態様制御データを、前記読み出した発生態様制御データに更新するとともに、その変化フラグを“１”に設定しておく。言い換えれば、現在値配列エリア内の欄であって前記読み出された発生態様制御データと同種の発生態様制御データを記憶すべき欄に、前記読み出された発生態様制御データを書き込むとともに、その欄の変化フラグを“１”に設定しておく。
【００２６】
このステップＳ１６，Ｓ１８の循環処理により、エンドデータが読み出されると、ステップＳ１８にて「Ｙｅｓ」と判定して、ステップＳ２０に進む。ステップＳ２０においては、現在値配列エリア内にある発生態様制御データであって、変化フラグが“１”である発生態様制御データを逆再生バッファエリアの最後に書き込む。そして、この発生態様制御データに付随するタイミングデータは、演奏開始前のタイミングであることを表す値、例えば「０」に設定しておく。次に、ステップＳ２２にて逆再生バッファエリアの最後（図３の再生方向矢印の先端側）に、元演奏データのエンドデータとそれに付随するタイミングデータを書き込んでおく。
【００２７】
次に、ステップＳ２４にて、逆再生バッファエリア内の演奏データを前記書き込んだ方向と逆方向（図３の再生方向）に順次読み出して、読み出した順にＲＡＭ３４の別エリアに先頭から書き込む。また、前記ＲＡＭ３４の別エリアに書き込んだ演奏データをハードディスクなどの外部記憶装置３５にも書き込んでおく。そして、ステップＳ２６にて、この逆再生用演奏データ列変換プログラムの実行を終了する。
【００２８】
このようにして形成された逆再生用演奏データを再生するには、演奏データを読み出すためのタイミングカウンタを用いて時間を計測させて、同タイミングカウントのカウント値を用いて、前記ＲＡＭ３４の別エリアに書き込んだ演奏データをその先頭から順次読み出して再生するようにするとよい。すなわち、タイミングカウント値と一致するタイミングデータを見つけたとき、同タイミングデータに伴う演奏データを楽音信号発生回路１３に供給して、楽音の発生を制御する。これによれば、元演奏データ列の逆再生が簡単に実現される。このような再生処理は、通常の再生処理として広く知られている。
【００２９】
上記説明からも理解できるとおり、上記実施形態によれば、特殊な逆再生プログラムを必要とすることもなく、簡単に元演奏データ列によって表された楽曲の逆再生が実現される。また、現在値配列エリア内の発生態様制御データを更新するステップＳ１６の処理、および同現在値配列エリア内の発生態様制御データを逆再生バッファエリアへ最後に書き込むステップＳ２２の処理により、適切な発生態様制御データを逆再生用演奏データ列の先頭に簡単に設定できる。また、ステップＳ１６における前記現在値配列エリア内の発生態様制御データを更新する処理、および現在値配列エリア内に記憶されている以前の発生態様制御データを用いた演奏データ読み出し中の発生態様制御データの加工処理により、楽曲の途中で登場する発生態様制御データを、簡単かつ短時間の処理により適切に変換することができるようになる。
【００３０】
さらに、本発明の実施にあたっては、上記実施形態及びその変形例に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【００３１】
例えば、上記実施形態では、ＲＡＭ３４内に初期値配列エリアと現在値配列エリアとを独立させてそれぞれ設けたが、ＲＡＭ３４内に現在値配列エリアのみを設けるようにしてもよい。この場合、ステップＳ１４の初期値書き込み処理において、各発生態様制御データの初期値を現在値配列記憶エリアにそれぞれ書き込むとともに、その変化フラグを全て“０”に設定しておく。そして、ステップＳ１６の発生制御データの加工処理においては、現在値配列記憶エリア内の発生態様制御データを用いて、元演奏データ配列エリアから読み出した発生態様制御データを変化フラグとは無関係に加工する。なお、前記読み出した発生態様制御データで現在値配列エリア内の発生態様制御データを更新する処理については、上記実施形態の場合と同様である。
【００３２】
また、上記実施形態ではステップＳ２４の処理により、図３の逆再生バッファエリア内の演奏データ列をその先頭と末尾を反対にすることによって新たな演奏データ列を生成し、同生成した演奏データ列を、ＲＡＭ３４、ハードディスクなどの外部記憶装置３５に記憶し直した。しかし、このステップＳ２４の処理のうち、演奏データ列をその先頭と末尾を反対にする処理を省略して、図３の逆再生バッファエリア内の演奏データ列をそのまま逆再生に利用したり、ハードディスクなどの外部記憶装置３５に記憶しておくようにしたりしてもよい。この場合、演奏データ列の逆再生処理において、アドレスカウンタをダウンカウントさせながら演奏データ列を読み出すようにするとよい。
【００３３】
さらに、上記実施形態では、逆再生用演奏データ列のタイミングデータとして絶対的なタイミングを表すデータを用いたが、同タイミングデータとして前の演奏データとの相対時間を表すデータを用いるようにしてもよい。この場合、元演奏データの各タイミングデータが前の演奏データからの相対時間を表していれば、逆再生バッファエリアに書き込まれるタイミングデータは、元演奏データの次の演奏データに付随するタイミングデータとなる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る逆再生用演奏データ列変換プログラムが適用される電子音楽装置の全体ブロック図である。
【図２】前記逆再生用演奏データ列変換プログラムのフローチャートである。
【図３】演奏データ列の変換動作を説明するためのデータフォーマット図である。
【符号の説明】
１１…入力操作子群、１３…楽音信号発生回路、３１…ＣＰＵ，３３…ＲＯＭ，３４…ＲＡＭ、３５…外部記憶装置、３６…通信インターフェース回路。
【図１】
2004280001.tif 000003
【図２】
2004280001.tif 000004
【図３】
2004280001.tif 000005