JP2000003178A - Time stretch device - Google Patents
Time stretch deviceInfo
- Publication number
- JP2000003178A JP2000003178A JP10166933A JP16693398A JP2000003178A JP 2000003178 A JP2000003178 A JP 2000003178A JP 10166933 A JP10166933 A JP 10166933A JP 16693398 A JP16693398 A JP 16693398A JP 2000003178 A JP2000003178 A JP 2000003178A
- Authority
- JP
- Japan
- Prior art keywords
- input signal
- data
- time
- band
- octave
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、フレーズ等の一連
の音の列に対してそのテンポ等をピッチとは独立に変え
ることができるタイムストレッチ装置に関する。かかる
タイムストレッチ装置は電子楽器などに搭載して利用す
ることができる。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a time stretching apparatus capable of changing a tempo or the like of a series of sounds such as a phrase independently of a pitch. Such a time stretching device can be mounted on an electronic musical instrument and used.
【0002】ある自然なひと区切りのメロディ・ライン
などの一連の音列をフレーズ(楽句、楽節などともい
う)と称しているが、電子楽器において、あるフレーズ
のテンポを変化させるには、最も単純な方法では、その
フレーズのデータをメモリに蓄えておいてその読出し速
度を変化させることで実現できる。しかし、この方法で
は、テンポ(すなわち読出し速度)を変化させると、そ
れに伴ってピッチも変化してしまう。[0002] A series of musical strings such as a certain natural melody line is called a phrase (also referred to as a phrase, a phrase, etc.). A simple method can be realized by storing the data of the phrase in a memory and changing the reading speed. However, in this method, when the tempo (that is, the reading speed) is changed, the pitch also changes accordingly.
【0003】そこで、ピッチを変えずにテンポを変える
方法が幾つか提案されており、例えば無音区間を検出し
その区間の長さを調整してピッチを変えずにテンポを変
化させる方法、あるいは台形窓を使ってフレーズから波
形を切り出す方法などがある。Therefore, several methods for changing the tempo without changing the pitch have been proposed. For example, a method for detecting a silent section and adjusting the length of the section to change the tempo without changing the pitch, or a trapezoidal method. There is a method of using a window to cut out a waveform from a phrase.
【0004】ところが、無音区間による方法では、無音
区間がない若しくは少ないフレーズでは、調整に限界が
ある。また台形窓による方法では、台形窓のエンベロー
プが雑音として聴こえてしまい、十分満足できるものと
は言えない。However, in the method using a silent section, there is a limit in adjustment for a phrase having no or few silent sections. In the method using a trapezoidal window, the envelope of the trapezoidal window is heard as noise, which is not satisfactory.
【0005】さらに、入力信号を複数の帯域に分割した
後に、その各帯域についてその振幅と位相変化量(ピッ
チ)を検出し、その振幅データを用いてテンポ変化を実
現し、位相変化量を調節することによりピッチ変化を実
現する方法がある。Further, after the input signal is divided into a plurality of bands, the amplitude and phase change (pitch) of each band are detected, and a tempo change is realized using the amplitude data to adjust the phase change. There is a method of realizing a pitch change by performing the above.
【0006】図13にはこの方法によりタイムストレッ
チ(時間の圧縮/伸張、すなわちテンポの調整に相当)
を行う装置の構成例が示される。図示するように、入力
信号を、通過帯域のそれぞれ異なる例えば100個の帯
域フィルタを用いて、図14に示すような100の帯域
(バンド)Band0〜Band99に分割し、その分
割した各帯域の信号についてその振幅成分と周波数成分
(ピッチ成分)とを抽出し、それら各帯域の振幅成分の
時間変化の速度と周波数成分の時間変化の速度とをテン
ポ変化指示量に応じてそれぞれ変えることにより、これ
ら振幅成分と周波数成分との時間軸をそれぞれ例えば図
15に示すように圧縮/伸張し、その後に各帯域の振幅
成分と周波数成分を合成することで、元の入力信号をタ
イムストレッチして出力するものである。ここで、図1
5(A)は元の信号(振幅成分と周波数成分)の波形、
図15(B)は時間軸を伸張した後の信号(振幅成分と
周波数成分)の波形である。FIG. 13 shows a time stretch (corresponding to time compression / expansion, that is, tempo adjustment) by this method.
Is shown. As shown in the figure, the input signal is divided into 100 bands (Bands) Band0 to Band99 as shown in FIG. 14 by using, for example, 100 band filters having different passbands, and the signals of the respective divided bands are divided. By extracting the amplitude component and the frequency component (pitch component) of each of the bands, and changing the time change speed of the amplitude component and the time change of the frequency component of each band in accordance with the tempo change instruction amount, The time axes of the amplitude component and the frequency component are respectively compressed / expanded as shown in FIG. 15, for example, and the original input signal is time-stretched and output by combining the amplitude component and the frequency component of each band. Things. Here, FIG.
5 (A) is the waveform of the original signal (amplitude component and frequency component),
FIG. 15B is a waveform of a signal (amplitude component and frequency component) after the time axis is expanded.
【0007】この方法の原理は、各帯域の信号は、帯域
フィルタの数を十分多くすることで、帯域幅(よって帯
域内での周波数変化幅)を十分小さくでき、よって時間
軸を圧縮/伸張しても周波数成分は殆ど変化がないと見
なすことができるので、振幅成分をその振幅値を変えず
に時間軸を圧縮/伸張してもピッチが変わらないという
ものである。[0007] The principle of this method is that the signal of each band can have a sufficiently small bandwidth (hence the frequency change width within the band) by sufficiently increasing the number of band filters, and thus the time axis can be compressed / expanded. Even if the frequency component is hardly changed, the pitch does not change even if the time axis is compressed / expanded without changing the amplitude value of the amplitude component.
【0008】[0008]
【発明が解決しようとする課題】従来の帯域分割による
タイムストレッチ方法では、リズム音などのような急峻
な変化(アタック部分など)がある楽音信号が入力され
ると、用いているフィルタの影響で、そのアタック部分
の前部分にプリエコーと呼ばれるノイズが発生して、ア
タック部分が鈍った音になってしまい、音楽性に欠ける
ものになってしまうという問題点がある。これは、帯域
を分割するフィルタのタップ数(フィルタの次数)が多
いと生じる現象であり、タップ数を減らすことで、この
鈍り具合を低減することができる。In the conventional time stretching method based on band division, when a tone signal having a steep change (such as an attack portion) such as a rhythm sound is input, it is affected by the filter used. However, there is a problem that a noise called a pre-echo is generated in the front part of the attack part, so that the attack part becomes a dull sound and lacks in musicality. This is a phenomenon that occurs when the number of taps (filter order) of the filter that divides the band is large. By reducing the number of taps, the degree of dullness can be reduced.
【0009】一方、フィルタはそのタップ数を減らせば
減らすほど、その帯域幅が広くなってしまう性質を持っ
ており、結局、タップ数を減らすと入力信号を帯域分割
する分割数を少なくせざるを得なくなる。このように分
割数が少なくなった場合、倍音構造が重要な音(主にメ
ロディに使用される音)では、その倍音構造がきちんと
再現されなくなり、やはり音楽性に欠けたものとなって
しまう。On the other hand, the filter has the property that the bandwidth becomes wider as the number of taps is reduced. As a result, if the number of taps is reduced, the number of divisions into which the input signal is divided into bands must be reduced. No longer. When the number of divisions is reduced in this way, for a sound whose harmonic structure is important (a sound mainly used for a melody), the harmonic structure is not properly reproduced, and the music is also lacking in musicality.
【0010】このように、従来の帯域分割によるタイム
ストレッチ方法では、フィルタのタップ数とそれらフィ
ルタによる帯域分割数とは、タイムストレッチした楽音
の音楽性を保つという観点からはトレードオフの関係に
あり、リズム系の楽音とメロディ系の楽音の何れをも音
楽的に満足できるようにタイムストレッチすることは容
易ではなかった。As described above, in the conventional time stretching method based on band division, the number of taps of the filter and the number of band divisions by these filters have a trade-off relationship from the viewpoint of maintaining the musicality of the time-stretched musical sound. It has not been easy to time-stretch both rhythm-based music and melody-based music so as to be musically satisfactory.
【0011】本発明はかかる問題点に鑑みてなされたも
のであり、リズム系やメロディ系などのような楽音の種
々のタイプに対応して、音楽性を損なうことなく入力信
号をタイムストレッチできるようにすることを目的とす
る。SUMMARY OF THE INVENTION The present invention has been made in view of the above-mentioned problems, and is capable of time-stretching an input signal without impairing musicality in correspondence with various types of musical sounds such as a rhythm system and a melody system. The purpose is to.
【0012】[0012]
【課題を解決するための手段】上述の課題を解決するた
めに、本発明に係るタイムストレッチ装置は、入力信号
をタイムストレッチする量を指示する指示手段と、入力
信号のタイプを指示するタイプ指示手段と、入力信号を
フィルタを用いて複数の帯域に分割し各帯域の信号を振
幅成分と周波数成分に変換してその時間変化の速度(例
えばテンポなど)を該指示手段で指示した指示量に基づ
き変えた後に再合成することで入力信号をタイムストレ
ッチするタイムストレッチ手段と、該タイムストレッチ
手段での帯域の分割数と該フィルタの使用する特性を該
タイプ指示手段で指示した入力信号のタイプに応じて変
更する変更手段とを備える。In order to solve the above-mentioned problems, a time stretching apparatus according to the present invention comprises an instructing means for instructing an amount of time stretching of an input signal, and a type instructing for instructing a type of the input signal. Means for dividing the input signal into a plurality of bands by using a filter, converting the signals in each band into an amplitude component and a frequency component, and changing the speed of the time change (for example, tempo) to the designated amount designated by the designation means. Time-stretching means for time-stretching the input signal by resynthesizing the input signal after changing based on the input signal type designated by the type-designating means. Changing means for changing according to the situation.
【0013】[0013]
【作用】タイプ指定手段で入力信号のタイプを指定する
ことで、変更手段は、指定されたタイプに応じて、タイ
ムストレッチ手段で用いる帯域の分割数のフィルタの特
性、例えばタップ数を変化させる。例えば、リズム音系
の入力信号であることが指定されたときにはタップ数が
少なくなるようにし、メロディ音系の入力信号であるこ
とが指定されたときには分割数が多くなるように制御す
る。このようにすれば、リズム音系の入力信号もそのア
タック部分などが鈍ることがなくなり、またメロディ音
系の入力信号でもその倍音構造がきちんと再現されるよ
うになる。これにより、いずれのタイプの入力信号に対
しても音楽性を損なうことなくタイムストレッチするこ
とが可能となる。By designating the type of the input signal with the type designating means, the changing means changes the filter characteristic of the band division number used by the time stretching means, for example, the number of taps, according to the designated type. For example, the number of taps is controlled to be small when the input signal is a rhythm sound input signal, and the number of divisions is increased when the input signal is a melody sound signal. In this way, the attack portion of the rhythm sound input signal does not become dull, and the overtone structure of the melody sound input signal is properly reproduced. This makes it possible to perform time stretching on any type of input signal without impairing the musicality.
【0014】[0014]
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態を説明する。図1には本発明に係る一実施例と
してのタイムストレッチ装置の構成が示される。かかる
タイムストレッチ装置は例えばサンプラや電子楽器など
に搭載することができる。図1において、CPU1は装
置の全体的な制御を司る中央処理装置、ROM2は制御
プログラムや各種データのテーブル等を格納しているリ
ード・オンリー・メモリ、RAM3は作業用のメモリエ
リアなどとして利用されるランダム・アクセス・メモ
リ、操作子群4は各種スイッチ類からなるもの、表示器
5はパラメータの選択等の際にパラメータを画面表示す
るなどに用いる液晶表示器である。ハードディスク駆動
装置6、CD−ROM駆動装置7は外部記憶装置をなす
ものである。また、A/D変換器8はアナログ入力信号
をディジタル信号に変換して入力するためのもの、D/
A変換器9は装置内で処理したディジタル信号をアナロ
グ出力信号に変換して出力するためのものである。Embodiments of the present invention will be described below with reference to the drawings. FIG. 1 shows a configuration of a time stretching device as one embodiment according to the present invention. Such a time stretching device can be mounted on, for example, a sampler or an electronic musical instrument. In FIG. 1, a CPU 1 is a central processing unit that controls the entire apparatus, a ROM 2 is a read-only memory that stores a control program and a table of various data, and a RAM 3 is used as a working memory area. The operation unit group 4 is composed of various switches, and the display unit 5 is a liquid crystal display used to display parameters on a screen when selecting parameters. The hard disk drive 6 and the CD-ROM drive 7 are external storage devices. The A / D converter 8 converts an analog input signal into a digital signal and inputs the digital signal.
The A converter 9 converts a digital signal processed in the device into an analog output signal and outputs the signal.
【0015】ここで、この波形変換装置において、分析
にかける入力信号(入力データ)は一連の音の列からな
るフレーズの波形を逐次にサンプリングしたサンプル値
(振幅値)である。ここではこの入力データの元来のサ
ンプリング周波数(あるいはシステムのサンプリング周
波数ともいう)をfsoとする。さらに、この入力データ
はA/D変換器8や外部記憶装置(ハードディスク駆動
装置6、CD−ROM駆動装置7)から入力されてRA
M3に転送される。この入力データはRAM3から一旦
読み出されてCPU1の制御下に分析され、その分析さ
れたデータはRAM3に再び格納され、その後にハード
ディスク駆動装置6などに転送される。Here, in this waveform converter, an input signal (input data) to be analyzed is a sample value (amplitude value) obtained by sequentially sampling a waveform of a phrase composed of a series of sound strings. Here, the original sampling frequency of the input data (or the sampling frequency of the system) is fso. Further, the input data is input from the A / D converter 8 and the external storage device (the hard disk drive device 6, the CD-ROM drive device 7) and
Transferred to M3. The input data is once read out from the RAM 3 and analyzed under the control of the CPU 1, and the analyzed data is stored again in the RAM 3 and then transferred to the hard disk drive 6 or the like.
【0016】図2には、表示器5の画面に表示される入
力信号のタイプ設定画面が示される。図示するように、
入力信号する楽音のタイプとして、リズム音系の「リズ
ミック」とメロディ音系の「メロディック」の二種類の
うちの何れかをユーザがカーソルキー等の操作子を用い
て指定することが可能である。この実施例装置では、入
力信号タイプ指示フラグTYPEを有しており、「リズ
ミック」が指定されたときにはこの入力信号タイプ指示
フラグTYPEが「1」に、「メロディック」が指定さ
れた場合には「0」に設定される。また、「リズミッ
ク」が指定されたときには、後述する変数であるオクタ
ーブ内分割数Mと間引き数DECIがそれぞれ「4」に
設定される。一方、「メロディック」が指定されたとき
にはそれら2つの変数は「8」に設定される。FIG. 2 shows an input signal type setting screen displayed on the screen of the display unit 5. As shown
It is possible for the user to specify one of two types of musical sounds to be input signals, a rhythmic "rhythmic" and a melody "melodic", by using an operating element such as a cursor key. is there. The apparatus of this embodiment has an input signal type indication flag TYPE. When “rhythmic” is designated, the input signal type indication flag TYPE is set to “1”, and when “melodic” is designated, It is set to “0”. Further, when “rhythmic” is designated, the in-octave division number M and the decimation number DECI, which are variables described later, are each set to “4”. On the other hand, when "melodic" is designated, those two variables are set to "8".
【0017】以下、図面を参照して実施例装置の動作を
説明する。まず、入力信号の分析処理の手順を図4、図
5に示すフローチャートを用いて説明する。この入力信
号の分析処理は、入力信号のエンベロープを検出して保
存するとともに入力信号に急峻な部分(例えばアタック
部分)がなくなるようにその振幅を平坦化し、その後
に、平坦化した入力信号を複数の帯域に分割して、各帯
域の信号をそれぞれその振幅成分と周波数成分に変換す
るものである。The operation of the embodiment will be described below with reference to the accompanying drawings. First, the procedure of the input signal analysis processing will be described with reference to the flowcharts shown in FIGS. This input signal analysis process detects and saves the envelope of the input signal, flattens the amplitude of the input signal so as to eliminate a steep portion (for example, an attack portion), and then converts a plurality of flattened input signals. And converts the signals in each band into its amplitude component and frequency component.
【0018】図3にはこの実施例における帯域分割の概
念が示される。ここで、システムのサンプリング周波数
をfsoとすると、入力信号の周波数は角周波数ωで表示
されており、角周波数ω=πは周波数換算でfso/2に
相当している。ここで、ωがπ〜π/2の区間が第1オ
クターブ、π/2〜π/4の区間が第2オクターブ、π
/4〜π/8の区間が第3オクターブ・・・というよう
にして、第10オクターブまでオクターブ単位で分割さ
れている。ここではこれらの各帯域をオクターブ帯域と
称することにする。いずれの番号のオクターブ帯域であ
るかはオクターブ数カウンタoctによって識別され
る。さらに各オクターブ帯域のなかは、オクターブ内分
割数Mで等分に分割されており、これら分割された各帯
域(以下、オクターブ内分割帯域と称することにする)
はオクターブ内分割数カウンタmによって識別される。
ここで、オクターブ内分割数Mは、本実施例では前述し
たとおり、入力信号のタイプが「リズミック」の場合に
は「4」、「メロディック」の場合には「8」となる。
図3に示した例は前者の「リズミック」の場合のもので
ある。FIG. 3 shows the concept of band division in this embodiment. Here, assuming that the sampling frequency of the system is fso, the frequency of the input signal is represented by an angular frequency ω, and the angular frequency ω = π corresponds to fso / 2 in frequency conversion. Here, the section where ω is from π to π / 2 is the first octave, the section from π / 2 to π / 4 is the second octave,
The section from / 4 to π / 8 is divided into tenth octaves in octave units, such as the third octave. Here, these bands are referred to as octave bands. The number of the octave band is identified by an octave number counter oct. Furthermore, each octave band is equally divided by the number M of divisions within an octave, and these divided bands (hereinafter, referred to as division bands within an octave).
Are identified by an in-octave division number counter m.
Here, as described above in the present embodiment, the division number M within an octave is “4” when the input signal type is “rhythmic” and “8” when the input signal type is “melodic”.
The example shown in FIG. 3 is for the former case of “rhythmic”.
【0019】分析処理においては、まず、入力信号in
(i)のエンベロープ検出とその平坦化を行う(ステッ
プS1)。図6にはこのエンベロープ検出および平坦化
の詳細な手順が示される。図6のエンベロープ検出およ
び平坦化の処理において、iは入力信号(例えば図10
に示すもの)のサンプル値の時間軸上での順序を示すカ
ウンタであり、curはエンベロープ検出処理を行うた
めのカレント(現)振幅値である。また、env(i)
は入力信号in(i)から検出されたエンベロープ(包
絡線)値である。さらにRELEASはリリースパラメ
ータ(リリース係数)、ATTACKはアタックパラメ
ータ(アタック係数)、LENはデータ長(分析対象の
フレーズの長さ)である。In the analysis process, first, the input signal in
The envelope detection (i) and its flattening are performed (step S1). FIG. 6 shows a detailed procedure of this envelope detection and flattening. In the envelope detection and flattening process of FIG. 6, i is an input signal (for example, FIG. 10).
Is a counter indicating the order of sample values on the time axis, and cur is a current (current) amplitude value for performing envelope detection processing. Also, env (i)
Is an envelope (envelope) value detected from the input signal in (i). RELEAS is a release parameter (release coefficient), ATACK is an attack parameter (attack coefficient), and LEN is a data length (length of a phrase to be analyzed).
【0020】図6において、まず、カウンタi=0、カ
レント振幅値cur=0に設定し(ステップS21)、
このカレント振幅値curを入力信号in(i)の絶対
値と比較する。すなわち、 |in(i)|>cur かを判断する。入力信号in(i)の絶対値のほうがカ
レント振幅値curよりも大きい場合には、現在の入力
信号のエンベロープ部分は急峻に立ち上がっているから
アタック部分のものと推定することができ、この場合、
カレント振幅値curを以下の計算式 cur=cur+(|in(i)|−cur)*ATT
ACK (但し、「*」の印は掛け算を表すものとする。以下同
じ)により、アタック係数ATTACKに従って増加す
るように更新する(ステップS24)。In FIG. 6, first, a counter i = 0 and a current amplitude value cur = 0 are set (step S21).
This current amplitude value cur is compared with the absolute value of the input signal in (i). That is, it is determined whether or not | in (i) |> cur. If the absolute value of the input signal in (i) is larger than the current amplitude value cur, the envelope portion of the current input signal rises sharply and can be estimated to be the attack portion. In this case,
The current amplitude value cur is calculated by the following formula: cur = cur + (| in (i) | -cur) * ATT
ACK (however, the mark “*” represents multiplication; the same applies hereinafter) is updated so as to increase in accordance with the attack coefficient ATACK (step S24).
【0021】一方、入力信号in(i)の絶対値がカレ
ント振幅値cur以下の場合には、現在の入力信号のエ
ンベロープ部分は緩やかに立ち下がっているからリリー
ス部分のものと推定することができ、この場合、カレン
ト振幅値curを以下の計算式 cur=cur+(|in(i)|−cur)*REL
EASE により、リリース係数RELEASEに従って減少する
ように更新する(ステップS24)。なお、このアタッ
ク係数ATTACKおよびリリース係数RELEASE
は予め別のモードにおいてユーザにより設定されている
ものである。On the other hand, when the absolute value of the input signal in (i) is equal to or smaller than the current amplitude value cur, since the envelope portion of the current input signal gradually falls, it can be estimated that the envelope portion is the release portion. In this case, the current amplitude value cur is calculated by the following formula: cur = cur + (| in (i) | -cur) * REL
It is updated by EASE so as to decrease according to the release coefficient RELEASE (step S24). The attack coefficient ATTACK and the release coefficient RELEASE
Are previously set by the user in another mode.
【0022】この後、更新したカレント振幅値curを
入力信号in(i)のエンベロープ値env(i)とし
(ステップS25)、バッファ(メモリ)に格納する。
すなわち、 env(i)=cur とする。Thereafter, the updated current amplitude value cur is set as the envelope value env (i) of the input signal in (i) (step S25) and stored in the buffer (memory).
That is, env (i) = cur.
【0023】次いで、入力信号in(i)の平坦化を行
う。これは、入力信号in(i)をカレント振幅値cu
r(したがってエンベロープ値)で割算することで実現
する(ステップS27)。これにより、原理的には入力
信号in(i)は「1」となるが、実際にはカレント振
幅値curは正確なエンベロープの値を必ずしも表して
いないため「1」に近い値となる。なお、カレント振幅
値curが0と判定された場合には(ステップS2
6)、ステップS27の除算はできないので、この場合
にはステップS27を飛ばす。Next, the input signal in (i) is flattened. This means that the input signal in (i) is converted to the current amplitude value cu.
This is realized by dividing by r (therefore, the envelope value) (step S27). As a result, the input signal in (i) becomes "1" in principle, but actually the current amplitude value cur does not necessarily represent an accurate envelope value, and thus becomes a value close to "1". If the current amplitude value cur is determined to be 0 (step S2
6) Since division in step S27 cannot be performed, step S27 is skipped in this case.
【0024】次いで、入力信号in(i)の時間軸上の
位置を更新するために、カウンタiを一つインクリメン
トする(ステップS28)。すなわち、 i=i+1 とし、この更新したカウンタiがデータ長LENを超え
るまで、同じ処理を繰り返す(ステップS29)。これ
によりエンベロープ値格納用のバッファに1フレーズ分
の入力信号のエンベロープを格納することができる。Next, in order to update the position on the time axis of the input signal in (i), the counter i is incremented by one (step S28). That is, i = i + 1, and the same process is repeated until the updated counter i exceeds the data length LEN (step S29). Thereby, the envelope of the input signal for one phrase can be stored in the buffer for storing the envelope value.
【0025】ここで、図10は上述のエンベロープ検出
処理により入力信号の波形から抽出したエンベロープを
示すものであり、図11はエンベロープを抽出した後の
入力信号を、抽出したエンベロープで平坦化した信号の
波形を示す。FIG. 10 shows an envelope extracted from the waveform of the input signal by the above-described envelope detection processing. FIG. 11 shows a signal obtained by flattening the input signal after extracting the envelope with the extracted envelope. 3 shows the waveforms of FIG.
【0026】図4の分析処理のフローに戻り、このエン
ベロープ検出およびエンベロープの平坦化が終了したら
(ステップS1)、各種変数の初期化を行う。すなわ
ち、オクターブ数カウンタoctを「1」に、オクター
ブ内分割数カウンタmを「0」に、間引きカウンタdを
「0」に設定する(ステップS2)。すなわち、 oct=1 m=0 d=0 とする。Returning to the flow of the analysis process in FIG. 4, when this envelope detection and envelope flattening are completed (step S1), various variables are initialized. That is, the octave number counter oct is set to “1”, the in-octave division number counter m is set to “0”, and the thinning counter d is set to “0” (step S2). That is, oct = 1 m = 0 d = 0.
【0027】次いで、オクターブ数カウンタoctが
「1」か否かを判定し(ステップS3)、それによりダ
ウンサンプリングを行うか否かを決める。このダウンサ
ンプリングは、入力信号inをオクターブ単位で分割し
た各オクターブ帯域毎にサンプリング周波数fs を変化
させるものである。具体的には入力信号の低域成分に対
してはサンプリング周波数fs を低くするものである。
これにより処理データ量の削減などの効果を得ることが
できる。この実施例では、オクターブ数カウンタoct
が「1」を超えたら、ダウンサンプリングを行ってその
オクターブ番号(oct)のオクターブ帯域についてサ
ンプリング周波数を半分にする(ステップS4)。つま
り、図3において、第1オクターブについては元のサン
プリング周波数fsoを用いるが、第2オクターブ以降は
オクターブ数カウンタoctが増加する毎にサンプリン
グ周波数fs を半分にしていくことになる。このダウン
サンプリングの処理は、具体的には入力信号を遮断周波
数がπ/2の特性を持つ低域フィルタに通過させた後に
1サンプル間引きをすることで、サンプリングレートを
半分にするものである。Next, it is determined whether or not the octave number counter oct is "1" (step S3), thereby determining whether to perform downsampling. This downsampling changes the sampling frequency fs for each octave band obtained by dividing the input signal in in octave units. Specifically, the sampling frequency fs is lowered for the low frequency components of the input signal.
As a result, effects such as a reduction in the amount of processing data can be obtained. In this embodiment, the octave number counter oct
If the value exceeds “1”, downsampling is performed to halve the sampling frequency for the octave band of the octave number (oct) (step S4). That is, in FIG. 3, the original sampling frequency fso is used for the first octave, but after the second octave, the sampling frequency fs is halved every time the octave number counter oct increases. Specifically, the downsampling process reduces the sampling rate by half by thinning out one sample after passing the input signal through a low-pass filter having a cutoff frequency of π / 2.
【0028】次いで、ステップS5〜S13では、現在
のオクターブ帯域(オクターブ数カウンタoctで示さ
れるオクターブ帯域)をオクターブ内分割数Mで分割し
た複数のオクターブ内分割帯域について、間引き変数D
ECIで示される数(DECI−1)のサンプル値ずつ
入力信号のデータを間引きつつ(つまり、時間軸上で
(DECI−1)置きに入力信号のデータを取り出し
て)、回転とフィルタリング処理を施してその振幅成分
と周波数成分(ピッチ成分)に変換して、得たデータ
を、それぞれ対応する帯域のバンクメモリ(bank)
に保存するものである。Next, in steps S5 to S13, a thinning variable D is set for a plurality of sub-octave division bands obtained by dividing the current octave band (octave band indicated by the octave number counter oct) by the sub-octave division number M.
While thinning out the input signal data by the number (DECI-1) of sample values indicated by the ECI (that is, extracting the input signal data at every (DECI-1) on the time axis), the rotation and the filtering are performed. The obtained data is converted into its amplitude component and frequency component (pitch component), and the obtained data is stored in a corresponding bank memory (bank).
Is to be saved.
【0029】ここで、バンクメモリは各オクターブ帯域
の各オクターブ内分割帯域にそれぞれ対応して設けられ
ているものであり、第1オクターブのm=0のオクター
ブ内分割帯域に対応するバンクをバンク番号bank=
0として以下順に並んだオクターブ内分割帯域に対応し
てバンク番号が付けられるものであり、その最大数MA
X−BANKは、〔M*(MAX−OCT)−1〕とな
る。但し、MAC−OCTはオクターブ数octの最大
値である。Here, the bank memory is provided corresponding to each of the divided bands within each octave of each octave band, and the bank corresponding to the divided band within the first octave, m = 0, is designated by the bank number. bank =
Bank numbers are assigned to the subbands within the octave which are arranged in the following order as 0, and the maximum number MA
X-BANK is [M * (MAX-OCT) -1]. Note that MAC-OCT is the maximum value of the octave number oct.
【0030】まず、回転処理(ステップS5)では以下
の処理を行う。すなわち、入力信号に対して複素数e
-jA 、〔但し、A=π/2+(2m+1)π/4M〕、
をかけることにより、π/2+(m+1)π/2M〜π
/2+mπ/2Mの帯域を、−π/2M〜π/2Mに移
動させる。ここで、オクターブ内分割数カウンタmは0
〜(M−1)の値をとり、Mはオクターブ内分割数であ
り、ユーザが入力信号のタイプとして「メロディック」
または「リズミック」のいずれを選択するかでその値が
決まる。First, the following processing is performed in the rotation processing (step S5). That is, a complex number e for the input signal
-jA , where A = π / 2 + (2m + 1) π / 4M],
Π / 2 + (m + 1) π / 2M to π
The band of / 2 + mπ / 2M is shifted from -π / 2M to π / 2M. Here, the octave division number counter m is 0
~ (M-1), where M is the number of divisions within an octave, and the user inputs "Melodic"
The value is determined by selecting either “Rhythmic” or “Rhythmic”.
【0031】また、フィルタリング処理は、回転処理に
よって帯域をシフトさせた信号を低域通過フィルタに通
すことに実現する(ステップS5)。この低域通過フィ
ルタは、ユーザにより指定された入力信号のタイプが
「メロディック」であり、従ってオクターブ内分割数M
=8の時には、遮断周波数がπ/16で阻止利得が−5
0dBの低域通過フィルタが用いられる。一方、ユーザに
より指定された入力信号のタイプが「リズミック」であ
り、従ってオクターブ内分割数M=4の時には、遮断周
波数がπ/8で阻止利得が−100dBの低域通過フィル
タが用いられる。ここで、「メロディック」の遮断周波
数がπ/16で阻止利得が−50dBの低域通過フィルタ
は、そのタップ数が、「リズミック」の遮断周波数がπ
/8で阻止利得が−100dBの低域通過フィルタよりも
多くなっている関係にある。The filtering process is realized by passing a signal whose band has been shifted by the rotation process through a low-pass filter (step S5). This low-pass filter is such that the type of the input signal specified by the user is "melodic" and therefore the number of divisions within an octave M
= 8, the cutoff frequency is π / 16 and the stop gain is −5.
A 0 dB low pass filter is used. On the other hand, when the type of the input signal specified by the user is “rhythmic”, and therefore, when the number of divisions within an octave M = 4, a low-pass filter having a cutoff frequency of π / 8 and a stop gain of −100 dB is used. Here, the low-pass filter having a cutoff frequency of “melodyc” of π / 16 and a stop gain of −50 dB has a cutoff frequency of “rhythmic” of π.
/ 8, the rejection gain is larger than that of the low-pass filter of -100 dB.
【0032】このフィルタリング処理を行った入力信号
を振幅成分とピッチ成分に変換する(ステップS6)。
詳細には、回転・フィルタリング処理後の入力信号の実
部R(t)と虚部I(t)を、次式に従って振幅成分と
ピッチ成分に変換するものである。すなわち、入力信号
を R(t)+jI(t) とすると、振幅power(t)は、 power(t)=〔R(t)2 +I(t)2 〕1/2 で求める。一方、周波数成分であるピッチpitch
(t)は、 pitch(t)=[[I(t){R(t−1)−R
(t)}−R(t){I(t−1)−I(t)}]/
{R(t)2 +I(t)2 }+π/2+(2m+1)π
/4M]*2oct-1 で求める。The filtered input signal is converted into an amplitude component and a pitch component (step S6).
Specifically, the real part R (t) and the imaginary part I (t) of the input signal after the rotation and filtering processing are converted into an amplitude component and a pitch component according to the following equation. That is, assuming that the input signal is R (t) + jI (t), the amplitude power (t) is obtained by power (t) = [R (t) 2 + I (t) 2 ] 1/2 . On the other hand, pitch pitch which is a frequency component
(T) is: pitch (t) = [[I (t) {R (t−1) −R
(T) {-R (t) {I (t-1) -I (t)}] /
{R (t) 2 + I (t) 2 } + π / 2 + (2m + 1) π
/ 4M] * 2 Determined by oct-1 .
【0033】次いで、入力信号データの間引きをステッ
プS7〜S11で行う。これは、入力信号のサンブル値
を(DECI−1)個ずつ間引いて保存(つまり、(D
ECI−1)おきに一つずつ保存)するものであり、こ
れにより保存するデータの量を削減している。Next, thinning of the input signal data is performed in steps S7 to S11. This means that the sample values of the input signal are thinned out by (DECI-1) pieces and stored (that is, (DCI-1)).
(Each one is stored every ECI-1)), thereby reducing the amount of data to be stored.
【0034】まず、間引きカウンタdの値が「0」かを
判定し(ステップS7)、「0」であれば、ステップS
6で求めた振幅power(t)とピッチpitch
(t)をデータとして現在の泰一に該当するバンク(b
ank)に格納する(ステップS8)。「0」でなけれ
ば、間引きカウンタdの値を一つインクリメントし(ス
テップS9)、その間引きカウンタdが(間引き数DE
CI−1)に達したかを判定し(ステップS10)、達
していれば、間引きカウンタdを「0」にクリアする
(ステップS11)。(DECI−1)に達していなけ
れば、オクターブ内分割数カウンタmを一つ更新し(ス
テップS12)、このオクターブ内分割数カウンタmが
オクターブ内分割数Mに達するまで(ステップS1
3)、ステップS5からステップS12までの処理を繰
り返す。これにより、各オクターブ内分割帯域について
入力信号データが時間軸上で(DECI−1)個ずつ間
引かれて、それぞれの帯域に対応するバンクに格納され
ることになる。First, it is determined whether the value of the thinning counter d is "0" (step S7).
Amplitude power (t) and pitch pitch obtained in 6
The bank (b) corresponding to the current Taiichi using (t) as data
ank) (step S8). If it is not "0", the value of the thinning counter d is incremented by one (step S9), and the thinning counter d is set to (the thinning number DE
It is determined whether or not CI-1) has been reached (step S10). If it has reached, the thinning counter d is cleared to "0" (step S11). If (DECI-1) has not been reached, the intra-octave division number counter m is updated by one (step S12), and until the intra-octave division number counter m reaches the intra-octave division number M (step S1).
3) The processing from step S5 to step S12 is repeated. As a result, (DECI-1) input signal data are thinned out on the time axis for each divided band within an octave, and stored in the bank corresponding to each band.
【0035】オクターブ内の分割数Mだけ処理を終えた
ならば(ステップS13)、次には、オクターブ数カウ
ンタoctを一つ更新するとともに、オクターブ内分割
数カウンタmを「0」にクリアして(ステップS1
4)、オクターブ数カウンタoctがオクターブ数MA
X−OCT(ユーザが任意に指定可能であり、本実施例
では10)に達するまで(ステップS15)、上述のス
テップS3〜S14を繰り返し、指定分のオクターブ数
MAC−OCTの数だけ処理を終了したら、本フローを
終える。When the process is completed for the number of divisions M in the octave (step S13), the octave number counter oct is updated by one, and the in-octave division number counter m is cleared to "0". (Step S1
4), octave number counter oct is octave number MA
Until X-OCT (which can be arbitrarily designated by the user, 10 in this embodiment) (step S15), the above-described steps S3 to S14 are repeated, and the processing is completed by the number of octaves MAC-OCT for the designated number. Then, this flow is finished.
【0036】次に、上述の分析処理で帯域分割した各信
号を再合成する処理を図7および図8のフローチャート
を参照して説明する。この図7および図8のフローチャ
ートは再合成処理の手順を示すものであり、この再合成
処理は、概略的に述べると、各帯域毎に分割した信号に
ついて、その振幅成分とピッチ成分の時間軸を、ユーザ
が指定した量だけタイムストレッチ(圧縮/伸長)した
うえで、それら全部を足し合わすことで再合成し、さら
にその再合成した信号(平坦化した信号)に、先の分析
処理で抽出したエンベロープを上記同様ユーザが指定し
た量だけタイムストレッチして施して(すなわち復元し
て)、元の入力信号の時間軸をタイムストレッチした出
力信号を生成するものである。Next, a process of recombining the signals divided into bands in the above-described analysis process will be described with reference to the flowcharts of FIGS. The flowcharts of FIGS. 7 and 8 show the procedure of the re-synthesizing process. In the re-synthesizing process, the time axis of the amplitude component and the pitch component of the signal divided for each band is roughly described. Is time-stretched (compressed / decompressed) by the amount specified by the user, and then re-combined by adding them together, and further extracted into the re-combined signal (flattened signal) by the previous analysis processing. As described above, the envelope is time-stretched by an amount designated by the user (that is, restored), and an output signal is generated by time-stretching the time axis of the original input signal.
【0037】合成処理が開始されると、まずバンク番号
カウンタbankを「0」にクリアする(ステップS3
0)。次いで、サンプリング比rateを、rate=
その帯域のサンプリング周波数fs /システムのサンプ
リング周波数fsoにより求める(ステップS31)。こ
こで、上記「その帯域のサンプリング周波数fs 」はダ
ウンサンプリングがされているときにはそのダウンサン
プリングされたサンプリング周波数fs である。When the synthesizing process is started, first, the bank number counter bank is cleared to "0" (step S3).
0). Then, the sampling ratio rate is set as rate =
The sampling frequency fs of the band / the sampling frequency fso of the system is obtained (step S31). Here, the "sampling frequency fs of the band" is the downsampled sampling frequency fs when downsampling is performed.
【0038】次いで、データカウンタcntを「0」に
クリアする(ステップS32)。次いで、タイムストレ
ッチした出力信号(つまり最終的に得られる出力信号)
の時間軸上の位置を示す変数ptrにダウンサンプリン
グおよび帯域通過処理によって発生した群遅延の量を入
れる(ステップS33)。Next, the data counter cnt is cleared to "0" (step S32). Next, the time-stretched output signal (that is, the finally obtained output signal)
The amount of group delay generated by the downsampling and band-pass processing is put into a variable ptr indicating the position on the time axis of (step S33).
【0039】さらに、周波数変調に使うpcos 、psin
に初期値を入れる(ステップS34)。すなわち、 pcos =pc=cos (pitch〔bank〕Further, pcos and psin used for frequency modulation are used.
Is set to the initial value (step S34). That is, pcos = pc = cos (pitch [bank]
〔0〕) psin =ps=sin (pitch〔bank〕[0]) psin = ps = sin (pitch [bank]
〔0〕) とする。なおここで、pitch〔bank〕〔n〕の
表示は、バンク番号bankのバンクメモリに格納され
ている時系列のピッチデータのうちから時間番号がn番
目のデータを読み出すことを意味する。振幅データpo
wer〔bank〕〔n〕についても同様である。[0]). Here, the display of "pitch [bank] [n]" means that the data of the time number n is read out of the time-series pitch data stored in the bank memory of the bank number bank. Amplitude data po
The same applies to wer [bank] [n].
【0040】次いで、変数ptrの整数部を整数部n
に、また変数ptrの小数部を小数部xにそれぞれ入れ
る(ステップS35)。Next, the integer part of the variable ptr is changed to an integer part n.
And the decimal part of the variable ptr is entered in the decimal part x (step S35).
【0041】この後、変数ptrの現在の値に応じて信
号の時間軸をタイムストレッチするために、まず、ステ
ップS36〜S40でデータの補間、補外などの処理を
行う。すなわち、変数ptrの整数部nが「0」より大
きいかを調べ(ステップS36)、「0」以下であれ
ば、振幅ワークバッファpwに「0」、周波数ワークバ
ッファptに「0」をそれぞれ入れる(ステップS3
7)。一方、整数部nが「0」よりも大きければ、その
整数部nがデータ長LENを超えていないかを調べる
(ステップS38)。超えていなければデータを直線補
間する処理を行い(ステップS39)、データ長LEN
に達していればデータを直線補外する処理を行う(ステ
ップS40)。Thereafter, in order to time-stretch the time axis of the signal according to the current value of the variable ptr, processing such as data interpolation and extrapolation is first performed in steps S36 to S40. That is, it is checked whether or not the integer part n of the variable ptr is greater than “0” (step S36). If it is “0” or less, “0” is entered into the amplitude work buffer pw and “0” is entered into the frequency work buffer pt. (Step S3
7). On the other hand, if the integer part n is larger than "0", it is checked whether or not the integer part n exceeds the data length LEN (step S38). If not exceeded, a process of linearly interpolating the data is performed (step S39), and the data length LEN
Is reached, a process of extrapolating the data to a straight line is performed (step S40).
【0042】ここで、ステップS39のデータの直線補
間処理は、左右のデータ〔(n+1)点目とn点目のデ
ータ〕からその間のデータを生成して補う処理であり、
具体的には、次の計算式 pw=(power〔bank〕〔n+1〕−powe
r〔bank〕〔n〕)×x+power〔bank〕
〔n〕) pt=(pitch〔bank〕〔n+1〕−pitc
h〔bank〕〔n〕)×x+pitch〔bank〕
〔n〕) により求める。Here, the linear interpolation process of the data in step S39 is a process of generating and supplementing data between the left and right data [data of the (n + 1) th point and the nth point].
Specifically, the following formula: pw = (power [bank] [n + 1] -power
r [bank] [n]) × x + power [bank]
[N]) pt = (pitch [bank] [n + 1] -picc
h [bank] [n]) × x + pitch [bank]
[N]).
【0043】また、ステップS40のデータの直線補外
処理は、データ長LENの端側にあるデータ(最後のデ
ータと最後から2番目のデータ)に基づいてそのデータ
長LENよりも更に外側のデータを予測して補う処理で
あり、具体的には、次の計算式 pw=(power〔bank〕〔LEN−1〕−po
wer〔bank〕〔LEN−2〕)*x+power
〔bank〕〔LEN−2〕) pt=(pitch〔bank〕〔LEN−1〕−pi
tch〔bank〕〔LEN−2〕)*x+pitch
〔bank〕〔LEN−2〕) により求める。The linear extrapolation of the data in step S40 is based on the data (the last data and the second-to-last data) at the end of the data length LEN. Is predicted and compensated for. Specifically, the following calculation formula pw = (power [bank] [LEN-1] -po
wer [bank] [LEN-2]) * x + power
[Bank] [LEN-2]) pt = (pitch [bank] [LEN-1] -pi
tch [bank] [LEN-2]) * x + pitch
[Bank] [LEN-2]).
【0044】次いで、周波数ワークバッファptにピッ
チ変化指示量pRateをかける処理、すなわち pt=pt*pRate を行う(ステップS41)。このピッチ変化指示量pR
ateは、ユーザがピッチ変化させたい大きさに応じて
指示するものであり、ピッチシフト比とも称する。例え
ばこのピッチ変化指示量pRateが「1.0」であれ
ばピッチはそのまま、「2.0」であれば2倍の周波数
つまり1オクターブ上で再生される。これにより、入力
信号のピッチをテンポ(すなわちタイムストレッチ)と
は独立して変化させることができる。Next, a process of multiplying the frequency work buffer pt by the pitch change instruction amount pRate, that is, pt = pt * pRate is performed (step S41). This pitch change instruction amount pR
"ate" is instructed by the user according to the size of the pitch to be changed, and is also referred to as a pitch shift ratio. For example, if the pitch change instruction amount pRate is "1.0", the pitch is reproduced as it is, and if the pitch change instruction amount is "2.0", the reproduction is performed at twice the frequency, that is, one octave higher. As a result, the pitch of the input signal can be changed independently of the tempo (ie, time stretch).
【0045】さらに、変数ptrをタイム変化指示量t
Rateの逆数だけ進める処理、すなわち、 ptr=ptr+rate/tRate を行う(ステップS42)。このタイム変化指示量tR
ateは、ユーザがテンポ変化(すなわちタイムストレ
ッチ)させたい大きさに応じて指示するものであり、タ
イムストレッチ比とも称する。例えばこのタイム変化指
示量tRateが「1.0」であれば再生時間(テン
ポ)はそのまま、「2.0」であれば再生時間が2倍に
なる。Further, the variable ptr is set to the time change instruction amount t.
The process proceeds by the reciprocal of Rate, that is, ptr = ptr + rate / tRate is performed (step S42). This time change instruction amount tR
"ate" is instructed according to the size that the user wants to change the tempo (that is, time stretch), and is also referred to as a time stretch ratio. For example, if the time change instruction amount tRate is "1.0", the reproduction time (tempo) is unchanged, and if it is "2.0", the reproduction time is doubled.
【0046】ここで、上式中のサンプリング比rate
はステップS31で求めた「その帯域のサンプリング周
波数fs とシステムのサンプリング周波数fsoとの比」
であり、よって、入力信号の分析処理においてダウンサ
ンプリングを行った帯域については、ダウンサンプリン
グにより間引かれたデータ数(サンプル値数)が上式に
より元のサンプリング数(よってサンプリング周波数f
so)に戻されることになる。Here, the sampling ratio rate in the above equation
Is the "ratio between the sampling frequency fs of the band and the sampling frequency fso of the system" obtained in step S31.
Therefore, for a band on which downsampling has been performed in the input signal analysis processing, the number of data (the number of sample values) thinned out by downsampling is calculated by the above equation using the original sampling number (and thus the sampling frequency f
so).
【0047】この後、新しいpcとpsを、 pc=pcos *cos (pt)−psin *sin (pt) ps=psin *cos (pt)+pcos *sin (pt) により求め(ステップS43)、さらにpcos とpsin
を pcos =pc psin =ps により更新する(ステップS44)。Thereafter, new pc and ps are obtained by the following equation: pc = pcos * cos (pt) -psin * sin (pt) ps = psin * cos (pt) + pcos * sin (pt) (step S43). And psin
Is updated by pcos = pcpsin = ps (step S44).
【0048】この後、合成データバッファout(cn
t)に今のバンクのデータを次式out(cnt)=o
ut(cnt)+pw*pcに従って加える(ステップ
S45)。そして、データカウンタcntを一つインク
リメントし(ステップS46)、その更新したデータカ
ウンタcntが(LEN*tRate)を超えたか否か
を調べる(ステップS47)。(LEN*tRate)
を超えていなければ、ステップS35〜S46の処理
を、cnt≧(LEN*tRate)となるまで繰り返
す。データカウンタcntが(LEN/tRate)以
上となったら、次にはバンク番号カウンタbankを一
つインクリメントし(ステップS48)、そのバンク番
号カウンタbankがバンク数MAX−BANKを超え
たか否かを調べ(ステップS49)、MAX−BANK
を超えていなければ、ステップS35〜S48の処理
を、bank≧MAX−BANKとなるまで繰り返す。
この処理を繰り返すことで、合成データバッファout
(cnt)には、各帯域の信号を合計した合成信号を得
ることができる。Thereafter, the synthesized data buffer out (cn
At t), the data of the current bank is expressed by the following expression out (cnt) = o
Add according to ut (cnt) + pw * pc (step S45). Then, the data counter cnt is incremented by one (step S46), and it is checked whether or not the updated data counter cnt has exceeded (LEN * tRate) (step S47). (LEN * tRate)
If not, the processing of steps S35 to S46 is repeated until cnt ≧ (LEN * tRate). When the data counter cnt becomes equal to or more than (LEN / tRate), next, the bank number counter bank is incremented by one (step S48), and it is checked whether or not the bank number counter bank exceeds the number of banks MAX-BANK (step S48). Step S49), MAX-BANK
If not, the processing of steps S35 to S48 is repeated until bank ≧ MAX-BANK.
By repeating this process, the synthesized data buffer out
At (cnt), a combined signal obtained by summing the signals of the respective bands can be obtained.
【0049】最後に、エンベロープの復元処理を行う
(ステップS50)。図9にはこのエンベロープの復元
処理の詳細な手順が示される。このエンベロープの復元
処理では、入力信号の分析処理で抽出し保存しておいた
エンベロープを、再合成処理で入力信号の時間軸を圧縮
/伸張した量だけ同様に時間軸を圧縮/伸長し、そのエ
ンベロープを再合成処理で合成した合成信号に施すこと
で、元の入力信号の時間軸を圧縮/伸長するものであ
る。Finally, an envelope restoration process is performed (step S50). FIG. 9 shows a detailed procedure of this envelope restoration processing. In this envelope restoration process, the envelope extracted and stored in the input signal analysis process is compressed / expanded by the same amount by compressing / expanding the time axis of the input signal in the re-synthesis process. By applying the envelope to the synthesized signal synthesized by the re-synthesis processing, the time axis of the original input signal is compressed / expanded.
【0050】まず、データカウンタcntを「0」、変
数ptrを「0」にそれぞれクリアする(ステップS5
1)。次いで、変数ptrの整数部を整数部nに、小数
部を小数部xに入れる(ステップS52)。First, the data counter cnt is cleared to "0" and the variable ptr is cleared to "0", respectively (step S5).
1). Next, the integer part of the variable ptr is put into the integer part n, and the decimal part is put into the decimal part x (step S52).
【0051】この後、分析処理で抽出したエンベロープ
の時間軸を変数ptrの現在値に応じてタイムストレッ
チするために、まず、ステップS53〜S57でエンベ
ロープのデータの補間、補外などの処理を行う。すなわ
ち、変数ptrの整数部nが「0」より大きいかを調べ
(ステップS53)、「0」以下であれば、ワークバッ
ファworkに「0」を入れる(ステップS54)。一
方、整数部nが「0」よりも大きければ、その整数部n
がデータ長LENを超えていないかを調べる(ステップ
S55)。超えていなければエンベロープのデータを直
線補間する処理を行い(ステップS56)、データ長L
ENに達していればエンベロープのデータを直線補外す
る処理を行う(ステップS57)。Thereafter, in order to time-stretch the time axis of the envelope extracted in the analysis processing according to the current value of the variable ptr, first, processing such as interpolation and extrapolation of envelope data is performed in steps S53 to S57. . That is, it is checked whether the integer part n of the variable ptr is greater than “0” (step S53), and if it is “0” or less, “0” is entered into the work buffer work (step S54). On the other hand, if the integer part n is larger than “0”, the integer part n
Is checked to see if it exceeds the data length LEN (step S55). If not, processing for linearly interpolating the envelope data is performed (step S56), and the data length L
If it has reached EN, a process of extrapolating the envelope data to a straight line is performed (step S57).
【0052】ここで、ステップS56のエンベロープの
データの直線補間処理は、左右のエンベロープのデータ
〔(n+1)点目とn点目のデータ〕からその間のデー
タを生成して補う処理であり、具体的には、次の計算式 work=(env〔n+1〕−env〔n〕)×x+
env〔n〕) によりエンベロープ値env(ptr)を求める。Here, the linear interpolation process of the envelope data in step S56 is a process of generating and compensating for data between the left and right envelope data [data of the (n + 1) th point and the nth point]. Specifically, the following calculation formula work = (env [n + 1] −env [n]) × x +
env [n]) to determine an envelope value env (ptr).
【0053】また、ステップS57のエンベロープのデ
ータの直線補外処理は、データ長LENの端側にあるデ
ータ(最後のデータと最後から2番目のデータ)に基づ
いてそのデータ長LENよりも更に外側のデータを予測
して補う処理であり、具体的には、次の計算式 work=(env〔LEN−1〕−env〔LEN−
2〕)*x+env〔LEN−2〕) によりエンベロープ値env(ptr)を求める。The linear extrapolation of the envelope data in step S57 is based on the data at the end of the data length LEN (the last data and the second-to-last data), and further outside the data length LEN. Is a process of predicting and compensating for the data of the following equation. Specifically, the following calculation formula work = (env [LEN-1] -env [LEN-
2]) * x + env [LEN-2]) to determine the envelope value env (ptr).
【0054】次いで、変数ptrをタイム変化指示量t
Rateの逆数だけ進める処理、すなわち、 ptr=ptr+1/tRate を行う(ステップS58)。Next, the variable ptr is set to the time change instruction amount t.
A process of proceeding by the reciprocal of Rate, that is, ptr = ptr + 1 / tRate is performed (step S58).
【0055】この後、合成データバッファout(cn
t)の合成信号(平坦化された信号)に、タイムストレ
ッチされた上記のエンベロープ値を次式 out(cnt)=out(cnt)*work でかけ(ステップS59)、合成信号にエンベロープを
施す。Thereafter, the synthesized data buffer out (cn
The time-stretched envelope value is multiplied by the following expression out (cnt) = out (cnt) * work to the composite signal (flattened signal) of (t) (step S59), and the composite signal is enveloped.
【0056】そして、データカウンタcntを一つイン
クリメントし(ステップS60)、その更新したデータ
カウンタcntが(LEN*tRate)を超えたか否
かを調べる(ステップS61)。(LEN*tRat
e)を超えていなければ、ステップS52〜S60の処
理を、cnt≧(LEN*tRate)となるまで繰り
返す。データカウンタcntが(LEN*tRate)
以上となったら、エンベロープ復元処理を終了する。図
10にはこのようにしてタイムストレッチしたエンベロ
ープを用いて復元された出力信号の波形が示される。Then, the data counter cnt is incremented by one (step S60), and it is checked whether or not the updated data counter cnt has exceeded (LEN * tRate) (step S61). (LEN * tRat
If e) is not exceeded, the processing of steps S52 to S60 is repeated until cnt ≧ (LEN * tRate). Data counter cnt is (LEN * tRate)
When this is the case, the envelope restoration processing ends. FIG. 10 shows the waveform of the output signal restored using the envelope that has been time-stretched in this way.
【0057】本発明の実施にあたっては種々の変形形態
が可能である。例えば上述の実施例では、分析処理にお
いて入力信号の波形のエンベロープを抽出し、エンベロ
ープ抽出後の入力信号を平坦化して、入力信号が急峻な
波形によることの悪影響を受けないようにした後に、帯
域分割・フィルタリング処理を施し、再合成後に、予め
抽出しておいたエンベロープを付け直すようにしている
が、これはより好ましい実施例であって本発明にとって
必須な要件ではなく、このようなエンベロープ抽出・再
付加の処理を行わずに入力信号をそのまま帯域分割・フ
ィルタリング処理するものであっても勿論よい。In carrying out the present invention, various modifications are possible. For example, in the above-described embodiment, in the analysis process, the envelope of the waveform of the input signal is extracted, and the input signal after the envelope extraction is flattened so that the input signal is not adversely affected by the steep waveform. A division / filtering process is performed, and after re-synthesis, a pre-extracted envelope is re-attached. However, this is a more preferable embodiment and is not an essential requirement of the present invention. It is needless to say that the input signal may be subjected to band division and filtering processing without performing re-addition processing.
【0058】また、例えば上述の実施例では、入力信号
の帯域をまずオクターブ単位で分割し、さらにそのオク
ターブ帯域内を等間隔で分割しているが、各オクターブ
帯域内の分割も等間隔ではなくセント軸で行ってもよ
い。In the above-described embodiment, for example, the band of the input signal is first divided in octave units, and the octave band is divided at regular intervals. However, the division within each octave band is not regular. It may be performed on a cent axis.
【0059】また複素BPF(帯域フィルタ)の実現方
法として入力信号に複素変調を施したが、分析フィルタ
のほうに予め複素変調を施しておき、それを用いて分析
を行うようにしてもよいし、(fs /2)以上の折返し
が発生しないようにしてフィルタを設計したものを使用
してもよい。Although the input signal is subjected to complex modulation as a method of realizing a complex BPF (band filter), the analysis filter may be subjected to complex modulation in advance, and analysis may be performed using the complex modulation. , (Fs / 2) or more may be used in which a filter is designed so as not to generate aliasing.
【0060】また、本実施例で使用しているフィルタ
は、全て最小位相形FIRフィルタを用いているが、直
線位相FIRフィルタ若しくは直線位相IIRフィルタ
を用いるものであってもよい。The filters used in this embodiment all use the minimum phase type FIR filter, but may use a linear phase FIR filter or a linear phase IIR filter.
【0061】また、実部と虚部からピッチに変換する部
分を、前述の実施例における方法の他に、ピッチpit
ch(t)はtan -1〔I(t)/R(t)〕で求めた位
相から前データをで求めた位相〔pitch(t−
1)〕を引いて求めるものであってもよいし、あるい
は、 tan -1〔{R(t−1)*I(t)−I(t−1)*R
(t)}/{R(t−1)*R(t)−I(t−1)*
I(t)}〕 で求めるものであってもよい。The part for converting the real part and the imaginary part into the pitch is replaced by the pitch pit in addition to the method in the above-described embodiment.
ch (t) is the phase [pitch (t−) obtained from the previous data from the phase obtained from tan −1 [I (t) / R (t)].
1)] or tan -1 [{R (t-1) * I (t) -I (t-1) * R
(T)} / {R (t-1) * R (t) -I (t-1) *
I (t)}].
【0062】また、この部分とそれ以外の部分とに訳、
複数のCPUまたはDSPによって並列処理するように
してもよい。In addition, the translation into this part and other parts
Parallel processing may be performed by a plurality of CPUs or DSPs.
【0063】また、合成部分について実施例では余弦値
を用いているが、これは正弦値でもよい。また、積分と
発振を同時に行っているが、単にピッチを積分してから
その位相値によって余弦もしくは正弦を求めてもよい。Although a cosine value is used in the embodiment for the combining portion, it may be a sine value. Although the integration and the oscillation are performed simultaneously, the cosine or the sine may be obtained by simply integrating the pitch and then using the phase value.
【0064】[0064]
【発明の効果】以上に説明したように、本発明によれ
ば、ユーザ等があらかじめ信号のタイプ(態様)を指示
し、それに応じて帯域の分割数と分析に使用するフィル
タの特性を変更することで、その信号に適した形でタイ
ムストレッチができるようになる。これにより、リズム
系やメロディ系などのような楽音の種々のタイプに対し
ても、音楽性を損なうことなく入力信号のタイムストレ
ッチを行うことが可能となる。As described above, according to the present invention, a user or the like instructs a signal type (aspect) in advance, and changes the number of band divisions and the characteristics of a filter used for analysis according to the instruction. Thus, time stretching can be performed in a form suitable for the signal. As a result, it is possible to perform time stretching of an input signal for various types of musical sounds such as a rhythm system and a melody system without impairing musicality.
【図1】本発明に係る一実施例としてのタイムストレッ
チ装置の構成を示す図である。FIG. 1 is a diagram showing a configuration of a time stretching device as one embodiment according to the present invention.
【図2】実施例装置の表示器における入力信号のタイプ
設定画面の例を示す図である。FIG. 2 is a diagram illustrating an example of an input signal type setting screen on a display device of the embodiment device.
【図3】実施例装置における帯域分割の概念を説明する
ための図である。FIG. 3 is a diagram for explaining the concept of band division in the apparatus according to the embodiment.
【図4】実施例装置における分析処理の処理手順を示す
フローチャート(1/2)である。FIG. 4 is a flowchart (1/2) showing a processing procedure of an analysis process in the apparatus of the embodiment.
【図5】実施例装置における分析処理の処理手順を示す
フローチャート(2/2)である。FIG. 5 is a flowchart (2/2) showing a processing procedure of an analysis process in the apparatus of the embodiment.
【図6】実施例装置における分析処理フロー中のエンベ
ロープ検出処理の詳細な処理手順を示すフローチャート
である。FIG. 6 is a flowchart illustrating a detailed processing procedure of an envelope detection process in an analysis process flow in the example apparatus.
【図7】実施例装置における再合成処理の処理手順を示
すフローチャート(1/2)である。FIG. 7 is a flowchart (1/2) illustrating a processing procedure of a re-synthesis process in the apparatus of the embodiment.
【図8】実施例装置における再合成処理の処理手順を示
すフローチャート(2/2)である。FIG. 8 is a flowchart (2/2) showing a processing procedure of a re-synthesis process in the apparatus of the embodiment.
【図9】実施例装置における再合成フロー中のエンベロ
ープ復元処理の詳細な処理手順を示すフローチャートで
ある。FIG. 9 is a flowchart illustrating a detailed processing procedure of an envelope restoring process in a re-synthesis flow in the embodiment device.
【図10】実施例装置のエンベロープ検出処理により入
力信号波形から検出したエンベロープを示す図である。FIG. 10 is a diagram illustrating an envelope detected from an input signal waveform by an envelope detection process of the embodiment device.
【図11】実施例装置の平坦化処理により入力信号信号
のエンベロープを平坦化した信号波形を示す図である。FIG. 11 is a diagram illustrating a signal waveform in which an envelope of an input signal signal is flattened by a flattening process of the apparatus according to the embodiment.
【図12】実施例装置のエンベロープ復元処理によりエ
ンベロープが復元された出力信号を示す図である。FIG. 12 is a diagram illustrating an output signal whose envelope has been restored by the envelope restoring process of the example device.
【図13】帯域分割と再合成によりタイムストレッチを
行う従来装置の構成例を示す図である。FIG. 13 is a diagram illustrating a configuration example of a conventional device that performs time stretching by band division and recombining.
【図14】帯域分割と再合成によりタイムストレッチを
行う従来装置における帯域分割の概念を説明する図であ
る。FIG. 14 is a diagram illustrating the concept of band division in a conventional device that performs time stretching by band division and recombining.
【図15】帯域分割と再合成によりタイムストレッチを
行う従来装置において分割した帯域のタイムストレッチ
の仕方を説明する図である。FIG. 15 is a diagram illustrating a method of time stretching a divided band in a conventional device that performs time stretching by band division and re-synthesis.
1 CPU(中央処理装置) 2 ROM(リード・オンリー・メモリ) 3 RAM(ランダム・アクセス・メモリ) 4 操作子群 5 表示器 6 ハードディスク駆動装置 7 CD−ROM駆動装置 8 A/D変換器 9 D/A変換器 Reference Signs List 1 CPU (central processing unit) 2 ROM (read only memory) 3 RAM (random access memory) 4 operator group 5 display 6 hard disk drive 7 CD-ROM drive 8 A / D converter 9 D / A converter
Claims (1)
する指示手段と、 入力信号のタイプを指示するタイプ指示手段と、 入力信号をフィルタを用いて複数の帯域に分割し各帯域
の信号を振幅成分と周波数成分に変換してその時間変化
の速度を該指示手段で指示した指示量に基づき変えた後
に再合成することで入力信号をタイムストレッチするタ
イムストレッチ手段と、 該タイムストレッチ手段での帯域の分割数と該フィルタ
の使用する特性を該タイプ指示手段で指示した入力信号
のタイプに応じて変更する変更手段とを備えたタイムス
トレッチ装置。An input means for indicating an amount of time stretching of an input signal, a type indicating means for indicating a type of the input signal, an input signal is divided into a plurality of bands by using a filter, and a signal of each band is amplitude-modulated. Time-stretching means for converting the time-varying rate into a component and a frequency component based on the indicated amount indicated by the indicating means and re-synthesizing the input signal to time-stretch the input signal; And a changing means for changing the number of divisions and the characteristics used by the filter in accordance with the type of the input signal specified by the type indicating means.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16693398A JP3945795B2 (en) | 1998-06-15 | 1998-06-15 | Time stretch device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16693398A JP3945795B2 (en) | 1998-06-15 | 1998-06-15 | Time stretch device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000003178A true JP2000003178A (en) | 2000-01-07 |
JP3945795B2 JP3945795B2 (en) | 2007-07-18 |
Family
ID=15840357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16693398A Expired - Fee Related JP3945795B2 (en) | 1998-06-15 | 1998-06-15 | Time stretch device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3945795B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7977563B2 (en) | 2008-01-15 | 2011-07-12 | Teac Corporation | Overdubbing device |
US8173885B2 (en) | 2008-01-15 | 2012-05-08 | Teac Corporation | Enhanced recording operation in an overdubbing device |
-
1998
- 1998-06-15 JP JP16693398A patent/JP3945795B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7977563B2 (en) | 2008-01-15 | 2011-07-12 | Teac Corporation | Overdubbing device |
US8173885B2 (en) | 2008-01-15 | 2012-05-08 | Teac Corporation | Enhanced recording operation in an overdubbing device |
Also Published As
Publication number | Publication date |
---|---|
JP3945795B2 (en) | 2007-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5130809B2 (en) | Apparatus and program for producing music | |
JP2001500635A (en) | Wavetable synthesizer and operation method using variable sampling rate approximation | |
US6721711B1 (en) | Audio waveform reproduction apparatus | |
JP2002515135A (en) | Period-forced filters for pre-processing acoustic samples used in wavetable synthesizers | |
JP2000322099A (en) | Time base companding method and device for audio signal | |
JPH09185392A (en) | Interval converting device | |
JP3945795B2 (en) | Time stretch device | |
JP3945794B2 (en) | Time stretch device | |
JP2001255876A (en) | Method for expanding and compressing musical sound waveform signal in time base direction | |
US5185491A (en) | Method for processing a waveform | |
JP3037861B2 (en) | Waveform forming device and electronic musical instrument using the output waveform | |
JPS61120183A (en) | Musical sound analyzer | |
JP4245114B2 (en) | Tone control device | |
JPH05127668A (en) | Automatic transcription device | |
JP2011090189A (en) | Method and device for encoding acoustic signal | |
JP3538908B2 (en) | Electronic musical instrument | |
JP2008096844A (en) | Automatic music transcription device and method | |
JP3029056B2 (en) | Electronic musical instrument | |
JPH11143460A (en) | Method for separating, extracting by separating, and removing by separating melody included in musical performance | |
JP2947130B2 (en) | Waveform data processing device | |
JP2532613B2 (en) | Music synthesizer | |
JP2001265400A (en) | Pitch converting device and pitch converting method | |
JP5609280B2 (en) | Method and apparatus for encoding acoustic signal | |
JP2990897B2 (en) | Sound source device | |
JP3802293B2 (en) | Musical sound processing apparatus and musical sound processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050427 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050614 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070322 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070403 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070409 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110420 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110420 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120420 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120420 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130420 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140420 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |