(57)【特許請求の範囲】
【請求項１】
波形データを時系列に長さの等しい複数の波形ブロックに分割し、波形データを時間圧縮する場合は該波形ブロックの一部を削除して長さを短くし、時間伸張する場合は該波形ブロックの一部を重複させて長さを長くしてから該複数の波形ブロックを再配置することで波形データの時間圧縮／伸張を行う波形データの時間圧縮伸張方法であって、
該分割する波形ブロックの長さを該波形データの演奏タイミング情報に基づいて決めるようにした波形データの時間圧縮伸張方法。
【請求項２】
波形データを記憶した記憶手段と、
該波形データの演奏タイミング情報に基づいて分割の長さを決定して該波形データを該決定した長さの複数の波形ブロックに分割する分割手段と、
波形データを時間圧縮する場合は該波形ブロックの一部を削除して長さを短くし、時間伸張する場合は該波形ブロックの一部を重複させて長さを長くしてから該複数の波形ブロックを再配置する圧縮伸張手段と
を備えた波形データの時間圧縮伸張装置。
【請求項３】
該演奏タイミング情報は該記憶手段に波形データと共に記憶されており、該分割手段は該演奏タイミング情報を該記憶手段から読み出して該分割する波形ブロックの長さを決定するものである請求項２記載の波形データの時間圧縮伸張装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は波形データの再生時間を圧縮／伸張する波形データの時間圧縮伸張方法および装置に関する。
【０００２】
サンプラー等の編集機能の一つにタイム・ストレッチがある。このタイム・ストレッチは波形データの指定した範囲を任意の再生時間に圧縮したり伸張したりする機能であり、元となる音声波形を任意の長さの波形ブロックに切り出して、再生時間を長くしたり短くする割合に応じて、波形ブロックの一部を、伸張時には二度読みし、圧縮時には読み飛ばしして、前後の波形ブロックを一部重ね合わせてつなげ、その重ね合わせる部分をクロスフェード処理することにより行われる。
【０００３】
図９には波形データの再生時間の圧縮／伸張方法の概要を示す。図９（ａ）は元の音声波形（以下、原波形という）の長さＬ１を新しい音声波形（以下、再生波形という）の長さＬ２に伸ばす（伸張）場合、図９（ｂ）は原波形の長さＬ１を再生波形の長さＬ２に短くする（圧縮）場合を示している。
【０００４】
まず、図９（ａ）を参照して原波形の再生時間を伸張する場合について説明する。ＬＯ１〜ＬＯ３（以下、総称したＬＯと記する）の重なった部分を有する原波形の波形ブロックＬＢ１〜ＬＢ４を下段のような配置して、それぞれの波形ブロック間をクロスフェードでつないで、原波形の長さＬ１を時間伸張してＬ２となった再生波形を生成している。この時間伸張した再生波形は原波形の前記ＬＯの部分を重複して使用していることになる。
【０００５】
次に、図９（ｂ）を参照して原波形の再生時間を圧縮する場合について説明する。ＬＤ１〜ＬＤ４（以下、総称してＬＤと記する）の読み飛ばした部分を除いた原波形の波形ブロックＬＢ１〜ＬＢ４を下段のように配置して、それぞれの波形ブロック間をクロスフェードでつないで、原波形の長さＬ１を時間圧縮してＬ２となった再生波形を再生している。この時間圧縮した再生波形は原波形の前記ＬＤの部分を削除して使用していることになる。
【０００６】
【発明が解決しようとする課題】
再生波形の波形ブロックのつなぎ目部分では、通常、上述したように波形が不連続となる部分をクロスフェードするが、このクロスフェードする際には、そのクロスフェード部分では音声波形のフェージング（位相の変化）が起こり、これが聴感上、異音となって聴こえる。この異音は再生ブロックの長さの周期で周期的に繰り返され、その周期は音声波形のもつリズムと何ら相関がないため、再生された音声に対して目立ち、聴感上再生波形の音質に好ましからざる影響を与える。
【０００７】
本発明はかかる問題点に鑑みてなされたものであり、再生波形の波形ブロックのつなぎ目部分で生じる異音が再生波形の音質に与える影響を低減させることを目的とする。
【０００８】
【課題を解決するための手段】
上述の課題を解決するために、本発明に係る波形データの時間圧縮伸張方法では、波形データを時系列に長さの等しい複数の波形ブロックに分割し、波形データを時間圧縮する場合は該波形ブロックの一部を削除して長さを短くし、時間伸張する場合は該波形ブロックの一部を重複させて長さを長くしてから該複数の波形ブロックを再配置することで波形データの時間圧縮／伸張を行う波形データの時間圧縮伸張方法であって、該分割する波形ブロックの長さを該波形データの演奏タイミング情報（音声波形のテンポや拍子、拍数）に基づいて決めるようにしたものである。
【０００９】
また、本発明に係る波形データの時間圧縮伸張装置は、波形データを記憶した記憶手段と、該波形データの演奏タイミング情報（音声波形のテンポや拍子、拍数）に基づいて分割の長さを決定して該波形データを該決定した長さの複数の波形ブロックに分割する分割手段と、波形データを時間圧縮する場合は該波形ブロックの一部を削除して長さを短くし、時間伸張する場合は該波形ブロックの一部を重複させて長さを長くしてから該複数の波形ブロックを再配置する圧縮伸張手段とを備える。
【００１０】
上記の時間圧縮伸張装置は、上記の演奏タイミング情報が該記憶手段に波形データと共に記憶されており、該分割手段が該演奏タイミング情報を該記憶手段から読み出して該分割する波形ブロックの長さを決定するよう構成できる。
【００１１】
【作用】
従来の時間圧縮伸張方法では、元となる音声波形から波形ブロックを切り出す長さは、元の音声波形のもつ演奏タイミング（テンポや拍子、拍数）に関係なく決められている。このため、再生波形において波形ブロックのつなぎ目部分で生じる異音は、その発生の周期が音声波形のテンポや拍子に対して全く無関係なものとなり、その結果、その異音が再生された音声に対して目立つものになって聴感上、音声波形の音質を損なう。
【００１２】
そこで、本発明では、音声波形を切り出す波形ブロックの長さに着目し、波形ブロックの長さを、音声波形の持つ演奏タイミング情報に基づいて決定するようにしている。このようにすると、波形ブロックのつなぎ目は、元の音声波形の演奏タイミングに対して規則的にすることができ、よって再生波形の波形ブロックのつなぎ目部分で異音が生じても、その異音は音声波形のリズムと相関があるため聴感上余り目立たなくなる。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図１は本発明にかかる時間圧縮伸張装置を搭載した音声波形処理装置のブロック構成を示す図である。この実施例装置では、音楽的タイミング情報（テンポや拍子、拍数など）をもとに音声波形を複数の波形ブロックに切り出す長さを決定し、音声波形の再生時間を長くしたり短くしたりする。
【００１４】
図１において、ＣＰＵ１は音声波形の再生時間を長くしたり短くする処理や、装置全体の処理を行う。ＲＯＭ２は装置全体の制御プログラムと音声波形の再生時間を長くしたり短くする処理のための後述の制御プログラムが格納される。ＲＡＭ３は音声波形のデータやＣＰＵ作業用のデータが格納される。操作部４と表示部５は装置全体の制御をするパラメータを確認したり入力するためのものである。Ａ／Ｄ変換器６とＤ／Ａ変換器７は音声波形の入出力を行うためのものである。
【００１５】
図２には実施例装置の操作を行うためのパネルの構成例である。図２において、５０は表示部５の表示画面である。４２は制御パラメータの値を設定する際に使用するロータリーエンコーダ、４３は操作を実行したり中止するためのボタンスイッチ、４４は音声波形の再生時間を長くしたり短くする処理を指示するためのストレッチ指示スイッチ、４５は制御パラメータの種類を選択するためのパラメータ選択スイッチである。４６は音声波形を発音させ確認するための波形選択スイッチであり、ＲＡＭ３に各スイッチ対応に予め用意された音声波形データを選択できる。
【００１６】
これらの操作子による操作法を説明すると、ストレッチ指示スイッチ４４を押しながら、波形選択スイッチ４６のどれかを押すと、その選択した音声波形の再生時間を長くしたり短くする処理のための制御パラメータを設定し、圧縮／伸張処理を実行できる状態になる。制御パラメータは表示画面５０に表示され、その種類はパラメータ選択スイッチ４５を操作することで切り換えられる。表示画面５０に表示された制御パラメータはローターリエンコーダ４２を用いてその値を任意に設定することができる。ローターリエンコーダ４２で設定できる制御パラメータは、波形選択スイッチ４６に割り当てる音声波形データ、音声波形データの再生範囲（波形データのスタートアドレスＳ１とエンドアドレスＥ１）、音声波形データの拍数Ｂ、音声波形の再生時間を長くしたり短くしたりする圧伸割合Ｒ、１拍あたりに切り出す波形ブロックの数Ｑなどがある。
【００１７】
以下、図３、図４のフローチャートを参照して本実施例装置の動作を説明する。図３は、音声波形の再生時間を長くしたり短くするためのパネル処理の流れを示すフローチャートである。このパネル処理ルーチンは実施例装置のメインルーチンにおける、パネル上の操作子の状態を監視するためのルーチンであり、ストレッチ指示スイッチ４４を押しながら波形選択スイッチ４６の何れかを押したときに呼び出されて実行される。
なお、以降の説明では再生時間を長くしたり短くする元の音声波形を原波形、再生時間を長くしたり短くして作り出された音声波形を再生波形と呼んで説明を行う。
【００１８】
まず、制御パラメータの設定を行う（ステップＳ１）。制御パラメータの設定では、ストレッチ指示スイッチ４４と共に押された波形選択スイッチ４６に割り当てられている原波形に対して、拍数Ｂ（単位：拍）、再生時間を長くしたり短くしたりする圧伸割合Ｒ（単位：％）、１拍あたりに切り出す波形ブロックの数Ｑ（単位：個／拍）を操作子を用いて設定する。
なお、ここでは、原波形の拍数Ｂの代わりにテンポＴｅｍｐを設定したり、圧伸割合Ｒの代わりに再生波形のテンポＴｅｍｐを設定するようにしてもよい。
【００１９】
制御パラメータの設定処理が終わると、表示画面５０に「処理を実行しますか」の案内文が表示される（ステップＳ２）。ボタンスイッチ４３で「ＹＥＳ」を選択するとステップＳ３の圧縮／伸張処理が実行され、「ＮＯ」を選択するとメインルーチンに戻る。
【００２０】
ステップＳ３の音声波形の圧縮／伸張処理では、原波形を複数の波形ブロックに分割し、分割した波形ブロックを再配置して、波形ブロック間にクロスフェード処理をし、再生時間を長くしたり短くした再生波形を作り出す。この圧縮／伸張処理の詳細については後述する。
【００２１】
圧縮／伸張処理が終了したら、表示画面５０に再生波形を保存するかどうかを問う案内文「新しい音声波形を割り当てますか？」が表示される（ステップＳ４）。ボタンスイッチ４３で「ＹＥＳ」を選択すると、原波形が割り当てられていた波形選択スイッチ４６に、再生波形が割り当てられる（ステップＳ５）。「ＮＯ」を選択した場合には、再生波形は波形選択スイッチ４６に割り当てられることなく処理が終了されて、メインルーチンに戻る。
【００２２】
次に、音声波形の圧縮／伸張処理を図４の圧縮／伸張処理ルーチンのフローチャートと、図５、図６の圧縮／伸張処理のタイムチャートを参照して説明する。ここで、図５は原波形を複数のブロックに分割し、それぞれの波形ブロックを再配置／クロスフェードすることで時間伸張するやり方を、また図６は時間圧縮するやり方を示したものである。図４の圧縮／伸張処理ルーチンでは、図３のパネル処理ルーチンにおいて設定した制御パラメータと、原波形データの再生範囲（波形データのスタートアドレスＳ１とエンドアドレスＥ１）を用いて、原波形を複数の波形ブロックに分割し、それらの分割した波形ブロックを時系列に再配置して、波形ブロック間にクロスフェード処理を行い、原波形の再生時間を長くしたり短くしたりする。
【００２３】
まず、波形ブロック長の決定を行う（ステップＳ３１）。波形ブロック長の決定処理では、波形ブロックの分割数Ｎ、原波形の長さＬ１、原波形の波形ブロックの長さＬ１Ｂ、再生波形の長さＬ２、再生波形の波形ブロックの長さＬ２Ｂの５つのパラメータの値を自動的に決定する。以下、これらの決定の仕方を説明する。
【００２４】
原波形を複数の波形ブロックに分割する数Ｎ（単位：個）は、拍数Ｂ（単位：拍）と、１拍あたりに切り出す波形ブロックの数Ｑ（単位：個／拍）を用いて、
Ｎ＝Ｑ×Ｂ
を計算することで求める。これにより、波形ブロックの分割数Ｎに音声波形の音楽的タイミング情報が反映されることになる。
【００２５】
原波形の長さＬ１（単位：サンプル）は、波形データのエンドアドレスＥ１とスタートアドレスＳ１を用いて、
Ｌ１＝Ｅ１−Ｓ１
を計算することで求める。
【００２６】
原波形を複数の波形ブロックに切り出すときの波形ブロックの長さＬ１Ｂ（単位：サンプル）は、
Ｌ１Ｂ＝Ｌ１／Ｎ
を計算することで求める。この波形ブロックの長さＬ１Ｂは、原波形における任意の長さの「音符」に対応するものになる。例えば、４分音符の長さを１拍とすると、波形ブロックの長さＬ１Ｂは、原波形の４分音符の長さの１／Ｑ、つまり整数分の１の長さになる。
【００２７】
再生波形の長さＬ２は、原波形の長さＬ１と再生時間の圧伸割合Ｒを用いて、
Ｌ２＝Ｌ１×（Ｒ／１００）
を計算することで求める。
【００２８】
再生波形を原波形と同様に、複数の波形ブロックに分割するときの波形ブロックの長さＬ２Ｂは、
Ｌ２Ｂ＝Ｌ２／Ｎ
を計算することで求める。この波形ブロックの長さＬ２Ｂは、再生波形における任意の長さの「音符」に対応するものになる。例えば、４分音符の長さを１拍とすると、波形ブロックの長さＬ２Ｂは、原波形の４分音符の長さの１／Ｑ、つまり整数分の１の長さになる。
【００２９】
波形ブロックの決定処理が終了したら、作業用パラメータの初期化を行う（ステップＳ３２）。この初期化処理では、カウンタＣ、ポインタＰ１、Ｐ２の３つのパラメータの初期化をする。
【００３０】
まず、波形ブロックを処理するカウンタＣの値を「０」にする。このカウンタＣは再生波形を作り出す処理において、一つの波形ブロックについて再配置とクロスフェード処理を行う毎に一つ増加するもので、全ての波形ブロックを処理した時にカウンタＣの値は「Ｎ」になる。
【００３１】
原波形が格納してあるメモリ領域の先頭アドレスＳ１をポインタＰ１にセットする。また再生波形が格納されるメモリ領域の先頭アドレスＳ２をポインタＰ２にセットする。これらのポインタＰ１、Ｐ２は、音声波形上で現在作業中の波形ブロックの先頭アドレスを示すことになる。
【００３２】
次に、音声波形の圧伸割合Ｒを調べて、音声波形の伸張処理を行うのか、圧縮処理を行うのか、あるいは圧縮／伸張を行わないのかを判定する（ステップＳ３３、Ｓ３５）。Ｒ＞１００であれば伸張処理、Ｒ＜１００であれば圧縮処理、そのいずれでもなければ圧縮／伸張は行わないと判定する。以下、伸張処理と圧縮処理について詳細に説明する。
【００３３】
Ｒ＞１００すなわち伸張処理では、原波形の再生時間を長くする処理を行う（ステップＳ３４）。まず、原波形が格納してあるアドレス上のポインタＰ１の位置から長さＬ１Ｂにわたる波形ブロックのデータを読み出し、これを再生波形が格納されるメモリ領域にそのアドレス上のポインタＰ２の位置から長さＬ１Ｂにわたりコピー（書込み）する。
【００３４】
さらに、原波形の二度読み部分（図９で説明した長さＬＯの部分）を読み出して、上記コピーされた波形ブロックデータの末尾側にクロスフェードしながらつなげる。具体的には、原波形ブロックのポインタＰ１から（Ｌ１Ｂ×２−Ｌ２Ｂ−ＬＦ）の位置、つまり〔Ｐ１＋（Ｌ１Ｂ×２−Ｌ２Ｂ−ＬＦ）〕の位置から長さ（Ｌ２Ｂ−Ｌ１Ｂ＋ＬＦ）分の波形データを読み出し、その波形データを、コピーされた波形ブロックの終わりの部分から長さＬＦだけ手前のアドレス位置、つまり（Ｐ２＋Ｌ１Ｂ−ＬＦ）の位置から長さ（Ｌ２Ｂ−Ｌ１Ｂ＋ＬＦ）分にわたりコピーし、そのコピーの際に、波形データが重なるクロスフェード部分（長さＬＦ）をクロスフェード処理する（ステップＳ３４）。この波形データの重なるクロスフェード部分の長さＬＦ（単位：サンプル）は、システムに応じて所定の一定値に決定されている。
【００３５】
この伸張処理を図５で説明すると、原波形上で任意の長さの「音符」に対応する波形ブロック（長さＬ１Ｂ）が、再生波形上で任意の長さの「音符」に対応する波形ブロック（長さＬ２Ｂ）になるように、原波形の波形ブロック（長さＬ１Ｂ）の一部、すなわち原波形の波形ブロックの後端から手前に長さＬＯ＝（Ｌ２Ｂ−Ｌ１Ｂ＋ＬＦ）の部分を二度読みし、この二度読みした部分の前端部分を原波形の波形ブロックの後端部分に長さＬＦだけ重ね合わせて、その重ね合わせ部分（長さＬＦ）をクロスフェード処理する。
【００３６】
一方、Ｒ＜１００すなわち音声波形の圧縮処理の場合（ステップＳ３５）、音声波形の再生時間を短くする処理を行う（ステップＳ３６）。まず、原波形を格納してあるアドレス上のポインタＰ１の位置から長さＬ２Ｂの波形ブロックのデータを、再生波形が格納されるメモリ領域にそのアドレス上のポインタＰ２の位置から長さＬ２Ｂにわたりコピーする。
【００３７】
さらに、原波形の格納されているアドレス上のポインタＰ１から長さＬ１Ｂ分の波形ブロック・データについて、ポインタＰ１から（Ｌ１Ｂ−ＬＦ）の位置、つまり〔Ｐ１＋（Ｌ１Ｂ−ＬＦ）〕の位置から長さＬＦ分の波形データを、上記でコピーした波形ブロックの後端部分からクロスフェード長ＬＦ分だけ手前の位置、つまり（Ｐ２＋Ｌ２Ｂ−ＬＦ）の位置から、クロスフェード長ＬＦにわたりコピーし、その際、波形データの重なるクロスフェード部分（長さＬＦ）をクロスフェード処理する（ステップＳ３６）。
【００３８】
この圧縮処理を図６を参照して説明すると、原波形上で任意の長さの「音符」に対応する波形ブロック（長さＬ１Ｂ）が、再生波形上で任意の長さの「音符」に対応する波形ブロック（長さＬ２Ｂ）になるように、原波形の波形ブロック（長さＬ１Ｂ）の一部（長さＬ１Ｂ−Ｌ２Ｂ）を読み飛ばし、さらに原波形の波形ブロック（長さＬ１Ｂ）の後端から手前にクロスフェード長ＬＦの部分を読み出し、この読み出した部分を再生波形の波形ブロック（長さＬ２Ｂ）の後端側の長さＬＦの部分に重ね合わせ、その重ね合わせた部分をクロスフェード処理する。なお、先の図９（ｂ）の読み飛ばし部の長さＬＤを図６で示すと、ＬＤ＝（Ｌ１Ｂ−Ｌ２Ｂ−ＬＦ）に対応する。
【００３９】
音声波形の圧縮／伸張処理が終わったら、作業用パラメータの更新を行う（ステップＳ３７）。すなわち、ポインタＰ１を長さＬ１Ｂ分増加させ、またポインタＰ２を長さＬ２Ｂ分増加させる。その後、カウンタＣを一つ増加させる。そしてこのカウンタＣの値が「Ｎ」になるまで処理を繰り返し、値が「Ｎ」になれば処理を終了する（ステップＳ３８）。これにより、原波形の再生時間を長くしたり短くしたりした再生波形が作り出される。
【００４０】
本発明の実施にあたっては種々の変形形態が可能である。例えば、上述の実施例において、パネル処理ルーチンのステップＳ１では、拍数Ｂ、再生時間の圧伸割合Ｒ、１拍あたりに切り出す波形ブロックの数Ｑを全て、操作子を用いて設定するようにしているが、拍数Ｂは波形データとして波形の振幅データと共に記憶していてもよい。また、１拍あたりに切り出す波形ブロックの数Ｑは定数として予め演算に含ませておいてもよい。このようにしておくと、ユーザは再生時間を長くしたり短くしたりするにあたり圧伸割合Ｒのみを設定すればよくなる。この場合、前記パネル処理ルーチンのステップＳ１は図７に示すフローに置き換える。すなわち、音声波形データを記憶する記憶手段から拍数Ｂを読み出して制御パラメータの拍数Ｂとし（ステップＳ１１）、制御パラメータの圧伸割合Ｒには操作子で入力した割合（％）を設定する（ステップＳ１２）。
【００４１】
また、波形データとしてテンポ情報（拍数／分）を記憶しているものもあり、この場合には、図３のパネル処理ルーチンのステップＳ１を図８に示すフローに置き換えればよい。すなわち、記憶手段から波形データのテンポ情報Ｔｅｍｐを読み出し、テンポ情報Ｔｅｍｐ（拍数／分）に波形長（分）を乗算して拍数Ｂを算出する（ステップＳ１４）。波形データのスタートアドレスとエンドアドレスからメモリ容量をアドレス長として得る。予め波形データのサンプリング周波数が分かっているので、そのサンプリング周波数から前記アドレス長を時間（分）として変換することができる。この場合も、ユーザは再生時間を長くしたり短くする場合には、圧伸割合Ｒのみを設定すればよい（ステップＳ１５）。
【００４２】
【発明の効果】
以上に説明したように、本発明によれば、再生波形の波形ブロックのつなぎ目部分で生じる異音が目立たなくなり、再生波形の音質に与える好ましくない影響を低減することができる。
【図面の簡単な説明】
【図１】本発明に係る波形データの時間圧縮伸張装置を搭載した音声波形処理装置のブロック構成を示す図である。
【図２】実施例装置のパネルの構成例を示す図である。
【図３】実施例装置で実行されるメインルーチンにおけるパネル処理ルーチンを示すフローチャートである。
【図４】実施例のパネル処理ルーチンにおける時間圧縮／伸張処理ルーチンを示すフローチャートである。
【図５】実施例における波形データの時間伸張の様子を示すタイムチャートである。
【図６】実施例における波形データの時間圧縮の様子を示すタイムチャートである。
【図７】本発明の他の実施例における変更部分のフローチャートである。
【図８】本発明のまた他の実施例における変更部分のフローチャートである。
【図９】従来の時間圧縮／伸張方法を説明する図である。
【符号の説明】
１  ＣＰＵ（中央処理装置）
２  ＲＯＭ（リード・オンリー・メモリ）
３  ＲＡＭ（ランダム・アクセス・メモリ）
４  操作子
５  表示部
６  Ａ／Ｄ変換器
７  Ｄ／Ａ変換器
４２  ロータリ・エンコーダ
４３  ボタンスイッチ
４４  ストレッチ指示スイッチ
４５  パラメータ選択スイッチ
４６  波形選択スイッチ
５０  表示器の表示画面
【図１】
0003759810.tif 000002
【図２】
0003759810.tif 000003
【図３】
0003759810.tif 000004
【図４】
0003759810.tif 000005
【図５】
0003759810.tif 000006
【図６】
0003759810.tif 000007
【図７】
0003759810.tif 000008
【図８】
0003759810.tif 000009
【図９】
0003759810.tif 000010