1 /*
2 Copyright (C) 2003-2008 Fons Adriaensen <fons@kokkinizita.net>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */
18
19 //-----------------------------------------------------------------------------------
20 // Common definitions
21
22
23 #include "cs_chorus.h"
24
25 #define NMODS 3
26 #define VERSION "0.4.0"
27
28
29 static const char* maker = "Fons Adriaensen <fons@kokkinizita.net>";
30 static const char* copyr = "(C) 2003-2008 Fons Adriaensen - License: GPL2";
31
32
pconnect(LADSPA_Handle H,unsigned long port,LADSPA_Data * data)33 static void pconnect (LADSPA_Handle H, unsigned long port, LADSPA_Data *data)
34 {
35 ((LadspaPlugin *)H)->setport (port, data);
36 }
37
activate(LADSPA_Handle H)38 static void activate (LADSPA_Handle H)
39 {
40 ((LadspaPlugin *)H)->active (true);
41 }
42
runplugin(LADSPA_Handle H,unsigned long k)43 static void runplugin (LADSPA_Handle H, unsigned long k)
44 {
45 ((LadspaPlugin *)H)->runproc (k, false);
46 }
47
runadding(LADSPA_Handle H,unsigned long k)48 static void runadding (LADSPA_Handle H, unsigned long k)
49 {
50 ((LadspaPlugin *)H)->runproc (k, true);
51 }
52
setadding(LADSPA_Handle H,LADSPA_Data gain)53 static void setadding (LADSPA_Handle H, LADSPA_Data gain)
54 {
55 ((LadspaPlugin *)H)->setgain (gain);
56 }
57
deactivate(LADSPA_Handle H)58 static void deactivate (LADSPA_Handle H)
59 {
60 ((LadspaPlugin *)H)->active (false);
61 }
62
cleanup(LADSPA_Handle H)63 static void cleanup (LADSPA_Handle H)
64 {
65 delete (LadspaPlugin *) H;
66 }
67
68 //-----------------------------------------------------------------------------------
69 // Plugin definitions
70
71
72 static const char* name1 = "Chorus1 - Based on CSound orchestra by Sean Costello";
73 static const char* label1 = "Chorus1";
74
instant1(const struct _LADSPA_Descriptor * desc,unsigned long rate)75 static LADSPA_Handle instant1 (const struct _LADSPA_Descriptor *desc, unsigned long rate)
76 {
77 return new Ladspa_CS_chorus1 (rate);
78 }
79
80
81 static const char* name2 = "Chorus2 - Based on CSound orchestra by Sean Costello";
82 static const char* label2 = "Chorus2";
83
instant2(const struct _LADSPA_Descriptor * desc,unsigned long rate)84 static LADSPA_Handle instant2 (const struct _LADSPA_Descriptor *desc, unsigned long rate)
85 {
86 return new Ladspa_CS_chorus2 (rate);
87 }
88
89
90 static const char* name3 = "Triple chorus";
91 static const char* label3 = "TripleChorus";
92
instant3(const struct _LADSPA_Descriptor * desc,unsigned long rate)93 static LADSPA_Handle instant3 (const struct _LADSPA_Descriptor *desc, unsigned long rate)
94 {
95 return new Ladspa_CS_chorus3 (rate);
96 }
97
98
99
100 static const LADSPA_PortDescriptor pdesc12 [Ladspa_CS_chorus1::NPORT] =
101 {
102 LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO,
103 LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO,
104 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
105 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
106 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
107 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
108 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL
109 };
110
111 static const char * const pname12 [Ladspa_CS_chorus1::NPORT] =
112 {
113 "Input",
114 "Output",
115 "Delay (ms)",
116 "Mod Frequency 1 (Hz)",
117 "Mod Amplitude 1 (ms)",
118 "Mod Frequency 2 (Hz)",
119 "Mod Amplitude 2 (ms)"
120 };
121
122 static const LADSPA_PortRangeHint phint12 [Ladspa_CS_chorus1::NPORT] =
123 {
124 { 0, 0, 0 },
125 { 0, 0, 0 },
126 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0, 0, 30 },
127 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC, 0.003, 10 },
128 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0, 0, 10 },
129 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC, 0.01, 30 },
130 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0, 0, 3 }
131 };
132
133
134 static const LADSPA_PortDescriptor pdesc3 [Ladspa_CS_chorus3::NPORT] =
135 {
136 LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO,
137 LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO,
138 LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO,
139 LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO,
140 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
141 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
142 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
143 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL,
144 LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL
145 };
146
147 static const char * const pname3 [Ladspa_CS_chorus3::NPORT] =
148 {
149 "Input",
150 "Output1",
151 "Output2",
152 "Output3",
153 "Delay (ms)",
154 "Mod Frequency 1 (Hz)",
155 "Mod Amplitude 1 (ms)",
156 "Mod Frequency 2 (Hz)",
157 "Mod Amplitude 2 (ms)"
158 };
159
160 static const LADSPA_PortRangeHint phint3 [Ladspa_CS_chorus3::NPORT] =
161 {
162 { 0, 0, 0 },
163 { 0, 0, 0 },
164 { 0, 0, 0 },
165 { 0, 0, 0 },
166 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0, 0, 30 },
167 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC, 0.003, 10 },
168 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0, 0, 10 },
169 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC, 0.01, 30 },
170 { LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0, 0, 3 }
171 };
172
173
174 static const LADSPA_Descriptor moddescr [NMODS] =
175 {
176 {
177 1944,
178 label1,
179 LADSPA_PROPERTY_REALTIME | LADSPA_PROPERTY_HARD_RT_CAPABLE,
180 name1,
181 maker,
182 copyr,
183 Ladspa_CS_chorus1::NPORT,
184 pdesc12,
185 pname12,
186 phint12,
187 0,
188 instant1,
189 pconnect,
190 activate,
191 runplugin,
192 runadding,
193 setadding,
194 deactivate,
195 cleanup
196 },
197 {
198 1945,
199 label2,
200 LADSPA_PROPERTY_REALTIME | LADSPA_PROPERTY_HARD_RT_CAPABLE,
201 name2,
202 maker,
203 copyr,
204 Ladspa_CS_chorus1::NPORT,
205 pdesc12,
206 pname12,
207 phint12,
208 0,
209 instant2,
210 pconnect,
211 activate,
212 runplugin,
213 runadding,
214 setadding,
215 deactivate,
216 cleanup
217 },
218 {
219 1951,
220 label3,
221 LADSPA_PROPERTY_REALTIME | LADSPA_PROPERTY_HARD_RT_CAPABLE,
222 name3,
223 maker,
224 copyr,
225 Ladspa_CS_chorus3::NPORT,
226 pdesc3,
227 pname3,
228 phint3,
229 0,
230 instant3,
231 pconnect,
232 activate,
233 runplugin,
234 runadding,
235 setadding,
236 deactivate,
237 cleanup
238 }
239 };
240
ladspa_descriptor(unsigned long i)241 extern "C" const LADSPA_Descriptor *ladspa_descriptor (unsigned long i)
242 {
243 if (i >= NMODS) return 0;
244 return moddescr + i;
245 }
246
247 //-----------------------------------------------------------------------------------
248