#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[] = { // == POLY PAD ========================================================== // 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, 1, 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 } }, // 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 } }, // 17 Shimmer Pad { "Shimmer Pad", "POLY PAD", { O_TRI, O_TRI, 14, 55, 1, 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 } }, // 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 } }, // 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 } }, // 39 Crystal Pad { "Crystal Pad", "POLY PAD", { O_SIN, O_TRI, 18, 55, 1, 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 } }, // 41 Infinite Pad { "Infinite Pad", "POLY PAD", { O_SAW, O_SAW, 20, 50, 1, 1800, 0.30f, 75, 35, 2.0f, 3.5f, 0.90f, 4.0f, 1.5f, 2.5f, 0.50f, 3.0f, 0.25f, 1, 0.25f, 2, 3, 0.50f, 0.55f, 0.80f, 0.0f, 16, 0.0f, 0, 0 } }, // 42 Nebula { "Nebula", "POLY PAD", { O_TRI, O_PUL, 15, 55, 1, 2000, 0.25f, 65, 30, 1.8f, 3.0f, 0.88f, 3.5f, 1.2f, 2.0f, 0.45f, 2.5f, 0.30f, 0, 0.20f, 0, 3, 0.55f, 0.65f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 43 Cathedral Pad { "Cathedral Pad","POLY PAD", { O_SIN, O_SAW, 12, 45, 2, 1600, 0.45f, 80, 40, 2.5f, 4.0f, 0.92f, 5.0f, 1.8f, 3.0f, 0.55f, 3.5f, 4.0f, 0, 0.15f, 0, 3, 0.60f, 0.80f, 0.78f, 0.0f, 16, 0.0f, 0, 0 } }, // 45 Monolith { "Monolith", "POLY PAD", { O_SIN, O_SIN, 0, 50, 1, 320, 0.25f, 40, 15, 2.0f, 3.0f, 0.88f, 4.5f, 1.5f, 2.5f, 0.50f, 3.0f, 3.5f, 0, 0.18f, 2, 3, 0.42f, 0.75f, 0.78f, 0.0f, 16, 0.0f, 0, 0 } }, // 46 Quantum Drift { "Quantum Drift","POLY PAD", { O_SAW, O_SAW, 22, 48, 2, 2200, 0.40f, 70, 30, 0.80f, 2.2f, 0.88f, 3.0f, 0.50f, 1.8f, 0.45f, 2.0f, 5.8f, 0, 0.22f, 0, 3, 0.45f, 0.65f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 47 Horizon { "Horizon", "POLY PAD", { O_TRI, O_SAW, 4, 50, 1, 1800, 0.20f, 65, 35, 1.5f, 2.8f, 0.90f, 3.5f, 1.0f, 2.0f, 0.50f, 2.5f, 0.3f, 1, 0.18f, 0, 1, 0.40f, 0.55f, 0.80f, 0.0f, 16, 0.0f, 0, 0 } }, // 52 Abyss { "Abyss", "POLY PAD", { O_SAW, O_TRI, 14, 50, 1, 1200, 0.35f, 80, 30, 2.5f, 3.5f, 0.90f, 5.0f, 2.0f, 3.0f, 0.50f, 3.5f, 4.0f, 1, 0.18f, 0, 3, 0.70f, 0.80f, 0.78f, 0.0f, 16, 0.0f, 0, 0 } }, // 53 Shimmer Reverb { "Shimmer Reverb","POLY PAD",{ O_TRI, O_SIN, 8, 55, 2, 3400, 0.50f, 75, 25, 3.0f, 4.0f, 0.92f, 5.5f, 2.2f, 3.5f, 0.55f, 4.0f, 5.0f, 0, 0.20f, 2, 3, 0.75f, 0.70f, 0.76f, 0.0f, 16, 0.0f, 0, 0 } }, // 54 Temple { "Temple", "POLY PAD", { O_PUL, O_SAW, 6, 48, 1, 1600, 0.30f, 70, 35, 2.0f, 3.0f, 0.88f, 4.5f, 1.5f, 2.5f, 0.48f, 3.0f, 3.5f, 0, 0.15f, 0, 3, 0.65f, 0.75f, 0.80f, 0.0f, 16, 0.0f, 0, 0 } }, // 55 Silk Pad { "Silk Pad", "POLY PAD", { O_TRI, O_TRI, 6, 55, 1, 3400, 0.20f, 55, 25, 1.2f, 2.5f, 0.90f, 3.0f, 0.8f, 1.8f, 0.45f, 2.0f, 3.0f, 0, 0.18f, 0, 1, 0.38f, 0.45f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 56 Glass Cloud { "Glass Cloud", "POLY PAD", { O_SIN, O_TRI, 16, 50, 1, 3800, 0.35f, 65, 20, 1.5f, 2.8f, 0.88f, 3.5f, 1.0f, 2.0f, 0.40f, 2.5f, 0.35f, 1, 0.22f, 0, 3, 0.55f, 0.60f, 0.80f, 0.0f, 16, 0.0f, 0, 0 } }, // 57 Velvet Pad { "Velvet Pad", "POLY PAD", { O_SAW, O_TRI, 10, 52, 1, 1600, 0.25f, 70, 30, 1.8f, 3.0f, 0.90f, 3.5f, 1.2f, 2.2f, 0.50f, 2.5f, 0.30f, 1, 0.20f, 0, 3, 0.48f, 0.55f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // == KEY =============================================================== // 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, 1, 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, 1, 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 } }, // 19 Church Bell { "Church Bell", "KEY", { O_SIN, O_SIN, 0, 40, 1, 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 } }, // 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 } }, // 29 Glassy Chime { "Glassy Chime", "KEY", { O_SIN, O_TRI, 20, 65, 1, 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 } }, // 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 } }, // 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 } }, // == BASS ============================================================== // 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 } }, // 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 } }, // 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 } }, // == LEAD ============================================================== // 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 } }, // 16 8bit 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 } }, // 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 } }, // 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 } }, // 32 Pulse Echo { "Pulse Echo", "LEAD", { O_PUL, O_PUL, 0, 35, 1, 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 } }, // 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 } }, // 48 Delay Garden { "Delay Garden", "LEAD", { O_SAW, O_SAW, 12, 50, 1, 3200, 0.20f, 55, 40, 0.005f, 0.40f, 0.75f, 0.30f, 0.15f, 0.80f, 0.35f, 0.60f, 4.5f, 0, 0.15f, 0, 2, 0.55f, 0.50f, 0.85f, 0.0f, 1, 0.06f, 0, 0 } }, // 49 Cosmic Echo { "Cosmic Echo", "LEAD", { O_TRI, O_SIN, 0, 70, 1, 2600, 0.30f, 50, 35, 0.015f, 0.50f, 0.70f, 0.40f, 0.10f, 1.0f, 0.40f, 0.80f, 5.5f, 0, 0.12f, 1, 2, 0.70f, 0.75f, 0.84f, 0.0f, 1, 0.05f, 0, 0 } }, // 50 Stellar Delay { "Stellar Delay", "LEAD", { O_SAW, O_PUL, 10, 45, 1, 2800, 0.35f, 50, 35, 0.008f, 0.45f, 0.72f, 0.35f, 0.12f, 0.90f, 0.38f, 0.70f, 6.0f, 0, 0.10f, 0, 2, 0.60f, 0.65f, 0.85f, 0.0f, 1, 0.05f, 0, 0 } }, // 51 Pulse Train { "Pulse Train", "LEAD", { O_PUL, O_PUL, 0, 60, 1, 4000, 0.25f, 45, 55, 0.005f, 0.35f, 0.80f, 0.25f, 0.08f, 0.50f, 0.30f, 0.40f, 8.0f, 0, 0.08f, 0, 2, 0.65f, 0.45f, 0.86f, 0.0f, 1, 0.04f, 0, 0 } }, // == STRINGS =========================================================== // 4 Movie Strings { "Movie Strings", "STRINGS", { 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 } }, // 18 Strings Ensemble { "Strings Ens.", "STRINGS", { 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 } }, // 31 Night Strings { "Night Strings","STRINGS", { 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 } }, // 36 High Strings { "High Strings", "STRINGS", { 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 } }, // 44 Frozen Strings { "Frozen Strings","STRINGS", { O_SAW, O_PUL, 10, 55, 1, 2400, 0.12f, 60, 55, 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 } }, // 58 Deep Strings { "Deep Strings", "STRINGS", { O_SAW, O_SAW, 12, 50, 1, 1800, 0.12f, 65, 50, 0.40f, 1.4f, 0.82f, 1.5f, 0.30f, 0.80f, 0.38f, 0.60f, 3.5f, 0, 0.12f, 0, 3, 0.38f, 0.50f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 59 Vinyl Strings { "Vinyl Strings","STRINGS", { O_SAW, O_TRI, 8, 48, 1, 2000, 0.15f, 60, 45, 0.35f, 1.2f, 0.78f, 1.4f, 0.25f, 0.70f, 0.35f, 0.55f, 3.2f, 0, 0.10f, 0, 1, 0.32f, 0.42f, 0.84f, 0.0f, 16, 0.0f, 0, 0 } }, // 60 Brass Ensemble { "Brass Ens.", "STRINGS", { O_SAW, O_PUL, 5, 55, 1, 2600, 0.20f, 50, 50, 0.15f, 0.80f, 0.75f, 0.50f, 0.10f, 0.50f, 0.30f, 0.40f, 4.0f, 0, 0.08f, 0, 1, 0.30f, 0.35f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // == DUB =============================================================== // 27 Techno Bass { "Techno Bass", "DUB", { 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 } }, // 38 Dub Rez Bass { "Dub Rez Bass", "DUB", { 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 } }, // 61 Dub Sub { "Dub Sub", "DUB", { O_SIN, O_SIN, 0, 100, 1, 350, 0.15f, 30, 15, 0.003f, 0.40f, 0.85f, 0.15f, 0.003f, 0.12f, 0.25f, 0.10f, 3.0f, 0, 0.05f, 0, 2, 0.45f, 0.35f, 0.90f, 0.0f, 1, 0.04f, 0, 0 } }, // 62 Dub Wobble { "Dub Wobble", "DUB", { O_SAW, O_PUL, 0, 75, 1, 400, 0.55f, 65, 20, 0.003f, 0.35f, 0.78f, 0.12f, 0.003f, 0.15f, 0.20f, 0.10f, 0.5f, 2, 0.40f, 0, 2, 0.50f, 0.40f, 0.90f, 0.0f, 1, 0.03f, 0, 0 } }, // 63 Dub Rumble { "Dub Rumble", "DUB", { O_SAW, O_SIN, -3, 65, 1, 380, 0.40f, 50, 10, 0.004f, 0.30f, 0.82f, 0.10f, 0.004f, 0.10f, 0.18f, 0.08f, 1.2f, 3, 0.30f, 0, 2, 0.55f, 0.45f, 0.88f, 0.0f, 1, 0.04f, 0, 0 } }, // 64 Dub Delay Bass { "Dub Delay Bs", "DUB", { O_PUL, O_SIN, 0, 78, 1, 420, 0.50f, 55, 15, 0.003f, 0.30f, 0.80f, 0.10f, 0.003f, 0.10f, 0.20f, 0.08f, 1.5f, 2, 0.35f, 0, 2, 0.60f, 0.50f, 0.90f, 0.0f, 1, 0.03f, 0, 0 } }, // == CHORDS ============================================================ // 65 Chord Stab { "Chord Stab", "CHORDS", { O_SAW, O_SAW, 6, 55, 1, 3200, 0.20f, 40, 30, 0.003f, 0.20f, 0.0f, 0.10f, 0.002f, 0.10f, 0.02f, 0.08f, 6.0f, 0, 0.05f, 2, 1, 0.35f, 0.25f, 0.84f, 0.0f, 12, 0.0f, 0, 0 } }, // 66 Super Chord { "Super Chord", "CHORDS", { O_SAW, O_PUL, 10, 50, 1, 2800, 0.18f, 45, 35, 0.004f, 0.25f, 0.0f, 0.12f, 0.003f, 0.12f, 0.03f, 0.10f, 5.5f, 0, 0.06f, 2, 1, 0.40f, 0.30f, 0.84f, 0.0f, 12, 0.0f, 0, 0 } }, // 67 Poly Brass { "Poly Brass", "CHORDS", { O_SAW, O_SAW, 8, 52, 1, 3000, 0.25f, 35, 40, 0.005f, 0.30f, 0.0f, 0.15f, 0.004f, 0.15f, 0.05f, 0.12f, 5.0f, 0, 0.08f, 2, 1, 0.35f, 0.28f, 0.82f, 0.0f, 12, 0.0f, 0, 0 } }, // 68 Saw Stack { "Saw Stack", "CHORDS", { O_SAW, O_SAW, 14, 55, 1, 2600, 0.15f, 50, 30, 0.003f, 0.18f, 0.0f, 0.08f, 0.002f, 0.08f, 0.02f, 0.06f, 6.5f, 0, 0.04f, 2, 1, 0.30f, 0.22f, 0.82f, 0.0f, 12, 0.0f, 0, 0 } }, // 69 Deep Chord { "Deep Chord", "CHORDS", { O_TRI, O_SAW, 4, 50, 1, 2200, 0.22f, 55, 35, 0.004f, 0.22f, 0.0f, 0.12f, 0.003f, 0.10f, 0.03f, 0.10f, 5.0f, 0, 0.06f, 2, 1, 0.38f, 0.28f, 0.84f, 0.0f, 12, 0.0f, 0, 0 } }, // 70 Synth Stab { "Synth Stab", "CHORDS", { O_PUL, O_SAW, 5, 58, 1, 3500, 0.30f, 35, 25, 0.003f, 0.15f, 0.0f, 0.08f, 0.002f, 0.08f, 0.02f, 0.06f, 7.0f, 0, 0.04f, 2, 1, 0.32f, 0.20f, 0.86f, 0.0f, 12, 0.0f, 0, 0 } }, // == SYNTH ============================================================= // 71 Poly Sync { "Poly Sync", "SYNTH", { O_SAW, O_PUL, 8, 55, 1, 3400, 0.25f, 40, 35, 0.005f, 0.30f, 0.75f, 0.18f, 0.004f, 0.15f, 0.25f, 0.12f, 5.5f, 0, 0.12f, 0, 1, 0.32f, 0.28f, 0.84f, 0.0f, 10, 0.0f, 0, 0 } }, // 72 Dark Synth { "Dark Synth", "SYNTH", { O_SAW, O_SAW, 12, 48, 1, 2000, 0.35f, 60, 25, 0.008f, 0.35f, 0.70f, 0.20f, 0.006f, 0.20f, 0.30f, 0.15f, 4.0f, 0, 0.15f, 0, 1, 0.35f, 0.32f, 0.82f, 0.0f, 10, 0.0f, 0, 0 } }, // 73 Bright Synth { "Bright Synth", "SYNTH", { O_SAW, O_TRI, 10, 50, 1, 4200, 0.15f, 30, 45, 0.004f, 0.25f, 0.80f, 0.15f, 0.003f, 0.12f, 0.28f, 0.10f, 6.0f, 0, 0.10f, 1, 1, 0.28f, 0.25f, 0.85f, 0.0f, 10, 0.0f, 0, 0 } }, // 74 Mono Synth { "Mono Synth", "SYNTH", { O_PUL, O_SAW, 0, 60, 1, 3000, 0.30f, 45, 40, 0.003f, 0.22f, 0.78f, 0.15f, 0.003f, 0.10f, 0.25f, 0.10f, 5.0f, 0, 0.12f, 1, 0, 0.0f, 0.25f, 0.85f, 0.0f, 1, 0.06f, 0, 0 } }, // 75 Retro Synth { "Retro Synth", "SYNTH", { O_SAW, O_PUL, 6, 52, 1, 2800, 0.22f, 38, 50, 0.005f, 0.28f, 0.72f, 0.18f, 0.004f, 0.14f, 0.22f, 0.12f, 5.5f, 0, 0.10f, 0, 1, 0.30f, 0.30f, 0.84f, 0.0f, 10, 0.0f, 0, 0 } }, // 76 Sine Synth { "Sine Synth", "SYNTH", { O_SIN, O_TRI, 4, 60, 1, 3600, 0.18f, 35, 30, 0.006f, 0.30f, 0.78f, 0.20f, 0.005f, 0.18f, 0.28f, 0.15f, 4.5f, 0, 0.10f, 0, 1, 0.32f, 0.28f, 0.84f, 0.0f, 10, 0.0f, 0, 0 } }, // == ARP =============================================================== // 77 Arp Saw { "Arp Saw", "ARP", { O_SAW, O_SAW, 6, 55, 1, 3800, 0.20f, 35, 45, 0.005f, 0.15f, 0.70f, 0.08f, 0.004f, 0.10f, 0.20f, 0.08f, 6.0f, 0, 0.10f, 0, 1, 0.28f, 0.20f, 0.84f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 0, 2, 70 } }, // 78 Arp Pulse { "Arp Pulse", "ARP", { O_PUL, O_PUL, 4, 58, 1, 3200, 0.25f, 40, 50, 0.004f, 0.12f, 0.65f, 0.06f, 0.003f, 0.08f, 0.18f, 0.06f, 7.0f, 0, 0.08f, 0, 1, 0.30f, 0.18f, 0.84f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 0, 2, 70 } }, // 79 Arp Sine { "Arp Sine", "ARP", { O_SIN, O_TRI, 0, 70, 1, 4000, 0.15f, 30, 35, 0.003f, 0.10f, 0.60f, 0.05f, 0.002f, 0.06f, 0.15f, 0.05f, 5.5f, 0, 0.06f, 0, 1, 0.25f, 0.15f, 0.86f, 0.0f, 10, 0.0f, 0, 0, 1, 1, 2, 2, 60 } }, // 80 Arp Space { "Arp Space", "ARP", { O_TRI, O_SAW, 8, 52, 1, 3000, 0.22f, 45, 40, 0.005f, 0.18f, 0.70f, 0.10f, 0.004f, 0.12f, 0.22f, 0.08f, 5.0f, 0, 0.12f, 0, 3, 0.45f, 0.40f, 0.82f, 0.0f, 10, 0.0f, 0, 0, 1, 4, 0, 2, 70 } }, // 81 Arp Trance { "Arp Trance", "ARP", { O_SAW, O_SAW, 10, 50, 1, 3500, 0.18f, 40, 50, 0.004f, 0.12f, 0.72f, 0.08f, 0.003f, 0.08f, 0.20f, 0.06f, 8.0f, 0, 0.10f, 0, 2, 0.40f, 0.35f, 0.84f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 0, 3, 60 } }, // 82 Arp Square { "Arp Square", "ARP", { O_PUL, O_SAW, 0, 65, 1, 3000, 0.30f, 35, 45, 0.003f, 0.10f, 0.65f, 0.05f, 0.002f, 0.06f, 0.18f, 0.05f, 7.5f, 0, 0.06f, 0, 1, 0.30f, 0.18f, 0.85f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 1, 2, 60 } }, // 83 Arp Pluck { "Arp Pluck", "ARP", { O_TRI, O_TRI, 3, 60, 1, 3200, 0.18f, 30, 40, 0.002f, 0.08f, 0.55f, 0.04f, 0.002f, 0.05f, 0.15f, 0.04f, 6.5f, 0, 0.05f, 0, 1, 0.28f, 0.15f, 0.86f, 0.0f, 10, 0.0f, 0, 0, 1, 1, 2, 2, 50 } }, // 84 Moon Pad { "Moon Pad", "POLY PAD", { O_SIN, O_TRI, 14, 55, 1, 2200, 0.30f, 55, 25, 1.5f, 2.8f, 0.88f, 3.2f, 1.0f, 2.0f, 0.40f, 2.2f, 0.4f, 1, 0.20f, 0, 3, 0.50f, 0.55f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 85 Orchestral { "Orchestral", "STRINGS", { O_SAW, O_PUL, 8, 55, 1, 2400, 0.12f, 60, 55, 0.30f, 1.1f, 0.80f, 1.8f, 0.20f, 0.70f, 0.38f, 0.60f, 3.6f, 0, 0.10f, 0, 3, 0.35f, 0.45f, 0.82f, 0.0f, 16, 0.0f, 0, 0 } }, // 86 Arp Bubble { "Arp Bubble", "ARP", { O_TRI, O_SIN, 0, 70, 1, 3800, 0.12f, 25, 30, 0.002f, 0.08f, 0.55f, 0.04f, 0.002f, 0.05f, 0.12f, 0.04f, 7.5f, 0, 0.05f, 0, 1, 0.25f, 0.12f, 0.86f, 0.0f, 10, 0.0f, 0, 0, 1, 1, 3, 2, 50 } }, // 87 Arp Pyramid { "Arp Pyramid", "ARP", { O_PUL, O_SAW, 0, 62, 1, 3000, 0.25f, 30, 45, 0.003f, 0.10f, 0.60f, 0.05f, 0.002f, 0.06f, 0.15f, 0.05f, 6.0f, 0, 0.06f, 0, 1, 0.28f, 0.15f, 0.85f, 0.0f, 10, 0.0f, 0, 0, 1, 3, 2, 3, 60 } }, // 88 Arp Sweep { "Arp Sweep", "ARP", { O_SAW, O_SAW, 8, 55, 1, 3400, 0.20f, 45, 35, 0.004f, 0.15f, 0.68f, 0.08f, 0.003f, 0.10f, 0.20f, 0.06f, 5.5f, 0, 0.10f, 0, 3, 0.42f, 0.35f, 0.83f, 0.0f, 10, 0.0f, 0, 0, 1, 4, 0, 2, 65 } }, // 89 Arp Chimes { "Arp Chimes", "ARP", { O_SIN, O_TRI, 12, 60, 1, 4200, 0.25f, 35, 30, 0.002f, 0.06f, 0.50f, 0.03f, 0.002f, 0.04f, 0.10f, 0.03f, 6.0f, 0, 0.04f, 0, 3, 0.38f, 0.40f, 0.84f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 2, 2, 45 } }, // 90 Arp Midnight { "Arp Midnight", "ARP", { O_PUL, O_PUL, 6, 55, 1, 2600, 0.30f, 40, 40, 0.004f, 0.12f, 0.62f, 0.06f, 0.003f, 0.08f, 0.18f, 0.05f, 5.0f, 0, 0.08f, 0, 2, 0.35f, 0.48f, 0.85f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 1, 2, 55 } }, // 91 Arp Cascade { "Arp Cascade", "ARP", { O_SAW, O_TRI, 10, 52, 1, 3200, 0.15f, 35, 45, 0.003f, 0.10f, 0.65f, 0.06f, 0.003f, 0.06f, 0.20f, 0.05f, 7.0f, 0, 0.06f, 0, 1, 0.30f, 0.28f, 0.85f, 0.0f, 10, 0.0f, 0, 0, 1, 2, 0, 3, 65 } }, }; PresetBank::PresetBank() { patches.assign (defs, defs + juce::numElementsInArray (defs)); buildCategoryIndex(); } void PresetBank::buildCategoryIndex() { catIndex.names.clear(); catIndex.patchIndices.clear(); for (int i = 0; i < (int) patches.size(); ++i) { const juce::String cat (patches[i].category); int idx = catIndex.names.indexOf (cat); if (idx < 0) { idx = catIndex.names.size(); catIndex.names.add (cat); catIndex.patchIndices.push_back ({}); } catIndex.patchIndices[(size_t) idx].push_back (i); } } 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])); } }