NON-LINEAR TONE GENERATOR

Abstract: A method and apparatus for producing a tone (e.g. for music) without the use of a waveform memory and using a feedback loop. The feedback loop includes a waveform generator which calculates, in real time, a parabolic approximation to a sine wave. The feedback loop includes a delay phase differencer (46) to eliminate hunting. The output waveform from the feedback loop is provided to a sine function generator (74) which approximates a sine value using a third order polynomial, to provide the output tone.

Description: NON-LINEAR TONE GENERATOR BACKGROUND OF THE INVENTION Field of the Invention This invention relates to a method and apparatus for producing tones, for instance for music (sound) synthesis, and more particularly to FM tone generation with dynamically varied spectral brightness and not using a waveform memory. Description of the Prior Art U. S. Patent No. 4,249,747 issued February 10, 1981 to Tomisawa and incorporated herein by reference in its entirety describes producing a tone waveform (signal) having a desired spectral construction by modulating an input address signal of a selected frequency for a waveform memory. For the modulation of the input address signal, the output signal of the waveform memory is multiplied by a parameter β of a suitable value and the multiplication product is added to the input address signal. Tomisawa's Figure 1 (as shown in present Figure 1) has an arithmetic unit 10 including an adder 11 and a sinusoidal waveform memory 12 read by an output y of the adder 11. To one input of the adder ll is applied variable x, and to the other input is applied an output sine y of the sinusoidal wave memory 12 at a suitable feedback ratio. This feedback ratio is determined by a feedback parameter (factor) β . A multiplier 13 in the feedback loop multiplies the output sine y of the memory 12 by the feedback parameter β . Product β*sin y is applied to the adder 11. The output y of the adder 11 therefore is x + /3 « sin y which constitutes an actual address input of the sinusoidal waveform memory 12. It is assumed that a predetermined delay time exists between application of the input to the adder 11 and delivery of the output from the sinusoidal wave memory 12. The variable x is generated as shown in Tomisawa Figure 2 (not included here) . The basic input is a particular frequency applied to an accumulator where the frequency number is repeatedly added in accordance with a clock pulse signal. The variable x increases quickly if the frequency number is large and increases slowly if the frequency number is small. The variation rate, i.e. the repetition within the module frequency of the variable x, determines the frequency of a tone produced by the arithmetic unit 10 of Figure 1. The tone waveform sine y produced by the arithmetic unit 10 is processed through circuitry shown in Tomisawa Figure 3 which includes a multiplier, one input of which is sine y and the second input of which is produced by an envelope generator. The envelope generator generates an envelope shaped signal in response to a input signal. This envelope shaped signal is supplied to the multiplier which multiplies the two inputs to produce an output tone. This approach requires the use of a sinusoid memory 12 as in conventionally used in a music synthesis wherein the elements of a sine wave (i.e., time varying signal) are stored in a memory. By addressing the memory, one accesses the needed corresponding values, thus computing the needed sine wave. Moreover in the structure of Figure 1, note that the sine y value is multiplied by the parameter jβ, and supplied back to the sinusoid memory as value y from the adder 11. Thus not only does this require use of a waveform memory, but it also determines the sine value in the feedback loop itself. A disadvantage of this method is that in some applications memory waveform lookups may incur long latencies, hence degrading performance, or require excessive amounts of system resources in order to provide a tone output in real time. That is to say, the prior art approach is not efficient to implement in a general purpose processor which is relatively slow to perform table lookups. Also, the system of Tomisawa including the structures of his Figures 1, 2 and 3 requires separate processing to apply the β factor and the envelope generator parameter, hence complicating the structure. Thus it would be desirable to improve upon the system of Tomisawa, both in terms of performance (speed) and method of operation. SUMMARY The present invention is directed to the field of frequency modulation sound synthesis which is usually considered to be using combinations of higher harmonics created by modulation. This allows one to generate waveforms including both the higher harmonics and non- harmonic sounds, and allows production of a wide range of sounds including those which sound similar to those produced by actual physical instruments as well as more synthetic sounding sounds. In accordance with the present invention, an FM (frequency modulation) tone is produced using a feedback method. However, no sinusoidal memory (or other type of lookup) is used to generate the feedback signal; instead the signal is generated by a calculation based on an externally supplied parameter. This advantageously speeds up the operation, especially considering that current trends in computer architectures are that computational bandwidth is increasing faster than memory system bandwidth, tilting the balance towards direct computation over memory access for calculating function values. In the present case the calculation is a series of relatively simple multiplications and additions which are performed quickly. Another advantage of the present approach is that the prior art tables consumed significant amounts of chip real estate for the required ROM; this is not needed with the present approach, thus economizing on chip real estate and hence reducing chip cost. Additionally, instead of using the single spectral brightness feedback factor β , three parameters are combined into one including the spectral brightness, total level, and envelope parameters, and this single parameter is applied to the calculated initial waveform which is then fedback. The present feedback loop eliminates the so-called "hunting" phenomenon (identified by Tomisawa at col. 8, lines 60-68) by means of delayed phase differencing, as opposed to Tomisawa*s averaging approach. Additionally, while a sine function generator is included in one embodiment of the present tone generator, this sine function generator is not a sine lookup table and additionally is not a part of the feedback loop, unlike that of Tomisawa. Instead, in accordance with the present invention an output of the feedback process is applied to a sine function generator. The sine function, instead of being looked up, is calculated by means of an approximation, in one embodiment using Homer's rule which approximates a sine value as a third order polynomial. Additionally, the spectral brightness parameter, rather than being the static value disclosed by Tomisawa, here is a time varying dynamic value for improved spectral brightness. Further, in accordance with this invention, the present feedback loop may be used as a modulation generator without the sine function generator or any other function generator, for instance to drive an oscillator. An apparatus in accordance with the present invention may be implemented by either computer software executed by a processor or by dedicated circuitry, both of the type well known in the art. While the present disclosure is directed to a software embodiment, it is to be understood that the present invention may be implemented by circuitry and the implementation in such circuitry is well within the skill of one of ordinary skill in the art given in the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 shows a prior art tone generator method using a sinusoid memory. Figure 2 shows a tone generator in accordance with the present invention. Figure 3 shows the tone generator of Figure 2 driving a carrier oscillator. DETAILED DESCRIPTION Figure 2 shows in diagrammatic form an apparatus and associated method in accordance with the present invention; this is illustrative and not limiting. The actual implementation would be e.g. in computer software executed by a processor, or a dedicated circuit (or a combination of both) in accordance with Figure 2. Figure 2 uses a number of conventions to illustrate sound synthesis. Beginning (arbitrarily) at function U (reference number 30) , function U calculates values defining a parabola using the well known formula x 2 -l, where x is a value at node 58 which is input to the function U. The calculated output from function U, which is a parabolic waveform, is supplied as one input value to a multiplier 34. A second (control) input to function U 30 is a plus/minus (±) sign indicator 32. The purpose of indicator 32 is to indicate that the parabola is facing up (cup shaped) or facing down (hill shaped) Rather than generating two parabolas, only one parabola is generated and then a sign (±) is applied to the output value thereby providing both upward and downward facing parabolic segments. These parabolic segments approximate a sine curve, using the simple x 2 -l calculation. It is to be understood that while a parabola is not the same as a sine curve, it roughly approximates a segment (lobe) of a sine curve. Hence one can approximate a continuous sine curve by a series of linked parabolic segments alternately facing up and facing down (plus or minus in sign) . Thus the present feedback loop, rather than including any sine calculation or memory lookup table, instead generates by calculation a series of linked parabolic segments. The parabola is generated by function U 30 as follows, using e.g. conventional computer software steps: 1. The value x is a value in the range -1 to 1, expressed as a binary multi-bit value where the first bit is a sign (+ or -) bit. 2. The most significant (sign) bit is stripped off, thus in effect multiplying x by two by a left shift step. 3. The remaining most significant bit is inverted (0 becomes 1 and vice versa) , resulting in a value x' from which the parabola y = (x*) 2 -l is calculated. Multiplier 34 (of the type conventional in the art) multiplies the parabolic waveform output by function U by a feedback factor, which in this case is the product of three parameters: (1) the well known β parameter of the type described by Tomisawa, which is an indicator or spectral brightness, (2) a total level factor (T.L.), and (3) an envelope generator factor (E.G.) . Use of these three parameters to form the feedback parameter is not limiting but is for one particular embodiment of the present invention, which is compatible with the well known Yamaha YM3812 chip, also called the OPLII. The total level (T.L.) and envelope generator factors (the envelope generator including the attack rate/decay rate and the sustain level/release rate) are values provided to this chip for determining the output waveform. See Yamaha document LSI-2438120 published June, 1987 entitled "YM3812 Application Manual" at page 8 showing an address map for registers for storage of values describing the total level and the attack rate/decay rate and sustain level/release rate. While the multiplicative feedback factor of block 36 in accordance with the present invention has a somewhat similar function as does the β factor in Tomisawa, the present feedback factor as described below is arrived at differently than in Tomisawa and includes additional elements. Multiplier 34 outputs a waveform (signal) which is provided both as an input signal to the double delay element 38 and as a first input signal to the adder 40. Double delay element 38 (designated by Z" 2 ) is for instance two single delay elements connected in series. Each delay is for one sample period; use of such single delay elements is well known in the art. The output signal of the double delay element 38 is coupled to the negative input terminal of adder 40. The elements inside dotted line 46 are a phase differencer which applies the double delay to the signal which passes through the delay element 38 and then combines the delayed signal with the original signal (which has not been delayed) . This phase differencer 46 overcomes the hunting phenomenon described by Tomisawa at column 8 beginning at line 60. Tomisawa discloses an averaging device shown in his Figure 8, intended to overcome hunting. This includes a delay flip flop providing a single delay and an adder adding the output of the delay to the original signal and a multiplier which multiplies the output of the adder by . The present inventor has found that another approach providing the double delay (two time units delay) also eliminates hunting. Moreover the location of the phase differencer 46 in Figure 2 is different than that disclosed by Tomisawa which is described as being "on the output side of the sinusoidal wave memory 12". With regard to the phase differencer 46, while this outputs an average signal, the actual averaging, i.e. the required division by two, is not performed in block 46 but instead is incorporated into the envelope generator parameter (E.G.) in block 36 for convenience. It can be seen that phase differencer 46 takes a first signal U(n)-U(n-1) and adds it to the preceding signal U(n-l)-U(n-2) due to the inverting nature of the second input terminal of adder 40. (The numbers in the parenthesis refer to clock cycles.) Thus the sum of the these two signal values is U(n)-U(n-2), which is a time difference (delay) of 2. This value is then effectively divided by 2 (as described above, as incorporated into feedback factor block 36) to provide the desired phase difference averaging and thus eliminate hunting. In accordance with the invention, the value of the feedback factor of block 36 is a non-static value varying with time. This has been found to provide a time varying timbre. The output signal from the adder 40 is coupled to a second adder 48, the other input of which is a base frequency ω,, which is constant for each particular note. Base frequency ωl is e.g. calculated from the Lo, Hi, and Block variables defining a note as described in the above-referenced Yamaha document. It is to be understood that the base frequency is determined conventionally for instance by a user or by a computer program for determining the output signal for a particular note. Thus the base frequency is characteristic of each individual note. Referring back to Figure 2, the sum output by the adder 48 is a first input signal to an adder 52. The other input to adder 52 is the signal at node 58 delayed by one time unit by delay (Z 1 ) element 56. The output signal x is applied as an input signal to a sine function generator 74. Thus the value sine x is the output signal. This output signal can be a tone (direct output) , or an input to a carrier oscillator. Figure 3 shows this second case where a modulator 80 (of the type shown in Figure 2) drives a conventional carrier oscillator 82 which includes a delay element 84, adders 88, 90, and sine function generator 94, to produce an output tone. In another embodiment, instead of a sine function generator, some other functional approximation is used, or alternatively no function is applied and the signal X is used directly as the output of the modulation generator of Figure 2. In the prior art, sine values are typically determined by a lookup table. A lookup table has a large number of addressable entries, each entry including a sine value for that address. Such lookup tables are usually implemented in read only memory. However in many modern computer systems, the time required to look up values in such a table is excessive and hence degrades system performance. Another disadvantage of table-based sine (or function) lookups is that the values are exact only when the input argument value exactly matches one of the points at which the function was sampled. Typically, the table is addressed by using only the most significant bits of the argument value as the memory address bits and throwing away the least significant bits of the argument. This results in a "sawtooth" error in the lookup approximation that changes periodically as the argument value increases. Such artifacts greatly reduce the number of bits of precision and may result in audible artifacts in a musical tone generator. A polynomial approximation, on the other hand, smoothly calculates the output value using all the available bits, resulting in many more bits of precision. That is, it has been found by the present inventor that it is faster to calculate sine values than to look them up, using a fast approximation on a digital signal processing chip having parallel functional units. See co-pending and commonly owned U.S. Patent Application Serial No. 08/541,565, filed October 10, 1995, inventors James T. Battle, Andy C. Hung, and Stephen C. Purcell, entitled "Multi-Media Engine Including Processor Using Variable Length Instructions" incorporated herein by reference in its entirety. A processor as described in that disclosure allows calculation of for instance four or more individual calculations simultaneously. This has been found to be faster than using a lookup table. The sine value may be calculated by sine generator 74 in a number of well known ways. However while such calculations are available and may be used in accordance with the present invention, the present inventor has discovered an exceptionally fast and accurate method of approximating a sine value. Thus in one embodiment of the present invention, a successive approximation is used to calculate the sine value using only a third order polynomial, providing an approximate value accurate to 16 bits. This of course conserves processor resources. Also, in one implementation only eighteen data bits are available to calculate and to express the output sine value. This is due to system limitations imposed by use of a 72 bit wide processor data path which is split up into e.g. 4 individual 18 bit data paths, for simultaneous calculation of sine values for maximum speed. The sine value is approximated to 16 bit precision using the well known Homer's rule for calculating a polynomial value. Homer's rule for calculation of a third degree polynomial is: P (y) = α 0 y 3 + α,y 2 + α 2 y + α 3 Let P, (y) = α 0 y + α, P 2 (Y) = Pι (y) y + <* 2 = any 2 + a^y + a 2 P 3 (y) = P 2 (y) y + <* 3 = a 0 y 3 + a,y 2 + a 2 y + a 3 then P (y) = P 3 (y) And y = x 2 - 1 The implementation in either circuitry or by computer software will be apparent to one skilled in the art in light of this explanation. This approximation uses a third order polynomial in y, i.e. y 3 , y 2 , y and four coefficients α 0 , α,, α 2 , α 3 where sine x = α 0 y 3 + α,y 2 + α 2 y + α 3 , and where y = x 2 - 1, with relation to Fig. 2. Such a calculation in software can be carried out efficiently by a series of "op codes" (operations) where each operation is a multiply and add ("MAD") operation. Four such MAD operations are used. The first computes y = x 2 - l. The second computes α 0 y + α,. The third multiplies this value by y and then adds α 2 , and the fourth multiplies this value by y and then adds α 3 . This yields a close approximation to the desired sine value. The coefficients α 0 , α,, α 2 , α 3 are derived from a least squares fit to a single lobe of a sine curv. These coefficients typically are fixed for any one imp1e entation. This disclosure is illustrated and not limiting; further modifications will be apparent to one of ordinary skill in the art in light of this disclosure and are intended to fall within the scope of the appended claims.

Claims: I CLAIM: 1. A method for producing a tone by synthesizing a waveform, comprising the steps of: generating a waveform by a calculation; multiplying the generated waveform by a feedback parameter to produce a product signal; and feeding back the product signal to generate a second waveform. 2. The method of Claim 1, wherein the step of generating comprises the steps of: providing a value; and calculating a parabolic waveform as a function of the provided value. 3. The method of Claim 1, wherein the step of feeding back includes the steps of: delaying the product by at least two time increments; and adding the delayed product to the product, thereby overcoming hunting. 4. The method of Claim 1, wherein the step of feeding back further comprises integrating the fed back product. 5. The method of Claim 1, further comprising the steps of: providing a spectral brightness parameter, a total level parameter, and an envelope parameter, and wherein the step of multiplying includes multiplying the generated waveforms by a product of the spectral brightness, total level, and envelope parameters prior to the step of feeding back. 6. The method of Claim 5, wherein the spectral brightness parameter is a time-varying parameter, thereby allowing a time-varying timbre to the tone. 7. The method of Claim 5, wherein the spectral brightness, total level, and envelope parameters are first multiplied together to form the feedback parameter which is then multiplied by the generated waveform. 8. The method of Claim 1, wherein the step of feeding back includes the steps of: generating a base frequency; and adding the base frequency to the fed back signal. 9. The method of Claim 1, further comprising the step of approximating a waveform value of the second waveform; wherein the waveform value is the tone. 10. The method of Claim 9, wherein the step of approximating includes approximating a sine value. 11. The method of Claim 10, wherein the step of approximating a sine value comprises the step of calculating the sine value using an approximation function. 12. The method of Claim 11, wherein the step of calculating includes the steps of: providing a set of coefficients; and calculating the sine value by use of a third order polynomial using the set of coefficients. 13. The method of Claim 1, further comprising the step of applying the tone to modulate a carrier oscillator. 14. An apparatus for producing a tone by synthesizing a waveform, comprising: a waveform generator producing a synthesized waveform by a calculation; a multiplier receiving the synthesized waveform and a feedback parameter and producing a product signal therefrom; and a feedback loop coupling the product signal to an input of the waveform generator. 15. The apparatus of Claim 14, wherein the waveform generator calculates a parabolic waveform from a provided value. 16. The apparatus of Claim 14, wherein the feedback loop includes a double phase delay; and further comprising an adder connected to add the double phase delayed synthesized waveform to the synthesized waveform, and feeding back the resulting sum. 17. The apparatus of Claim 14, wherein the feedback loop includes an integrator connected for integrating the product signal. 18. The apparatus of Claim 14, further comprising means for combining a spectral brightness parameter, a total level parameter, and an envelope parameter to form the feedback parameter. 19. The apparatus of Claim 18, further comprising means for time varying the spectral brightness parameter. 20. The apparatus of Claim 18, wherein the means for combining multiplies the spectral brightness parameter, total level parameter, and envelope parameter together. 21. The apparatus of Claim 14, the feedback loop further including an adder connected to add a base frequency to the product signal. 22. The apparatus of Claim 14, further comprising a function approximation generator having an input connected to the feedback loop and providing at its output the tone. 23. The apparatus of Claim 22, wherein the function approximation generator is a sine function generator. 24. The apparatus of Claim 23, wherein the sine function generator includes: means for providing a set of coefficients; and means for calculating an approximated sine value as a third order polynomial using the coefficients. 25. The apparatus of Claim 24, wherein the means for calculating uses four multiply and add functions.

Inventors: WANG AVERY L, WANG, AVERY, L.
Applicants: CHROMATIC RES INC, CHROMATIC RESEARCH, INC.
Application year: 1996
Main classification: G10H7
IPC codes: G10H1, G10H7