I am trying to implement FM algorithms for computer music applications. The
language I'm using (Nyquist) has a primitive FM oscillator called fmosc. I
want to use modulators in series which is a very common technique in some
Yamaha synths. In pseudo code it is the composition fmosc(fmosc(osc()))
where all oscillators output sine waves. When I have tried this there are
strong non-harmonic components even though all oscillators are at the same
frequency and I am well below the Nyquist limit. I think the culprit is a
strong DC component from the inner fmosc. My first thought was to use a
very sharp high-pass filter around 20Hz, in pseudo code
fmosc(hp(fmosc(osc()))). There was a marked improvement but also a distinct
"blip" sound on the attack. Are there other ways to remove the DC
component from a signal? Does anyone know how Yamaha does it?
Thanks in advance.
For those who are interested, Nyquist is a rather elegent language for sound
synthesis and composition. It seems to get lost in the shadows of CSOUND
etc.. You can find it at
http://www-2.cs.cmu.edu/afs/cs.cmu.e....software.html
--
Remove underscores in email address to respond