US5890126A - Audio data decompression and interpolation apparatus and method - Google Patents
Audio data decompression and interpolation apparatus and method Download PDFInfo
- Publication number
- US5890126A US5890126A US08/815,318 US81531897A US5890126A US 5890126 A US5890126 A US 5890126A US 81531897 A US81531897 A US 81531897A US 5890126 A US5890126 A US 5890126A
- Authority
- US
- United States
- Prior art keywords
- log
- term
- data points
- gain
- interpolation
- 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 - Lifetime
Links
- 230000006837 decompression Effects 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 title claims description 24
- 238000007906 compression Methods 0.000 claims description 13
- 230000006835 compression Effects 0.000 claims description 13
- 230000008901 benefit Effects 0.000 abstract description 4
- 239000011295 pitch Substances 0.000 description 21
- 239000011159 matrix material Substances 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 12
- 230000010354 integration Effects 0.000 description 8
- 238000007792 addition Methods 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004886 process control Methods 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 241000191291 Abies alba Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
- G10L21/003—Changing voice quality, e.g. pitch or formants
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/02—Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories
- G10H7/04—Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories in which amplitudes are read at varying rates, e.g. according to pitch
Definitions
- the present invention relates to apparatus and methods for decompressing and interpolating audio data.
- Audio data is frequently compressed before it is stored in order to save data storage space. For example, the difference between consecutive data points may be taken and the difference (a smaller number requiring less bits) may be stored. Many other compression methods are known in the art.
- data points are calculated at 2.25, 3.5, 4.75, etc. Then these points are read out at the original fixed data rate, which gets through the data quicker, and results in a higher pitched sound, just like playing a tape faster would.
- the interpolation used to compute these in between points may be linear interpolation or higher order interpolation.
- Decompressing the stored audio data, followed by interpolation to change the pitch of the data requires many computational steps. A need remains in the art for apparatus and methods for more efficiently decompressing and interpolating audio data.
- An object of the present invention is to provide apparatus and methods for more efficiently decompressing and interpolating audio data. It is an object of the present invention to combine the decompression operation and the interpolation operation in a design which is more efficient than current designs which keep these operations separate.
- Apparatus for simultaneously decompressing and interpolating a stream of audio data points having differential log format to form a series of decompressed and interpolated output data points comprises means for providing a stream of differential log format compressed data points, means for calculating a quantity equivalent to an audio data point before compression for each desired output data point, means for generating an interpolation term for each desired output data point, means for summing the quantity and the interpolation term to form each desired interpolated and decompressed output data point, and means for sequentially outputting each interpolated and decompressed output data point.
- the means for providing a stream of differential log format compressed data points provides data points having the format log (x(n+1)-x(n)), where x(n) and x(n+1) are consecutive data points before compression.
- the calculating means calculates quantities equivalent to x(n), and the generating means generates interpolation terms of the form ⁇ (x(n+1)-x(n)), where ⁇ is the desired fractional distance to accomplish interpolation between data points x(n) and x(n+1).
- the calculating means includes an antilog block through which compressed data points log (x(n-m)-x(n-m-1)) through log (x(n)-x(n-1)) are passed, to get x(n-m)-x(n-m-1) through x(n)-x(n-1).
- An initial condition term equivalent to x(n-m-1) is summed with x(n-m)-x(n-m-1) through x(n)-x(n-1), to form a quantity equivalent to x(n).
- This apparatus may be modified to apply a gain by providing terms equivalent to log (gain) and adding the log (gain) term to log (x(n-m)-x(n-m-1)) through log (x(n)-x(n-1)), and also adding the log (gain) term to the log ⁇ +log (x(n+1)-x(n)) term.
- the providing means provides data points having the format log (x(n+1)-x(n)), where x(n) and x(n+1) are consecutive data points before compression.
- the calculating means calculates quantities equivalent to x(n).
- the generating means generates interpolation terms of the form C 1 (x(n+1)-x(n))+C 2 (x(n+2)-x(n+1))+ . . .
- C 1 through C N-1 are coefficients previously derived from ⁇ , the desired fractional distance to accomplish interpolation between data points x(n) and x(n+1), said coefficients selected to accomplish polyphase interpolation of order N.
- the calculating means includes an antilog block through which is passed compressed data points log (x(n-m)-x(n-m-1)) through log (x(n)-x(n-1)) to get x(n-m)-x(n-m-1) through x(n)-x(n-1).
- An initial condition term equivalent to x(n-m-1) is summed with x(n-m)-x(n-m-1) through x(n)-x(n-1), to form a quantity equivalent to x(n).
- the generating means includes means for providing the terms log (C1) through log (C N- 1).
- This apparatus may be modified to apply a gain by providing terms equivalent to log (gain) and adding the log (gain) term to log (x(n-m)-x(n-m-1)) through log (x(n)-x(n-1)), and also adding the log (gain) term to the log (x(p+1)-x(p)) through log (x(p+N-1)-x(p+N-2)) terms.
- FIG. 1 shows a decompression/interpolation device according to the present invention.
- FIG. 2 shows the decompression/interpolation device of FIG. 1 in more detail.
- FIG. 3 shows a first embodiment of the decompression/interpolation device of FIG. 1, utilizing a linear interpolation scheme.
- FIG. 4 shows a second embodiment of a decompression/interpolation device of FIG. 1, utilizing a higher order interpolation scheme.
- FIG. 5 shows the present invention integrated into a standard bus architecture.
- FIG. 6 is a plot of a sampled impulse response of a low pass filter used for higher order interpolation.
- FIG. 7 is a plot of the absolute value of the impulse response of FIG. 6.
- FIG. 8 is a plot of coefficients for the higher order interpolation case.
- FIG. 9 is a plot of the dB magnitude frequency response of the filter utilizing the coefficients of FIG. 8, before and after simplifying modifications are applied.
- FIG. 1 shows a decompression/interpolation device 12 according to the present invention.
- Decompression/interpolation device 12 has as its inputs compressed audio data 16 and pitch and loudness controls 44, 46.
- Compressed audio data 16 has previously been formatted into differential log format, as follows. The difference between two consecutive data points is calculated, and the log of this difference is taken. Thus each stored data point has the structure:
- One purpose of utilizing the differential log format for the stored data is to save storage space.
- the difference between adjacent samples for most sounds results in a signal with lower variance than the original signal.
- This lower variance signal can be coded with fewer bits than the original signal.
- the logarithm of the differences is stored, rather than the differences themselves, this results, in the case of audio signals, in a more efficient use of bits.
- the result is that storing, for example, an 8 bit log of the differences of adjacent samples gives a signal to noise ratio close that of a 16 bit linear coding scheme for many realistic sounds.
- the log format is useful during the interpolation phase.
- the present invention takes advantage of the fact that adding the log of two quantities is equivalent to the log of the product of the two quantities.
- the log of a gain which is to be applied to the signal may be added to each compressed data point prior to taking the inverse log, rather than multiplying each decompressed data point by the gain value.
- interpolation involves multiplies which are expensive to implement in hardware. These multiplies can be replaced with addition of logarithms thanks to the log compression format. Addition is a much less expensive operation to implement in hardware. Since the final output must be linear, and since the interpolation operation also involves linear additions, it is necessary to convert from log to linear format. This is easily accomplished with a small lookup table, thanks to the reduced (e.g. 8 bit) representation of the log format.
- FIGS. 2-4 show these operations in detail.
- Pitch and loudness control signals 44, 46 are utilized by decompression/interpolation device 12 to determine the gain and interpolation coefficients to be applied to the compressed data 16. These computations are shown in FIGS. 3 and 4.
- Output signal 18 is provided to a digital to analog converter (DAC) 14.
- the analog signal is provided to a speaker 15.
- An amplifier (not shown) may be incorporated between DAC 14 and speaker 15.
- FIG. 2 shows decompression/interpolation device 12 of FIG. 1 in more detail.
- Decompression/interpolation device 12 has been divided into three main functional blocks, a sum block 60, an inverse log block 26 and an integrator comprising adder 27 and integration register 28.
- block 22 computes the log 62 of coefficients 44.
- Gain is provided in log format via signal 46.
- Output register 74 stores and clocks out output data point 18 at appropriate times. Two possible implementations of these blocks are shown in FIGS. 3 and 4. Those skilled in the art will appreciate that other implementations according to the present invention are possible as well.
- output data points 18 have the following form, ignoring gain:
- ⁇ is a fractional coefficient used to implement interpolation.
- Integration register 28 is used to generate the x(n) term.
- x(0) is stored as an initial condition in register 28, and n compressed audio data points are antilogged and added to x(0) to form x(n).
- log ((x(n+1)-x(n)) is added to log ⁇ , provided as signal 62, in sum block 60, antilogged by block 26, added to the term stored in integration register 28 by adder 27, and stored in output register 74. If gain is applied, it is added to each compressed data point 16.
- the linear interpolation case is shown in more detail in FIG. 3.
- a set of coefficients is provided as signal 44.
- sum block 60 sequentially adds compressed audio data points 16 with log coefficients 62 and, optionally, log gain 46. Since compressed data 16 is in differential log format, the addition of these three log format quantities is equivalent to multiplying the linear quantities and taking the log of the result.
- the output of inverse log block 26 is then the three linear quantities (gain, coefficients, and differential format data) multiplied together.
- gain 46 and coefficients 44 The coefficients systematically scale the stream of differential format data points to implement higher order interpolation.
- Adder 27 adds the x(n) term to the first coefficient scaled term and stores the result in output register 74.
- the additional coefficient scaled terms are added to output register 74 and the results output by output register 74 as output signal 18.
- the output data points have the form:
- the higher order interpolation case is shown in more detail in FIG. 4.
- FIG. 3 shows one preferred embodiment, 12a, of decompression/interpolation device 12 of FIGS. 1 and 2, which incorporates linear interpolation.
- Desired note 30 is provided to controller 32, for example from a keyboard or from a CD-ROM. Desired note 30 includes such information as pitch and loudness.
- Controller 32 provides a signal 34 representing note pitch to phase accumulation block 38.
- signal 34 comprises a value representing phase increment. Controller 32 may dynamically change this value, for example to achieve a vibrato effect.
- Phase increment is the change in address in memory 48 from the last data point 34.
- Memory 48 stores sets of data representing notes at a variety of different pitches. There is a starting address in sound table memory 48 corresponding to a particular recorded sound (e.g. a particular pitch).
- the present invention increments through memory 48 at a rate determined by the phase increment.
- Phase increment register 80 stores the current phase increment.
- Phase accumulator 84 adds the current phase (or address in memory 48) to the current phase increment (or change in address) from block 80 to get the next phase (next address).
- the integer part of the current phase 42 is not strictly required, but is useful in indicating the ending address in memory.
- the fractional part of the current phase (or ⁇ ) 44 is provided to decompression/interpolation device 12a, which will use signal 44 to accomplish interpolation.
- the output of adder 82 and the output of phase accumulator 84 are also provided to integer phase counter (IPC) 70 which subtracts the integer portion of the two values and outputs the result as count signal 43.
- Process control block 87 uses signal 43 to control the operation of other blocks in the system via control signals 45, as described below.
- Controller 32 also provides a signal 36 representing loudness to envelope generator 40.
- signal 36 comprises log envelope increment, which is the log of the change in the gain envelope to be applied to the audio signal.
- the log gain value 46 will be needed by decompression/interpolation device 12a.
- signal 36 could comprise the linear envelope increment, the operations in envelope block 40 could be performed linearly, and a log operation could be applied to the output of envelope block 40.
- signal 36 comprises a series of data points representing log envelope increment.
- Envelope increment is the change in gain from the last data point 36.
- Envelope increment register 90 stores the current log envelope increment.
- Envelope accumulator block 44 adds the current log envelope value to the current log envelope increment from block 90 to get the next log gain 46.
- Log gain 46 is applied to the compressed memory data by decompression/interpolation device 12a.
- phase increment register 80 contains a value with an integer and fractional part.
- the phase increment value corresponds to the rate at which data will be read out of memory. This in turn corresponds to the pitch of the output signal.
- phase accumulator 84 When the phase increment register 80 is added to the value in phase accumulator 84, a current phase is generated which also has an integer and fractional part.
- the phase accumulator value can be thought of as an integer plus fractional address in memory 48.
- Memory 48 contains only values at integer addresses. In the present invention, it contains only log difference values at integer addresses. It is the purpose of the interpolation circuit to generate a value which lies a fractional distance between two values of the original sample stream. This is done by forming a linear combination of integer address values on either side of the desired integer plus fractional address in memory 48.
- FIG. 3 accomplishes interpolation simply and elegantly by taking advantage of the format of the compressed data to accomplish linear interpolation concurrently with decompressing the data.
- a first order linear interpolator calculates an interpolated output sample using the formula:
- ⁇ is the fractional part 44a of the phase accumulator value and y(n+1) is an interpolated value lying a fractional distance a between previously sampled data values x(n) and x(n+1).
- log (x(n+1)-x(n)) is already available, because it is of the same form as the differential log compression format.
- the multiplication of the x(n+1)-x(n) term by ⁇ is accomplished by adding the stored compressed value log (x(n+1)-x(n)) to the log of ⁇ .
- the conversion from phase fraction to log ( ⁇ ) is accomplished by lookup table 22.
- the antilog of the term log ( ⁇ ) +log (x(n+1)-x(n)) is taken to convert to the linear value ⁇ (x(n+1)-x(n)). This is done with lookup table 26a.
- the linear term ⁇ (x(n+1)-x(n)) is then added to a previously calculated x(n) to form the interpolated output y(n+1).
- the compressed log difference format uses (for example) 8 bit values
- the addition in the log domain is accomplished with 8 bit adders.
- a small lookup table is used to convert from 8 bit log difference format to 16 bit linear difference format.
- an expensive 16 bit linear multiplier has been replaced by an extremely inexpensive 8 bit adder and a small 256*16 lookup table. Not only are multiplies replaced with adds, but the adders can be small and inexpensive because of the small size of the compressed data words. This demonstrates the synergy of the present invention: the differencing operation serves both to allow storage of small words (for data compression) and also greatly simplifies the interpolation circuitry.
- ⁇ (x(n+1)-x(n)) is added to a previously computed value x(n).
- x(n) corresponds to one of the original sampled signal values before differencing.
- the circuit is initialized by loading the Phase Accumulator Register (PAR) 84, the Phase Increment Register (PIR) 80, the Envelope Accumulator Register (EAR) 94, the Envelope Increment Register (EIR) 90, and the Integration Register (IR) 28 with starting values. It may be advisable to modify these initial conditions at key transition points.
- IR 28 is loaded with the first linear sample of the desired signal, x(0), times the initial linear gain value, g(0). This is also taken as the first output of the system:
- the EAR 94 is loaded with log g(0).
- the EIR 90 is loaded with a log envelope increment value which will be repeatedly added to the initial log gain to generate a time varying gain.
- the envelope accumulation is done in the log domain which results in perceptually desirable changes in gain envelope.
- the use of log adds to replace linear multiplies means that log gain values can be used directly, which is another example of synergy in the system.
- the EIR 90 may be periodically updated by external signal 36 to change the rate and direction of change of the gain envelope.
- PAR 84 is loaded with the address of log (x(1)-x(0)), the first log difference sample stored in memory 48. Assume this is at address zero.
- PIR 80 is loaded with an increment determined by the ratio of the desired pitch to the originally sampled pitch. Assume that PIR is loaded with 1.25.
- the system output 18 is taken from the input to IR 28.
- the interpolated sample is:
- the resulting sum is passed through antilog table 26a to generate the linear term gain*0.25*(x(2)-x(1)) which is added to gain*x(1) currently in IR 28.
- the resulting sum is the interpolated output y(1) which is latched into output register (OR) 74. This sum is not loaded into IR 28, which currently holds gain*x(1). This load is prevented by control signal 45. Instead, log ( ⁇ ) is once again forced to zero so that log (gain)+log (x(2)-x(1)) passes through the antilog table and is added to IR 28 so that the value in IR 28 now is equal to:
- y(2) This term is needed to generate the next output sample, y(2), which is at fractional address 2.5, and will be generated by interpolation just as y(1) was generated.
- the process of linear interpolation involves reading an integer number of log difference samples from memory 48, adding these to gain, and adding the antilog of this logsum to IR 28.
- IR 28 contains x(n), where x(n) corresponds to the integer sample immediately preceding the desired fractionally interpolated output y(n).
- the next log difference sample log (x(n+1)-x(n) is read from memory 48 and added to log ( ⁇ ) plus log (gain) and the antilog of this term is added to the current value in IR 28 and the sum loaded into the output register. Then the process repeats.
- Count signal 43 is determined by Integer Phase Counter (IPC) 70, and used by phase control block 87 to generate control signals 45, which control the number of reads of memory 48 and clock enables of the integration register 28 and the output register 28, as well as forcing the output 62a of log block 22 to zero at appropriate times.
- IPC Integer Phase Counter
- ⁇ log ( ⁇ ) is always forced to zero.
- phase increment 34 2.37. Walking through three phase increments illustrates the operation of FIG. 3.
- phase increment is a constant 2.37. Those skilled in the art will appreciate that the phase increment may also change with time, if pitch is not constant. Gain is ignored in this example for simplicity.
- PAR 84 was initialized to 0, assumed in this case to be the address of the first data point, x(1)-x(0).
- Count signal 43 is the integer portion of the value out of adder 82 minus the integer portion of the value in PAR 84.
- Count 43 is used by process control 87 to determine how many values to sum in IR 28 before calculating an output value 18.
- TABLE 2 illustrates how the embodiment of FIG. 3 operates for the present example. Gain is ignored for the moment, but is discussed below.
- the leftmost column provides times from 0 to 23 for convenience in discussing the table, but these times are even increments or clock counts. In some cases, two operations shown at separate times could be performed at the same time.
- value x(0) has been preloaded as an initial condition into integration register 28.
- count 43 was 2 (see table 1 above), so two compressed values from memory 48 will be combined with initial condition in IR 28 before the first output value is computed.
- the first compressed data point, log (x(1)-x(0)) is available as signal 16.
- Signal 62a is held at zero.
- Block 26a takes the inverse log of the first compressed data point to get x(1)-x(0), which is combined with the initial value in IR 28 resulting in the value x(1) being stored back into IR 28 at time 2.
- the next compressed data point log (x(2)-x(1)) is available as signal 16.
- the inverse log of this value is combined with the value in IR 28 to form x(2), which is stored in IR 28 at time 4. Since two compressed data points have been combined in IR 28, it is now time to compute the first output data point.
- the value log (x(3)-x(2)) comes in as signal 16.
- Signal 62a is allowed to go to log ( ⁇ ), and adder 27 combines the inverse log of these values with the contents of IR 28 to form x(2)+ ⁇ (x(3)-x(2)), which is stored in output register 74 at time 6. At time 7, this value is clocked out as signal 18.
- the first a is 0.37.
- count signal 43 is 3 rather than 2. Therefore, the antilogs of three compressed data values are combined with the contents of IR 28 before the output data point is computed.
- Linear interpolation is also called 2 nd order interpolation because it estimates a value a fractional distance between two values by linear combination of the 2 integer sample values, x(n) and x(n+1), surrounding the desired fractional sample.
- This linear combination involves two interpolation coefficients ⁇ and (1- ⁇ ), where ⁇ is the fractional distance between x(n) and x(n+1). So the formula is:
- the formula for generating the coefficients a(-1) through a(2) is still based on ⁇ but is more complicated. Since ⁇ generally changes for every output sample because of the addition of the integer+fractional phase increment to the phase accumulator, the coefficients a(m) also change for every output sample calculation. These coefficients turn out to be a selection of coefficients from an FIR low pass filter. This technique of changing coefficients is sometimes referred to a polyphase filtering and is well documented in the literature. See, for example, U.S. Pat. No. 5,111,727 by Rossum.
- the fractional value a is expressed with a certain number of bits (e.g. 12 bits). The greater the number of bits of ⁇ the greater the pitch precision of the output signal.
- To select a set of filter coefficients based on ⁇ we extract some number of most significant bits of ⁇ and use these index into a table containing sets of coefficients. For example, if we extract the 8 most significant bits of ⁇ and use these to index into the table of coefficients then the table should contain 256 sets of coefficients.
- the coefficient table can be thought of as a matrix where each row represents a coefficient set and each column corresponds to a particular value of most significant bits of ⁇ . If we assume a 16 th order interpolator, 8 bits of ⁇ used for indexing, we have a 16*256 sized coefficient matrix.
- FIG. 6 shows a 4096 point sampled impulse response of a low pass filter used for interpolation.
- FIG. 7 shows the absolute value of the impulse response.
- the filter is designed by generating a sin (x)/x sync function and windowing it with a cosine squared Hanning window. This is a common FIR filter design technique.
- each 256 sample section as the column of a 256*16 matrix then this defines a coefficient matrix suitable for interpolation.
- the most significant 8 bits of ⁇ are used to select a row of this matrix.
- Each row corresponds to a coefficient set.
- each coefficient set is 16 points long with one point taken from each 256 point section of the impulse response.
- the 8 bits of ⁇ select the offset into the 256 point sections with the same offset used for each section. As ⁇ changes for each output sample a new set of coefficients is selected from the matrix.
- an interpolated output value involves forming the sum of products or dot product of a contiguous sequence or vector of input samples with a set of filter coefficients. Assume that for a particular output value the sequence of input samples is represented by:
- the output value to be calculated is a fractional distance between two of the input samples.
- the output y(n) corresponds to a sample a fractional distance between x(m+N/2) and x(m+N/2+1).
- the dot product operation for the calculation of y(n) is:
- the coefficient c(0) consists of the sum of all coefficients a(0) . . . a(N-1) in the N length coefficient set.
- FIG. 9 shows the dB magnitude frequency response of the filter before and after this modification has been applied.
- the smooth curve which is discernible at the region around radian frequency 2 and which is otherwise close to the top of the less smooth curve is the original unmodified response. After modification the less smooth curve results. This is still an excellent low pass filter, albeit with many zeros in its response, and will work well for interpolation.
- FIG. 4 shows a higher order decompression/interpolation circuit 12b which is a generalization of the 2 nd order circuit of FIG. 3.
- the circuit is initialized by loading the Phase Accumulator Register (PAR), the Phase Increment Register (PIR), the Envelope Accumulator Register (EAR), the Envelope Increment Register (EIR), the Integer Phase Count Register (IPC), and the Integration Register (IR) with starting values.
- PAR Phase Accumulator Register
- PIR Phase Increment Register
- EAR Envelope Accumulator Register
- EIR Envelope Increment Register
- IPC Integer Phase Count Register
- IR Integration Register
- c(0) always equal to 1
- g(n) is the nth gain value produced by the envelope accumulator.
- y(n) corresponds to the interpolated fractional address value x(m+N/2-1+ ⁇ ) where ⁇ is the fractional part of PAR.
- the term "m" in the interpolation equation is equal to the integer part of PAR.
- the log difference values d(2), E, d(16) are then fetched in sequence from memory 448. Each is added to the corresponding log coefficient, log (c(1)) E log (c(15)) and to log (g(1)). The antilogs of these sums are formed and added to OR 438 to form g(1)*y(1).
- IR 428 remains fixed at x(1) in preparation for the next output calculation, which requires calculation of x(2). PAR is then incremented by PIR, IPC is updated and the process repeats to generate outputs y(2), y(3), y(4), E
- phase increment is again 2.37
- TABLE 1 is repeated here as TABLE 3 to show that count 43, phase integer 42, and phase fraction 44 are computed in the same manner as in the FIG. 3 linear interpolation example.
- phase fraction 44 is not used directly, but is used to index into the matrix of coefficients 50.
- Three coefficients C 1 , C 2 , and C 3 are extracted from matrix 50 and provided to register 422 sequentially as signals 44b.
- signals 44b will actually comprise the logs of the coefficients, which have been stored in matrix 50.
- register 422 could also compute the logs of the coefficients if convenient.
- the logs of the coefficients will be sequentially combined with compressed data points from memory 448 and log gain 46 when it is time to compute the output data value 18.
- first x(m) must be calculated by holding signal 62a to zero and adding the antilog of the requisite number of compressed data points to the value in IR 428, just as was done in the embodiment of FIG. 3.
- Control signal 445 from process control block 487 causes register 422 to output a value of zero.
- Count value 443 is used to determine how many compressed data points will be antilogged and combined in IR 428 before output data point 18 is computed.
- the operations performed at times 0-5 are the same as those in TABLE 2.
- the first step (performed at times 0-5) is to compute x(2) and store it in IR 428.
- signal 62a is forced to zero while the accumulation in IR 428 is taking place.
- Mux 453 selects signal 429, and the input to OR 438 is disabled while this accumulation is occurring.
- the time 6 step is replaced with steps 6a-6g.
- Mux 453 selects line 429 from IR 428, and x(2) is added to C 1 *d(3) by adder 427, and the result placed in OR 438.
- Mux 453 selects signal 439 from OR 438 and the other coefficient terms are added to the value in OR 438, and the result placed back in OR 438 each time.
- the contents of OR 438 are output as signal 18.
- x(4) is formed in IR 428 by accumulating antilogged compressed data points in the usual manner. Note, however, that memory 448 must go backward by three compressed data points to provide log (d(3)).
- each term output as signal 18 is scaled by g to give terms of the form g*x(n)+g*(C 1 *d(n+1)+C 2 *d(n+2)+C 3 *d(n+3).
- gain is not constant, there are, again, small residual terms. These residuals are normally not significant for relatively slowly changing signals.
- FIG. 5 shows the present invention integrated into a standard bus architecture.
- CPU 50 serves as controller 32, providing pitch and loudness control signals 46, 48 over bus 60.
- CPU memory 52 may serve as memory 48, providing data 16, or the memory may be separate as shown in FIGS. 2 and 3.
- Decompressor/interpolator 12 is shown as part of a sound card 54, which may incorporate other signal processing functions.
- Output signal 18 is provided to a digital to analog converter as shown in FIG. 1.
Landscapes
- Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
y(n+1)=(1-α)x(n)+αx(n+1)=x(n)+α(x(n+1)-x(n))=x(n)+antilog (log (α)+log (x(n+1)-x(n)))
y(1)=gain*x(1)+gain*0.25*(x(2)-x(1))
gain*x(1)=gain*x(0)+gain*(x(1)-x(0))
gain*x(2)=gain*x(1)+gain(x(2)-x(1))
TABLE 1 ______________________________________ PIR PARadder count α 80 84 82 43 42 44a ______________________________________ 1st increment 2.37 0 2.37 2 -- -- 2.37 2.37 -- -- -- -- 2.37 2.37 -- -- 2 0.37 2nd increment 2.37 2.37 4.74 2 -- -- 2.37 4.74 -- -- -- -- 2.37 4.74 -- -- 4 0.74 3rd increment 2.37 4.74 7.11 3 -- -- 2.37 7.11 -- -- -- -- 2.37 7.11 -- -- 7 0.11 ______________________________________
TABLE 2 ______________________________________ at 16 at 62a IR 28 in OR 74 Output 18 ______________________________________ 0 -- 0 x(0) 0 -- 1 log(x(1) - 0 x(0) -- x(0)) 2 -- 0 x(1) -- 3 log(x(2) - 0 x(1) -- x(1)) 4 -- 0 x(2) -- 5 log(x(3) - log(α) x(2) -- x(2)) 6 -- 0 x(2) x(2) + -- α(x(3) - x(2)) 7 -- 0 x(2) x(2) + α(x(3) - x(2)) 8 log(x(3) - 0 x(2) -- x(2)) 9 -- 0 x(3) -- 10 log(x(4) - 0 x(3) -- x(3)) 11 -- 0 x(4) -- 12 log(x(5) - log(α) x(4) -- x(4)) 13 -- 0 x(4) x(4) + -- α(x(5) - x(4)) 14 -- 0 x(4) x(4) + α(x(5) - x(4)) 15 log(x(5) - 0 x(4) -- x(4)) 16 0 x(5) -- 17 log(x(6) - 0 x(5) -- x(5)) 18 0 x(6) -- 19 log(x(7) - 0 x(6) -- x(6)) 20 0 x(7) -- 21 log(x(8) - log(α) x(7) -- x(7)) 22 x(7) x(7) + -- α(x(8) - x(7)) 23 x(7) x(7) + α(x(8) - x(7)) ______________________________________
y(n)=a(0)x(n)+a(1)x(n+1)
y(n)=a(0)x(n-1)+a(1)x(n)+a(2)x(n+1)+a(3)x(n+2)
y(n)=a(0)x(m)+a(1)x(m+1)+ . . . +a(N-1)x(m+N-1)
y(n)=a(0)x(m)+a(1)x(m+1)+ . . . +(a(N-2)+a(N-1))x(m+N-2)+a(N-1)d(m+N-1)
y(n)=c(0)x(m)+c(1)d(m+1) + . . . +c(N-1)d(m+N-1)
g(n)*y(n)=g(n)*(c(0)x(m)+c(1)d(m+1)+ . . . +c(N-1)d(m+N-1))
g(1)*y(1)=g(1)(x(1)+c(1)d(2)+ . . . +c(15)d(16))
TABLE 3 ______________________________________ 80 84 82 43 42 44a ______________________________________ 1st increment 2.37 0 2.37 2 -- -- 2.37 2.37 -- -- -- 2.37 2.37 -- -- 2 0.37 2nd increment 2.37 2.37 4.74 2 -- -- 2.37 4.74 -- -- -- -- 2.37 4.74 -- -- 4 0.74 3rd increment 2.37 4.74 7.11 3 -- -- 2.37 7.11 -- -- -- -- 2.37 7.11 -- -- 7 0.11 ______________________________________
TABLE 4 ______________________________________ at 16 at 62a IR 428 in OR 438 Output 18 ______________________________________ 0 -- 0 x(0) 0 -- 1 log(d(1)) 0 x(0) -- 2 -- 0 x(1) -- 3 log(d(2)) 0 x(1) -- 4 -- 0 x(2) -- 5 log(d(3)) log(C.sub.1) x(2) -- 6a -- 0 x(2) x(2) + -- C.sub.1 *d(3) 6b log(d(4)) log (C.sub.2) x(2) 6c x(2) x(2) + C.sub.1 *d(3) + C.sub.2 *d(4) 6d log(d(5)) log(C3) x(2) 6e x(2) x(2) + C.sub.1 *d(3) + C.sub.2 *d(4) + C.sub.3 *d(5) 7 x(2) + C.sub.1 *d(3) + C.sub.2 *d(4) + C.sub.3 *d(5) 8 log(d(3)) 0 x(2) -- 9 -- 0 x(3) 10 log(d(4)) 0 x(3) 11 -- 0 x(4) 12 log(d(5)) log(C.sub.1) x(4) 13a -- x(4) x(4) + C.sub.1 *d(5) 13b log(d(6)) log(C.sub.2) x(4) 13c -- x(4) x(4) + C.sub.1 *d(5) + C.sub.2 *d(6) 13d log(d(7)) log(C.sub.3) x(4) -- 13e -- 0 x(4) x(4) + -- C.sub.1 *d(5) + C.sub.2 *d(6) + C.sub.3 *d(7) 14 -- 0 x(4) x(4) + C.sub.1 *d(5) + C.sub.2 *d(6) + C.sub.3 *d(7) ______________________________________
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/815,318 US5890126A (en) | 1997-03-10 | 1997-03-10 | Audio data decompression and interpolation apparatus and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/815,318 US5890126A (en) | 1997-03-10 | 1997-03-10 | Audio data decompression and interpolation apparatus and method |
Publications (1)
Publication Number | Publication Date |
---|---|
US5890126A true US5890126A (en) | 1999-03-30 |
Family
ID=25217445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/815,318 Expired - Lifetime US5890126A (en) | 1997-03-10 | 1997-03-10 | Audio data decompression and interpolation apparatus and method |
Country Status (1)
Country | Link |
---|---|
US (1) | US5890126A (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6242681B1 (en) * | 1998-11-25 | 2001-06-05 | Yamaha Corporation | Waveform reproduction device and method for performing pitch shift reproduction, loop reproduction and long-stream reproduction using compressed waveform samples |
US6295014B1 (en) * | 1997-10-24 | 2001-09-25 | Sony United Kingdom Limited | System for processing one-bit audio signals |
US20010033616A1 (en) * | 2000-01-07 | 2001-10-25 | Rijnberg Adriaan Johannes | Generating coefficients for a prediction filter in an encoder |
US20040184569A1 (en) * | 2001-07-16 | 2004-09-23 | Raghu Challa | Digital voltage gain amplifier for zero if architecture |
US6965676B1 (en) * | 1999-10-19 | 2005-11-15 | Texas Instruments Incorporated | Volume-responsive loudness compensation circuits, systems, and methods |
US20060271356A1 (en) * | 2005-04-01 | 2006-11-30 | Vos Koen B | Systems, methods, and apparatus for quantization of spectral envelope representation |
US20070061390A1 (en) * | 2005-09-09 | 2007-03-15 | Leo Bredehoft | Interpolator using splines generated from an integrator stack seeded at input sample points |
US20070088545A1 (en) * | 2001-04-02 | 2007-04-19 | Zinser Richard L Jr | LPC-to-MELP transcoder |
US9043214B2 (en) | 2005-04-22 | 2015-05-26 | Qualcomm Incorporated | Systems, methods, and apparatus for gain factor attenuation |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4058676A (en) * | 1975-07-07 | 1977-11-15 | International Communication Sciences | Speech analysis and synthesis system |
US4546342A (en) * | 1983-12-14 | 1985-10-08 | Digital Recording Research Limited Partnership | Data compression method and apparatus |
US4631746A (en) * | 1983-02-14 | 1986-12-23 | Wang Laboratories, Inc. | Compression and expansion of digitized voice signals |
US4754483A (en) * | 1980-10-31 | 1988-06-28 | Sri International | Data compression system and method for audio signals |
US5054072A (en) * | 1987-04-02 | 1991-10-01 | Massachusetts Institute Of Technology | Coding of acoustic waveforms |
US5111727A (en) * | 1990-01-05 | 1992-05-12 | E-Mu Systems, Inc. | Digital sampling instrument for digital audio data |
US5341457A (en) * | 1988-12-30 | 1994-08-23 | At&T Bell Laboratories | Perceptual coding of audio signals |
US5526353A (en) * | 1994-12-20 | 1996-06-11 | Henley; Arthur | System and method for communication of audio data over a packet-based network |
-
1997
- 1997-03-10 US US08/815,318 patent/US5890126A/en not_active Expired - Lifetime
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4058676A (en) * | 1975-07-07 | 1977-11-15 | International Communication Sciences | Speech analysis and synthesis system |
US4754483A (en) * | 1980-10-31 | 1988-06-28 | Sri International | Data compression system and method for audio signals |
US4631746A (en) * | 1983-02-14 | 1986-12-23 | Wang Laboratories, Inc. | Compression and expansion of digitized voice signals |
US4546342A (en) * | 1983-12-14 | 1985-10-08 | Digital Recording Research Limited Partnership | Data compression method and apparatus |
US5054072A (en) * | 1987-04-02 | 1991-10-01 | Massachusetts Institute Of Technology | Coding of acoustic waveforms |
US5341457A (en) * | 1988-12-30 | 1994-08-23 | At&T Bell Laboratories | Perceptual coding of audio signals |
US5111727A (en) * | 1990-01-05 | 1992-05-12 | E-Mu Systems, Inc. | Digital sampling instrument for digital audio data |
US5526353A (en) * | 1994-12-20 | 1996-06-11 | Henley; Arthur | System and method for communication of audio data over a packet-based network |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6295014B1 (en) * | 1997-10-24 | 2001-09-25 | Sony United Kingdom Limited | System for processing one-bit audio signals |
US6242681B1 (en) * | 1998-11-25 | 2001-06-05 | Yamaha Corporation | Waveform reproduction device and method for performing pitch shift reproduction, loop reproduction and long-stream reproduction using compressed waveform samples |
US6965676B1 (en) * | 1999-10-19 | 2005-11-15 | Texas Instruments Incorporated | Volume-responsive loudness compensation circuits, systems, and methods |
US20010033616A1 (en) * | 2000-01-07 | 2001-10-25 | Rijnberg Adriaan Johannes | Generating coefficients for a prediction filter in an encoder |
US7224747B2 (en) * | 2000-01-07 | 2007-05-29 | Koninklijke Philips Electronics N. V. | Generating coefficients for a prediction filter in an encoder |
US20070088545A1 (en) * | 2001-04-02 | 2007-04-19 | Zinser Richard L Jr | LPC-to-MELP transcoder |
US7529662B2 (en) * | 2001-04-02 | 2009-05-05 | General Electric Company | LPC-to-MELP transcoder |
US20040184569A1 (en) * | 2001-07-16 | 2004-09-23 | Raghu Challa | Digital voltage gain amplifier for zero if architecture |
US20060277042A1 (en) * | 2005-04-01 | 2006-12-07 | Vos Koen B | Systems, methods, and apparatus for anti-sparseness filtering |
US8069040B2 (en) | 2005-04-01 | 2011-11-29 | Qualcomm Incorporated | Systems, methods, and apparatus for quantization of spectral envelope representation |
US20070088542A1 (en) * | 2005-04-01 | 2007-04-19 | Vos Koen B | Systems, methods, and apparatus for wideband speech coding |
US20070088558A1 (en) * | 2005-04-01 | 2007-04-19 | Vos Koen B | Systems, methods, and apparatus for speech signal filtering |
US20060282263A1 (en) * | 2005-04-01 | 2006-12-14 | Vos Koen B | Systems, methods, and apparatus for highband time warping |
US20080126086A1 (en) * | 2005-04-01 | 2008-05-29 | Qualcomm Incorporated | Systems, methods, and apparatus for gain coding |
US20060271356A1 (en) * | 2005-04-01 | 2006-11-30 | Vos Koen B | Systems, methods, and apparatus for quantization of spectral envelope representation |
US8484036B2 (en) | 2005-04-01 | 2013-07-09 | Qualcomm Incorporated | Systems, methods, and apparatus for wideband speech coding |
US8078474B2 (en) | 2005-04-01 | 2011-12-13 | Qualcomm Incorporated | Systems, methods, and apparatus for highband time warping |
US8140324B2 (en) * | 2005-04-01 | 2012-03-20 | Qualcomm Incorporated | Systems, methods, and apparatus for gain coding |
US8244526B2 (en) | 2005-04-01 | 2012-08-14 | Qualcomm Incorporated | Systems, methods, and apparatus for highband burst suppression |
US8260611B2 (en) | 2005-04-01 | 2012-09-04 | Qualcomm Incorporated | Systems, methods, and apparatus for highband excitation generation |
US8332228B2 (en) | 2005-04-01 | 2012-12-11 | Qualcomm Incorporated | Systems, methods, and apparatus for anti-sparseness filtering |
US8364494B2 (en) | 2005-04-01 | 2013-01-29 | Qualcomm Incorporated | Systems, methods, and apparatus for split-band filtering and encoding of a wideband signal |
US9043214B2 (en) | 2005-04-22 | 2015-05-26 | Qualcomm Incorporated | Systems, methods, and apparatus for gain factor attenuation |
US20070061390A1 (en) * | 2005-09-09 | 2007-03-15 | Leo Bredehoft | Interpolator using splines generated from an integrator stack seeded at input sample points |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5111727A (en) | Digital sampling instrument for digital audio data | |
US4715257A (en) | Waveform generating device for electronic musical instruments | |
CA1157564A (en) | Sound synthesizer | |
US5566101A (en) | Method and apparatus for a finite impulse response filter processor | |
EP0337458B1 (en) | Apparatus for synthesizing analog signals in PCM | |
KR0150223B1 (en) | Tone signal generating device | |
US5890126A (en) | Audio data decompression and interpolation apparatus and method | |
US6300553B2 (en) | Pitch shifter | |
US6915319B1 (en) | Method and apparatus for interpolating digital signal | |
US4601052A (en) | Voice analysis composing method | |
US5777249A (en) | Electronic musical instrument with reduced storage of waveform information | |
GB2059726A (en) | Sound synthesizer | |
JPS642960B2 (en) | ||
JP2558356B2 (en) | Digital to analog converter | |
JP2608938B2 (en) | Waveform interpolation device | |
JP3527396B2 (en) | Waveform recording device and waveform reproducing device | |
JP3223280B2 (en) | Waveform data interpolation device | |
JP2993344B2 (en) | Waveform generation device, waveform storage device, waveform generation bubble, and waveform storage method | |
JP2900076B2 (en) | Waveform generator | |
JPS5898793A (en) | Voice synthesizer | |
JP2790160B2 (en) | Waveform generation device and waveform storage device | |
JPH0512326A (en) | Memory | |
JP2800623B2 (en) | Coefficient storage method and musical tone waveform generator | |
JP2900078B2 (en) | Waveform recording / playback method and waveform playback device | |
JP2671648B2 (en) | Digital data interpolator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: EUPHONICS, INC., COLORADO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LINDEMANN, ERIC NMI;REEL/FRAME:008591/0574 Effective date: 19970307 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FEPP | Fee payment procedure |
Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: 3COM CORPORATION, CALIFORNIA Free format text: MERGER AND CHANGE OF NAME;ASSIGNOR:EUPHONICS, INCORPORATED;REEL/FRAME:012435/0117 Effective date: 19981217 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD COMPANY, CALIFORNIA Free format text: MERGER;ASSIGNOR:3COM CORPORATION;REEL/FRAME:024630/0820 Effective date: 20100428 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD COMPANY, CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE SEE ATTACHED;ASSIGNOR:3COM CORPORATION;REEL/FRAME:025039/0844 Effective date: 20100428 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:027329/0044 Effective date: 20030131 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: CORRECTIVE ASSIGNMENT PREVIUOSLY RECORDED ON REEL 027329 FRAME 0001 AND 0044;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:028911/0846 Effective date: 20111010 |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |