(57)【特許請求の範囲】
【請求項１】
楽音波形信号の時間変化を表す時系列波形データを入力し、同楽音波形信号に含まれていて複数の異なる周波数帯域にそれぞれ属する複数の帯域成分波形信号の時間変化を表す複数の時系列帯域成分波形データを同入力した時系列波形データに基づいて生成する帯域成分データ生成工程と、
前記生成された複数の時系列帯域成分波形データを所定長を有する時系列のフレームデータにそれぞれ独立して分割する分割工程と、
前記複数の時系列帯域成分波形データの各フレームデータの読出し開始タイミングを指示された伸縮比に応じて変更するとともに、同各フレームデータを一定の読出しレートで読出すことにより、前記複数の時系列帯域成分波形データの各フレームデータを前記指示された伸縮比に応じて同各時系列帯域成分波形データ毎に時間軸上でそれぞれ再配置する再配置工程と、
前記時間軸上でそれぞれ再配置された複数の時系列帯域成分波形データを混合する混合工程と
により構成したことを特徴とする時間軸方向における楽音波形信号の伸縮方法。
【請求項２】
前記請求項１に記載した時間軸方向における楽音波形信号の伸縮方法において、前記分割工程を、前記複数の時系列帯域成分波形データを前記各周波数帯域毎に異なる長さの時系列のフレームデータにそれぞれ分割する工程で構成したことを特徴とする時間軸方向における楽音波形信号の伸縮方法。
【請求項３】
前記請求項１に記載した時間軸方向における楽音波形信号の伸縮方法において、前記分割工程を、前記複数の帯域成分波形信号の各振幅エンベロープを前記生成された複数の時系列帯域成分波形データに基づいてそれぞれ検出するエンベロープ検出工程と、前記複数の時系列帯域成分波形データを前記検出された各振幅エンベロープに基づいて前記各周波数帯域毎に時系列のフレームデータにそれぞれ分割するエンベロープ分割工程とで構成したことを特徴とする時間軸方向における楽音波形信号の伸縮方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、聴感上の周波数を変えることなく楽音波形信号を時間軸方向に圧縮又は伸張する時間軸方向における楽音波形信号の伸縮方法に関する。
【０００２】
【従来の技術】
従来から、図７(Ａ)に示すように、連続する楽音波形信号を所定の分割間隔（ｔ０−ｔ１，ｔ１−ｔ２，ｔ２−ｔ３・・・）で時系列的に分割し、各分割点ｔ０，ｔ１，ｔ２，ｔ３・・・の前後に微小時間Δｔを加えた区間における楽音波形信号を表す波形データを第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・として定めておき、前記楽音波形信号を時間軸方向に圧縮又は伸張して出力する場合、各フレームデータを時系列的に再配置して読出しレートをサンプリングレートと同一に保ったまま出力することにより、楽音波形信号をその周波数を変更することなく時間軸方向に圧縮又は伸張するようにした楽音波形信号の伸縮方法はよく知られている。
【０００３】
この場合、本明細書にて原テンポに対する目標テンポの比（目標テンポ／原テンポ）として定義する伸縮比を「１．０」に保ったまま楽音波形信号を出力する場合（すなわち元の楽音波形信号と同一の楽音波形信号を出力する場合）、図７(Ｂ)に示すように、第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・をサンプリングレートと同一のレートで読み出すとともに、各両端（第１フレームデータＦＲ１に関しては後端のみ）の微小時間ΔＴ分の波形データをクロスフェード処理して出力するようにする。また、伸縮比を「１．０」よりも大きくして波形信号を出力する場合（すなわち元の楽音波形信号を圧縮して出力する場合）、図７(Ｃ)に示すように、前記分割間隔を伸縮比で除した値に等しい時間間隔毎に第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・を頭からサンプリングレートと同一のレートで読み出しを開始するとともに、前記時間間隔を規定する分割点の前後の微小時間ΔＴ分の波形データをクロスフェード処理して出力するようにする。また、伸縮比を「１．０」よりも小さくして波形信号を出力する場合（すなわち元の楽音波形信号を伸張して出力する場合）、図７(Ｄ)に示すように、前記分割間隔を伸縮比で除した値に等しい時間間隔毎に第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・を頭からサンプリングレートと同一のレートで読み出しを開始するとともに、各フレームデータを前記伸縮比で除した値に等しい時間間隔分だけ読み出しては次のフレームデータの読出しに移るようにする。なお、各フレームデータの両端においてはフェードアウト及びフェードイン処理を行う。
【０００４】
【発明が解決しようとする課題】
しかし、上記従来の方法にあっては、楽音波形信号を伸張して出力する場合、伸張の度合いが小さい（伸縮比が大きい）ときにはそれほど問題ないが、伸張の度合いが大きくなると、各フレームデータ間に隙間が空いてしまい、各フレームデータに基づく楽音波形信号の不連続が耳障りになるという問題がある。
【０００５】
この問題点を改善するために、前記隙間の部分を前又は後のフレームデータで埋めるという方法が考えられる。この方法は持続音系の楽音波形信号には有効であるが、打楽器音、ピアノ音などの減衰系の楽音波形信号に適用した場合、アタック部分が２重に聞こえるという問題がある。
【０００６】
また、他の改善方法として、楽音波形信号の立ち上がり部（アタック部）及び定常部（サステイン部）を検出し、定常部に関してはフレームデータの一部又は全部を繰り返して用いることにより、前記隙間ができないようにすることも考えられる。しかし、この方法では、フレームデータの繰り返し部分が単調になるとともに、不自然に聞こえる場合があり、フレームデータを不自然にならないように繰り返させることが難しい。
【０００７】
【発明の概要】
本発明は、上記問題に対処するためになされたもので、その目的は、楽音波形信号を不自然でなく時間軸方向に圧縮及び伸張できるようにした時間軸方向における楽音波形信号の伸縮方法を提供することにある。
【０００８】
前記目的を達成するために、本発明の構成上の特徴は、楽音波形信号の時間変化を表す時系列波形データを入力し、同楽音波形信号に含まれていて複数の異なる周波数帯域にそれぞれ属する複数の帯域成分波形信号の時間変化を表す複数の時系列帯域成分波形データを同入力した時系列波形データに基づいて生成する帯域成分データ生成工程と、前記生成された複数の時系列帯域成分波形データを所定長を有する時系列のフレームデータにそれぞれ独立して分割する分割工程と、前記複数の時系列帯域成分波形データの各フレームデータの読出し開始タイミングを指示された伸縮比に応じて変更するとともに、同各フレームデータを一定の読出しレートで読出すことにより、前記複数の時系列帯域成分波形データの各フレームデータを前記指示された伸縮比に応じて同各時系列帯域成分波形データ毎に時間軸上でそれぞれ再配置する再配置工程と、前記時間軸上でそれぞれ再配置された複数の時系列帯域成分波形データを混合する混合工程とにより構成したことにある。
【０００９】
前記方法においては、楽音波形信号の時間変化を表す時系列波形データから複数の異なる周波数帯域にそれぞれ属する複数の帯域成分波形信号の時間変化を表す複数の時系列帯域成分波形データが生成され、各時系列帯域成分波形データが所定長を有する時系列のフレームデータにそれぞれ独立して分割され、前記分割された各フレームデータが指示された伸縮比に応じて各時系列帯域成分波形データ毎に時間軸上でそれぞれ再配置された後に混合されて出力される。したがって、この方法によれば、楽音波形信号は、複数の周波数帯域毎に時間軸上において圧縮又は伸張され、周波数帯域に合わせた最適の圧縮及び伸張処理が可能となる。また、楽音波形信号を伸張する場合、時系列のフレームデータは各周波数帯域毎に独立して設定されているので、各周波数帯域毎に前記隙間に相当する部分に時間的なずれが生じ、全体的には隙間ができ難くなり、上述したような隙間の部分を前又は後のフレームデータで埋める方法、定常部に関してフレームデータを繰り返す方法を採用する必要がなくなり、単調にならず、かつ自然な楽音波形信号を得ることができる。また、楽音波形信号を圧縮する場合には、各フレームデータの接続部が各周波数帯域毎に時間的にずれ、同接続部が目立たなく設定されているので、自然な楽音波形信号を得ることができる。
【００１０】
この場合、前記分割工程は、例えば、前記複数の時系列帯域成分波形データを前記各周波数帯域毎に異なる長さの時系列のフレームデータにそれぞれ分割する工程で実現される。また、前記分割工程は、前記複数の帯域成分波形信号の各振幅エンベロープを前記生成された複数の時系列帯域成分波形データに基づいてそれぞれ検出するエンベロープ検出工程と、前記複数の時系列帯域成分波形データを前記検出された各振幅エンベロープに基づいて前記各周波数帯域毎に時系列のフレームデータにそれぞれ分割するエンベロープ分割工程とにより構成される。さらに、これらの分割方法を、帯域成分波形信号毎に選択するようにすることも可能である。
【００１２】
【発明の実施の形態】
ａ．第１実施形態
以下、本発明の第１実施形態を図面を用いて説明すると、図１は、同実施形態に係る楽音信号発生装置を機能ブロック図により示している。なお、後述する各部は、マイクロコンピュータ装置及びその周辺機器により構成され、それらの多くはプログラム処理により機能を発揮するものである。
【００１３】
この楽音信号発生装置は、波形データ記憶部１０、読出し部１１、帯域分離部１２、バッファ部１３ａ，１３ｂ，１３ｃ、時間軸制御部１４ａ，１４ｂ，１４ｃ及び混合部１５を備えている。
【００１４】
波形データ記憶部１０は、楽音波形信号の時間変化を表し所定のサンプリングレートでサンプリングされた時系列の波形データを記憶するものである。この場合、波形データは、長さに関して、１曲分でも、１フレーズ分でも、１音分でもよく、また種類に関しても、リズムパート、ピアノ、ギターなどの各パート別の波形データでも、複数のパートを混合したものでもよい。
【００１５】
読出し部１１は、制御部２０により制御されて、波形データ記憶部１０に記憶されている波形データを読み出して帯域分離部１２に供給する。帯域分離部１２は、通常のＦＩＲ型、ＩＩＲ型などのハイパスフィルタ処理、バンドパスフィルタ処理及びローパスフィルタ処理により、入力した波形データにより表された楽音波形信号に含まれている高域成分波形信号、中域成分波形信号及び低域成分波形信号の各時間変化をそれぞれ表す時系列の低域成分波形データ、中域成分波形データ及び高域成分波形データを同入力した波形データに基づいて生成して、これらの各波形データをバッファ部１３ａ，１３ｂ，１３ｃにそれぞれ供給する。バッファ部１３ａ，１３ｂ，１３ｃは、制御部２０により制御されて、前記生成された低域成分波形データ、中域成分波形データ及び高域成分波形データを時間軸制御部１４ａ，１４ｂ，１４ｃの制御に必要な量だけ一時的に記憶する。
【００１６】
時間軸制御部１４ａ，１４ｂ，１４ｃは、制御部２０に制御されて、前記生成された高域成分波形データ、中域成分波形データ及び低域成分波形データを所定長を有する時系列のフレームデータにそれぞれ独立して分割するとともに、各フレームデータを指示された伸縮比に応じて時間軸上でそれぞれ再配置して出力する。この分割においては、高域成分波形データ、中域成分波形データ及び低域成分波形データの各フレームデータの時間長は、この順に長くなるように予め決められた所定長に設定される。また、この再配置は、各フレームデータの時間長を伸縮比（目標テンポ／原テンポ）で除した時間間隔毎に、波形データ記憶部１０に記憶した波形データのサンプリングレートと同一の読出しレートでバッファ部１３ａ，１３ｂ，１３ｃ内に一時記憶されている各波形データを読出していくことにより行われる。
【００１７】
混合部１５は、時間軸制御部１４ａ，１４ｂ，１４ｃからそれぞれ出力された高域成分波形データ、中域成分波形データ及び低域成分波形データを混合（加算）してＤ／Ａ変換部１６に出力する。Ｄ／Ａ変換部１６は、混合部１５から出力された混合波形データをディジタルアナログ変換してサウンドシステム１７に出力する。サウンドシステム１７は、アンプ、スピーカなどからなり、前記アナログ変換された信号を楽音として発音する。
【００１８】
制御部２０には、仮想アドレスカウンタ部２１、パネル操作子２２、パネル表示器２３及び通信インターフェース２４が接続されている。
【００１９】
仮想アドレスカウンタ部２１は、各フレームデータの読出し時間間隔を決定するために、波形データ記憶部１０に記憶した波形データのサンプリングレートと同一のレートで伸縮比（目標テンポ／原テンポ）を累算した値（仮想アドレス）を制御部２０に出力する。なお、原テンポとは、波形データ記憶部１０に記憶させた波形データ（楽音波形信号）の楽音の演奏テンポ、すなわち前記波形データを時間軸上で制御することなく、所定のサンプリング周波数で再生することにより、同再生した波形データに対応する楽音が放音されたとき、その楽音を聴いた人間が感じる演奏テンポを指す。この演奏テンポは、ユーザによって指定されるものであってもよいし、波形データの分析により得たものであってもよい。また、目標テンポとは、前記楽音波形信号の再生時の楽音の演奏テンポ、すなわち前記波形データに対して後述する時間軸上の制御を行いながら同波形データを再生することにより、同再生した波形データに対応する楽音が放音されたとき、その楽音を聴いた人間が感じる演奏テンポを指す。パネル操作子２２は、ユーザにより操作される複数の操作子により構成され、波形データ記憶部１０に記憶されている複数の波形データのうちの一つを指定したり、同指定された波形データのテンポ（原テンポ）及び目標テンポを入力したりすることに利用される。
【００２０】
パネル表示器２３は、文字、図形などを表示するもので、前記パネル操作子２２の操作時などに必要なデータを表示する。通信インターフェース２４は、ＭＩＤＩ，ＵＳＢ，ＩＥＥＥ１３９４，インターネットなどにより構成され、波形データ記憶部１０に記憶される波形データを外部から入力したり、波形データの種類、原テンポ、目標テンポなどを表すデータを外部から入力したり、これらの各種データを外部に出力したりするために利用される。
【００２１】
次に、上記のように構成した楽音信号発生装置の動作を説明する。ユーザは、パネル操作子２２を操作したり、通信インターフェース２４を介して外部からデータを取込むことにより、波形データ記憶部１０から読出すべき波形データの種類を指定するとともに、原テンポ及び目標テンポを指定する。これに応答して、制御部２０は、前記指定された波形データの記憶されている波形データ記憶部１０のアドレスを読出し部１１に出力するとともに、前記指定された原テンポ及び目標テンポに基づいて伸縮比を計算して仮想アドレスカウンタ部２１に出力する。パネル操作子２２又は通信インターフェース２４を介して、前記伸縮比を制御部２０に直接入力する場合には、前記伸縮比の計算を省略できる。
【００２２】
次に、パネル操作子２２又は通信インターフェース２４を介して波形データの読出し開始が指示されると、制御部２０は、読出し部１１、バッファ部１３ａ，１３ｂ，１３ｃ及び時間軸制御部１４ａ，１４ｂ，１４ｃに制御信号を出力して、波形データ記憶部１０に記憶されている波形データの出力を制御するとともに、仮想アドレスカウンタ部２１に仮想アドレスのカウント開始を指示する。
【００２３】
読出し部１１は、波形データ記憶部１０に記憶されている波形データをそのサンプリングレートよりも高速のレートで順次読出して、帯域分離部１２に供給する。帯域分離部１２は、前記読出された波形データに基づいて高域成分波形データ、中域波形データ及び高域成分波形データをそれぞれ生成して、バッファ部１３ａ，１３ｂ，１３ｃに供給する。バッファ部１３ａ，１３ｂ，１３ｃは、前記供給された各波形データをそれぞれ記憶する。この場合、読出し部１１は時間軸制御部１４ａ，１４ｂ，１４ｃの処理に必要な時間分の波形データずつ断続的に波形データの読出しを行い、バッファ部１３ａ，１３ｂ，１３ｃは、少なくとも同処理に必要な時間分の波形データを記憶する。例えば、バッファ部１３ａ，１３ｂ，１３ｃには、時間軸制御部１４ａ，１４ｂ，１４ｃにより現在読出し中のフレームデータに加えて、それらの前後のフレームデータが記憶され、読出し部１１はバッファ部１３ａ，１３ｂ，１３ｃに記憶されるべき各波形データに対応した波形データを波形データ記憶部１０から読出す。なお、前記に限らず、バッファ１３ａ，１３ｂ，１３ｃには、帯域分離部１２によって帯域別に分離されたフレームデータを先行記憶しておくようにしてもよい。
【００２４】
ここで、フレームデータについて説明しておく。高域成分波形データ、中域波形データ及び高域成分波形データは、図２の伸縮比＝１の場合のように、時間軸上で所定の時間間隔（ｔ0−ｔ10，ｔ10−ｔ20，ｔ20−ｔ30・・・）に分割され、これらの分割された各フレームデータを第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・とする。この分割の時間間隔は、図３(Ａ)に示すように、高域から低域に向かうにしたがって順次大きくなる。
【００２５】
ふたたび、前記動作説明に戻るが、以降の説明においては、設定された伸縮比が「１．０」の場合、「１．０」よりも大きい場合、「１．０」よりも小さい場合に分けて説明する。まず、伸縮比が「１．０」の場合について説明すると、仮想アドレスカウンタ部２１は、仮想アドレスのカウント開始指示から伸縮比「１．０」を波形データ記憶部１０に記憶されている波形データのサンプリングレートと同一のレートで累算し、累算結果を仮想アドレス値として制御部２０に逐次供給する。制御部２０は、図２に示すように、仮想アドレス値が各時間軸制御部１４ａ，１４ｂ，１４ｃでそれぞれ決められた分割時間位置ｔ10，ｔ20，ｔ30・・・に対応した分割位置アドレス１，２，３・・・になる毎に次のフレームデータの読出し開始を指示する信号を時間軸制御部１４ａ，１４ｂ，１４ｃにそれぞれ出力する。前述のように、各所定時間ｔ0−ｔ10，ｔ10−ｔ20，ｔ20−ｔ30・・・は、高域成分波形データ、中域成分波形データ及び低域成分波形データの順に長くなるように設定されているので、時間軸制御部１４ａ，１４ｂ，１４ｃにはこの順に長くなる所定時間毎に読出し開始指示信号がそれぞれ供給されることになる。
【００２６】
一方、時間軸制御部１４ａ，１４ｂ，１４ｃは、バッファ部１３ａ，１３ｂ，１３ｃに記憶されている各第１フレームデータＦＲ１を波形データ記憶部１０に記憶されている波形データのサンプリングレートと同一のレートでそれぞれ順次読出して混合部１５に供給する。そして、時間軸制御部１４ａ，１４ｂ，１４ｃが各第１フレームデータＦＲ１の読出しを終了すると、各第２フレームデータＦＲ２の読出し開始が制御部２０から指示されるまで待機する。しかし、この場合、伸縮比は「１．０」であるので、仮想アドレス値が各時間軸制御部１４ａ，１４ｂ，１４ｃでそれぞれ決められた分割時間位置ｔ10に対応した分割位置アドレス値になるタイミングと、時間軸制御部１４ａ，１４ｂ，１４ｃが第１フレームデータＦＲ１の各読出しを終了するタイミングとは一致する。したがって、時間軸制御部１４ａ，１４ｂ，１４ｃは、前記各第１フレームデータＦＲ１の読出しの終了と同時に、各第２フレームデータＦＲ２の読出しをそれぞれ開始する。なお、時間軸制御部１４ａ，１４ｂ，１４ｃによる各第２フレームデータＦＲ２の読出し開始タイミングは、図３(Ａ)に示すように、それぞれ異なっていて同制御部１４ａ，１４ｂ，１４ｃの順に遅くなる。
【００２７】
そして、時間軸制御部１４ａ，１４ｂ，１４ｃが前記各第２フレームデータＦＲ２の読出しを終了すると、同終了した時点で、同制御部１４ａ，１４ｂ，１４ｃは、前記場合と同様に、各第３フレームデータＦＲ３の読出しをそれぞれ開始する。このようにして、時間軸制御部１４ａ，１４ｂ，１４ｃは、各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・をそれぞれ順次読み出して、混合部１５に供給する。なお、厳密には、時間軸制御部１４ａ，１４ｂ，１４ｃにおいて、各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・を順次接続して出力していく場合には、各接続部の前後の各フレームデータをクロスフェード処理して接続するようにする。
【００２８】
混合部１５は、前述のようにして時間軸制御部１４ａ，１４ｂ，１４ｃからそれぞれ供給された各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・を加算合成して、Ｄ／Ａ変換器１６に供給する。この加算合成により、高域成分波形データ、中域成分波形データ及び低域成分波形データが加算合成されるので、加算合成された波形データは、波形データ記憶部１０から読出された波形データに等しいものになる。Ｄ／Ａ変換器１６は前記加算合成された波形データをディジタルアナログ変換して、サウンドシステム１７に供給するので、同システム１７は前記加算合成された波形データ対応した楽音信号を発音する。その結果、この場合には、テンポが変更されずに、波形データ記憶部１０に記憶されていた波形データがそのまま再生されることになる。
【００２９】
次に、伸縮比が「１．０」よりも大きい場合について説明する。この場合、伸縮比は「１．０」よりも大きな値に設定されているので、仮想アドレスカウンタ部２１における伸縮比の累算による仮想アドレス値の増加速度は前記伸縮比が「１．０」の場合よりも今回の伸縮比に比例して速く、仮想アドレス値は、図２に示すように、分割時間位置ｔ10，ｔ20，ｔ30・・・よりも早い時間位置ｔ11，ｔ21，ｔ31・・・で分割位置アドレス１，２，３・・・に達する。なお、図２は伸縮比４／３の場合を示している。したがって、制御部２０は、前記場合より短い時間間隔である時間位置ｔ11，ｔ21，ｔ31・・・毎に、時間軸制御部１４ａ，１４ｂ，１４ｃに読出し開始指示信号をそれぞれ出力する。なお、この場合も、時間軸制御部１４ａ，１４ｂ，１４ｃに対する読出し開始指示信号の出力時間間隔は、同制御部１４ａ，１４ｂ，１４ｃの順により長くなる。
【００３０】
一方、時間軸制御部１４ａ，１４ｂ，１４ｃは、前記各読出し指示毎に、バッファ部１３ａ，１３ｂ，１３ｃにそれぞれ記憶されている各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・の読出しを順に開始するが、この場合の読出しレートも、前記場合と同様に、波形データ記憶部１０に記憶した波形データのサンプリングレートと同じある。したがって、時間軸制御部１４ａ，１４ｂ，１４ｃは、時間位置ｔ11，ｔ21，ｔ31・・・においては、各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・の読出しを完了しておらず、各フレームデータの後半の一部は読み出されることなく、次の各フレームデータが順次読出し出力されていくことになる。すなわち、次のフレームデータの読出し指示に応じて、今まで読出されていたフレームデータの読出しが終了させられる。
【００３１】
そして、このようにして時間軸制御部１４ａ，１４ｂ，１４ｃによって読出された高域成分波形データ、中域成分波形データ及び低域成分波形データの各フレームデータは、混合部１５に供給されて加算合成され、Ｄ／Ａ変換器１６及びサウンドシステム１７に供給されて、楽音信号として発音される。その結果、この場合には、発音される楽音信号の周波数を波形データ記憶部１０に記憶したときの状態に保ったまま、同楽音信号が時間軸方向の前記伸縮比に応じた比率だけ圧縮されて、速く設定した目標テンポに応じて楽音信号が発音される。図３(Ｂ)は、高域成分波形データ、中域成分波形データ及び低域成分波形データの各フレームデータの接続及び圧縮状態を示しており、この場合も、接続部はクロスフェード処理される。このクロスフェード処理により、実際には連続していない波形データを接続しても、同接続による違和感を最小限に抑えることができ。
【００３２】
次に、伸縮比が「１．０」よりも小さい場合について説明する。この場合、伸縮比は「１．０」よりも小さな値に設定されているので、仮想アドレスカウンタ部２１における伸縮比の累算による仮想アドレス値の増加速度は前記伸縮比が「１．０」の場合よりも今回の伸縮比に比例して遅く、仮想アドレス値は、図２に示すように、分割時間位置ｔ10，ｔ20，ｔ30・・・よりも遅い時間位置ｔ12，ｔ22，ｔ32・・・で分割位置アドレス１，２，３・・・に達する。なお、図２は伸縮比４／５の場合を示している。したがって、制御部２０は、伸縮比「１．０」の場合より長い時間間隔である時間位置ｔ12，ｔ22，ｔ32・・・毎に、時間軸制御部１４ａ，１４ｂ，１４ｃに読出し開始指示信号をそれぞれ出力する。なお、この場合も、時間軸制御部１４ａ，１４ｂ，１４ｃに対する読出し開始指示信号の出力時間間隔は、同制御部１４ａ，１４ｂ，１４ｃの順により長くなる。
【００３３】
一方、時間軸制御部１４ａ，１４ｂ，１４ｃは、前記各読出しの指示毎に、バッファ部１３ａ，１３ｂ，１３ｃにそれぞれ記憶されている各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・の読出しを順に開始するが、この場合の読出しレートも、前記伸縮比が「１．０」の場合と同様に、波形データ記憶部１０に記憶した波形データのサンプリングレートと同じある。したがって、時間軸制御部１４ａ，１４ｂ，１４ｃは、時間位置ｔ12，ｔ22，ｔ32・・・よりも早い時点で、各第１フレームデータＦＲ１、各第２フレームデータＦＲ２、各第３フレームデータＦＲ３・・・の読出しを既にそれぞれ終了しているので、各フレームデータと次の各フレームデータとの間には隙間が生じることになる。なお、この隙間をそのままにしておいてもよいが、各フレームデータの一部又は全部を１回又は繰り返し使用して前記隙間を埋めるようにしてもよい。
【００３４】
そして、このようにして時間軸制御部１４ａ，１４ｂ，１４ｃによって読出された高域成分波形データ、中域成分波形データ及び低域成分波形データの各フレームデータも、混合部１５に供給されて加算合成され、Ｄ／Ａ変換器１６及びサウンドシステム１７に供給されて、楽音信号として発音される。その結果、この場合には、発音される楽音信号の周波数を波形データ記憶部１０に記憶したときの状態に保ったまま、同楽音信号が時間軸方向の前記伸縮比に応じた比率だけ伸張されて、遅く設定した目標テンポに応じて楽音信号が発音される。図３(Ｃ)は、高域成分波形データ、中域成分波形データ及び低域成分波形データの各フレームデータの伸張状態を示しており、この場合の各フレームデータの端部にはフェードアウト及びフェードイン処理がそれぞれ施されている。
【００３５】
上記のように、この第1実施形態によれば、帯域分離部１２の処理により、波形データ記憶部１０に記憶されていて読出し部１１によって読出された楽音波形信号の時間変化を表す時系列の波形データから、時系列の高域、中域及び低域の各帯域成分波形データがそれぞれ分離生成されてバッファ部１３ａ，１３ｂ，１３ｃにそれぞれ記憶される。そして、時間軸制御部１４ａ，１４ｂ，１４ｃの処理により、バッファ部１３ａ，１３ｂ，１３ｃに記憶されている各帯域成分波形データが、高域、中域及び低域の順に順次長くなる所定長ずつの時系列のフレームデータにそれぞれ分割され、前記分割された各フレームデータが指示された伸縮比に応じて各帯域成分波形データ毎に時間軸上でそれぞれ再配置される。この再配置においては、各帯域成分波形データ毎に、各フレームデータの読出し開始タイミングが各帯域成分波形データ毎の前記所定長と前記指示された伸縮比に応じてそれぞれ決定され、各フレームデータの読出しが前記決定した読出し開始タイミングから開始されて、同各フレームデータは波形データ記憶部１０の波形データを記憶したときのサンプリングレートと同一のレートで読み出される。そして、高域、中域及び低域の各帯域成分波形データは、混合部１５の処理により混合される。
【００３６】
その結果、この第1実施形態によれば、楽音波形信号は、複数の周波数帯域毎に時間軸上において圧縮又は伸張され、周波数帯域に適した圧縮及び伸張処理が可能となる。また、楽音波形信号を伸張する場合、時系列のフレームデータは各周波数帯域毎に独立して設定されているので、各周波数帯域毎に前記隙間に相当する部分に時間的なずれが生じ、全体的には隙間ができ難くなり、かつ自然な楽音波形信号を得ることができる。また、前記隙間をフレームデータによって埋めるようにした場合及び楽音波形信号を圧縮する場合には、各フレームデータの接続部が各周波数帯域毎に時間的にずれ、同接続部が目立たなく設定されているので、自然な楽音波形信号を得ることができる。
【００３７】
なお、この第１実施形の説明においては、フレームデータの長さに関しては、各周波数帯域毎に異なるとともに周波数帯域が低くなるにしたがって長くなるとだけ説明して、フレームデータの長さ及び分割位置に関しては詳しい説明をしなかった。フレームデータの長さに関しては、周波数帯域毎の各フレームデータの長さがそれぞれ整数倍にならないようにして同周波数帯域毎の各フレームデータ間の隙間及び接続部が重ならないようにすることが望ましいが、システムの構成上の関係により整数倍になってもよい。また、フレームデータの分割位置に関しては、もちろん全ての帯域のフレームデータの分割位置が異なることが好ましいが、システムの構成上の関係から一部の分割位置が重なってもよい。さらに、各周波数帯域毎にクロスフェード処理、フェードイン処理、フェードアウト処理など、各周波数帯域毎にフレームデータの処理を異ならせるようにすれば、各周波数帯域毎のフレームデータの分割位置が重なっても、フレームデータ間の隙間又は接合部が目立たなくなり、より好ましい。
【００３８】
ｂ．第２実施形態
次に、本発明の第２実施形態について図面を用いて説明すると、図４は同実施形態に係る楽音信号発生装置を機能ブロック図により示している。なお、この第２実施形態も、第１実施形態と同様に、マイクロコンピュータ装置及びその周辺機器により構成され、それらの多くはプログラム処理により機能を発揮するものであり、第１実施形態と多くの共通部分を有するので、以下の説明においては上記第１実施形態と異なる部分についてのみ説明する。この第２実施形態に係る楽音信号発生装置は、各帯域成分波形データのエンベロープに基づいて前記フレームデータの分割が行われる点を特徴としており、各帯域成分波形データのエンベロープを検出するための分析部３０ａ，３０ｂ，３０ｃを備えている。
【００３９】
各分析部３０ａ，３０ｂ，３０ｃは、図５に示すようにそれぞれ構成され、各帯域成分波形データの振幅エンベロープ（すなわち各帯域成分波形データにより表された楽音波形信号の振幅エンベロープ）を抽出するためのエンベロープ抽出部３１を備えている。このエンベロープ抽出部３１は、例えば、入力した波形データの絶対値を計算し、同計算した絶対値を数ミリ秒毎にピークホールドし、同ピークホールドされた値をローパスフィルタ処理して出力するもので構成される。
【００４０】
このエンベロープ抽出部３１には、立上がり検出部３２及び立下がり検出部３３が接続されている。立上がり検出部３２は、振幅エンベロープの立上がり時間位置を検出して、同時間位置を表すデータを時間フレーム決定部３４に供給する。この立上がり検出部３２においては、振幅エンベロープの立上がり時間位置が、例えば、▲１▼振幅エンベロープが所定の閾値を超えた時点又は同時点から所定時間前（例えば、数ミリ秒前）の時点、▲２▼振幅エンベロープの微分値が所定の閾値を超えた時点又は同時点から所定時間前（例えば、数ミリ秒前）の時点、▲３▼振幅エンベロープが所定の閾値を超えかつ振幅エンベロープの微分値が前記とは異なる所定の閾値を超えた時点又は同時点から所定時間前（例えば、数ミリ秒前）の時点などとして検出される。
【００４１】
立下がり検出部３３は、振幅エンベロープの立下がり時間位置（振幅エンベロープの減衰終了時間位置）を検出して、同時間位置を表すデータを時間フレーム決定部３４に供給する。この立下がり検出部３３においては、振幅エンベロープの立下がり時間位置は、例えば、▲１▼振幅エンベロープが所定の閾値を下回った時点又は同時点から所定時間前（例えば、数ミリ秒前）の時点、▲２▼振幅エンベロープの微分値が所定の閾値を下回った時点又は同時点から所定時間前（例えば、数ミリ秒前）の時点、▲３▼振幅エンベロープが所定の閾値を下回りかつ振幅エンベロープの微分値が前記とは異なる所定の閾値を下回った時点又は同時点から所定時間前（例えば、数ミリ秒前）の時点などとして検出される。なお、立上がり時間位置の検出のための閾値は、立下がり時間位置の検出のための閾値と同じであってもよいし、異なっていてもよい。
【００４２】
時間フレーム決定部３４は、前記供給された立上が時間位置及び立下がり時間位置を表すデータに基づいて、各立上がり時間位置を各フレームの開始位置としてそれぞれ決定するとともに、各立上がり時間位置からその直後の対応する立下がり時間位置までの時間を各フレームの長さとしてそれぞれ決定する。なお、立上がり時間位置の検出後、同立上がり時間位置に対応する立下がり時間位置が検出される前に、次の立上がり時間位置が検出された場合、同次の立上がり時間位置までの時間をフレームの長さとし、同次の立上がり時間位置を次のフレームの開始位置とする。
【００４３】
このようにして分析部３０ａ，３０ｂ，３０ｃの各時間フレーム決定部３４にて決定された各フレームの開始位置及び長さを表すデータは、時間軸制御部１４ａ〜１４ｃに供給される。時間軸制御部１４ａ，１４ｂ，１４ｃは、バッファ部１３ａ，１３ｂ．１３ｃに記憶される高域成分波形データ、中域成分波形データ及び低域成分波形データを、各フレームの開始位置及び長さを表すデータに基づいてそれぞれ独立して分割する。この場合、図６に示すように、高域成分波形データにおいては、前記各フレームの開始位置に対応した各時間位置ｔ11，ｔ12，ｔ13・・・から前記各フレームの長さに対応した時間長Ｌ11，Ｌ12，Ｌ13・・・ずつの波形データをそれぞれ第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・として設定する。中域成分波形データにおいては、各フレームの開始位置に対応した各時間位置ｔ21，ｔ22・・・から前記各フレームの長さに対応した時間長Ｌ21，Ｌ22・・・ずつの波形データをそれぞれ第１フレームデータＦＲ１，第２フレームデータＦＲ２・・・として設定する。低域成分波形データにおいては、各フレームの開始位置に対応した各時間位置ｔ31，ｔ32・・・から前記各フレームの長さに対応した時間長Ｌ31，Ｌ32・・・ずつの波形データをそれぞれ第１フレームデータＦＲ１，第２フレームデータＦＲ２・・・として設定する。
【００４４】
一方、制御部２０は、時間軸制御部１４ａ，１４ｂ，１４ｃによるフレームデータの分割に関して、各フレームデータの読出し開始を指示する信号を時間軸制御部１４ａ，１４ｂ，１４ｃにそれぞれ供給する。この場合も、上記第１実施形態の場合と同様に、第1制御部２０が入力された原テンポ及び目標テンポに応じて伸縮比（目標テンポ／原テンポ）を計算し、仮想アドレスカウンタ部２１が、波形データ記憶部１０に記憶されている波形データのサンプリングレートと同一のレートで前記伸縮比を累算して、同累算結果を制御部２０に供給する。制御部２０は、仮想アドレス値が時間軸制御部１４ａで決められた分割時間位置ｔ11，ｔ12，ｔ13・・・に対応した各分割位置アドレス値になる毎に次のフレームデータの読出し開始を指示する信号を時間軸制御部１４ａに出力し、仮想アドレス値が時間軸制御部１４ｂで決められた分割時間位置ｔ21，ｔ22・・・に対応した各分割位置アドレス値になる毎に次のフレームデータの読出し開始を指示する信号を時間軸制御部１４ｂに出力し、かつ仮想アドレス値が時間軸制御部１４ｃで決められた分割時間位置ｔ31，ｔ32・・・に対応した各分割位置アドレス値になる毎に次のフレームデータの読出し開始を指示する信号を時間軸制御部１４ｃにそれぞれ出力する。
【００４５】
時間軸制御部１４ａ，１４ｂ，１４ｃは、上記第1実施形態の場合と同様に、前記読出し開始を指示する各信号に応答して、バッファ部１３ａ，１３ｂ，１３ｃにそれぞれ記憶されている各フレームデータを波形データ記憶部１０に記憶した波形データのサンプリングレートと同じ一定の読出しレートで順次読み出すことにより、各フレームデータの再配置処理を実行する。すなわち、時間軸制御部１４ａは、図６に示すように、仮想アドレス値が分割時間位置ｔ11，ｔ12，ｔ13・・・に対応した各分割位置アドレス値になる毎に、バッファ部１３ａに記憶されている第１フレームデータＦＲ１、第２フレームデータＦＲ２、第３フレームデータＦＲ３・・・を前記一定の読出しレートで順次読み出して混合部１５に出力する。時間軸制御部１４ｂは、仮想アドレス値が分割時間位置ｔ21，ｔ22・・・に対応した各分割位置アドレス値になる毎に、バッファ部１３ｂに記憶されている第１フレームデータＦＲ１、第２フレームデータＦＲ２・・・を前記一定の読出しレートで順次読み出して混合部１５に出力する。時間軸制御部１４ｃは、仮想アドレス値が分割時間位置ｔ31，ｔ32・・・に対応した各分割位置アドレス値になる毎に、バッファ部１３ｃに記憶されている第１フレームデータＦＲ１、第２フレームデータＦＲ２・・・を前記一定の読出しレートで順次読み出して混合部１５に出力する。なお、この場合、無音の部分（波形データのレベルがほぼ「０」の部分）に関しては、フレームデータとして採用する必要はない。
【００４６】
混合部１５は、上記第1実施形態と同様に、時間軸制御部１４ａ，１４ｂ，１４ｃからの各波形データを加算合成し、同加算合成された波形データは、Ｄ／Ａ変換器１６及びサウンドシステム１７を介して楽音信号として発音される。その結果、この場合にも、発音される楽音信号の周波数を波形データ記憶部１０に記憶したときの状態に保ったまま、同楽音信号が時間軸方向において伸縮比に応じた比率だけ伸縮されて発音され、楽音信号が目標テンポで発音されるようになる。
【００４７】
上記のように、この第２実施形態によっても、帯域分離部１２の処理により、波形データ記憶部１０に記憶されていて読出し部１１によって読出された楽音波形信号の時間変化を表す時系列の波形データから、時系列の高域、中域及び低域の各帯域成分波形データがそれぞれ分離生成されてバッファ部１３ａ，１３ｂ，１３ｃにそれぞれ記憶される。そして、時間軸制御部１４ａ，１４ｂ，１４ｃの処理により、バッファ部１３ａ，１３ｂ，１３ｃに記憶されている各帯域成分波形データが各帯域成分波形データの各振幅エンベロープに応じて複数の時系列フレームデータにそれぞれ分割され、前記分割された各フレームデータが指示された伸縮比に応じて各帯域成分波形データ毎に時間軸上でそれぞれ再配置される。この再配置においては、各帯域成分波形データ毎に、各フレームデータの読出し開始タイミングが各帯域成分波形データ毎の分割した各フレームデータの開始時間位置と前記指示された伸縮比に応じてそれぞれ決定され、各フレームデータの読出しが前記決定した読出し開始タイミングから開始されて、同各フレームデータは波形データ記憶部１０の波形データを記憶したときのサンプリングレートと同一のレートで読み出される。そして、高域、中域及び低域の各帯域成分波形データは、混合部１５の処理により混合される。
【００４８】
その結果、この第２実施形態によれば、楽音波形信号を伸張する場合、時系列のフレームデータは各周波数帯域毎に独立して設定されているので、各周波数帯域毎に前記隙間に相当する部分に時間的なずれが生じ、全体的には隙間ができ難くなり、かつ自然な楽音波形信号を得ることができる。楽音波形信号を圧縮する場合には、各フレームデータの接続部が各周波数帯域毎に時間的にずれ、同接続部が目立たなく設定されているので、自然な楽音波形信号を得ることができる。しかも、各フレームデータは、各帯域成分波形データの各エンベロープの立上がり及び立下がりに応じて決定されるので、楽音波形信号を伸張した場合の隙間及び同楽音波形信号を圧縮した場合の接続部が上記第１実施形態の場合よりもさらに自然となり、より高品質な楽音信号が得られる。
【００４９】
なお、この第２実施形態においては、各帯域成分波形データを分割して時間軸制御を行う場合、振幅エンベロープが減衰系である場合には上記方法で行い、振幅エンベロープが持続系である場合には、各フレームデータの開始位置に関しては上記方法を採用するとともに、各フレームデータ中から楽音波形信号の変化の激しい部分（トランジェントな部分）を除いた部分すなわち変化の緩やかな部分を削除したり、繰り返したりすることにより、フレームデータの長さを伸縮するようにするとよい。この場合、図５に破線で示すように、時間フレーム決定部３４に、エンベロープ抽出部３１から振幅エンベロープを示すデータを入力するとともに、分析部３０ａ，３０ｂ，３０ｃ内に入力した波形データにより表された楽音波形信号の周波数、周波数特性などのその楽音要素の変化を分析する周波数等分析部３５を設け、同分析部３５からの前記楽音要素の分析データを入力する。そして、時間フレーム決定部３４にて、これらの入力データに基づいて、楽音波形信号の振幅、周波数、周波数特性などの変化の激しくない部分を決定して、この決定した部分を表すデータを、フレーム開始位置及び長さを表すデータと共に時間軸制御部１４ａ，１４ｂ，１４ｃに供給する。時間軸制御部１４ａ，１４ｂ，１４ｃは、これらの供給データに基づいて、前記フレーム開始位置及び長さにより規定されたフレームデータから前記変化の激しくない部分を削除したり、繰り返したりして、バッファ部１３ａ，１３ｂ，１３ｃに記憶されている波形データから新たなフレームデータを作成して読出すようにするとよい。
【００５０】
また、上記第２実施形態においては、原テンポをパネル操作子２２によって入力したり、通信インターフェース２４を介して外部から入力したりするようにしたが、波形データ記憶部１０に記憶されている波形データに基づいて原テンポを検出するようにしてもよい。この場合、図４，５に破線で示すように、分析部３０ａ，３０ｂ，３０ｃの各立上がり検出部３２にて、各帯域成分波形データの振幅エンベロープの立上がり時間位置を検出するときに同立上がり時間位置近傍の振幅エンベロープのピーク値を立上がり強度として検出し、各立上がり検出部３２から周波数帯域別の楽音波形信号の振幅エンベロープの立上がり時間位置及び立上がり強度を表すデータを制御部２０に供給する。
【００５１】
制御部２０は、各周波数帯域毎の振幅エンベロープの立上がり時間位置及び立上がり強度を相互に比較することにより、波形データ記憶部１０から読出された波形データにより表された一連の楽音波形信号の拍位置やテンポの揺らぎを検出する。この場合、例えば、時間軸において振幅エンベロープの立上がりが同時又はほぼ同時に検出された数、及び立上がり強度の大きさに基づいて、拍位置を検出するとともに、この検出した拍位置を表拍と裏拍に分類し、表拍により拍位置を決定して基本的なテンポを設定し、表拍に対する裏拍のずれからテンポの揺らぎすなわちスイング率（揺らぎ率）を求めるようにすればよい。
【００５２】
そして、このようにして求めた基本的なテンポを原テンポとして用いることにより、原テンポを自動的に決定でき、入力の必要性がなくなる。また、前記基本的なテンポにスイング率を加味するようにすれば、精密な時間軸制御を行うこともできるようになる。さらに、基本的なテンポに関しては、上記第２実施形態のようにして外部から入力するようにし、前記自動的に求めたスイング率を前記基本的なテンポに加味するようにしてもよい。
【００５３】
ｃ．その他の変形例
上記第１及び第２実施形態においては、パネル操作子２２又は通信インターフェース２４を介して外部から原テンポを入力するようにしたが、これに代えて、波形データ記憶部１０に各種の波形データと共に原テンポを表すデータを記憶しておくようにしてもよい。これによれば、原テンポを外部から入力しなくても、前記記憶しておいた原テンポを用いて波形データの伸縮比を計算できるようになる。この場合、上記第１及び第２実施形態における各フレームデータの長さを、原テンポにおける４分音符、８分音符、１６音符などに相当する時間長に対応付けるとよい、特に第２実施形態においては振幅エンベロープで決まる各フレームデータの長さを前記時間長で調整するようにするとよい。
【００５４】
また、第１及び第２実施形態においては、パネル操作子２２又は通信インターフェース２４を介して外部から目標テンポを入力するようにしたが、これに代えて、目標テンポに対応した周期のテンポクロック信号を制御部２０に入力し、制御部２０が前記テンポクロック信号のタイミングから目標テンポを計算するようにしてもよい。
【００５５】
また、上記第１及び第２実施形態においては、高域、中域及び低域の各帯域成分波形データのバッファ部１３ａ，１３ｂ，１３ｃに対する各書込み及び読込みを共通のサンプル数及び周期で行うようにした。しかし、低域成分に向かうにしたがってサンプル数を少なくしても問題ないので、帯域分離部１２にて分離された低域側の成分波形データのサンプル数を少なくしてバッファ部に書込み（ダウンサンプリング）するとともに、低域成分側の時間軸制御部がバッファ部から同一のサンプル値を重複して読み出す（オーバーサンプリング）ようにしてもよい。例えば、帯域分離部１２から出力されるサンプル値が一つ毎に間引きしてバッファ部１３ｃに書込まれるようにして、時間軸制御部１４ｃがバッファ部１３ｃから２回ずつ重複し読み出すようにしてもよい。
【００５６】
また、上記第１及び第２実施形態においては、波形データ記憶部１０から読み出された波形データに基づいて高域、中域及び低域の３帯域の各帯域成分波形データを生成することにより、楽音波形信号を３周波数帯域に分けて処理するようにしたが、２帯域又はさらに多くの周波数帯域に分けて波形データ記憶部１０から読み出された波形データを処理するようにしてもよい。この場合、帯域分離する数に等しい数のバッファ部及び時間軸制御部を設けておき、帯域分離部１２が波形データ記憶部１０から読み出された波形データに基づいて前記数分の帯域成分波形データを生成し、これらの帯域分離された各帯域成分波形データが、前記設けたバッファ部及び時間軸制御部により、上記第１及び第２実施形態と同様に処理されるようにすればよい。
【図面の簡単な説明】
【図１】  本発明の第1実施形態に係る楽音信号発生装置の一例を示すブロック図である。
【図２】  伸縮比を種々に変えた場合における分割時間位置と分割位置アドレスの関係及び各フレームデータの出力状態を示す図である。
【図３】  (Ａ)〜(Ｃ)は、伸縮比を種々に変えた場合における高域、中域及び低域の各フレームデータの出力状態を示す図である。
【図４】  本発明の第２実施形態に係る楽音信号発生装置の一例を示すブロック図である。
【図５】  図４の分析部の詳細を示すブロック図である。
【図６】  高域、中域及び低域の各帯域波形データの振幅エンベロープの一例と同振幅エンベロープに基づく各フレームデータの分割位置を示す図である。
【図７】  (Ａ)〜(Ｄ)は、従来の方法で伸縮比を種々に変えた場合における各フレームデータの出力状態を示す図である。
【符号の説明】
１０…波形データ記憶部、１２…帯域分離部、１３ａ，１３ｂ，１３ｃ…バッファ部、１４ａ，１４ｂ，１４ｃ…時間軸制御部、１５…混合部、２０…制御部、２１…仮想アドレスカウンタ部、３０ａ，３０ｂ，３０ｃ…分析部、３１…エンベロープ抽出部、３２…立上がり検出部、３３…立下がり検出部、３４…時間フレーム決定部。
【図１】
0003654117.tif 000002
【図２】
0003654117.tif 000003
【図３】
0003654117.tif 000004
【図４】
0003654117.tif 000005
【図５】
0003654117.tif 000006
【図６】
0003654117.tif 000007
【図７】
0003654117.tif 000008