aboutsummaryrefslogtreecommitdiff
path: root/site/udo/_TESTS/mixer_emulator_1604a.csd
blob: 03ebeedc96ca434a47fe2b565e37c6129a1c21a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<CsoundSynthesizer>
<CsOptions>
-odac
;--env:INCDIR="D:/Documents/Csound/_UDO"
--omacro:HOST=AUDIO
;-m0
</CsOptions>
<CsInstruments>
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

</CsInstruments>
<CsScore>
i"controller" 0 3600
</CsScore>
</CsoundSynthesizer>