Hi all, I'm trying to make a 4OP fm synth in faust. Something in my code is triggering an endless loop. I'm pretty sure its the interdependence of the operators but I can't see how to resolve it.
Here is my code: import("stdfaust.lib"); import("maths.lib"); bandwidth(carrierFreq,modulatorFreq) = 2*((modulatorFreq-carrierFreq)+ modulatorFreq); scaleIndex(index,carrierFreq,modulatorFreq) = (1-((carrierFreq+bandwidth( carrierFreq,modulatorFreq)) / SR))*index; scaling(index,carrierFreq,modulatorFreq) = scaleIndex(index,carrierFreq, modulatorFreq); op(fc,index,fb,env,mod) = env*os.osc(fc+(mod+_)*index)~_*fb; four_op( freq, ratio1,ratio2,ratio3,ratio4, env1,env2,env3,env4, gain1,gain2,gain3,gain4, aa, ab, ac, ad, ba, bb, bc, bd, ca, cb, cc, cd, da, db, dc, dd ) = signal with { signal = gain1*op1+gain2*op2+gain3*op3+gain4*op4; op1 = op(fa,1,s_aa,env1,0); op2 = op(fb,1,s_bb,env2,0); op3 = op(fc,1,s_cc,env3,mod3'''); op4 = op(fd,1,s_dd,env4,mod4'''); mod1 = op2'*s_ba + op3'*s_ca + op4'*s_da; mod2 = op1'*s_ab + op3'*s_cb + op4'*s_db; mod3 = op1'*s_ac + op2'*s_bc + op4'*s_dc; mod4 = op1'*s_ad + op2'*s_bd + op3'*s_cd; s_aa = scaling(aa,fa,fa); s_ab = scaling(ab,fb,fa); s_ac = scaling(ac,fc,fa); s_ad = scaling(ad,fd,fa); s_ba = scaling(aa,fa,fb); s_bb = scaling(ab,fb,fb); s_bc = scaling(ac,fc,fb); s_bd = scaling(ad,fd,fb); s_ca = scaling(aa,fa,fc); s_cb = scaling(ab,fb,fc); s_cc = scaling(ac,fc,fc); s_cd = scaling(ad,fd,fc); s_da = scaling(aa,fa,fd); s_db = scaling(ab,fb,fd); s_dc = scaling(ac,fc,fd); s_dd = scaling(ad,fd,fd); fa = freq*ratio1; fb = freq*ratio2; fc = freq*ratio3; fd = freq*ratio4; }; process = four_op;
_______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users