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