|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
fm with feedbackHello!
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); cheers Matthew _______________________________________________ sc-users mailing list info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml archive: http://www.listarc.bham.ac.uk/marchives/sc-users/ search: http://www.listarc.bham.ac.uk/lists/sc-users/search/ |
|
|
Re: fm with feedbackOn 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.shtml archive: http://www.listarc.bham.ac.uk/marchives/sc-users/ search: http://www.listarc.bham.ac.uk/lists/sc-users/search/ |
| Free embeddable forum powered by Nabble | Forum Help |