-odac ;--env:INCDIR="D:/Documents/Csound/_UDO" --omacro:HOST=AUDIO ;-m0 sr = 48000 ksmps = 8 nchnls = 2 0dbfs = 1 seed 0 #include "feedback.udo" gimaxeq init 2 gimaxsend init 2 gimaxamp init 1.5 opcode FLchannel, ik[], ii ix, ichannumber xin iwidth = 100 iy = -50 kp[] init 14 ih1 FLbox sprintf("Channel %d", ichannumber), 1, 2, 14, iwidth*2, 50, ix, iy+50 kp[0], ih2 FLbutton "Low Cut", 1, 0, 2, iwidth, 30, ix, iy+100, -1 kp[8], ihx FLbutton "CModel", 1, 0, 2, iwidth, 30, ix+100, iy+100, -1 kp[1], ih3 FLknob "High", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+130 kp[2], ih4 FLknob "Mid", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+215 kp[3], ih5 FLknob "Low", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+300 FLsetColor 0, 0, 128, ih3 FLsetColor 0, 0, 128, ih4 FLsetColor 0, 0, 128, ih5 FLsetVal_i gimaxeq*0.5, ih3 FLsetVal_i gimaxeq*0.5, ih4 FLsetVal_i gimaxeq*0.5, ih5 kp[4], ih6 FLknob "Aux1", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+130 kp[5], ih7 FLknob "Aux2", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+215 ;kp[6], ih8 FLknob "Aux3", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+300 ;kp[7], ih9 FLknob "Aux4", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+385 FLsetColor 128, 0, 0, ih6 FLsetColor 128, 0, 0, ih7 ;FLsetColor 128, 0, 0, ih8 ;FLsetColor 128, 0, 0, ih9 kp[8], ih10 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+130, -1 kp[9], ih11 FLbutton "CModel", 1, 0, 2, 45, 70, ix+155, iy+215, -1 ;kp[10], ih12 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+300, -1 ;kp[11], ih13 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+385, -1 kp[12], ih14 FLslider "Gain", gimaxamp, 0, 0, 6, -1, 50, 200, ix+25, iy+385 kp[13], ih15 FLbutton "Mute", 1, 0, 2, 70, 25, ix+80, iy+560, -1 ix += 200 xout ix, kp endop instr controller ix = 0 iy = 0 FLpanel "FBMix", 1024, 600 ix, gkc1[] FLchannel ix, 1 ix, gkc2[] FLchannel ix, 2 ix, gkc3[] FLchannel ix, 3 ix, gkc4[] FLchannel ix, 4 FLpanelEnd FLrun event_i "i", "mixer", 0, p3 endin instr mixer icrosstalk[] fillarray 0.0001, 0.001 ain1 init 0 ain2 init 0 ain3 init 0 ain4 init 0 aout1 = fbk_channel(ain1, gkc1[0], gkc1[3], gkc1[2], gkc1[1], gkc1[9]) aout2 = fbk_channel(ain2, gkc2[0], gkc2[3], gkc2[2], gkc2[1], gkc2[9]) aout3 = fbk_channel(ain3, gkc3[0], gkc3[3], gkc3[2], gkc3[1], gkc3[9]) aout4 = fbk_channel(ain4, gkc4[0], gkc4[3], gkc4[2], gkc4[1], gkc4[9]) ain1 = 0 ain2 = 0 ain3 = 0 ain4 = 0 /* crosstalk */ ain1 += ain2 * random:k(icrosstalk[0], icrosstalk[1]) ain2 += (ain1 * random:k(icrosstalk[0], icrosstalk[1])) + (ain3 * random:k(icrosstalk[0], icrosstalk[1])) ain3 += (ain2 * random:k(icrosstalk[0], icrosstalk[1])) + (ain4 * random:k(icrosstalk[0], icrosstalk[1])) ain4 += ain3 * random:k(icrosstalk[0], icrosstalk[1]) /* sends chan 1 */ ain1 = ain1 + ((gkc1[8] == 1) ? aout1*gkc1[4] : aout1*gkc1[4]*gkc1[12]) ain2 = ain2 + aout1*gkc1[5]*gkc1[12] if (gkc1[13] == 1) then ain3 = ain3 + aout1 aout1 = 0 endif /* sends chan 2 */ ain1 = ain1 + ((gkc2[8] == 1) ? aout2*gkc2[4] : aout2*gkc2[4]*gkc2[12]) ain2 = ain2 + aout2*gkc2[5]*gkc2[12] if (gkc2[13] == 1) then ain3 = ain3 + aout2 aout2 = 0 endif /* sends chan 3 */ ain1 = ain1 + ((gkc3[8] == 1) ? aout3*gkc3[4] : aout3*gkc3[4]*gkc3[12]) ain2 = ain2 + aout3*gkc3[5]*gkc3[12] ; ... /* sends chan 4 */ ain1 = ain1 + ((gkc4[8] == 1) ? aout4*gkc4[4] : aout4*gkc4[4]*gkc4[12]) ain2 = ain2 + aout4*gkc4[5]*gkc4[12] ; ... aout = (aout1*gkc1[12]) + (aout2*gkc2[12]) + (aout3*gkc3[12]) + (aout4*gkc4[12]) aout *= 0.25 outs aout, aout endin i"controller" 0 3600