ian@0
|
1 // Copyright 2011, Ian Hobson.
|
ian@0
|
2 //
|
ian@0
|
3 // This file is part of gpsynth.
|
ian@0
|
4 //
|
ian@0
|
5 // gpsynth is free software: you can redistribute it and/or modify
|
ian@0
|
6 // it under the terms of the GNU General Public License as published by
|
ian@0
|
7 // the Free Software Foundation, either version 3 of the License, or
|
ian@0
|
8 // (at your option) any later version.
|
ian@0
|
9 //
|
ian@0
|
10 // gpsynth is distributed in the hope that it will be useful,
|
ian@0
|
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
|
ian@0
|
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
ian@0
|
13 // GNU General Public License for more details.
|
ian@0
|
14 //
|
ian@0
|
15 // You should have received a copy of the GNU General Public License
|
ian@0
|
16 // along with gpsynth in the file COPYING.
|
ian@0
|
17 // If not, see http://www.gnu.org/licenses/.
|
ian@0
|
18
|
ian@0
|
19 // Contents of grammar/sc.json
|
ian@0
|
20
|
ian@0
|
21 #include "sc_default_grammar.hpp"
|
ian@0
|
22
|
ian@0
|
23 namespace sc {
|
ian@0
|
24
|
ian@0
|
25 const char* g_default_grammar =
|
ian@0
|
26 "{\n"
|
ian@0
|
27 " \"sclang-version\": \"3\",\n"
|
ian@0
|
28 " \"name\": \"sc3\",\n"
|
ian@0
|
29 " \"arg-types\": [\n"
|
ian@0
|
30 " {\n"
|
ian@0
|
31 " \"type\": \"frequency\",\n"
|
ian@0
|
32 " \"range\": [20, 20000],\n"
|
ian@0
|
33 " \"range_control\": [0, 100],\n"
|
ian@0
|
34 " \"scaling\": \"log\"\n"
|
ian@0
|
35 " },\n"
|
ian@0
|
36 " {\n"
|
ian@0
|
37 " \"type\": \"radians\",\n"
|
ian@0
|
38 " \"range\": [0, 6.2831853072]\n"
|
ian@0
|
39 " },\n"
|
ian@0
|
40 " {\n"
|
ian@0
|
41 " \"type\": \"audio\",\n"
|
ian@0
|
42 " \"range\": [-1, 1]\n"
|
ian@0
|
43 " },\n"
|
ian@0
|
44 " {\n"
|
ian@0
|
45 " \"type\": \"time\",\n"
|
ian@0
|
46 " \"range\": [0, 10],\n"
|
ian@0
|
47 " \"scaling\": \"log\"\n"
|
ian@0
|
48 " },\n"
|
ian@0
|
49 " {\n"
|
ian@0
|
50 " \"type\": \"trigger\",\n"
|
ian@0
|
51 " \"range\": [-1, 1],\n"
|
ian@0
|
52 " \"fixed_range\": true\n"
|
ian@0
|
53 " }\n"
|
ian@0
|
54 " ],\n"
|
ian@0
|
55 "\n"
|
ian@0
|
56 " \"sources\": [\n"
|
ian@0
|
57 " // oscillators\n"
|
ian@0
|
58 " {\n"
|
ian@0
|
59 " \"name\": \"SinOsc\",\n"
|
ian@0
|
60 " \"args\": [\n"
|
ian@0
|
61 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
62 " { \"name\": \"phase\", \"type\": \"radians\" }\n"
|
ian@0
|
63 " ]\n"
|
ian@0
|
64 " },\n"
|
ian@0
|
65 " {\n"
|
ian@0
|
66 " \"name\": \"Saw\",\n"
|
ian@0
|
67 " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
|
ian@0
|
68 " },\n"
|
ian@0
|
69 " {\n"
|
ian@0
|
70 " \"name\": \"SyncSaw\",\n"
|
ian@0
|
71 " \"args\": [\n"
|
ian@0
|
72 " { \"name\": \"syncFreq\", \"type\": \"frequency\" },\n"
|
ian@0
|
73 " { \"name\": \"sawFreq\", \"type\": \"frequency\" }\n"
|
ian@0
|
74 " ]\n"
|
ian@0
|
75 " },\n"
|
ian@0
|
76 " {\n"
|
ian@0
|
77 " \"name\": \"VarSaw\",\n"
|
ian@0
|
78 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"iphase\", \"width\" ]\n"
|
ian@0
|
79 " },\n"
|
ian@0
|
80 " {\n"
|
ian@0
|
81 " \"name\": \"Pulse\",\n"
|
ian@0
|
82 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"width\" ]\n"
|
ian@0
|
83 " },\n"
|
ian@0
|
84 " {\n"
|
ian@0
|
85 " \"name\": \"Impulse\",\n"
|
ian@0
|
86 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"phase\" ]\n"
|
ian@0
|
87 " },\n"
|
ian@0
|
88 " {\n"
|
ian@0
|
89 " \"name\": \"Blip\",\n"
|
ian@0
|
90 " \"args\": [\n"
|
ian@0
|
91 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
92 " { \"name\": \"numharm\", \"range\": [1, 200] }\n"
|
ian@0
|
93 " ]\n"
|
ian@0
|
94 " },\n"
|
ian@0
|
95 " {\n"
|
ian@0
|
96 " \"name\": \"SinOscFB\",\n"
|
ian@0
|
97 " \"args\": [\n"
|
ian@0
|
98 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
99 " { \"name\": \"feedback\", \"type\": \"radians\" }\n"
|
ian@0
|
100 " ]\n"
|
ian@0
|
101 " },\n"
|
ian@0
|
102 " {\n"
|
ian@0
|
103 " \"name\": \"PMOsc\",\n"
|
ian@0
|
104 " \"args\": [\n"
|
ian@0
|
105 " { \"name\": \"carfreq\", \"type\": \"frequency\" },\n"
|
ian@0
|
106 " { \"name\": \"modfreq\", \"type\": \"frequency\" },\n"
|
ian@0
|
107 " { \"name\": \"pmindex\", \"type\": \"radians\" },\n"
|
ian@0
|
108 " { \"name\": \"modphase\", \"type\": \"radians\" }\n"
|
ian@0
|
109 " ]\n"
|
ian@0
|
110 " },\n"
|
ian@0
|
111 " {\n"
|
ian@0
|
112 " \"name\": \"FBSineC\",\n"
|
ian@0
|
113 " \"output\": \"audio\",\n"
|
ian@0
|
114 " \"args\": [\n"
|
ian@0
|
115 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
116 " { \"name\": \"im\", \"range\": [1, 64] },\n"
|
ian@0
|
117 " { \"name\": \"fb\", \"range\": [0, 0.5] },\n"
|
ian@0
|
118 " { \"name\": \"a\", \"range\": [1, 1.2] },\n"
|
ian@0
|
119 " { \"name\": \"c\", \"range\": [0.1, 0.9] }\n"
|
ian@0
|
120 " ]\n"
|
ian@0
|
121 " },\n"
|
ian@0
|
122 " {\n"
|
ian@0
|
123 " \"name\": \"FBSineN\",\n"
|
ian@0
|
124 " \"output\": \"audio\",\n"
|
ian@0
|
125 " \"args\": [\n"
|
ian@0
|
126 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
127 " { \"name\": \"im\", \"range\": [1, 64] },\n"
|
ian@0
|
128 " { \"name\": \"fb\", \"range\": [0, 0.5] },\n"
|
ian@0
|
129 " { \"name\": \"a\", \"range\": [1, 1.2] },\n"
|
ian@0
|
130 " { \"name\": \"c\", \"range\": [0.1, 0.9] }\n"
|
ian@0
|
131 " ]\n"
|
ian@0
|
132 " },\n"
|
ian@0
|
133 " {\n"
|
ian@0
|
134 " \"name\": \"Logistic\",\n"
|
ian@0
|
135 " \"args\": [\n"
|
ian@0
|
136 " { \"name\": \"chaosParam\", \"range\": [3, 3.999] },\n"
|
ian@0
|
137 " { \"name\": \"freq\", \"type\": \"frequency\" }\n"
|
ian@0
|
138 " ]\n"
|
ian@0
|
139 " },\n"
|
ian@0
|
140 " // Noise\n"
|
ian@0
|
141 " {\n"
|
ian@0
|
142 " \"name\": \"LFNoise0\",\n"
|
ian@0
|
143 " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
|
ian@0
|
144 " },\n"
|
ian@0
|
145 " \"WhiteNoise\",\n"
|
ian@0
|
146 " \"BrownNoise\",\n"
|
ian@0
|
147 " \"PinkNoise\",\n"
|
ian@0
|
148 " {\n"
|
ian@0
|
149 " \"name\": \"Crackle\",\n"
|
ian@0
|
150 " \"args\": { \"name\": \"chaosParam\", \"range\": [1, 2] }\n"
|
ian@0
|
151 " },\n"
|
ian@0
|
152 " // Lines/Envelopes\n"
|
ian@0
|
153 " {\n"
|
ian@0
|
154 " \"name\": \"Line\",\n"
|
ian@0
|
155 " \"output\": \"control\",\n"
|
ian@0
|
156 " \"args\": { \"name\": \"dur\", \"type\": \"time\" }\n"
|
ian@0
|
157 " },\n"
|
ian@0
|
158 " {\n"
|
ian@0
|
159 " \"name\": \"XLine\",\n"
|
ian@0
|
160 " \"output\": \"control\",\n"
|
ian@0
|
161 " \"args\": [ \n"
|
ian@0
|
162 " { \"name\": \"dur\", \"type\": \"time\" },\n"
|
ian@0
|
163 " { \"name\": \"add\", \"constant\": -1 }\n"
|
ian@0
|
164 " ]\n"
|
ian@0
|
165 " },\n"
|
ian@0
|
166 " {\n"
|
ian@0
|
167 " \"name\": \"Linen\",\n"
|
ian@0
|
168 " \"output\": \"control\",\n"
|
ian@0
|
169 " \"args\": [\n"
|
ian@0
|
170 " \"gate\",\n"
|
ian@0
|
171 " { \"name\": \"attackTime\", \"type\": \"time\" },\n"
|
ian@0
|
172 " \"susLevel\", \n"
|
ian@0
|
173 " { \"name\": \"releaseTime\", \"type\": \"time\" }\n"
|
ian@0
|
174 " ]\n"
|
ian@0
|
175 " }\n"
|
ian@0
|
176 " ],\n"
|
ian@0
|
177 "\n"
|
ian@0
|
178 " \"modifiers\": [\n"
|
ian@0
|
179 " // Filters\n"
|
ian@0
|
180 " {\n"
|
ian@0
|
181 " \"name\": \"LPF\",\n"
|
ian@0
|
182 " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
|
ian@0
|
183 " },\n"
|
ian@0
|
184 " {\n"
|
ian@0
|
185 " \"name\": \"HPF\",\n"
|
ian@0
|
186 " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
|
ian@0
|
187 " },\n"
|
ian@0
|
188 " {\n"
|
ian@0
|
189 " \"name\": \"BPF\",\n"
|
ian@0
|
190 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
|
ian@0
|
191 " },\n"
|
ian@0
|
192 " {\n"
|
ian@0
|
193 " \"name\": \"BRF\",\n"
|
ian@0
|
194 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
|
ian@0
|
195 " },\n"
|
ian@0
|
196 " {\n"
|
ian@0
|
197 " \"name\": \"RLPF\",\n"
|
ian@0
|
198 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
|
ian@0
|
199 " },\n"
|
ian@0
|
200 " {\n"
|
ian@0
|
201 " \"name\": \"RHPF\",\n"
|
ian@0
|
202 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
|
ian@0
|
203 " },\n"
|
ian@0
|
204 " {\n"
|
ian@0
|
205 " \"name\": \"Resonz\",\n"
|
ian@0
|
206 " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"bwr\" ]\n"
|
ian@0
|
207 " },\n"
|
ian@0
|
208 " {\n"
|
ian@0
|
209 " \"name\": \"Ringz\",\n"
|
ian@0
|
210 " \"args\": [ \n"
|
ian@0
|
211 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
212 " { \"name\": \"decaytime\", \"type\": \"time\" }\n"
|
ian@0
|
213 " ]\n"
|
ian@0
|
214 " },\n"
|
ian@0
|
215 " {\n"
|
ian@0
|
216 " \"name\": \"Formlet\",\n"
|
ian@0
|
217 " \"args\": [\n"
|
ian@0
|
218 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
219 " { \"name\": \"attacktime\", \"type\": \"time\" },\n"
|
ian@0
|
220 " { \"name\": \"decaytime\", \"type\": \"time\" }\n"
|
ian@0
|
221 " ]\n"
|
ian@0
|
222 " },\n"
|
ian@0
|
223 " {\n"
|
ian@0
|
224 " \"name\": \"MoogFF\",\n"
|
ian@0
|
225 " \"args\": [ \n"
|
ian@0
|
226 " { \"name\": \"freq\", \"type\": \"frequency\" },\n"
|
ian@0
|
227 " { \"name\": \"gain\", \"range\": [0, 4] }\n"
|
ian@0
|
228 " ]\n"
|
ian@0
|
229 " },\n"
|
ian@0
|
230 " {\n"
|
ian@0
|
231 " \"name\": \"FreeVerb\",\n"
|
ian@0
|
232 " \"output\": \"audio\",\n"
|
ian@0
|
233 " \"args\": [ \"mix\", \"room\", \"damp\" ]\n"
|
ian@0
|
234 " },\n"
|
ian@0
|
235 " // Dynamics\n"
|
ian@0
|
236 " {\n"
|
ian@0
|
237 " \"name\": \"Limiter\",\n"
|
ian@0
|
238 " \"output\": \"audio\",\n"
|
ian@0
|
239 " \"args\": \"level\"\n"
|
ian@0
|
240 " },\n"
|
ian@0
|
241 " {\n"
|
ian@0
|
242 " \"name\": \"Amplitude\",\n"
|
ian@0
|
243 " \"output\": \"control\",\n"
|
ian@0
|
244 " \"args\": [\n"
|
ian@0
|
245 " { \"name\": \"attackTime\", \"type\": \"time\" },\n"
|
ian@0
|
246 " { \"name\": \"releaseTime\", \"type\": \"time\" }\n"
|
ian@0
|
247 " ]\n"
|
ian@0
|
248 " },\n"
|
ian@0
|
249 " {\n"
|
ian@0
|
250 " \"name\": \"Normalizer\",\n"
|
ian@0
|
251 " \"output\": \"audio\",\n"
|
ian@0
|
252 " \"args\": [ \"level\", { \"name\": \"dur\", \"range\": [0.001, 0.5] } ]\n"
|
ian@0
|
253 " },\n"
|
ian@0
|
254 " {\n"
|
ian@0
|
255 " \"name\": \"Compander\",\n"
|
ian@0
|
256 " \"output\": \"audio\",\n"
|
ian@0
|
257 " \"args\": [ \n"
|
ian@0
|
258 " { \"name\": \"control\", \"type\": \"audio\" },\n"
|
ian@0
|
259 " \"thresh\",\n"
|
ian@0
|
260 " { \"name\": \"slopeBelow\", \"type\": \"time\" },\n"
|
ian@0
|
261 " { \"name\": \"slopeAbove\", \"type\": \"time\" },\n"
|
ian@0
|
262 " { \"name\": \"clampTime\", \"range\": [0.001, 0.2] },\n"
|
ian@0
|
263 " { \"name\": \"relaxTime\", \"range\": [0.001, 0.2] }\n"
|
ian@0
|
264 " ]\n"
|
ian@0
|
265 " },\n"
|
ian@0
|
266 " // shifters\n"
|
ian@0
|
267 " {\n"
|
ian@0
|
268 " \"name\": \"FreqShift\",\n"
|
ian@0
|
269 " \"output\": \"audio\",\n"
|
ian@0
|
270 " \"args\": [\n"
|
ian@0
|
271 " { \"name\": \"freq\", \"range\": [-1000, 1000] },\n"
|
ian@0
|
272 " { \"name\": \"phase\", \"type\": \"radians\" }\n"
|
ian@0
|
273 " ]\n"
|
ian@0
|
274 " },\n"
|
ian@0
|
275 " {\n"
|
ian@0
|
276 " \"name\": \"PitchShift\",\n"
|
ian@0
|
277 " \"output\": \"audio\",\n"
|
ian@0
|
278 " \"args\": [\n"
|
ian@0
|
279 " { \"name\": \"pitchRatio\", \"range\": [0, 4] },\n"
|
ian@0
|
280 " { \"name\": \"pitchDispersion\", \"range\": [0, 4] },\n"
|
ian@0
|
281 " { \"name\": \"timeDispersion\", \"range\": [0, 0.2] }\n"
|
ian@0
|
282 " ]\n"
|
ian@0
|
283 " },\n"
|
ian@0
|
284 " // delays\n"
|
ian@0
|
285 " {\n"
|
ian@0
|
286 " \"name\": \"DelayC\",\n"
|
ian@0
|
287 " \"args\": [\n"
|
ian@0
|
288 " { \"name\": \"maxdelaytime\", \"constant\": 1 },\n"
|
ian@0
|
289 " { \"name\": \"delaytime\", \"range\": [0.001, 1] }\n"
|
ian@0
|
290 " ]\n"
|
ian@0
|
291 " },\n"
|
ian@0
|
292 " {\n"
|
ian@0
|
293 " \"name\": \"Pluck\",\n"
|
ian@0
|
294 " \"output\": \"audio\",\n"
|
ian@0
|
295 " \"args\": [\n"
|
ian@0
|
296 " { \"name\": \"trig\", \"type\": \"trigger\" },\n"
|
ian@0
|
297 " { \"name\": \"maxdelaytime\", \"constant\": 1 },\n"
|
ian@0
|
298 " { \"name\": \"delaytime\" },\n"
|
ian@0
|
299 " { \"name\": \"decaytime\", \"type\": \"time\" },\n"
|
ian@0
|
300 " { \"name\": \"coef\", \"range\": [-0.9, 0.9] }\n"
|
ian@0
|
301 " ]\n"
|
ian@0
|
302 " },\n"
|
ian@0
|
303 " {\n"
|
ian@0
|
304 " \"name\": \"CombC\",\n"
|
ian@0
|
305 " \"args\": [\n"
|
ian@0
|
306 " { \"name\": \"maxdelaytime\", \"constant\": 1 },\n"
|
ian@0
|
307 " { \"name\": \"delaytime\" },\n"
|
ian@0
|
308 " { \"name\": \"decaytime\", \"range\": [-1, 1] }\n"
|
ian@0
|
309 " ]\n"
|
ian@0
|
310 " },\n"
|
ian@0
|
311 " // misc\n"
|
ian@0
|
312 " {\n"
|
ian@0
|
313 " \"name\": \"Decay\",\n"
|
ian@0
|
314 " \"args\": { \"name\": \"decayTime\", \"type\": \"time\" }\n"
|
ian@0
|
315 " },\n"
|
ian@0
|
316 " {\n"
|
ian@0
|
317 " \"name\": \"Latch\",\n"
|
ian@0
|
318 " \"args\": { \"name\": \"trig\", \"type\": \"trigger\" }\n"
|
ian@0
|
319 " }\n"
|
ian@0
|
320 " ] // end of modifiers\n"
|
ian@0
|
321 "}\n"
|
ian@0
|
322 ;
|
ian@0
|
323
|
ian@0
|
324 } // sc namespace
|