ian@0: // Copyright 2011, Ian Hobson. ian@0: // ian@0: // This file is part of gpsynth. ian@0: // ian@0: // gpsynth is free software: you can redistribute it and/or modify ian@0: // it under the terms of the GNU General Public License as published by ian@0: // the Free Software Foundation, either version 3 of the License, or ian@0: // (at your option) any later version. ian@0: // ian@0: // gpsynth is distributed in the hope that it will be useful, ian@0: // but WITHOUT ANY WARRANTY; without even the implied warranty of ian@0: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ian@0: // GNU General Public License for more details. ian@0: // ian@0: // You should have received a copy of the GNU General Public License ian@0: // along with gpsynth in the file COPYING. ian@0: // If not, see http://www.gnu.org/licenses/. ian@0: ian@0: // Contents of grammar/sc.json ian@0: ian@0: #include "sc_default_grammar.hpp" ian@0: ian@0: namespace sc { ian@0: ian@0: const char* g_default_grammar = ian@0: "{\n" ian@0: " \"sclang-version\": \"3\",\n" ian@0: " \"name\": \"sc3\",\n" ian@0: " \"arg-types\": [\n" ian@0: " {\n" ian@0: " \"type\": \"frequency\",\n" ian@0: " \"range\": [20, 20000],\n" ian@0: " \"range_control\": [0, 100],\n" ian@0: " \"scaling\": \"log\"\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"type\": \"radians\",\n" ian@0: " \"range\": [0, 6.2831853072]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"type\": \"audio\",\n" ian@0: " \"range\": [-1, 1]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"type\": \"time\",\n" ian@0: " \"range\": [0, 10],\n" ian@0: " \"scaling\": \"log\"\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"type\": \"trigger\",\n" ian@0: " \"range\": [-1, 1],\n" ian@0: " \"fixed_range\": true\n" ian@0: " }\n" ian@0: " ],\n" ian@0: "\n" ian@0: " \"sources\": [\n" ian@0: " // oscillators\n" ian@0: " {\n" ian@0: " \"name\": \"SinOsc\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"phase\", \"type\": \"radians\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Saw\",\n" ian@0: " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"SyncSaw\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"syncFreq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"sawFreq\", \"type\": \"frequency\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"VarSaw\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"iphase\", \"width\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Pulse\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"width\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Impulse\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"phase\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Blip\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"numharm\", \"range\": [1, 200] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"SinOscFB\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"feedback\", \"type\": \"radians\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"PMOsc\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"carfreq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"modfreq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"pmindex\", \"type\": \"radians\" },\n" ian@0: " { \"name\": \"modphase\", \"type\": \"radians\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"FBSineC\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"im\", \"range\": [1, 64] },\n" ian@0: " { \"name\": \"fb\", \"range\": [0, 0.5] },\n" ian@0: " { \"name\": \"a\", \"range\": [1, 1.2] },\n" ian@0: " { \"name\": \"c\", \"range\": [0.1, 0.9] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"FBSineN\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"im\", \"range\": [1, 64] },\n" ian@0: " { \"name\": \"fb\", \"range\": [0, 0.5] },\n" ian@0: " { \"name\": \"a\", \"range\": [1, 1.2] },\n" ian@0: " { \"name\": \"c\", \"range\": [0.1, 0.9] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Logistic\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"chaosParam\", \"range\": [3, 3.999] },\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " // Noise\n" ian@0: " {\n" ian@0: " \"name\": \"LFNoise0\",\n" ian@0: " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n" ian@0: " },\n" ian@0: " \"WhiteNoise\",\n" ian@0: " \"BrownNoise\",\n" ian@0: " \"PinkNoise\",\n" ian@0: " {\n" ian@0: " \"name\": \"Crackle\",\n" ian@0: " \"args\": { \"name\": \"chaosParam\", \"range\": [1, 2] }\n" ian@0: " },\n" ian@0: " // Lines/Envelopes\n" ian@0: " {\n" ian@0: " \"name\": \"Line\",\n" ian@0: " \"output\": \"control\",\n" ian@0: " \"args\": { \"name\": \"dur\", \"type\": \"time\" }\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"XLine\",\n" ian@0: " \"output\": \"control\",\n" ian@0: " \"args\": [ \n" ian@0: " { \"name\": \"dur\", \"type\": \"time\" },\n" ian@0: " { \"name\": \"add\", \"constant\": -1 }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Linen\",\n" ian@0: " \"output\": \"control\",\n" ian@0: " \"args\": [\n" ian@0: " \"gate\",\n" ian@0: " { \"name\": \"attackTime\", \"type\": \"time\" },\n" ian@0: " \"susLevel\", \n" ian@0: " { \"name\": \"releaseTime\", \"type\": \"time\" }\n" ian@0: " ]\n" ian@0: " }\n" ian@0: " ],\n" ian@0: "\n" ian@0: " \"modifiers\": [\n" ian@0: " // Filters\n" ian@0: " {\n" ian@0: " \"name\": \"LPF\",\n" ian@0: " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"HPF\",\n" ian@0: " \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"BPF\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"BRF\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"RLPF\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"RHPF\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Resonz\",\n" ian@0: " \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"bwr\" ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Ringz\",\n" ian@0: " \"args\": [ \n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"decaytime\", \"type\": \"time\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Formlet\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"attacktime\", \"type\": \"time\" },\n" ian@0: " { \"name\": \"decaytime\", \"type\": \"time\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"MoogFF\",\n" ian@0: " \"args\": [ \n" ian@0: " { \"name\": \"freq\", \"type\": \"frequency\" },\n" ian@0: " { \"name\": \"gain\", \"range\": [0, 4] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"FreeVerb\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [ \"mix\", \"room\", \"damp\" ]\n" ian@0: " },\n" ian@0: " // Dynamics\n" ian@0: " {\n" ian@0: " \"name\": \"Limiter\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": \"level\"\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Amplitude\",\n" ian@0: " \"output\": \"control\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"attackTime\", \"type\": \"time\" },\n" ian@0: " { \"name\": \"releaseTime\", \"type\": \"time\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Normalizer\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [ \"level\", { \"name\": \"dur\", \"range\": [0.001, 0.5] } ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Compander\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [ \n" ian@0: " { \"name\": \"control\", \"type\": \"audio\" },\n" ian@0: " \"thresh\",\n" ian@0: " { \"name\": \"slopeBelow\", \"type\": \"time\" },\n" ian@0: " { \"name\": \"slopeAbove\", \"type\": \"time\" },\n" ian@0: " { \"name\": \"clampTime\", \"range\": [0.001, 0.2] },\n" ian@0: " { \"name\": \"relaxTime\", \"range\": [0.001, 0.2] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " // shifters\n" ian@0: " {\n" ian@0: " \"name\": \"FreqShift\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"freq\", \"range\": [-1000, 1000] },\n" ian@0: " { \"name\": \"phase\", \"type\": \"radians\" }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"PitchShift\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"pitchRatio\", \"range\": [0, 4] },\n" ian@0: " { \"name\": \"pitchDispersion\", \"range\": [0, 4] },\n" ian@0: " { \"name\": \"timeDispersion\", \"range\": [0, 0.2] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " // delays\n" ian@0: " {\n" ian@0: " \"name\": \"DelayC\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"maxdelaytime\", \"constant\": 1 },\n" ian@0: " { \"name\": \"delaytime\", \"range\": [0.001, 1] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Pluck\",\n" ian@0: " \"output\": \"audio\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"trig\", \"type\": \"trigger\" },\n" ian@0: " { \"name\": \"maxdelaytime\", \"constant\": 1 },\n" ian@0: " { \"name\": \"delaytime\" },\n" ian@0: " { \"name\": \"decaytime\", \"type\": \"time\" },\n" ian@0: " { \"name\": \"coef\", \"range\": [-0.9, 0.9] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"CombC\",\n" ian@0: " \"args\": [\n" ian@0: " { \"name\": \"maxdelaytime\", \"constant\": 1 },\n" ian@0: " { \"name\": \"delaytime\" },\n" ian@0: " { \"name\": \"decaytime\", \"range\": [-1, 1] }\n" ian@0: " ]\n" ian@0: " },\n" ian@0: " // misc\n" ian@0: " {\n" ian@0: " \"name\": \"Decay\",\n" ian@0: " \"args\": { \"name\": \"decayTime\", \"type\": \"time\" }\n" ian@0: " },\n" ian@0: " {\n" ian@0: " \"name\": \"Latch\",\n" ian@0: " \"args\": { \"name\": \"trig\", \"type\": \"trigger\" }\n" ian@0: " }\n" ian@0: " ] // end of modifiers\n" ian@0: "}\n" ian@0: ; ian@0: ian@0: } // sc namespace