Happy to help, Sam. If interested in some technical papers, Lazzarini has written on feedback modulations.
Personally, I would consider the emergence of non-sound, together with the emergence of sound with turbulence, an added degree of complexity to the behaviour of the system. But I understand that you may only be interested in the latter. Perhaps to keep some of the fun, just before the inputs of the oscillators, you could put something that clips the range from -20 to 20 like: guard(f) = ba.if(f < 0, min(-20, f), max(20, f)); Enjoy Faust. :-) Cheers, Dario On Fri, 22 May 2020 at 01:40, Sam Pluta <[email protected]> wrote: > Thank you Dario, > > This is great. Adding an abs before the last osc seems to clear up the > dropouts (but also takes away a bit of the fun), so I guess it was negative > freq. The placement of the ~ is my incomplete understanding of its function > at this point. But seeing your solution clears up a lot, and if I play > around a bit, I will have it. > > Feedback without delay of blocksize is sick. You just can’t make this > circuit in SC. > > Sam > > On May 21, 2020 at 6:13:59 PM, Dario Sanfilippo ( > [email protected]) wrote: > > Hi, Sam. Sounds nice. > > If you notice, the recursive operator is at the top of the chain, so > whatever block of code within parentheses after ~ will be in the feedback > path. The signal left of ~ is then going through. You can achieve the same > circuit by moving the feedback operator at the end as in the example below: > > process(carFreq, modFreq, modModMult, indexMult) = ( > ( > ( > (_, hslider("modModMult",100,100,1000,1):*), > hslider("modFreq",100,100,1000,1):+ > ):os.osc, hslider("carModMult",100,100,1000,1):* > ) > , hslider("carFreq",100,100,1000,1):+:os.osc > ) ~_ , 0.1:*; > > The only difference here is that the output is not delayed by one sample. > > About the dropouts: I'm not experiencing any. Is it possible that with > some combination of the parameters the frequency of the oscillator at the > output is in the infrasound range? After all, the modulating frequency can > be negative. > > Cheers, > Dario > > On Fri, 22 May 2020 at 00:42, Sam Pluta <[email protected]> wrote: > >> I made this crossfeedback synth in Faust: >> >> import("stdfaust.lib"); >> >> process(carFreq, modFreq, modModMult, indexMult) = 0: + ~ ( >> ( >> ( >> (_, hslider("modModMult",100,100,1000,1):*), >> hslider("modFreq",100,100,1000,1):+ >> ):os.osc, hslider("carModMult",100,100,1000,1):* >> ) >> , hslider("carFreq",100,100,1000,1):+:os.osc >> ), 0.1:*; >> >> Without the GUI, it is: >> >> import("stdfaust.lib"); >> >> process(carFreq, modFreq, multOfMod, multOfCar) = 0: + ~ ((((_, >> multOfMod:*), modFreq:+):os.osc, multOfCar:*), carFreq:+:os.osc); >> >> The graphical display is here: >> >> >> https://faustservice.grame.fr/CA4694BC72BFBA3822E0567BB44D02206B52EEAC/diagram/process.svg >> >> I made it to work in SuperCollider. In both SC and in the Faust Online >> Editor, it sounds great, but there are these dropouts that happen seemingly >> at random. It is as if the carrier continues going, but the modulator >> disappears from the circuit for a second. >> >> So, two questions: >> >> Is there something causing the dropouts that I am unaware of / need to >> compensate for? >> >> Can I get the feedback to work the way I want without that silly 0? I >> could not get the circuit to feedback and output at the same time without >> it. >> >> Thanks, >> >> Sam >> >> >> _______________________________________________ >> Faudiostream-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/faudiostream-users >> >
_______________________________________________ Faudiostream-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/faudiostream-users
