#include "PresetBank.h" // Oscillator wave indices (see prm::waveName) enum { O_SIN = 0, O_TRI, O_SAW, O_PUL, O_NOI }; // Parameter order matches the prm::desc table: // 0 osc1Wave 1 osc2Wave 2 detune 3 oscMix // 4 fltType 5 fltCutoff 6 fltRes 7 fltEnv 8 fltKey // 9 ampA 10 ampD 11 ampS 12 ampR // 13 fenvA 14 fenvD 15 fenvS 16 fenvR // 17 lfoRate 18 lfoShape 19 lfoDepth 20 lfoTarget // 21 fxType 22 fxAmt 23 fxTime // 24 vol 25 pan 26 poly 27 glide 28 tune static const Patch defs[] = { // 1 Warm Pad --------------------------------------------------------- { "Warm Pad", "POLY PAD", { O_SAW, O_SAW, 8, 55, 1, 2600, 0.20f, 60, 35, 0.60f, 1.6f, 0.80f, 1.20f, 0.40f, 0.9f, 0.35f, 0.5f, 4.0f, 0, 0.18f, 0, 1, 0.32f, 0.30f, 0.82f, 0.0f, 12, 0.0f, 0, 0 } }, // 2 Glass Pad -------------------------------------------------------- { "Glass Pad", "POLY PAD", { O_TRI, O_TRI, 12, 60, 2, 1400, 0.55f, 75, 30, 0.80f, 1.8f, 0.90f, 1.60f, 0.50f, 1.2f, 0.40f, 0.8f, 5.2f, 0, 0.16f, 2, 3, 0.38f, 0.40f, 0.92f, 0.0f, 12, 0.0f, 0, 0 } }, // 3 Dream Pad -------------------------------------------------------- { "Dream Pad", "POLY PAD", { O_SAW, O_PUL, -7, 50, 1, 3000, 0.25f, 70, 40, 1.10f, 2.4f, 0.85f, 1.80f, 0.60f, 1.4f, 0.30f, 0.9f, 0.35f, 1, 0.20f, 0, 1, 0.40f, 0.50f, 0.80f, 0.0f, 12, 0.0f, 0, 0 } }, // 4 Movie Strings ---------------------------------------------------- { "Movie Strings", "POLY PAD", { O_SAW, O_SAW, 6, 45, 1, 2200, 0.15f, 65, 55, 0.50f, 1.2f, 0.80f, 0.70f, 0.40f, 0.8f, 0.35f, 0.5f, 3.1f, 0, 0.10f, 0, 3, 0.28f, 0.45f, 0.82f, 0.0f, 12, 0.0f, 0, 0 } }, // 5 Electric Piano --------------------------------------------------- { "Electric Piano", "KEY", { O_PUL, O_TRI, 5, 62, 1, 2800, 0.25f, 45, 40, 0.004f, 1.4f, 0.30f, 0.40f, 0.004f, 0.2f, 0.10f, 0.3f, 6.0f, 0, 0.05f, 2, 1, 0.35f, 0.30f, 0.80f, 0.0f, 12, 0.0f, 0, 0 } }, // 6 Acoustic Piano --------------------------------------------------- { "Acoustic Piano", "KEY", { O_SAW, O_TRI, 3, 55, 1, 5200, 0.18f, 30, 60, 0.003f, 2.2f, 0.25f, 0.50f, 0.002f, 0.25f, 0.05f, 0.35f, 4.0f, 0, 0.03f, 2, 1, 0.22f, 0.30f, 0.80f, 0.0f, 12, 0.0f, 0, 0 } }, // 7 Toy Piano -------------------------------------------------------- { "Toy Piano", "KEY", { O_PUL, O_PUL, 0, 70, 2, 2100, 0.50f, 30, 45, 0.002f, 0.35f, 0.0f, 0.18f, 0.002f, 0.05f, 0.02f, 0.08f, 5.0f, 0, 0.03f, 2, 2, 0.18f, 0.17f, 0.90f, 0.0f, 12, 0.0f, 0, 0 } }, // 8 Clavinet 70 ------------------------------------------------------ { "Clavinet 70", "KEY", { O_PUL, O_PUL, 0, 40, 2, 1500, 0.40f, 60, 30, 0.002f, 0.50f, 0.45f, 0.12f, 0.001f, 0.05f, 0.05f, 0.10f, 4.0f, 0, 0.05f, 0, 1, 0.30f, 0.28f, 0.92f, 0.0f, 12, 0.0f, 0, 0 } }, // 9 Organ Drawbar ---------------------------------------------------- { "Organ Drawbar", "KEY", { O_SAW, O_SAW, 0, 50, 1, 10000, 0.10f, 20, 80, 0.010f, 0.10f, 0.98f, 0.10f, 0.010f, 0.10f, 0.50f, 0.10f, 8.0f, 3, 0.03f, 1, 1, 0.20f, 0.28f, 0.82f, 0.0f, 8, 0.0f, 0, 0 } }, // 10 FM E.Piano ------------------------------------------------------ { "FM E.Piano", "KEY", { O_SIN, O_TRI, 0, 30, 1, 4000, 0.12f, 50, 50, 0.002f, 1.0f, 0.50f, 0.30f, 0.002f, 0.20f, 0.10f, 0.25f, 4.5f, 0, 0.04f, 2, 1, 0.40f, 0.30f, 0.86f, 0.0f, 12, 0.0f, 0, 0 } }, // 11 Analog Bass ----------------------------------------------------- { "Analog Bass", "BASS", { O_PUL, O_SIN, 0, 80, 1, 700, 0.35f, 35, 10, 0.002f, 0.30f, 0.82f, 0.12f, 0.002f, 0.10f, 0.15f, 0.10f, 3.0f, 0, 0.05f, 0, 0, 0.0f, 0.30f, 0.94f, 0.0f, 1, 0.04f, 0, 0 } }, // 12 Sub Rez Bass ---------------------------------------------------- { "Sub Rez Bass", "BASS", { O_SAW, O_PUL, -4, 45, 1, 520, 0.70f, 55, 15, 0.004f, 0.40f, 0.70f, 0.10f, 0.004f, 0.15f, 0.25f, 0.10f, 2.4f, 3, 0.30f, 0, 0, 0.0f, 0.30f, 0.94f, 0.0f, 1, 0.03f, 0, 0 } }, // 13 Saw Lead -------------------------------------------------------- { "Saw Lead", "LEAD", { O_SAW, O_SAW, 14, 50, 1, 3800, 0.25f, 30, 60, 0.005f, 0.30f, 0.80f, 0.20f, 0.005f, 0.15f, 0.30f, 0.15f, 5.4f, 0, 0.14f, 1, 0, 0.0f, 0.28f, 0.86f, 0.0f, 1, 0.06f, 0, 0 } }, // 14 Mr. Square ------------------------------------------------------ { "Mr. Square", "LEAD", { O_PUL, O_PUL, 7, 60, 1, 2400, 0.22f, 20, 70, 0.003f, 0.25f, 0.72f, 0.18f, 0.003f, 0.12f, 0.25f, 0.12f, 6.6f, 0, 0.10f, 1, 0, 0.0f, 0.25f, 0.84f, 0.0f, 1, 0.05f, 0, 0 } }, // 15 Choir Layered --------------------------------------------------- { "Choir Layered", "POLY PAD",{ O_SAW, O_PUL, 9, 48, 1, 2600, 0.14f, 62, 45, 0.35f, 0.80f, 0.85f, 1.10f, 0.30f, 0.60f, 0.35f, 0.60f, 3.4f, 1, 0.12f, 0, 1, 0.38f, 0.42f, 0.82f, 0.0f, 12, 0.0f, 0, 0 } }, // 16 8-bit Chiptune -------------------------------------------------- { "8bit Chiptune", "LEAD", { O_PUL, O_PUL, 0, 30, 1, 9000, 0.10f, 10, 70, 0.003f, 0.12f, 0.90f, 0.12f, 0.003f, 0.06f, 0.10f, 0.08f, 9.0f, 0, 0.05f, 0, 0, 0.0f, 0.20f, 0.80f, 0.0f, 6, 0.0f, 0, 0 } }, // 17 Shimmer Pad ----------------------------------------------------- { "Shimmer Pad", "POLY PAD", { O_TRI, O_TRI, 14, 55, 2, 1800, 0.50f, 60, 20, 0.50f, 2.0f, 0.85f, 2.0f, 0.30f, 1.5f, 0.40f, 1.0f, 5.2f, 0, 0.20f, 2, 3, 0.38f, 0.55f, 0.90f, 0.0f, 16, 0.0f, 0, 0 } }, // 18 Strings Ensemble ------------------------------------------------- { "Strings Ens.", "POLY PAD", { O_SAW, O_PUL, 8, 58, 1, 3000, 0.10f, 65, 55, 0.25f, 1.2f, 0.82f, 1.8f, 0.20f, 0.7f, 0.40f, 0.6f, 3.8f, 0, 0.10f, 0, 1, 0.30f, 0.30f, 0.80f, 0.0f, 16, 0.0f, 0, 0 } }, // 19 Church Bell ----------------------------------------------------- { "Church Bell", "KEY", { O_SIN, O_SIN, 0, 40, 2, 3200, 0.40f, 40, 30, 0.002f, 2.5f, 0.10f, 1.8f, 0.002f, 0.3f, 0.10f, 0.6f, 4.4f, 0, 0.05f, 2, 3, 0.30f, 0.60f, 0.92f, 0.0f, 10, 0.0f, 0, 0 } }, // 20 E.Piano 2 ------------------------------------------------------- { "E.Piano 2", "KEY", { O_PUL, O_TRI, 4, 58, 1, 2500, 0.30f, 40, 35, 0.003f, 1.2f, 0.40f, 0.5f, 0.003f, 0.25f, 0.20f, 0.3f, 6.0f, 0, 0.04f, 2, 1, 0.35f, 0.30f, 0.80f, 0.0f, 12, 0.0f, 0, 0 } }, // 21 Acid Bass ------------------------------------------------------- { "Acid Bass", "BASS", { O_SAW, O_PUL, 0, 72, 1, 650, 0.60f, 70, 0, 0.002f, 0.30f, 0.75f, 0.15f, 0.002f, 0.10f, 0.12f, 0.05f, 0.6f, 1, 0.30f, 0, 0, 0.0f, 0.30f, 0.90f, 0.0f, 1, 0.04f, 0, 0 } }, // 22 Analog Bass II -------------------------------------------------- { "Analog Bass II", "BASS", { O_PUL, O_SIN, 0, 82, 1, 420, 0.40f, 45, 20, 0.002f, 0.25f, 0.80f, 0.12f, 0.002f, 0.12f, 0.20f, 0.08f, 4.0f, 0, 0.08f, 1, 1, 0.25f, 0.20f, 0.88f, 0.0f, 1, 0.08f, 0, 0 } }, // 23 Detuned Lead ---------------------------------------------------- { "Detuned Lead", "LEAD", { O_SAW, O_SAW, 18, 45, 1, 4100, 0.20f, 35, 60, 0.004f, 0.22f, 0.85f, 0.16f, 0.004f, 0.12f, 0.30f, 0.10f, 6.8f, 0, 0.09f, 1, 2, 0.25f, 0.45f, 0.85f, 0.0f, 1, 0.05f, 0, 0 } }, // 24 Square Lead ----------------------------------------------------- { "Square Lead", "LEAD", { O_PUL, O_PUL, 10, 55, 1, 5200, 0.25f, 30, 65, 0.004f, 0.35f, 0.72f, 0.20f, 0.004f, 0.15f, 0.25f, 0.12f, 7.2f, 0, 0.08f, 1, 1, 0.30f, 0.25f, 0.85f, 0.0f, 1, 0.06f, 0, 0 } }, // 25 Deep Space Pad -------------------------------------------------- { "Deep Space Pad","POLY PAD", { O_SAW, O_SAW, 16, 60, 1, 1500, 0.45f, 70, 35, 0.90f, 2.4f, 0.85f, 2.2f, 0.50f, 1.6f, 0.45f, 1.2f, 5.0f, 0, 0.22f, 2, 3, 0.42f, 0.70f, 0.80f, 0.0f, 16, 0.0f, 0, 0 } }, // 26 Liquid Keys ----------------------------------------------------- { "Liquid Keys", "KEY", { O_TRI, O_TRI, 8, 55, 1, 2800, 0.30f, 55, 30, 0.30f, 1.6f, 0.60f, 0.90f, 0.20f, 1.0f, 0.30f, 0.60f, 3.6f, 0, 0.16f, 2, 3, 0.36f, 0.50f, 0.84f, 0.0f, 12, 0.0f, 0, 0 } }, // 27 Techno Bass ----------------------------------------------------- { "Techno Bass", "BASS", { O_SAW, O_PUL, 0, 88, 1, 480, 0.45f, 60, 10, 0.003f, 0.40f, 0.75f, 0.10f, 0.003f, 0.12f, 0.15f, 0.08f, 2.0f, 2, 0.35f, 0, 2, 0.32f, 0.28f, 0.92f, 0.0f, 1, 0.03f, 0, 0 } }, // 28 Octave Lead ----------------------------------------------------- { "Octave Lead", "LEAD", { O_PUL, O_SAW, 0, 45, 1, 4200, 0.20f, 25, 65, 0.004f, 0.28f, 0.78f, 0.18f, 0.004f, 0.14f, 0.28f, 0.12f, 6.0f, 0, 0.12f, 1, 2, 0.28f, 0.35f, 0.86f, 0.0f, 1, 0.05f, 0, 0 } }, // 29 Glassy Chime ---------------------------------------------------- { "Glassy Chime", "KEY", { O_SIN, O_TRI, 20, 65, 2, 4200, 0.35f, 35, 40, 0.005f, 2.0f, 0.30f, 1.6f, 0.004f, 0.35f, 0.15f, 0.6f, 5.6f, 0, 0.08f, 2, 3, 0.34f, 0.60f, 0.82f, 0.0f, 10, 0.0f, 0, 0 } }, // 30 Chorus Organ ---------------------------------------------------- { "Chorus Organ", "KEY", { O_SAW, O_SAW, 0, 42, 1, 8000, 0.14f, 30, 75, 0.010f, 0.10f, 0.95f, 0.12f, 0.010f, 0.12f, 0.60f, 0.15f, 7.5f, 3, 0.04f, 1, 1, 0.40f, 0.34f, 0.86f, 0.0f, 8, 0.0f, 0, 0 } }, // 31 Night Strings --------------------------------------------------- { "Night Strings","POLY PAD", { O_SAW, O_TRI, 10, 52, 0, 2600, 0.10f, 60, 50, 1.10f, 2.6f, 0.85f, 2.0f, 0.55f, 1.6f, 0.40f, 1.1f, 3.2f, 0, 0.14f, 0, 3, 0.40f, 0.55f, 0.84f, 0.0f, 16, 0.0f, 0, 0 } }, // 32 Pulse Echo ------------------------------------------------------ { "Pulse Echo", "LEAD", { O_PUL, O_PUL, 0, 35, 2, 6000, 0.18f, 15, 60, 0.005f, 0.32f, 0.70f, 0.20f, 0.005f, 0.16f, 0.30f, 0.15f, 8.0f, 0, 0.10f, 0, 2, 0.45f, 0.38f, 0.84f, 0.0f, 1, 0.04f, 0, 0 } }, // 33 Sine Sub Bass --------------------------------------------------- { "Sine Sub Bass","BASS", { O_SIN, O_SIN, 0, 100, 1, 380, 0.20f, 55, 10, 0.003f, 0.35f, 0.85f, 0.10f, 0.003f, 0.10f, 0.30f, 0.10f, 3.5f, 0, 0.06f, 0, 2, 0.25f, 0.20f, 0.90f, 0.0f, 1, 0.05f, 0, 0 } }, // 34 Space Choir ----------------------------------------------------- { "Space Choir", "POLY PAD", { O_TRI, O_SAW, 12, 50, 1, 2400, 0.35f, 65, 45, 0.45f, 1.4f, 0.82f, 1.7f, 0.30f, 0.90f, 0.40f, 0.9f, 3.8f, 1, 0.15f, 0, 3, 0.46f, 0.65f, 0.82f, 0.0f, 12, 0.0f, 0, 0 } }, // 35 Retro Clav ------------------------------------------------------ { "Retro Clav", "KEY", { O_PUL, O_TRI, 2, 55, 1, 2600, 0.35f, 40, 35, 0.003f, 0.60f, 0.40f, 0.15f, 0.002f, 0.10f, 0.08f, 0.12f, 5.0f, 0, 0.05f, 2, 3, 0.25f, 0.30f, 0.86f, 0.0f, 10, 0.0f, 0, 0 } }, // 36 High Strings ---------------------------------------------------- { "High Strings", "POLY PAD", { O_SAW, O_PUL, 6, 60, 1, 3400, 0.10f, 55, 60, 0.20f, 1.0f, 0.80f, 1.6f, 0.15f, 0.60f, 0.40f, 0.7f, 4.2f, 0, 0.10f, 0, 1, 0.35f, 0.40f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 37 Echo Flute ------------------------------------------------------ { "Echo Flute", "LEAD", { O_TRI, O_SIN, 0, 85, 1, 3000, 0.15f, 20, 55, 0.05f, 0.50f, 0.75f, 0.25f, 0.04f, 0.30f, 0.40f, 0.20f, 4.8f, 0, 0.10f, 1, 2, 0.40f, 0.45f, 0.86f, 0.0f, 1, 0.06f, 0, 0 } }, // 38 Dub Rez Bass ---------------------------------------------------- { "Dub Rez Bass", "BASS", { O_SAW, O_PUL, -5, 60, 1, 500, 0.65f, 45, 5, 0.004f, 0.35f, 0.80f, 0.12f, 0.004f, 0.15f, 0.25f, 0.12f, 0.8f, 3, 0.30f, 0, 2, 0.40f, 0.36f, 0.90f, 0.0f, 1, 0.05f, 0, 0 } }, // 39 Crystal Pad ----------------------------------------------------- { "Crystal Pad", "POLY PAD", { O_SIN, O_TRI, 18, 55, 2, 3600, 0.40f, 50, 25, 0.60f, 2.2f, 0.85f, 2.0f, 0.40f, 1.4f, 0.40f, 1.2f, 5.5f, 0, 0.20f, 2, 3, 0.40f, 0.60f, 0.80f, 0.0f, 12, 0.0f, 0, 0 } }, // 40 Funk Wah -------------------------------------------------------- { "Funk Wah", "KEY", { O_PUL, O_SAW, 0, 40, 1, 1800, 0.55f, 75, 20, 0.004f, 0.70f, 0.50f, 0.20f, 0.004f, 0.20f, 0.20f, 0.15f, 7.0f, 2, 0.40f, 0, 1, 0.32f, 0.30f, 0.88f, 0.0f, 1, 0.03f, 0, 0 } }, }; PresetBank::PresetBank() { patches.assign (defs, defs + juce::numElementsInArray (defs)); } int PresetBank::findByName (const juce::String& name) const { for (int i = 0; i < patches.size(); ++i) if (juce::String (patches[i].name) == name) return i; return -1; } void PresetBank::writeTo (int i, juce::AudioProcessorValueTreeState& apvts) const { const int n = (int) patches.size(); i = juce::jlimit (0, n - 1, i); const Patch& p = patches[i]; for (int k = 0; k < prm::num; ++k) { if (k == static_cast (prm::Id::hq)) continue; // global, not per-patch if (auto* par = apvts.getParameter (prm::desc (static_cast (k)).id)) par->setValueNotifyingHost (par->convertTo0to1 (p.v[k])); } }