Kenji's K5000 Message Board Digest - Overview | K5000 Resources - Overview |

The Eat at Joe's Kawai K5000 Message Board Digest Converting FM to ADD ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ FM to Additive Synthesis Wednesday, 24-Jun-98 22:57:26 209.160.126.27 writes: I've been a additive synthesis devotee for several years now, and I'm always looking for new info on creating sounds. Recently, I came across a couple of formulas for calculating FM sidebands. I thought maybe I could adapt some DX7 patches to my K5 (don't own a K5k, wish I did) using these formulas. After some trail and error, I had some success. I got out a book with some DX7 patches in them and "adapted" an e. piano patch. After doing all the number crunching, I set all the partials and envelopes and voila, it worked. I don't know how to calculate the amplitudes of the individual partials, so I have to make an educated guess. Has anyone tried something similiar? Leslie ------------------------------------------------------------------------------------------ Re: FM to Additive Synthesis Thursday, 25-Jun-98 04:33:48 194.172.230.108 writes: Hi Leslie! The K5000 should make a very good FM emulator! In FM, the spectrum is highly dependent on both the carrier/modulator frequency ratio and the amplitude (and, I think, the phase) of the modulator. Usually the ratio is whole-numbered (or almost) and modulator gets an amplitude envelope. With the individual harmonic envelopes of the K5000 it must be possible to emulate almost all of the FM characteristics, with the K5 perhaps a part of them. SoundDiver-K5000 (at least the German version) has a brief description of the built-in resynthesis algorithm in its on-line help which is a very good starting point. But you don't need the pitch tracking algorithm mentioned there for FM: The fundamental frequency is simply the greatest common divisor of the carrier and the modulator frequencies. Then try to do the same as SoundDiver. (How to do an FFT? -> Search for comp.dsp FAQ!) If there is a small offset in modulator frequency, it means the same as wiggling (rotating) its phase. Take the two most characteristic (opposite) phases and loop their spectra! Only if the frequency ratio is not whole-numbered, you'll have to use the K5000's AM function to get those non-harmonic spectra. I wish I had time to do all that, but I'll include it in my "cool ideas" list for sure. Maybe soon... Greetings, Jens Groh ------------------------------------------------------------------------------------------ Re: Re: FM to Additive Synthesis Thursday, 25-Jun-98 11:52:59 192.28.2.16 writes: But doesn't FM make overtones outside of the harmonic series? leiter ------------------------------------------------------------------------------------------ Re: Re: Re: FM to Additive Synthesis Thursday, 25-Jun-98 12:39:05 194.172.230.108 writes: For rational-number ratios, I don't think so. But we should better verify that. Who has an FM synth? It should be audible! Unfortunately, the nice FM Java applet from HP doesn't show whether the spectral lines are harmonics or not. Jens Groh ------------------------------------------------------------------------------------------ Re: Re: Re: Re: FM to Additive Synthesis Thursday, 25-Jun-98 14:35:43 209.160.126.99 writes: For integers, the results are always harmonic. For example the ratio 1:3 would produce the following spectra: 1,2,4,5,7,8,10,11, etc. The ratio 5:7 produces: 2,5,9,12,16,19, etc. These numbers all belong to the harmonic series. However, for 5:7, since the 1 is missing,you could treate the 2 as the fundamental lowering the keyboard an octave. You then have the spectra: 1, 2.5, 4.5,6,8,9.5, etc. The resulting sound is very much like a bell (remember that Taco Bell comercial?). With most DX7 patches, you don't run into the problem of inharmonic partials. With some patches, you will have a ratio of something like 19.276:3. Usually, when I run across a ratio like that, I round off the numbers, so it becomes 19. Fortunatly, most patches are not like that. Leslie ------------------------------------------------------------------------------------------ Re: Re: Re: Re: Re: FM to Additive Synthesis Friday, 26-Jun-98 02:22:27 209.160.126.153 writes: Oh, by the way, I've written a Word doc describing step by step how I adapted the DX7's e. piano patch for my K5. If you're interested, I can e-mail you a copy. Leslie ------------------------------------------------------------------------------------------ [editor's note: the Word doc is available in the patch archive] ------------------------------------------------------------------------------------------ Re: Re: Re: Re: Re: FM to Additive Synthesis Monday, 29-Jun-98 07:59:51 194.172.230.108 writes: Do you / does anyone have any ideas how to model fed-back FM? It seems that the results may be arbitrarily complex. A friend who owns a Yamaha SY77 told me he even managed to synthesize deterministic chaos. He set the carrier frequency to zero to have a pure sine function nonlinearity and realized the necessary feedback delay with a lowpass filter. We cannot emulate that kind of waveforms with the K5k - but maybe some more predictable ones. Does the integer-ratio argument still apply for fed-back FM? Jens Groh ------------------------------------------------------------------------------------------ Re: Re: Re: Re: Re: Re: FM to Additive Synthesis Monday, 29-Jun-98 11:12:34 192.28.2.16 writes: I can't think of any loops in the K5k structure, except the feedback loops in the time-based effects. One possibility would be to sample the output of the K5k back in through the SoundDiver "Import" function, but that's not exactly real time. leiter ------------------------------------------------------------------------------------------ Re: Re: Re: Re: Re: Re: FM to Additive Synthesis Monday, 29-Jun-98 21:55:17 209.160.126.23 writes: I know the DX7 uses high levels of feedback to introduce noise. At lower levels, however, it just brightens the sound. A carrier feeding back into itself, with no other modulators present, could be considered to have the ratio 1:1 (I recently discovered that carrier is usually listed on the right with the modulators following on the left). Assuming a low level of feedback, the carrier, at first, would modulate itself producing harmonics 1,2,3,4, more or less. These would each modulate themselves generating more harmonics. I tried this out with a program called Acid Wave. It allows you to create sounds with FM synthesis. You can also look at a frequency spectrum of the sound making it excellent for studying samples of actual instruments as well. By continuing to raise the feedback, I came up with something very close to a saw wave. So, to answere your question, I think that below the point where carrier begins producing noise the interger ratio argument still holds. Leslie ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ Re: K5k Programing Made Easy Sunday, 12-Jul-98 22:40:27 209.160.126.89 writes: Since I've been using your equations, I have tried to think of a way to combine them with what I know about calculating FM sidebands. This is what I've come up with so far: A(c+(m*n))=1/(c+(m*n)) A(abs(c-(m*n)))=1/(abs(c-(m*n))) Where A is the amplitude, c is the carrier, m is the modulator, and n is the number the modulator is multiplied by (n starts at 0 and increases by one each time the equations are used). There is two formulas because FM always generates sidebands in pairs. If you had the ratio 7:1, where 7 is the modulator and 1 is the carrier, you would get the following: A(1)=127 A(6)=106 A(8)=103 A(13)=97 A(15)=95 A(20)=92 A(22)=91 This is like a saw with many of its harmonics missing. It sounds like a bell. A ratio of 3:1 produces a hollow guitar like sound. Another variation of the formula could be: A(c+(m*n))=1/n A(abs(c-(m*n)))=1/n Here the carrier would be elimanated. A ratio of 2:5 might sound interesting. What would really be cool would be a formula for calculating a ratio like 22:3:1. This would be kinda hard because each sideband generated by 22:3 would become a modulator for 1. These formulas are not meant to calculate the amplitudes of the harmonics as they would be generated by FM, but rather make the FM spectra easier to use. Leslie ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ FM revisited Tuesday, 28-Jul-98 05:02:33 209.160.126.126 writes: Two or three weeks ago, I posted some messages about converting sounds created with FM to additive synthesis. I started out by taking some DX7 patches and tried to adapt them to my K5 using some simple formulas. The biggest problem I had was that I didn't have any way of calculating the amplitudes of the harmonics; I basically had to make an educated guess. Well I've made some progress in that area. Using some equations that are more complicated than I ever dreamed of getting in to, I can now calculate what the amplitudes of the harmonics are suppose to be. I've written a program for the Atari ST (which started out by using leiter's equations to create sounds) which includes three (at this time) FM algorithms. The output of the operators is scaled to match that of the DX7 so that when the modulation level is set it is equivalent (theoretically) with that of the DX7. The algorithms aren't nearly as complex as that of the DX7's, but I've generated some nice sounds anyway. I can transmit results to my K5 when I'm done as well. I would like to share the results of all this with the rest of you, but I doubt if very many of you use an Atari. Also the program is written for the K5. If any of you are writing something like this for the K5000 and would like some help, let me know. I would love to help out if I could. I would probably get the better part of the deal since I'm sure I would learn more from you guys than the other way around :) On a technical note, I understand the best way of doing FM to additive is to use relatively simple formulas to calculate a FM waveform and do a Fourier transform to get the harmonics. Unfortunately, I can't seem to grasp the equations to do this (sorry Jens), so if any of you can explain it as simply as possible, I would be greatful. Leslie ------------------------------------------------------------------------------------------ Re: Fourier Transform Wednesday, 29-Jul-98 14:21:02 209.160.126.97 writes: I was wondering if the following formula is correct for calculating FM waveforms: SIN(xt+m*SIN(yt)) Where xt is the carrier multiplied by time, m is the modulation index, and y is the modulator multiplied by time. If this is right, would the following represent a carrier being modulated by two modulators "in-series"? SIN(xt+my*SIN(yt+mz*SIN(zt))) Where xt is the carrier, my is the modulation index for yt, yt is the first modulator, mz is the modulation index for for zt, and zt is the second modulator. If I can make this work, it would be a heck of a lot easier than dealing with those Bessel functions. The number crunching involved in those really prevented me from creating very complex algorithms. There doesn't seem to be much of a limit with how complex the algorithms can be with this method. Maybe I can even figure out how to include a feedback loop. BTW, so far I've been able to do an Fourier analysis on a square wave and a saw wave. So I am making progress. I've go a long way to go before I get this stuff down, though. Leslie ------------------------------------------------------------------------------------------ Re: Re: Fourier Transform Thursday, 30-Jul-98 04:37:59 194.172.230.108 writes: Let me repeat here what I wrote in an email to Leslie in order to let everyone understand what algorithm he's about to try. I descibed a relatively simple, yet exact algorithm to emulate FM by additive synthesis: "It works for periodic signals, so the carrier/modulator ratio must be whole-numbered. Then they have a common period. Divide this period into 256 sampling intervals and compute the FM signal's time function for each point: x[i] = sin(2*pi*d*(i/256)*(1+m*sin(2*pi*n*(i/256)))) ; i = 0...255 ; n/d = carrier/modulator ratio ; m = modulator amplitude. (I hope this is a correct FM formula.) Then compute a 256-point real-valued FFT (Fast Fourier Transform) to get the 128 spectral values. (Look for FFT code in any DSP FAQ on the 'net or get info here: http://nr.harvard.edu/nr/bookcpdf.html ) These values are complex numbers, thus real/imaginary number pairs. To get the amplitude, compute squareroot(real^2+imag^2). Throw away the first value, because its frequency is zero. (You may need to throw away the last harmonic as well, because it has no phase information.) You're done! For 64 harmonics, you need 128 rather than 256 time steps." (Of course, any DFT (Discrete Fourier Transform) will do, not only the special version called FFT.) Jens Groh ------------------------------------------------------------------------------------------ Re: Re: Fourier Transform Thursday, 30-Jul-98 04:55:08 194.172.230.108 writes: No, SIN(xt+m*SIN(yt)) is phase modulation, not frequency modulation, but the difference is tiny: SIN(xt+xt*m*SIN(yt)) is FM. So your cascaded FM should be: SIN(xt+xt*my*SIN(yt+yt*mz*SIN(zt))) . Everyone agree? Jens Groh ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------