-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgramophone_filter
More file actions
148 lines (125 loc) · 2.97 KB
/
gramophone_filter
File metadata and controls
148 lines (125 loc) · 2.97 KB
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
145
146
147
148
Ldesc:Variable RIAA-filter
import cookdsp.jsfx-inc
//import wuff/st-oversampler.jsfx-inc
slider1:500<200,1000,1>Low turnover (Hz)
slider2:24<0,60,0.5>Bass boost (dB)
slider3:2122<1000,6360,1>Midrange turnover (Hz)
slider4:15000<2000,20000,1>High-cut (Hz)
slider5:0<0,2,1{6dB/oct,12dB/oct,off}>High-cut type/off
slider6:0<-60,18,0.5>q10 HF-scratch notch filter (dB, neg or pos)
slider7:10000<4000,15000,1>HF-scratch filter frequency (Hz)
slider9:25<5,100,1>24dB/oct Rumble filter frequency (Hz)
slider10:0<0,1,1{on,off}>Rumble filter on/off
slider11:0<0,2,1{stereo,mono(-6dB),mono}>Stereo/Mono
slider12:0<0,1,1{on,off}>DC-filter
slider13:0<-32,32,0.1>Output pad/gain (dB)
@init
bpos=0;
//dc_remove
itm1=itm2=otm1=otm2=0;
//Midrange-turnover
LM.lop(slider3);
RM.lop(slider3);
//High-cut
//1:st order
LHcut.lop(slider4);
RHcut.lop(slider4);
//2:nd order
LHc.butlp(slider4);
RHc.butlp(slider4);
//Low-turnover
LL.lop(slider1/10);
LR.lop(slider1/10);
//HF-scrap
LS.eq(slider7,10,slider6,0);
RS.eq(slider7,10,slider6,0);
//Rumble
LR.buthp(slider9);
RR.buthp(slider9);
LR2.buthp(slider9);
RR2.buthp(slider9);
@slider
//MF-turnover
LM.lop_set_freq(slider3);
RM.lop_set_freq(slider3);
//LF-boost
LL.lop_set_freq(slider1/10);
LR.lop_set_freq(slider1/10);
gain=10^((slider2)/20);
//HF-cut
LHcut.lop_set_freq(slider4);
RHcut.lop_set_freq(slider4);
LHc.butlp_set_freq(slider4);
RHc.butlp_set_freq(slider4);
//HF-scrap
LS.eq_set_freq(slider7);
RS.eq_set_freq(slider7);
LS.eq_set_boost(slider6);
RS.eq_set_boost(slider6);
//Rumble-filter
LR.buthp_set_freq(slider9);
RR.buthp_set_freq(slider9);
LR2.buthp_set_freq(slider9);
RR2.buthp_set_freq(slider9);
//Gain/pad
gainpad=10^((slider13)/20);
@block
blah+=samplesblock;
@sample
//Oversampling (dosn't work)
//osL.os_up2(spl0);
//spl1 = osR.os_up2(spl1);
//Left-HP-LP
outLL = LL.lop_do(spl0)*gain;
slider5 != 2 ? (
slider5 == 1 ? (
outLH = LHc.butlp_do(LM.lop_do(spl0)+outLL);
);
slider5 == 0 ? (
outLH = LHcut.lop_do(LM.lop_do(spl0)+outLL);
);
):(
outLH = LM.lop_do(spl0)+outLL;
);
//Right-HP-LP
outRL = LR.lop_do(spl1)*gain;
slider5 != 2 ? (
slider5 == 1 ? (
outRH = RHc.butlp_do(RM.lop_do(spl1)+outRL);
);
slider5 == 0 ? (
outRH = RHcut.lop_do(RM.lop_do(spl1)+outRL);
);
):(
outRH = RM.lop_do(spl1)+outRL;
);
spl0=outLH;
spl1=outRH;
//HF-notch
slider6 != 0 ? (
spl0 = LS.eq_do(spl0);
spl1 = RS.eq_do(spl1);
);
//Rumble-filter 2x12dB
slider10 == 0 ? (
spl0 = LR.buthp_do(LR2.buthp_do(spl0));
spl1 = RR.buthp_do(RR2.buthp_do(spl1));
);
//Stereo/mono-switch
slider11 != 0 ? (
spl0 = spl1 = (spl0+spl1);
slider11 == 1 ? (
spl0*=0.5;
spl1*=0.5;
);
);
//Gain/pad
spl0 *= gainpad;
spl1 *= gainpad;
//dc_remove
slider12 == 0 ? (
otm1=0.999*otm1 + spl0 - itm1; itm1=spl0; spl0=otm1;
otm2=0.999*otm2 + spl1 - itm2; itm2=spl1; spl1=otm2;
);
//spl0 = osL.os_down2();
//spl1 = osR.os_down2();