view src/sc_default_grammar.cpp @ 0:add35537fdbb tip

Initial import
author irh <ian.r.hobson@gmail.com>
date Thu, 25 Aug 2011 11:05:55 +0100
parents
children
line wrap: on
line source
//  Copyright 2011, Ian Hobson.
//
//  This file is part of gpsynth.
//
//  gpsynth is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  gpsynth is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with gpsynth in the file COPYING. 
//  If not, see http://www.gnu.org/licenses/.

// Contents of grammar/sc.json

#include "sc_default_grammar.hpp"

namespace sc {

const char* g_default_grammar = 
  "{\n"
  "  \"sclang-version\": \"3\",\n"
  "  \"name\": \"sc3\",\n"
  "  \"arg-types\": [\n"
  "    {\n"
  "      \"type\": \"frequency\",\n"
  "      \"range\": [20, 20000],\n"
  "      \"range_control\": [0, 100],\n"
  "      \"scaling\": \"log\"\n"
  "    },\n"
  "    {\n"
  "      \"type\": \"radians\",\n"
  "      \"range\": [0, 6.2831853072]\n"
  "    },\n"
  "    {\n"
  "      \"type\": \"audio\",\n"
  "      \"range\": [-1, 1]\n"
  "    },\n"
  "    {\n"
  "      \"type\": \"time\",\n"
  "      \"range\": [0, 10],\n"
  "      \"scaling\": \"log\"\n"
  "    },\n"
  "    {\n"
  "      \"type\": \"trigger\",\n"
  "      \"range\": [-1, 1],\n"
  "      \"fixed_range\": true\n"
  "    }\n"
  "  ],\n"
  "\n"
  "  \"sources\": [\n"
  "    // oscillators\n"
  "    {\n"
  "      \"name\": \"SinOsc\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"phase\", \"type\": \"radians\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Saw\",\n"
  "      \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"SyncSaw\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"syncFreq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"sawFreq\", \"type\": \"frequency\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"VarSaw\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"iphase\", \"width\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Pulse\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"width\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Impulse\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"phase\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Blip\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"numharm\", \"range\": [1, 200] }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"SinOscFB\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"feedback\", \"type\": \"radians\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"PMOsc\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"carfreq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"modfreq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"pmindex\", \"type\": \"radians\" },\n"
  "        { \"name\": \"modphase\", \"type\": \"radians\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"FBSineC\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"im\", \"range\": [1, 64] },\n"
  "        { \"name\": \"fb\", \"range\": [0, 0.5] },\n"
  "        { \"name\": \"a\", \"range\": [1, 1.2] },\n"
  "        { \"name\": \"c\", \"range\": [0.1, 0.9] }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"FBSineN\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"im\", \"range\": [1, 64] },\n"
  "        { \"name\": \"fb\", \"range\": [0, 0.5] },\n"
  "        { \"name\": \"a\", \"range\": [1, 1.2] },\n"
  "        { \"name\": \"c\", \"range\": [0.1, 0.9] }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Logistic\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"chaosParam\", \"range\": [3, 3.999] },\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" }\n"
  "      ]\n"
  "    },\n"
  "    // Noise\n"
  "    {\n"
  "      \"name\": \"LFNoise0\",\n"
  "      \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
  "    },\n"
  "    \"WhiteNoise\",\n"
  "    \"BrownNoise\",\n"
  "    \"PinkNoise\",\n"
  "    {\n"
  "      \"name\": \"Crackle\",\n"
  "      \"args\": { \"name\": \"chaosParam\", \"range\": [1, 2] }\n"
  "    },\n"
  "    // Lines/Envelopes\n"
  "    {\n"
  "      \"name\": \"Line\",\n"
  "      \"output\": \"control\",\n"
  "      \"args\": { \"name\": \"dur\", \"type\": \"time\" }\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"XLine\",\n"
  "      \"output\": \"control\",\n"
  "      \"args\": [ \n"
  "        { \"name\": \"dur\", \"type\": \"time\" },\n"
  "        { \"name\": \"add\", \"constant\": -1 }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Linen\",\n"
  "      \"output\": \"control\",\n"
  "      \"args\": [\n"
  "        \"gate\",\n"
  "        { \"name\": \"attackTime\", \"type\": \"time\" },\n"
  "        \"susLevel\",        \n"
  "        { \"name\": \"releaseTime\", \"type\": \"time\" }\n"
  "      ]\n"
  "    }\n"
  "  ],\n"
  "\n"
  "  \"modifiers\": [\n"
  "    // Filters\n"
  "    {\n"
  "      \"name\": \"LPF\",\n"
  "      \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"HPF\",\n"
  "      \"args\": { \"name\": \"freq\", \"type\": \"frequency\" }\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"BPF\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"BRF\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"RLPF\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"RHPF\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"rq\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Resonz\",\n"
  "      \"args\": [ { \"name\": \"freq\", \"type\": \"frequency\" }, \"bwr\" ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Ringz\",\n"
  "      \"args\": [ \n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"decaytime\", \"type\": \"time\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Formlet\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"attacktime\", \"type\": \"time\" },\n"
  "        { \"name\": \"decaytime\", \"type\": \"time\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"MoogFF\",\n"
  "      \"args\": [ \n"
  "        { \"name\": \"freq\", \"type\": \"frequency\" },\n"
  "        { \"name\": \"gain\", \"range\": [0, 4] }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"FreeVerb\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [ \"mix\", \"room\", \"damp\" ]\n"
  "    },\n"
  "    // Dynamics\n"
  "    {\n"
  "      \"name\": \"Limiter\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": \"level\"\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Amplitude\",\n"
  "      \"output\": \"control\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"attackTime\", \"type\": \"time\" },\n"
  "        { \"name\": \"releaseTime\", \"type\": \"time\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Normalizer\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [ \"level\", { \"name\": \"dur\", \"range\": [0.001, 0.5] } ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Compander\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [ \n"
  "        { \"name\": \"control\", \"type\": \"audio\" },\n"
  "        \"thresh\",\n"
  "        { \"name\": \"slopeBelow\", \"type\": \"time\" },\n"
  "        { \"name\": \"slopeAbove\", \"type\": \"time\" },\n"
  "        { \"name\": \"clampTime\", \"range\": [0.001, 0.2] },\n"
  "        { \"name\": \"relaxTime\", \"range\": [0.001, 0.2] }\n"
  "      ]\n"
  "    },\n"
  "    // shifters\n"
  "    {\n"
  "      \"name\": \"FreqShift\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"freq\", \"range\": [-1000, 1000] },\n"
  "        { \"name\": \"phase\", \"type\": \"radians\" }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"PitchShift\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"pitchRatio\", \"range\": [0, 4] },\n"
  "        { \"name\": \"pitchDispersion\", \"range\": [0, 4] },\n"
  "        { \"name\": \"timeDispersion\", \"range\": [0, 0.2] }\n"
  "      ]\n"
  "    },\n"
  "    // delays\n"
  "    {\n"
  "      \"name\": \"DelayC\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"maxdelaytime\", \"constant\": 1 },\n"
  "        { \"name\": \"delaytime\", \"range\": [0.001, 1] }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Pluck\",\n"
  "      \"output\": \"audio\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"trig\", \"type\": \"trigger\" },\n"
  "        { \"name\": \"maxdelaytime\", \"constant\": 1 },\n"
  "        { \"name\": \"delaytime\" },\n"
  "        { \"name\": \"decaytime\", \"type\": \"time\" },\n"
  "        { \"name\": \"coef\", \"range\": [-0.9, 0.9] }\n"
  "      ]\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"CombC\",\n"
  "      \"args\": [\n"
  "        { \"name\": \"maxdelaytime\", \"constant\": 1 },\n"
  "        { \"name\": \"delaytime\" },\n"
  "        { \"name\": \"decaytime\", \"range\": [-1, 1] }\n"
  "      ]\n"
  "    },\n"
  "    // misc\n"
  "    {\n"
  "      \"name\": \"Decay\",\n"
  "      \"args\": { \"name\": \"decayTime\", \"type\": \"time\" }\n"
  "    },\n"
  "    {\n"
  "      \"name\": \"Latch\",\n"
  "      \"args\": { \"name\": \"trig\", \"type\": \"trigger\" }\n"
  "    }\n"
  "  ] // end of modifiers\n"
  "}\n"
;

} // sc namespace