@@ -43,31 +43,65 @@ namespace lsp
4343 // Plugin metadata
4444 static const port_item_t de_pf_filter_slope[] =
4545 {
46- { " off" , " eq.slope.off" },
47- { " 12 dB/oct" , " eq.slope.12dbo" },
48- { " 24 dB/oct" , " eq.slope.24dbo" },
49- { " 36 dB/oct" , " eq.slope.36dbo" },
50- { " 48 dB/oct" , " eq.slope.48dbo" },
46+ { " off" , " eq.slope.off" },
47+ { " 12 dB/oct" , " eq.slope.12dbo" },
48+ { " 24 dB/oct" , " eq.slope.24dbo" },
49+ { " 36 dB/oct" , " eq.slope.36dbo" },
50+ { " 48 dB/oct" , " eq.slope.48dbo" },
5151 { NULL , NULL }
5252 };
5353
5454 static const port_item_t de_split_modes[] =
5555 {
56- { " Classic" , " deesser.modes.off" },
57- { " Classic" , " deesser.modes.classic" },
58- { " Modern" , " deesser.modes.modern" },
59- { " Linear Phase" , " deesser.modes.linear_phase" },
56+ { " Classic" , " deesser.modes.off" },
57+ { " Classic" , " deesser.modes.classic" },
58+ { " Modern" , " deesser.modes.modern" },
59+ { " Linear Phase" , " deesser.modes.linear_phase" },
6060 { NULL , NULL }
6161 };
6262
6363 static const port_item_t de_slopes[] =
6464 {
65- { " LR2 (12 dB/oct)" , " deesser.slope.12dbo" },
66- { " LR4 (24 dB/oct)" , " deesser.slope.24dbo" },
67- { " LR8 (48 dB/oct)" , " deesser.slope.48dbo" },
65+ { " LR2 (12 dB/oct)" , " deesser.slope.12dbo" },
66+ { " LR4 (24 dB/oct)" , " deesser.slope.24dbo" },
67+ { " LR8 (48 dB/oct)" , " deesser.slope.48dbo" },
6868 { NULL , NULL }
6969 };
7070
71+ static const port_item_t de_sc_type[] =
72+ {
73+ { " Internal" , " sidechain.internal" },
74+ { " Link" , " sidechain.link" },
75+ { NULL , NULL }
76+ };
77+
78+ static const port_item_t de_sc2_type[] =
79+ {
80+ { " Internal" , " sidechain.internal" },
81+ { " External" , " sidechain.external" },
82+ { " Link" , " sidechain.link" },
83+ { NULL , NULL }
84+ };
85+
86+ static const port_item_t de_sc_modes[] =
87+ {
88+ { " Peak" , " sidechain.peak" },
89+ { " RMS" , " sidechain.rms" },
90+ { " LPF" , " sidechain.lpf" },
91+ { " SMA" , " sidechain.sma" },
92+ { NULL , NULL }
93+ };
94+
95+ static const port_item_t de_sc_sources[] =
96+ {
97+ { " Middle" , " sidechain.middle" },
98+ { " Side" , " sidechain.side" },
99+ { " Left" , " sidechain.left" },
100+ { " Right" , " sidechain.right" },
101+ { " Min" , " sidechain.min" },
102+ { " Max" , " sidechain.max" },
103+ { NULL , NULL }
104+ };
71105
72106 #define DE_PREMIX \
73107 SWITCH (" showpmx" , " Show pre-mix overlay" , " Show premix bar" , 0 .0f ), \
@@ -138,12 +172,26 @@ namespace lsp
138172 LOG_CONTROL (" knee" , " Knee" , " Knee" , U_GAIN_AMP , deesser::KNEE ), \
139173 MESH (" curve" , " Reduction curve" , 2 , deesser::CURVE_MESH_POINTS )
140174
175+ #define DE_SIDECHAIN_MONO_SOURCE
176+ #define DE_SIDECHAIN_STEREO_SOURCE \
177+ COMBO (" scs" , " Sidechain source" , " SC source" , deesser::SC_SOURCE_DFL , de_sc_sources), \
178+ COMBO (" scsl" , " Sidechain source L" , " SC source L" , deesser::SC_SOURCE_L_DFL , de_sc_sources), \
179+ COMBO (" scsr" , " Sidechain source R" , " SC source R" , deesser::SC_SOURCE_R_DFL , de_sc_sources),
180+
181+ #define DE_SIDECHAIN (sct, sct_dfl, sources ) \
182+ SWITCH (" showsc" , " Show sidechain overlay" , " Show SC bar" , 0 .0f ), \
183+ COMBO (" sct" , " Sidechain type" , " SC type" , sct_dfl, sct), \
184+ COMBO (" scm" , " Sidechain mode" , " SC mode" , deesser::SC_MODE_DFL , de_sc_modes), \
185+ sources \
186+ CONTROL (" sla" , " Sidechain lookahead" , " SC look" , U_MSEC , deesser::SC_LOOKAHEAD ), \
187+ SWITCH (" scl" , " Sidechain listen" , " SC listen" , 0 .0f ), \
188+ LOG_CONTROL (" scr" , " Sidechain reactivity" , " SC react" , U_MSEC , deesser::SC_REACTIVITY ), \
189+ AMP_GAIN100 (" scp" , " Sidechain preamp" , " SC preamp" , GAIN_AMP_0_DB )
141190
142191 #define DE_COMMON \
143192 BYPASS , \
144193 IN_GAIN , \
145194 OUT_GAIN , \
146- SWITCH (" showsc" , " Show sidechain overlay" , " Show SC bar" , 0 .0f ), \
147195 LOG_CONTROL (" zoom" , " Graph zoom" , " Zoom" , U_GAIN_AMP , deesser::ZOOM )
148196
149197 #define DE_COMMON_MONO \
@@ -160,6 +208,7 @@ namespace lsp
160208 DE_SHM_LINK_MONO ,
161209 DE_COMMON_MONO ,
162210 DE_PREMIX ,
211+ DE_SIDECHAIN (de_sc_type, 0 , DE_SIDECHAIN_MONO_SOURCE ),
163212 DE_ANALYSIS (1 , DE_ANALYSIS_MONO ),
164213 DE_CROSSOVER (1 ),
165214 DE_FILTERS ,
@@ -174,6 +223,7 @@ namespace lsp
174223 DE_SHM_LINK_STEREO ,
175224 DE_COMMON_STEREO ,
176225 DE_PREMIX ,
226+ DE_SIDECHAIN (de_sc_type, 0 , DE_SIDECHAIN_STEREO_SOURCE ),
177227 DE_ANALYSIS (2 , DE_ANALYSIS_STEREO ),
178228 DE_CROSSOVER (2 ),
179229 DE_FILTERS ,
@@ -189,6 +239,7 @@ namespace lsp
189239 DE_SHM_LINK_MONO ,
190240 DE_COMMON_MONO ,
191241 DE_SC_PREMIX ,
242+ DE_SIDECHAIN (de_sc2_type, 1 , DE_SIDECHAIN_MONO_SOURCE ),
192243 DE_ANALYSIS (1 , DE_ANALYSIS_MONO ),
193244 DE_CROSSOVER (1 ),
194245 DE_FILTERS ,
@@ -204,6 +255,7 @@ namespace lsp
204255 DE_SHM_LINK_STEREO ,
205256 DE_COMMON_STEREO ,
206257 DE_SC_PREMIX ,
258+ DE_SIDECHAIN (de_sc2_type, 1 , DE_SIDECHAIN_STEREO_SOURCE ),
207259 DE_ANALYSIS (2 , DE_ANALYSIS_STEREO ),
208260 DE_CROSSOVER (2 ),
209261 DE_FILTERS ,
0 commit comments