JP4554629B2 - Waveform generator, synthesizer for sound source - Google Patents
Waveform generator, synthesizer for sound source Download PDFInfo
- Publication number
- JP4554629B2 JP4554629B2 JP2007057740A JP2007057740A JP4554629B2 JP 4554629 B2 JP4554629 B2 JP 4554629B2 JP 2007057740 A JP2007057740 A JP 2007057740A JP 2007057740 A JP2007057740 A JP 2007057740A JP 4554629 B2 JP4554629 B2 JP 4554629B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- pos
- waveform
- block
- data
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
本発明は、波形メモリに記憶されている波形データを読み出して所定の波形を生成する波形生成装置、およびそれを用いた音源用シンセサイザに関するものである。 The present invention relates to a waveform generation apparatus that reads waveform data stored in a waveform memory and generates a predetermined waveform, and a sound source synthesizer using the waveform generation apparatus.
一般に、音源用シンセサイザは、楽器の音をサンプリングして得られる波形データを記憶した波形メモリを備え、この波形メモリから読み出した波形データに対して所定の処理を行い、楽音を出力するように構成されている。波形データはデジタル値で表現されるが、波をデジタル表現する変調方式として代表的なものにPCM(Pulse Code Modulation)方式がある。PCM方式では、それぞれの時刻における波の高さが数値で表現される。このようなデジタル値で表現された波は、数学的手法によって波長の変換が可能である。波長変換は、楽音の音程を上げたり下げたりする場合に必要となる処理である。 Generally, a sound source synthesizer has a waveform memory that stores waveform data obtained by sampling the sound of a musical instrument, and is configured to perform predetermined processing on the waveform data read from the waveform memory and output a musical sound. Has been. Waveform data is expressed as a digital value, and a typical modulation method for digitally expressing a wave is a PCM (Pulse Code Modulation) method. In the PCM method, the wave height at each time is expressed by a numerical value. Waves represented by such digital values can be converted in wavelength by a mathematical method. Wavelength conversion is a process required when raising or lowering the pitch of a musical sound.
図10は、PCM方式により変調された波形を示す図であり、W1は波形メモリに記憶されているPCM波形、W2はW1を波長変換した場合のPCM波形である。W1の波長λに対して、W2の波長はλ×n(n倍)に変換されている。なお、ここでは便宜上、PCM波形W1,W2を連続波として描いてあるが、実際のPCM波形W1,W2はもちろん連続波ではなく、所定時間間隔でサンプリングされた離散的な信号となる。 FIG. 10 is a diagram showing a waveform modulated by the PCM method, where W1 is a PCM waveform stored in the waveform memory, and W2 is a PCM waveform when W1 is wavelength-converted. The wavelength of W2 is converted to λ × n (n times) with respect to the wavelength λ of W1. Here, for convenience, the PCM waveforms W1 and W2 are drawn as continuous waves, but the actual PCM waveforms W1 and W2 are not continuous waves, but are discrete signals sampled at predetermined time intervals.
このような波長変換を行うための代表的な手法として、もとの波形のサンプリング時間間隔を1/nにしてサンプル値を読み出す方法がある。この場合、サンプリングのタイミングによっては、サンプル値が波形メモリに存在しないことがあるので、サンプル総数が少なくなって波形の誤差が大きくなる。このため、補間処理によって仮想的なサンプル値を生成する必要がある。後掲の特許文献1には、このような補間処理の機能を備えた楽音生成装置が記載されている。 As a typical method for performing such wavelength conversion, there is a method of reading a sample value by setting the sampling time interval of the original waveform to 1 / n. In this case, depending on the sampling timing, the sample value may not exist in the waveform memory, so the total number of samples decreases and the waveform error increases. For this reason, it is necessary to generate a virtual sample value by interpolation processing. Japanese Patent Application Laid-Open No. 2004-133620 describes a musical tone generating apparatus having such an interpolation processing function.
補間の手法として最も単純なものは、波形上の2点の波の高さと時間間隔から幾何学的に2点間の補間点を求める2点直線補間である。しかし、この方法は単純な波形の場合には有効であるが、波形が複雑になると補間の精度が低下するという欠点がある。そこで、複雑な波形の場合には、もう少し高度な補間処理を行う必要がある。このための手法の1つに、Shannonのサンプリング定理を応用して、ローパスフィルタのインパルス応答による畳み込み演算を行うことにより補間を行う方法がある。しかしながら、畳み込み演算を行うには複雑な回路を必要とし、回路が大規模になってコストが増加するという問題がある。 The simplest interpolation method is two-point linear interpolation that geometrically finds an interpolation point between two points from the height and time interval of two waves on the waveform. However, this method is effective in the case of a simple waveform, but there is a drawback that the accuracy of interpolation is reduced when the waveform becomes complicated. Therefore, in the case of a complicated waveform, it is necessary to perform a slightly more advanced interpolation process. One method for this purpose is to apply Shannon's sampling theorem and perform interpolation by performing a convolution operation using an impulse response of a low-pass filter. However, there is a problem that a complicated circuit is required to perform the convolution operation, and the circuit becomes large and costs increase.
一方、波長変換の他の手法として、後掲の非特許文献1に示されているような一般調和解析を用いたピッチ変換方法がある。一般調和解析は、観測窓内で原波形から残差成分が最小となる正弦波を抽出し、残差成分に対して同様の処理を繰り返す解析方法であって、正確な周波数成分の抽出が可能であるという利点を有している。しかしながら、この方法では計算量が多くなり処理に時間がかかるという問題がある。
On the other hand, as another method of wavelength conversion, there is a pitch conversion method using general harmonic analysis as shown in
以上のように、従来の波長変換方法では、回路が複雑になったり処理に時間を要するという問題があった。そこで、本発明は、簡単な手段によって高速で波長変換を行うことが可能な波形生成装置を提供することを目的とする。 As described above, the conventional wavelength conversion method has a problem that the circuit becomes complicated and the processing takes time. Accordingly, an object of the present invention is to provide a waveform generation apparatus capable of performing wavelength conversion at high speed by simple means.
本発明に係る波形生成装置は、波形データが記憶されている波形メモリと、その波形データに基づいて生成される波形のピッチをN/M倍に変換するためのピッチ変換部とを有する波形生成装置であって、ピッチ変換部は、補間手段と、合計値算出手段と、量子化手段とを備えている。補間手段は、波形データから得られるPDM(Pulse Density Modulation;パルス密度変調)信号を構成する各1ビット信号の間に、N−1個のゼロ値を補間する。合計値算出手段は、補間手段で補間された後のデータ列を、M個のビットを含むブロックを1単位として順次読み出し、各ブロックごとに、NおよびMの値で定まるビット位置のビット値とNの値との乗算値を合計した合計値Xを算出する。量子化手段は、当該ブロックにおける合計値Xと1つ前のブロックでの量子化で得られた余り値とを加算した合計値Yに対して、Mの値を閾値として量子化を行うことにより、各ブロックに1または0の値を割り当てて当該値を出力するとともに、当該量子化で得られた余り値を次のブロックの合計値Xに加算する。 A waveform generation device according to the present invention includes a waveform memory in which waveform data is stored, and a waveform generation unit having a pitch conversion unit for converting the pitch of a waveform generated based on the waveform data to N / M times The pitch conversion unit includes an interpolation unit, a total value calculation unit, and a quantization unit. The interpolation means interpolates N−1 zero values between each 1-bit signal constituting a PDM (Pulse Density Modulation) signal obtained from the waveform data. The total value calculation means sequentially reads out the data string after being interpolated by the interpolation means as a unit including a block including M bits, and for each block, the bit value at the bit position determined by the values of N and M A total value X obtained by summing the multiplication values with the value of N is calculated. The quantization means performs quantization using the value of M as a threshold for the total value Y obtained by adding the total value X in the block and the remainder value obtained by quantization in the previous block. , Assign a value of 1 or 0 to each block and output the value, and add the remainder value obtained by the quantization to the total value X of the next block.
このような本発明においては、PDM信号を構成する1ビット信号のピッチを補間処理によってずらし、補間後のデータ列をブロック単位で読み出してブロックごとに量子化を行うことにより、1ビット信号のままでピッチを変換することができる。このため、畳み込み演算や一般調和解析などの複雑な演算処理が不要となり、簡単な手段によってピッチ変換処理を高速に行うことができる。また、NおよびMの値を任意に設定することで、所望のピッチを有する波形を容易に得ることが可能となる。 In the present invention, the pitch of the 1-bit signal constituting the PDM signal is shifted by interpolation processing, the interpolated data string is read out in units of blocks, and quantization is performed for each block, thereby maintaining the 1-bit signal. Can change the pitch. For this reason, complicated arithmetic processing such as convolution calculation and general harmonic analysis is not required, and pitch conversion processing can be performed at high speed by simple means. Further, by arbitrarily setting the values of N and M, it is possible to easily obtain a waveform having a desired pitch.
本発明の好ましい実施形態では、量子化手段としてΔΣ変調器が用いられる。これによると、専用の演算回路を設計しなくても、既存のΔΣ変調器の機能を利用して、量子化や余り値の加算処理を容易に実現することができる。 In a preferred embodiment of the present invention, a ΔΣ modulator is used as the quantization means. According to this, even if a dedicated arithmetic circuit is not designed, it is possible to easily realize the quantization and the addition process of the remainder value by using the function of the existing ΔΣ modulator.
本発明に係る音源用シンセサイザは、上述した波形生成装置と、この波形生成装置で生成された音の波形に対して、所定の信号処理を行う信号処理部と、この信号処理部で処理された信号に基づいて音を出力する出力部とを備える。取り扱う音としては、楽音に限らず、人の声や擬似音など、あらゆる音を対象とすることができる。 A sound source synthesizer according to the present invention is processed by the above-described waveform generation device, a signal processing unit that performs predetermined signal processing on the sound waveform generated by the waveform generation device, and the signal processing unit. And an output unit that outputs sound based on the signal. The sound to be handled is not limited to a musical sound, and can be any sound such as a human voice or a pseudo sound.
本発明によれば、PDM信号の波形に対して、複雑な処理を必要とせずに高速で波長変換を行うことができる効果がある。 According to the present invention, there is an effect that wavelength conversion can be performed on a waveform of a PDM signal at high speed without requiring complicated processing.
図1は、本発明の実施形態による音源用シンセサイザの全体構成を示すブロック図である。1は、楽音の波形データを記憶した波形メモリであって、例えば、図3(a)に示すようなPCM信号の波形データが記憶されている。ここでも、便宜上PCM波形を連続波で描いてあるが、実際のPCM波形はサンプリングされた離散的な信号となる。なお、波形メモリ1に記憶される波形データは、PCM信号に限らず後述するPDM信号であってもよい。
FIG. 1 is a block diagram showing the overall configuration of a sound source synthesizer according to an embodiment of the present invention.
2は、信号変換を行うPCM/PDM変換部であって、波形メモリ1から読み出された図3(a)のPCM信号を図3(b)のような2値のPDM信号に変換する。この変換は、公知のデルタ・シグマ(ΔΣ)変調により行われる。なお、波形メモリ1に記憶されている波形データがPDM信号である場合は、このPCM/PDM変換部2は不要となる。
A PCM /
3は、本発明の要部であるピッチ変換部であって、PCM/PDM変換部2から出力されるPDM信号を構成する1ビット信号に対してピッチ変換を行う。図2は、ピッチ変換部3の構成を表した図である。実際には、ピッチ変換部3の各機能はソフトウェアにより実現されるが、ここでは便宜上ハードウェアで表してある。3aは重み付け部であって、PDM信号のピッチをN/M倍に変換する場合に、ユーザにより指定されたNの値の設定を行う。3bはゼロ値補間部であって、PDM信号の各1ビット信号間に、1ビット信号としてN−1個の0値を補間する。3cは合計値算出部であって、ゼロ値補間後のデータ列を、M個のビットを含むブロックを1単位として順次読み出し、各ブロックごとに、NとMの値で定まるビット位置のビット値とNの値との乗算値を合計した合計値を算出する。3dは量子化部であって、後述する量子化処理により各ブロックに1または0の値を割り当てて出力する。
上述した波形メモリ1、PCM/PDM変換部2およびピッチ変換部3によって、波形生成装置100が構成される。また、ピッチ変換部3におけるゼロ値補間部3b、合計値算出部3c、量子化部3dは、それぞれ本発明における補間手段、合計値算出手段、量子化手段の一実施形態を構成している。
The
4は、波形生成装置100で生成された波形に対して所定の信号処理を行う信号処理部である。信号処理部4では、ピッチ変換部3でピッチ変換されたPDM信号をローパスフィルタに通すことによりPCM信号に変換する。また、信号処理部4には、PCM信号に対しカットオフ周波数を時間的に変化させて音色を制御する時変フィルタ部や、時変フィルタ部の出力に対してゲインを時間的に変化させて減衰処理を行う時変増幅部、複数の音を合成するためのミキシング処理を行うミキサなどが設けられる。
5は、信号処理部4で処理された信号に基づいて音を出力する出力部であって、例えば信号処理部4から出力されるPCM信号が楽音信号の場合は、図示しないスピーカから楽音を出力する。
ピッチ変換部3における量子化部3dは、デルタ・シグマ(ΔΣ)変換を行う公知のΔΣ変調器により構成することができる。図4は、ΔΣ変調器50の一例を示すブロック図である。51は入力値と出力フィードバック値との差分を演算する演算器、52は演算器51の出力と遅延回路53の出力とを加算する演算器である。遅延回路53は、入力される信号を1サンプリング期間だけ保持し、次のサンプリングで、保持した信号を出力する。演算器52と遅延回路53は積分器56を構成する。54は積分器56の出力に対してMを閾値として量子化を行う量子化回路であって、入力値がM以上であれば「1」を出力し、入力値がM未満であれば「0」を出力する。55はフィードバックゲインがτに設定されている乗算器である。
The
図5は、本発明によるピッチ変換の原理を示した図である。図5を参照して、まず本発明の原理を説明する。 FIG. 5 is a diagram showing the principle of pitch conversion according to the present invention. First, the principle of the present invention will be described with reference to FIG.
図5の(a)は、波形メモリ1に記憶されている元のPCM信号の波形(波長λ1)と、これに対応するPDM信号の波形を示している。(b)は、ピッチ変換した後のPCM信号(波長λ2)と、これに対応するPDM信号の波形を示している。なお、図ではPDM信号の波形は簡略化して描かれている。(c)は、(a)のPCM信号の破線で囲んだ部分の拡大図であり、Q1〜Q6は、各サンプリング時点でのサンプル値を表している。点線は、サンプリング区間をM分割(例えばM=5)した場合の各時点における仮想サンプル値であって、実データではない。(d)は、(c)のPCM信号に対応するPDM信号のビット値を示しており、実線が1、破線が0を表している。便宜上、各ビット値はサンプル値Q1〜Q6と同じタイミングで図示してある。網掛で示した数字は、各サンプリング区間におけるビット値であり、実線と破線で示されるビット値と一致している。
FIG. 5A shows the waveform (wavelength λ1) of the original PCM signal stored in the
図5(a)の波形から図5(b)の波形を得るには、まず、PDM信号を構成する各1ビット信号の間にゼロ値を補間する。今、波形のピッチをN/M倍(λ2=λ1×N/M)に変換する場合は、元のPDM信号の1ビット信号間に、N−1個の「0」を補間する。例えば、N=9とすると、(f)で示したように、1ビット信号間に8個の「0」が挿入される。この結果、(d)における実線と破線のビット値が、(f)のようにずれてゆく。但し、各ビット間の間隔は一定(N=9)である。 To obtain the waveform of FIG. 5B from the waveform of FIG. 5A, first, a zero value is interpolated between each 1-bit signal constituting the PDM signal. If the waveform pitch is converted to N / M times (λ2 = λ1 × N / M), N−1 “0” s are interpolated between 1-bit signals of the original PDM signal. For example, if N = 9, as shown in (f), eight “0” s are inserted between 1-bit signals. As a result, the bit values of the solid line and the broken line in (d) shift as shown in (f). However, the interval between each bit is constant (N = 9).
次に、図5(f)において、各サンプリング区間のデータ列(補間ゼロ値を含むM個のデータ)を1ブロックとして、ブロック単位で順次データ列を読み出す。そして、各ブロックに含まれる実線と破線のビット値(1または0)とNの値を用いて後述する演算を行い、その演算結果に基づき各ブロックに1または0を割り当てる。網掛で示した数字が、この割り当てられたビット値を表している。ピッチを伸長する場合は、同じサンプリング時点でのPCM信号の波の高さが小さくなるので、これに応じてPDM信号のビット値も元のPDM信号のビット値から変化する。この変化後のビット値から構成されるPDM信号に対応したPCM信号は図5(e)のようになり、これは(b)に示したPCM信号の破線で囲んだ部分に該当する。したがって、(f)で得られた網掛のデータ列からなるPDM信号をローパスフィルタに通してPCM信号に戻すことによって、波長がN/M倍に変換された(b)のPCM信号を得ることができる。 Next, in FIG. 5F, the data string in each sampling interval (M data including the interpolation zero value) is taken as one block, and the data string is sequentially read out in units of blocks. Then, the calculation described later is performed using the bit values (1 or 0) of the solid line and the broken line included in each block and the value of N, and 1 or 0 is assigned to each block based on the calculation result. The numbers indicated by shading represent the assigned bit values. When extending the pitch, the wave height of the PCM signal at the same sampling time is reduced, and accordingly, the bit value of the PDM signal also changes from the bit value of the original PDM signal. The PCM signal corresponding to the PDM signal composed of the bit values after the change is as shown in FIG. 5E, which corresponds to the portion surrounded by the broken line of the PCM signal shown in FIG. Therefore, the PCM signal of (b) whose wavelength is converted to N / M times can be obtained by passing the PDM signal composed of the shaded data sequence obtained in (f) through the low-pass filter and returning it to the PCM signal. it can.
図6は、ゼロ値補間の様子を詳細に示した図である。ここでは、M=8、N=9として、ピッチをN/M=9/8倍に伸長する場合の例を挙げている。(a)はもとのPDM信号を構成するビット信号のデータ列、(b)は(a)のデータ列の各ビット信号間にN−2=7個の「0」を補間したデータ列、(c)は(a)のデータ列の各ビット信号間にN−1=8個の「0」を補間したデータ列を示している。(b)は参考例として挙げたもので、本発明ではこのデータ列は用いない。また、(c)のデータ列に補間された「0」は、PDM信号のビット信号(網掛部分)を所定ビットずらすためだけに挿入されたものであり、後述する演算処理には用いられない。図5でも述べたように、補間後の(c)のデータ列は、サンプリング区間に相当するM個(=8個)のビットを含むブロックを1ブロックとして、ブロック単位で読み出される。 FIG. 6 is a diagram showing in detail the state of zero value interpolation. Here, an example is given in which M = 8 and N = 9, and the pitch is extended to N / M = 9/8 times. (A) is a data string of bit signals constituting the original PDM signal, (b) is a data string obtained by interpolating N−2 = 7 “0” s between the bit signals of the data string of (a), (C) shows a data string obtained by interpolating N−1 = 8 “0” s between the bit signals of the data string of (a). (B) is given as a reference example, and this data string is not used in the present invention. Further, “0” interpolated in the data string of (c) is inserted only to shift the bit signal (shaded portion) of the PDM signal by a predetermined bit, and is not used in the arithmetic processing described later. As described in FIG. 5, the interpolated data sequence (c) is read in block units, with one block including M (= 8) bits corresponding to the sampling period.
次に、上述した原理に基づく本発明のピッチ変換方法の詳細について、具体例に即して説明する。図7は、図1のピッチ変換部3におけるピッチ変換の手順を示したフローチャートである。図8はピッチを伸ばす場合のデータ演算の例を示した図、図9はピッチを縮める場合のデータ演算の例を示した図である。
Next, details of the pitch conversion method of the present invention based on the above-described principle will be described with reference to specific examples. FIG. 7 is a flowchart showing a pitch conversion procedure in the
最初に、ピッチを伸ばす場合につき、図8(A)を例に挙げてピッチ変換手順を説明する。図8(A)において、(a)は第1ブロック、(b)は第2ブロック、(c)は第3ブロック、(d)は第4ブロックを表している。 First, the pitch conversion procedure will be described with reference to FIG. 8A, (a) represents the first block, (b) represents the second block, (c) represents the third block, and (d) represents the fourth block.
図7のステップS1では、変数の初期化を行う。変数としては、ピッチ変換部3に入力される入力値in、ピッチ変換部3から出力される出力値out、図8の各ブロック内におけるビット位置を指定するカーソル値pos、および各ブロックごとに算出される後述の合計値sumがある。初期化により、これらの変数は全て0となる。
In step S1 of FIG. 7, the variables are initialized. As variables, an input value in input to the
ステップS2では、カーソル値posがM以上か否かが判定される。図8(A)は、ピッチを9/8倍にする場合であり、NとMの値はそれぞれN=9、M=8に設定される。最初はpos=0であるから、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第1ブロック(a)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値posにN(=9)を加算する。これにより、第1ブロック(a)におけるposは0+9=9となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭(pos=0)のビット値「1」とN(=9)を乗算し、これを合計値sum(=0)に加算して、合計値sumを更新する。これにより、第1ブロック(a)におけるsumは、0+1×9=9となる。その後、ステップS7で後続のデータの有無をみて、データがあれば(ステップS7:YES)ステップS2へ戻り、データがなければ(ステップS7:NO)処理を終了する。 In step S2, it is determined whether or not the cursor value pos is greater than or equal to M. FIG. 8A shows a case where the pitch is 9/8 times, and the values of N and M are set to N = 9 and M = 8, respectively. Since pos = 0 initially, pos <M (step S2: NO), the process proceeds to step S9, and the data of the first block (a) is read into the input value in. In step S10, N (= 9) is added to the cursor value pos. Thereby, pos in the first block (a) becomes 0 + 9 = 9. Next, in step S11, the bit value “1” at the head (pos = 0) of the read first block (a) is multiplied by N (= 9), and this is added to the total value sum (= 0). The total value sum is updated. Thereby, sum in the first block (a) becomes 0 + 1 × 9 = 9. Thereafter, in step S7, the presence or absence of subsequent data is checked. If there is data (step S7: YES), the process returns to step S2, and if there is no data (step S7: NO), the process is terminated.
今の場合は、後続データがあるのでステップS2へ戻り、再びposがM(=8)以上か否かが判定される。上述したように、この時点ではpos=9となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=9)からM(=8)を減算して、posの値を更新する。これにより、pos=1となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。上述したように、この時点ではsum=9となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=9)からM(=8)を減算して、合計値を更新する。これにより、sum=1となる。この値は本発明における余り値に相当している。余り値は、次のブロックへ繰り越されて加算される。また、ステップS4、S5、S8の処理は、本発明における量子化に相当している。続くステップS6では、出力値out(=1)を出力する。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In this case, since there is subsequent data, the process returns to step S2 to determine again whether pos is equal to or greater than M (= 8). As described above, pos = 9 at this time, so pos ≧ M (step S2: YES), and the process proceeds to step S3. In step S3, M (= 8) is subtracted from pos (= 9) to update the value of pos. As a result, pos = 1. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). As described above, sum = 9 at this time, so sum ≧ M (step S4: YES), and the process proceeds to step S5. In step S5, “1” is written to the output value out, and M (= 8) is subtracted from sum (= 9) to update the total value. As a result, sum = 1. This value corresponds to the remainder value in the present invention. The remainder value is carried over to the next block and added. Further, the processes in steps S4, S5, and S8 correspond to quantization in the present invention. In the subsequent step S6, the output value out (= 1) is output. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=1となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第2ブロック(b)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=1)にN(=9)を加算する。これにより、第2ブロック(b)におけるposは1+9=10となる。次に、ステップS11で、読み込んだ第2ブロック(b)の先頭から2ビット目(pos=1)のビット値「0」とN(=9)を乗算し、これを合計値sum(=1)に加算して、合計値sumを更新する。これにより、第2ブロック(b)におけるsumは、1+0×9=1となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 1 at this point, pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the second block (b) is read into the input value in. Subsequently, in step S10, N (= 9) is added to the cursor value pos (= 1). Thereby, pos in the second block (b) becomes 1 + 9 = 10. Next, in step S11, the bit value “0” of the second bit (pos = 1) from the top of the read second block (b) is multiplied by N (= 9), and this is summed (sum = 1). ) To update the total value sum. Thereby, sum in the second block (b) becomes 1 + 0 × 9 = 1. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=10となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=10)からM(=8)を減算して、posの値を更新する。これにより、pos=2となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=1となっているので、sum<Mとなり(ステップS4:NO)、ステップS8へ移行する。ステップS8では、出力値outに「0」を書き込み、続くステップS6で、出力値out(=0)を出力する。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). At this time, pos = 10, so pos ≧ M (step S2: YES), and the process proceeds to step S3. . In step S3, M (= 8) is subtracted from pos (= 10) to update the value of pos. As a result, pos = 2. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). Since sum = 1 at this time, sum <M (step S4: NO), and the process proceeds to step S8. In step S8, “0” is written in the output value out, and in step S6, the output value out (= 0) is output. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=2となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第3ブロック(c)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=2)にN(=9)を加算する。これにより、第3ブロック(c)におけるposは2+9=11となる。次に、ステップS11で、読み込んだ第3ブロック(c)の先頭から3ビット目(pos=2)のビット値「1」とN(=9)を乗算し、これを合計値sum(=1)に加算して、合計値sumを更新する。これにより、第3ブロック(c)におけるsumは、1+1×9=10となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is greater than or equal to M (= 8). Since pos = 2 at this time, pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the third block (c) is read into the input value in. In step S10, N (= 9) is added to the cursor value pos (= 2). Thereby, pos in the third block (c) becomes 2 + 9 = 11. Next, in step S11, the bit value “1” of the third bit (pos = 2) from the top of the read third block (c) is multiplied by N (= 9), and this is summed (sum = 1). ) To update the total value sum. Thereby, the sum in the third block (c) becomes 1 + 1 × 9 = 10. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=11となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=11)からM(=8)を減算して、posの値を更新する。これにより、pos=3となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=10となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=10)からM(=8)を減算して、合計値を更新する。これにより、sum=2となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is greater than or equal to M (= 8). Since pos = 11 at this time, pos ≧ M (step S2: YES), and the process proceeds to step S3. . In step S3, M (= 8) is subtracted from pos (= 11) to update the value of pos. As a result, pos = 3. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). Since sum = 10 at this time, it becomes sum ≧ M (step S4: YES), and the process proceeds to step S5. In step S5, “1” is written to the output value out, and M (= 8) is subtracted from sum (= 10) to update the total value. As a result, sum = 2. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=3となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第4ブロック(d)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=3)にN(=9)を加算する。これにより、第4ブロック(d)におけるposは3+9=12となる。次に、ステップS11で、読み込んだ第4ブロック(d)の先頭から4ビット目(pos=3)のビット値「0」とN(=9)を乗算し、これを合計値sum(=2)に加算して、合計値sumを更新する。これにより、第4ブロック(d)におけるsumは、2+0×9=2となる。その後、ステップS7で後続のデータの有無をみて、データがあれば(ステップS7:YES)ステップS2へ戻り、データがなければ(ステップS7:NO)処理を終了する。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 3 at this point, pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the fourth block (d) is read into the input value in. Subsequently, in step S10, N (= 9) is added to the cursor value pos (= 3). As a result, pos in the fourth block (d) is 3 + 9 = 12. Next, in step S11, the bit value “0” of the fourth bit (pos = 3) from the top of the read fourth block (d) is multiplied by N (= 9), and this is summed sum (= 2). ) To update the total value sum. As a result, the sum in the fourth block (d) is 2 + 0 × 9 = 2. Thereafter, in step S7, the presence or absence of subsequent data is checked. If there is data (step S7: YES), the process returns to step S2, and if there is no data (step S7: NO), the process is terminated.
以上述べたような要領で、後続する第5ブロック以降の各ブロックについても同様の処理を行う。この結果、ピッチ変換部3からは、PDM信号を構成する「1010・・・」のビット信号が出力される。そして、このPDM信号をローパスフィルタに通すことにより、ピッチ(波長)が9/8倍に変換されたPCM信号が得られる。
In the manner as described above, the same processing is performed for the subsequent blocks after the fifth block. As a result, a bit signal “1010...” Constituting the PDM signal is output from the
次に、図8(B)の例について説明する。図8(B)においても、(a)〜(d)は第1ブロック〜第4ブロックを表している。 Next, an example of FIG. 8B will be described. In FIG. 8B as well, (a) to (d) represent the first block to the fourth block.
最初、図7のステップS1で変数の初期化を行う。次のステップS2では、カーソル値posがM以上か否かが判定される。図8(B)はピッチを17/8倍にする場合であり、NとMの値はそれぞれN=17、M=8に設定される。最初はpos=0であるから、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第1ブロック(a)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値posにN(=17)を加算する。これにより、第1ブロック(a)におけるposは0+17=17となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭(pos=0)のビット値「1」とN(=17)を乗算し、これを合計値sum(=0)に加算して、合計値sumを更新する。これにより、第1ブロック(a)におけるsumは、0+1×17=17となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 Initially, the variables are initialized in step S1 of FIG. In the next step S2, it is determined whether or not the cursor value pos is greater than or equal to M. FIG. 8B shows a case where the pitch is 17/8 times, and the values of N and M are set to N = 17 and M = 8, respectively. Since pos = 0 initially, pos <M (step S2: NO), the process proceeds to step S9, and the data of the first block (a) is read into the input value in. In step S10, N (= 17) is added to the cursor value pos. Thereby, pos in the first block (a) becomes 0 + 17 = 17. Next, in step S11, the bit value “1” at the head (pos = 0) of the read first block (a) is multiplied by N (= 17), and this is added to the total value sum (= 0). The total value sum is updated. Thereby, the sum in the first block (a) becomes 0 + 1 × 17 = 17. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2では、再びposがM(=8)以上か否かが判定され、この時点ではpos=17となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=17)からM(=8)を減算して、posの値を更新する。これにより、pos=9となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=17となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=17)からM(=8)を減算して、合計値を更新する。これにより、sum=9となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 17 at this time, pos ≧ M (step S2: YES), and the process proceeds to step S3. In step S3, M (= 8) is subtracted from pos (= 17) to update the value of pos. As a result, pos = 9. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). Since sum = 17 at this time, sum ≧ M (step S4: YES), and the process proceeds to step S5. In step S5, “1” is written to the output value out, and M (= 8) is subtracted from sum (= 17) to update the total value. As a result, sum = 9. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=9となっているので、pos≧Mであり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=9)からM(=8)を減算して、posの値を更新する。これにより、pos=1となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=9となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込む(図7のフローチャートでは、pos≧M(=8)になれば、その後pos<M(=8)になるまでoutの出力を続けることになる)。また、sum(=9)からM(=8)を減算して、合計値を更新する。これにより、sum=1となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 9 at this time, pos ≧ M (step S2: YES), and the process proceeds to step S3. To do. In step S3, M (= 8) is subtracted from pos (= 9) to update the value of pos. As a result, pos = 1. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). Since sum = 9 at this time, sum ≧ M (step S4: YES), and the process proceeds to step S5. In step S5, “1” is written in the output value out (in the flowchart of FIG. 7, if pos ≧ M (= 8), then the output of out is continued until pos <M (= 8). ). Further, M (= 8) is subtracted from sum (= 9) to update the total value. As a result, sum = 1. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=1となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第3ブロック(c)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=1)にN(=17)を加算する。これにより、第3ブロック(c)におけるposは1+17=18となる。次に、ステップS11で、読み込んだ第3ブロック(c)の先頭から2ビット目(pos=1)のビット値「0」とN(=17)を乗算し、これを合計値sum(=1)に加算して、合計値sumを更新する。これにより、第3ブロック(c)におけるsumは、1+0×17=1となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 1 at this point, pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the third block (c) is read into the input value in. Subsequently, N (= 17) is added to the cursor value pos (= 1) in step S10. Thereby, pos in the third block (c) becomes 1 + 17 = 18. Next, in step S11, the bit value “0” of the second bit (pos = 1) from the top of the read third block (c) is multiplied by N (= 17), and this is summed (sum = 1). ) To update the total value sum. As a result, the sum in the third block (c) is 1 + 0 × 17 = 1. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
以上述べたような要領で、以降の各ブロックについても同様の処理を行う。この結果、ピッチ変換部3からは、PDM信号を構成する「1100・・・」のビット信号が出力される。そして、このPDM信号をローパスフィルタに通すことにより、ピッチ(波長)が17/8倍に変換されたPCM信号が得られる。
The same processing is performed for the subsequent blocks in the manner described above. As a result, a bit signal “1100...” Constituting the PDM signal is output from the
次に、ピッチを縮める場合につき、図9(A)を例に挙げてピッチ変換手順を説明する。図9(A)においても、(a)〜(d)は第1ブロック〜第4ブロックを表している。 Next, the pitch conversion procedure will be described with reference to FIG. 9A also, (a) to (d) represent the first block to the fourth block.
最初、図7のステップS1で変数の初期化を行う。次のステップS2では、カーソル値posがM以上か否かが判定される。図9(A)はピッチを7/8倍にする場合であり、NとMの値はそれぞれN=7、M=8に設定される。最初はpos=0であるから、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第1ブロック(a)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値posにN(=7)を加算する。これにより、posは0+7=7となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭(pos=0)のビット値「1」とN(=7)を乗算し、これを合計値sum(=0)に加算して、合計値sumを更新する。これにより、sumは0+1×7=7となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 Initially, the variables are initialized in step S1 of FIG. In the next step S2, it is determined whether or not the cursor value pos is greater than or equal to M. FIG. 9A shows a case where the pitch is 7/8 times, and the values of N and M are set to N = 7 and M = 8, respectively. Since pos = 0 initially, pos <M (step S2: NO), the process proceeds to step S9, and the data of the first block (a) is read into the input value in. In step S10, N (= 7) is added to the cursor value pos. As a result, pos becomes 0 + 7 = 7. Next, in step S11, the bit value “1” at the head (pos = 0) of the read first block (a) is multiplied by N (= 7), and this is added to the total value sum (= 0). The total value sum is updated. Thereby, sum becomes 0 + 1 × 7 = 7. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2では、再びposがM(=8)以上か否かが判定され、この時点ではpos=7なので、pos<Mとなり(ステップS2:NO)、ステップS9へ移行して再び第1ブロック(a)のデータを入力値inに読み込む(図7のフローチャートでは、pos≧M(=8)になるまでは、データの読み込みを続けることになる)。そして、ステップS10でカーソル値posにN(=7)を加算する。これにより、第1ブロック(a)におけるposは7+7=14となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭から8ビット目(pos=7)のビット値「0」とN(=7)を乗算し、これを合計値sum(=7)に加算して、合計値sumを更新する。これにより、第1ブロック(a)におけるsumは7+0=7となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 7 at this time, pos <M (step S2: NO), the process proceeds to step S9 and the first block ( The data of a) is read into the input value in (in the flowchart of FIG. 7, the data reading is continued until pos ≧ M (= 8)). In step S10, N (= 7) is added to the cursor value pos. Thereby, pos in the first block (a) becomes 7 + 7 = 14. Next, in step S11, the bit value “0” of the eighth bit (pos = 7) from the top of the read first block (a) is multiplied by N (= 7), and this is summed (sum == 7). ) To update the total value sum. As a result, sum in the first block (a) becomes 7 + 0 = 7. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=14となっているので、pos≧Mであり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=14)からM(=8)を減算して、posの値を更新する。これにより、pos=6となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=7となっているので、sum<Mとなり(ステップS4:YES)、ステップS8へ移行する。ステップS8では、出力値outに「0」を書き込み、続くステップS6で、出力値out(=0)を出力する。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is greater than or equal to M (= 8). Since pos = 14 at this time, pos ≧ M (step S2: YES), and the process proceeds to step S3. To do. In step S3, M (= 8) is subtracted from pos (= 14) to update the value of pos. As a result, pos = 6. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). Since sum = 7 at this point, sum <M (step S4: YES), and the process proceeds to step S8. In step S8, “0” is written in the output value out, and in step S6, the output value out (= 0) is output. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=6となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第2ブロック(b)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=6)にN(=7)を加算する。これにより、第2ブロック(b)におけるposは6+7=13となる。次に、ステップS11で、読み込んだ第2ブロック(b)の先頭から7ビット目(pos=6)のビット値「1」とN(=7)を乗算し、これを合計値sum(=7)に加算して、合計値sumを更新する。これにより、第2ブロック(b)におけるsumは、7+1×7=14となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 6 at this time, pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the second block (b) is read into the input value in. Subsequently, in step S10, N (= 7) is added to the cursor value pos (= 6). Thereby, pos in the second block (b) becomes 6 + 7 = 13. Next, in step S11, the bit value “1” of the seventh bit (pos = 6) from the top of the read second block (b) is multiplied by N (= 7), and this is summed (sum == 7). ) To update the total value sum. As a result, the sum in the second block (b) becomes 7 + 1 × 7 = 14. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=13となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=13)からM(=8)を減算して、posの値を更新する。これにより、pos=5となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=14となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=14)からM(=8)を減算して、合計値を更新する。これにより、sum=6となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). At this time, pos = 13, so pos ≧ M (step S2: YES), and the process proceeds to step S3. . In step S3, M (= 8) is subtracted from pos (= 13) to update the value of pos. As a result, pos = 5. Then, it progresses to step S4 and it is determined whether the total value sum is more than M (= 8). At this time, sum = 14, so sum ≧ M (step S4: YES), and the process proceeds to step S5. In step S5, “1” is written to the output value out, and M (= 8) is subtracted from sum (= 14) to update the total value. As a result, sum = 6. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=5となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第3ブロック(c)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=5)にN(=7)を加算する。これにより、第3ブロック(c)におけるposは5+7=12となる。次に、ステップS11で、読み込んだ第3ブロック(c)の先頭から6ビット目(pos=5)のビット値「0」とN(=7)を乗算し、これを合計値sum(=6)に加算して、合計値sumを更新する。これにより、第3ブロック(c)におけるsumは、6+0×7=6となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。 In step S2, it is determined again whether or not pos is equal to or greater than M (= 8). Since pos = 5 at this time, pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the third block (c) is read into the input value in. Subsequently, in step S10, N (= 7) is added to the cursor value pos (= 5). Thereby, pos in the third block (c) becomes 5 + 7 = 12. Next, in step S11, the bit value “0” of the sixth bit (pos = 5) from the top of the read third block (c) is multiplied by N (= 7), and this is summed (sum == 6). ) To update the total value sum. Thereby, the sum in the third block (c) is 6 + 0 × 7 = 6. Thereafter, the presence or absence of subsequent data is checked in step S7, and there is data (step S7: YES), the process returns to step S2.
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=4となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第4ブロック(d)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=4)にN(=7)を加算する。これにより、第4ブロック(d)におけるposは4+7=11となる。次に、ステップS11で、読み込んだ第4ブロック(d)の先頭から5ビット目(pos=4)のビット値「1」とN(=7)を乗算し、これを合計値sum(=6)に加算して、合計値sumを更新する。これにより、第4ブロック(d)におけるsumは、6+1×7=13となる。その後、ステップS7で後続のデータの有無をみて、データがあれば(ステップS7:YES)ステップS2へ戻り、データがなければ(ステップS7:NO)処理を終了する。 In step S2, it is determined again whether or not pos is greater than or equal to M (= 8). At this time, pos = 4, so pos <M (step S2: NO), and the process proceeds to step S9. Then, the data of the fourth block (d) is read into the input value in. Subsequently, in step S10, N (= 7) is added to the cursor value pos (= 4). Thereby, pos in the fourth block (d) is 4 + 7 = 11. Next, in step S11, the bit value “1” of the fifth bit (pos = 4) from the head of the read fourth block (d) is multiplied by N (= 7), and this is summed (sum == 6). ) To update the total value sum. As a result, the sum in the fourth block (d) is 6 + 1 × 7 = 13. Thereafter, in step S7, the presence or absence of subsequent data is checked. If there is data (step S7: YES), the process returns to step S2, and if there is no data (step S7: NO), the process is terminated.
以上述べたような要領で、後続する第5ブロック以降の各ブロックについても同様の処理を行う。この結果、ピッチ変換部3からは、PDM信号を構成する「0101・・・」のビット信号が出力される。そして、このPDM信号をローパスフィルタに通すことにより、ピッチ(波長)が7/8倍に変換されたPCM信号が得られる。
In the manner as described above, the same processing is performed for the subsequent blocks after the fifth block. As a result, the
同様にして、ピッチを3/8倍にする図9(B)の場合も、上述した図9(A)と同じ要領にしたがって、ピッチ変換を行うことができる(詳細は省略)。 Similarly, in the case of FIG. 9B in which the pitch is 3/8 times, pitch conversion can be performed according to the same procedure as in FIG. 9A described above (details are omitted).
以上のように、上述した実施形態においては、PDM信号を構成する1ビット信号のピッチを補間処理によってずらし、補間後のデータ列をブロック単位で読み出してブロックごとに量子化を行うことにより、1ビット信号のままでピッチを変換することができる。このため、畳み込み演算や一般調和解析などの複雑な演算処理が不要となり、簡単な手段によってピッチ変換処理を高速に行うことができる。また、NおよびMの値を任意に設定することで、所望のピッチを有する波形を容易に得ることが可能となる。 As described above, in the above-described embodiment, the pitch of the 1-bit signal constituting the PDM signal is shifted by the interpolation process, the interpolated data sequence is read out in units of blocks, and quantization is performed for each block. The pitch can be converted without changing the bit signal. For this reason, complicated arithmetic processing such as convolution calculation and general harmonic analysis is not required, and pitch conversion processing can be performed at high speed by simple means. Further, by arbitrarily setting the values of N and M, it is possible to easily obtain a waveform having a desired pitch.
また、上述した実施形態においては、量子化手段としてΔΣ変調器50を用いているので、専用の演算回路を設計しなくても、既存のΔΣ変調器の機能を利用して、量子化や余り値の加算処理を容易に実現することができる。
In the above-described embodiment, since the
本発明は、アナログの楽音信号を出力する場合に限らず、デジタルの楽音信号を出力する場合にも適用が可能である。 The present invention is not limited to the case of outputting an analog tone signal, but can also be applied to the case of outputting a digital tone signal.
また、上記実施形態においては、波形メモリ1に記憶されている楽音信号としてPCM信号を例に挙げたが、本発明は、PCM信号以外の楽音信号を用いる場合においても適用することができる。
In the above embodiment, the PCM signal is taken as an example of the musical sound signal stored in the
さらに、本発明は楽音に限らず、人の声(ボイス)や擬似音なども含むあらゆる音を生成する場合に適用することができ、さらには、音以外の波形を生成する場合にも適用することができる。 Furthermore, the present invention is not limited to musical sounds, and can be applied to the generation of all sounds including human voices and pseudo sounds, and is also applied to the generation of waveforms other than sounds. be able to.
1 波形メモリ
2 PCM/PDM変換部
3 ピッチ変換部
3b ゼロ値補間部
3c 合計値算出部
3d 量子化部
4 信号処理部
5 出力部
50 ΔΣ変調器
100 波形生成装置
DESCRIPTION OF
Claims (3)
前記ピッチ変換部は、
前記波形データから得られるPDM(Pulse Density Modulation;パルス密度変調)信号を構成する各1ビット信号の間に、N−1個のゼロ値を補間する補間手段と、
前記補間手段で補間された後のデータ列を、M個のビットを含むブロックを1単位として順次読み出し、各ブロックごとに、NおよびMの値で定まるビット位置のビット値とNの値との乗算値を合計した合計値Xを算出する合計値算出手段と、
当該ブロックにおける合計値Xと1つ前のブロックでの量子化で得られた余り値とを加算した合計値Yに対して、Mの値を閾値として量子化を行うことにより、各ブロックに1または0の値を割り当てて当該値を出力するとともに、当該量子化で得られた余り値を次のブロックの合計値Xに加算する量子化手段と、
を備えたことを特徴とする波形生成装置。 In a waveform generation apparatus having a waveform memory in which waveform data is stored, and a pitch conversion unit for converting the pitch of a waveform generated based on the waveform data to N / M times,
The pitch converter is
Interpolating means for interpolating N−1 zero values between each 1-bit signal constituting a PDM (Pulse Density Modulation) signal obtained from the waveform data;
The data string after being interpolated by the interpolating means is sequentially read out with a block containing M bits as one unit, and for each block, the bit value at the bit position determined by the values of N and M and the value of N A total value calculating means for calculating a total value X obtained by summing the multiplication values;
By performing quantization using the value of M as a threshold for the total value Y obtained by adding the total value X in the block and the remainder value obtained by quantization in the previous block, 1 is assigned to each block. Or a quantization unit that assigns a value of 0 and outputs the value, and adds the remainder value obtained by the quantization to the total value X of the next block;
A waveform generation apparatus comprising:
前記量子化手段をΔΣ変調器から構成したことを特徴とする波形生成装置。 The waveform generation device according to claim 1,
A waveform generating apparatus characterized in that the quantizing means comprises a ΔΣ modulator.
前記波形生成装置で生成された音の波形に対して、所定の信号処理を行う信号処理部と、
前記信号処理部で処理された信号に基づいて音を出力する出力部と、
を備えたことを特徴とする音源用シンセサイザ。 The waveform generation device according to claim 1 or 2,
A signal processing unit that performs predetermined signal processing on the waveform of the sound generated by the waveform generation device;
An output unit that outputs sound based on the signal processed by the signal processing unit;
A synthesizer for sound sources characterized by comprising
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007057740A JP4554629B2 (en) | 2007-03-07 | 2007-03-07 | Waveform generator, synthesizer for sound source |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007057740A JP4554629B2 (en) | 2007-03-07 | 2007-03-07 | Waveform generator, synthesizer for sound source |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008216916A JP2008216916A (en) | 2008-09-18 |
JP4554629B2 true JP4554629B2 (en) | 2010-09-29 |
Family
ID=39836981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007057740A Expired - Fee Related JP4554629B2 (en) | 2007-03-07 | 2007-03-07 | Waveform generator, synthesizer for sound source |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4554629B2 (en) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62115194A (en) * | 1985-11-14 | 1987-05-26 | ロ−ランド株式会社 | Waveform generator for electronic musical apparatus |
JPH0336068B2 (en) * | 1984-01-26 | 1991-05-30 | Marktec Corp | |
JPH09289453A (en) * | 1996-04-24 | 1997-11-04 | Sony Corp | Signal processor, signal recording device, and signal reproducing device |
JPH1039886A (en) * | 1996-07-26 | 1998-02-13 | Sony Corp | Special effect processing device |
JPH10198381A (en) * | 1996-12-30 | 1998-07-31 | Casio Comput Co Ltd | Music sound creating device |
JP2002252562A (en) * | 2001-02-23 | 2002-09-06 | Sony Corp | Device and method for digital signal processing |
JP2003202882A (en) * | 2002-01-07 | 2003-07-18 | Seiko Epson Corp | Method and device for sound synthesis |
JP2003233378A (en) * | 2002-02-13 | 2003-08-22 | Yamaha Corp | Device and method for musical sound generation |
-
2007
- 2007-03-07 JP JP2007057740A patent/JP4554629B2/en not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0336068B2 (en) * | 1984-01-26 | 1991-05-30 | Marktec Corp | |
JPS62115194A (en) * | 1985-11-14 | 1987-05-26 | ロ−ランド株式会社 | Waveform generator for electronic musical apparatus |
JPH09289453A (en) * | 1996-04-24 | 1997-11-04 | Sony Corp | Signal processor, signal recording device, and signal reproducing device |
JPH1039886A (en) * | 1996-07-26 | 1998-02-13 | Sony Corp | Special effect processing device |
JPH10198381A (en) * | 1996-12-30 | 1998-07-31 | Casio Comput Co Ltd | Music sound creating device |
JP2002252562A (en) * | 2001-02-23 | 2002-09-06 | Sony Corp | Device and method for digital signal processing |
JP2003202882A (en) * | 2002-01-07 | 2003-07-18 | Seiko Epson Corp | Method and device for sound synthesis |
JP2003233378A (en) * | 2002-02-13 | 2003-08-22 | Yamaha Corp | Device and method for musical sound generation |
Also Published As
Publication number | Publication date |
---|---|
JP2008216916A (en) | 2008-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0337458B1 (en) | Apparatus for synthesizing analog signals in PCM | |
JP4661745B2 (en) | Filter device and electronic musical instrument | |
JP2004287171A (en) | Vocoder device | |
EP0177934B1 (en) | Musical tone generating apparatus | |
JP4554629B2 (en) | Waveform generator, synthesizer for sound source | |
TWI275245B (en) | Bi-quad digital filter configured with a bit binary rate multiplier | |
JP6543895B2 (en) | Effect adding device, method, and program, electronic musical instrument | |
US6208969B1 (en) | Electronic data processing apparatus and method for sound synthesis using transfer functions of sound samples | |
JP2008181020A (en) | Waveform creating apparatus and synthesizer for sound source | |
JP2751262B2 (en) | Signal recording method and apparatus | |
US6314403B1 (en) | Apparatus and method for generating a special effect on a digital signal | |
JPS58200297A (en) | Envelope signal generator | |
JP2932481B2 (en) | Pitch detection method | |
JP2019016002A (en) | Data interpolation apparatus and data interpolation method | |
JP2008141470A (en) | Device and program for converting one-bit bit stream into multibit digital signal | |
JP2864508B2 (en) | Waveform data compression encoding method and apparatus | |
JP2674155B2 (en) | Data compression coding method | |
JP2671648B2 (en) | Digital data interpolator | |
JP2730104B2 (en) | Digital signal generation method | |
JP2008083525A (en) | Synthesizer for sound source | |
JPH0484784A (en) | Ship cruising simulation noise generator | |
JP2001175264A (en) | Musical sound signal synthesizer | |
JP5014312B2 (en) | Apparatus and method for real-time interpolation of discrete signals | |
JPS58200294A (en) | Envelope signal generator | |
JPS58159586A (en) | Reverberator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090116 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100104 |
|
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: 20100622 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100714 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130723 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4554629 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |