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 


------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------