On 22 Apr 2009, at 12:11, Matthew Yee-King wrote:
> Hello!
>
> Can anyone suggest how to create a simple FM circuit with modulator
> feedback?
>
> I've come up with this, but the pitch does not remain constant
> (well that's the whole point, but you know what I mean):
>
> SynthDef("fm_fb", {arg b_freq = 440;
> var chain, freq;
> freq = b_freq + (LocalIn.ar(1) * MouseX.kr(0, 10) * b_freq);
> chain = SinOsc.ar(freq, mul:0.3);
> LocalOut.ar(chain);
> OffsetOut.ar(0, chain);
> //Out.ar(1, SinOsc.ar(b_freq, mul:0.1));
> }).play(s);
if you are still interested in this -
you could try to modulate phase instead of freq to avoid the drift.
something like this:
SynthDef("fm_fb", {arg b_freq = 440;
var chain, phas, sr, freq, fb;
freq = MouseY.kr(50, 1000, 'exponential');
sr = SampleRate.ir;
fb = OnePole.ar( (LocalIn.ar(1) * MouseX.kr(0, 1.5)), 0.91);
phas = Phasor.ar(0, freq/sr) + fb;
chain = SinOsc.ar(0, phas*2pi, 0.5);
LocalOut.ar(chain);
OffsetOut.ar(0, chain);
}).play(s);
the lowpass is just in there to dampen the high freq energy of the
modulation signal a little.
experiment with the coef, or throw it out if you are looking for this
very harsh sound.
because of the signal feedback the results depend heavily on the
block size.
for minimum delay one would have to write a dedicated ugen, and i bet
someone has already done this.
hope this helps,
volker.
_______________________________________________
sc-users mailing list
info (subscription, etc.):
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtmlarchive:
http://www.listarc.bham.ac.uk/marchives/sc-users/search:
http://www.listarc.bham.ac.uk/lists/sc-users/search/