1 /* 2 * Dragonfly Reverb, copyright (c) 2019 Michael Willis, Rob van den Berg 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation; either version 3 of 7 * the License, or any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * For a full copy of the GNU General Public License see the LICENSE file. 15 */ 16 17 #include <cstdint> 18 #include <Param.hpp> 19 20 #ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED 21 #define DISTRHO_PLUGIN_INFO_H_INCLUDED 22 23 #define DISTRHO_PLUGIN_BRAND "Dragonfly" 24 #define DISTRHO_PLUGIN_NAME "Dragonfly Room Reverb" 25 #define DISTRHO_PLUGIN_URI "urn:dragonfly:room" 26 27 #define DISTRHO_PLUGIN_HAS_UI 1 28 #define DISTRHO_PLUGIN_IS_RT_SAFE 1 29 #define DISTRHO_PLUGIN_NUM_INPUTS 2 30 #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 31 #define DISTRHO_PLUGIN_WANT_STATE 1 32 33 #define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:ReverbPlugin" 34 35 enum Parameters 36 { 37 paramDry = 0, 38 paramEarly, 39 paramEarlySend, 40 paramLate, 41 paramSize, 42 paramWidth, 43 paramPredelay, 44 paramDecay, 45 paramDiffuse, 46 paramSpin, 47 paramWander, 48 paramInHighCut, 49 paramEarlyDamp, 50 paramLateDamp, 51 paramBoost, 52 paramBoostLPF, 53 paramInLowCut, 54 paramCount 55 }; 56 57 static Param PARAMS[paramCount] = { 58 {paramDry, "Dry Level", "dry_level", 0.0f, 100.0f, "%"}, 59 {paramEarly, "Early Level", "early_level", 0.0f, 100.0f, "%"}, 60 {paramEarlySend, "Early Send", "early_send", 0.0f, 100.0f, "%"}, 61 {paramLate, "Late Level", "late_level", 0.0f, 100.0f, "%"}, 62 {paramSize, "Size", "size", 8.0f, 32.0f, "m"}, 63 {paramWidth, "Width", "width", 50.0f, 150.0f, "%"}, 64 {paramPredelay, "Predelay", "predelay", 0.0f, 100.0f, "ms"}, 65 {paramDecay, "Decay", "decay", 0.1f, 10.0f, "s"}, 66 {paramDiffuse, "Diffuse", "diffuse", 0.0f, 100.0f, "%"}, 67 {paramSpin, "Spin", "spin", 0.0f, 5.0f, "Hz"}, 68 {paramWander, "Wander", "wander", 0.0f, 100.0f, "%"}, 69 {paramInHighCut, "High Cut", "in_high_cut", 1000.0f, 16000.0f, "Hz"}, 70 {paramEarlyDamp, "Early Damp", "early_damp", 1000.0f, 16000.0f, "Hz"}, 71 {paramLateDamp, "Late Damp", "late_damp", 1000.0f, 16000.0f, "Hz"}, 72 {paramBoost, "Low Boost", "low_boost", 0.0f, 100.0f, "%"}, 73 {paramBoostLPF, "Boost Freq", "boost_freq", 50.0f, 1050.0f, "Hz"}, 74 {paramInLowCut, "Low Cut", "in_low_cut", 0.0f, 200.0f, "Hz"} 75 }; 76 77 const int NUM_BANKS = 5; 78 const int PRESETS_PER_BANK = 5; 79 80 typedef struct { 81 const char *name; 82 const float params[paramCount]; 83 } Preset; 84 85 typedef struct { 86 const char *name; 87 const Preset presets[PRESETS_PER_BANK]; 88 } Bank; 89 90 static Bank banks[NUM_BANKS] = { 91 { 92 "Small", { // dry, early, e. send, late, size, width, delay, decay, diffuse, spin, wander, high cut, early damp, late damp, bass boost, boost lpf, low cut 93 {"Small Bright Room", { 80.0, 10.0, 20.0, 20.0, 8.0, 90.0, 4.0, 0.2, 60.0, 0.4, 40.0, 16000, 16000, 16000, 20.0, 600, 4.0}}, 94 {"Small Clear Room", { 80.0, 10.0, 20.0, 20.0, 8.0, 90.0, 4.0, 0.2, 60.0, 0.8, 40.0, 16000, 11200, 10000, 40.0, 600, 4.0}}, 95 {"Small Dark Room", { 80.0, 10.0, 20.0, 20.0, 8.0, 90.0, 4.0, 0.3, 70.0, 1.6, 20.0, 16000, 6400, 5500, 60.0, 1000, 4.0}}, 96 {"Small Drum Room", { 80.0, 10.0, 20.0, 20.0, 9.0, 90.0, 8.0, 0.2, 24.0, 2.1, 10.0, 16000, 8200, 7000, 40.0, 400, 4.0}}, 97 {"Small Vocal Room", { 80.0, 10.0, 20.0, 20.0, 8.0, 90.0, 0.0, 0.3, 86.0, 2.4, 12.0, 16000, 7600, 6400, 20.0, 400, 4.0}} 98 } 99 }, 100 { 101 "Medium", { // dry, early, e. send, late, size, width, delay, decay, diffuse, spin, wander, high cut, early damp, late damp, bass boost, boost lpf, low cut 102 {"Medium Bright Room", { 80.0, 10.0, 20.0, 20.0, 12.0, 100.0, 8.0, 0.4, 60.0, 0.4, 40.0, 16000, 16000, 14000, 25.0, 600, 4.0}}, 103 {"Medium Clear Room", { 80.0, 10.0, 20.0, 20.0, 12.0, 100.0, 8.0, 0.4, 70.0, 0.8, 40.0, 16000, 10000, 9400, 50.0, 600, 4.0}}, 104 {"Medium Dark Room", { 80.0, 10.0, 20.0, 20.0, 12.0, 100.0, 8.0, 0.5, 70.0, 1.6, 20.0, 16000, 5800, 4600, 70.0, 1000, 4.0}}, 105 {"Medium Drum Room", { 80.0, 10.0, 20.0, 20.0, 12.0, 100.0, 12.0, 0.4, 32.0, 2.4, 10.0, 16000, 8000, 6000, 50.0, 300, 4.0}}, 106 {"Medium Vocal Room", { 80.0, 10.0, 20.0, 20.0, 12.0, 100.0, 2.0, 0.6, 92.0, 2.7, 12.0, 16000, 8000, 6000, 25.0, 400, 4.0}} 107 } 108 }, 109 { 110 "Large", { // dry, early, e. send, late, size, width, delay, decay, diffuse, spin, wander, high cut, early damp, late damp, bass boost, boost lpf, low cut 111 {"Large Bright Room", { 80.0, 10.0, 20.0, 20.0, 15.0, 100.0, 12.0, 0.7, 70.0, 0.4, 40.0, 16000, 16000, 14000, 30.0, 600, 4.0}}, 112 {"Large Clear Room", { 80.0, 10.0, 20.0, 20.0, 15.0, 100.0, 12.0, 0.7, 80.0, 0.4, 40.0, 16000, 9400, 8500, 60.0, 600, 4.0}}, 113 {"Large Dark Room", { 80.0, 10.0, 20.0, 20.0, 15.0, 100.0, 12.0, 0.8, 80.0, 1.6, 20.0, 16000, 5200, 4000, 80.0, 1000, 4.0}}, 114 {"Large Drum Room", { 80.0, 10.0, 20.0, 20.0, 14.0, 100.0, 16.0, 0.7, 40.0, 2.7, 10.0, 16000, 8000, 5000, 60.0, 300, 4.0}}, 115 {"Large Vocal Room", { 80.0, 10.0, 20.0, 20.0, 15.0, 100.0, 4.0, 1.0, 98.0, 3.1, 12.0, 16000, 7000, 5000, 30.0, 400, 4.0}} 116 } 117 }, 118 { 119 "Halls", { // dry, early, e. send, late, size, width, delay, decay, diffuse, spin, wander, high cut, early damp, late damp, bass boost, boost lpf, low cut 120 {"Bright Hall", { 80.0, 10.0, 20.0, 20.0, 24.0, 100.0, 12.0, 1.6, 78.0, 0.4, 40.0, 16000, 16000, 14000, 30.0, 600, 4.0}}, 121 {"Clear Hall", { 80.0, 10.0, 20.0, 20.0, 24.0, 100.0, 12.0, 1.6, 84.0, 0.4, 40.0, 16000, 14000, 12000, 60.0, 600, 4.0}}, 122 {"Dark Hall", { 80.0, 10.0, 20.0, 20.0, 24.0, 100.0, 12.0, 1.9, 80.0, 1.6, 20.0, 16000, 8000, 6000, 80.0, 1000, 4.0}}, 123 {"Percussion Hall", { 80.0, 10.0, 20.0, 20.0, 20.0, 100.0, 16.0, 1.5, 40.0, 2.7, 10.0, 16000, 7000, 5000, 60.0, 300, 4.0}}, 124 {"Vocal Hall", { 80.0, 10.0, 20.0, 20.0, 25.0, 100.0, 4.0, 2.0, 98.0, 3.1, 12.0, 16000, 6000, 5000, 30.0, 400, 4.0}} 125 } 126 }, 127 { 128 "Effects", { // dry, early, e. send, late, size, width, delay, decay, diffuse, spin, wander, high cut, early damp, late damp, bass boost, boost lpf, low cut 129 {"Bright Plate", { 80.0, 10.0, 20.0, 20.0, 10.0, 100.0, 0.0, 1.8, 78.0, 1.6, 40.0, 16000, 16000, 15000, 10.0, 1000, 4.0}}, 130 {"Dark Plate", { 80.0, 10.0, 20.0, 20.0, 10.0, 100.0, 0.0, 2.0, 78.0, 0.4, 20.0, 16000, 5200, 4000, 40.0, 500, 4.0}}, 131 {"Brick Wall", { 80.0, 10.0, 20.0, 20.0, 20.0, 80.0, 80.0, 0.4, 12.0, 0.2, 5.0, 16000, 16000, 15000, 10.0, 200, 4.0}}, 132 {"Echo Chamber", { 80.0, 10.0, 20.0, 20.0, 12.0, 120.0, 10.0, 4.0, 24.0, 2.3, 80.0, 16000, 12000, 9000, 20.0, 500, 4.0}}, 133 {"Long Tunnel", { 80.0, 10.0, 20.0, 20.0, 25.0, 50.0, 0.0, 8.0, 90.0, 0.4, 10.0, 16000, 8000, 6000, 50.0, 500, 4.0}}, 134 } 135 } 136 }; 137 138 const int DEFAULT_BANK = 1; // Medium Rooms 139 const int DEFAULT_PRESET = 1; // Second preset in each bank 140 141 142 #endif // DISTRHO_PLUGIN_INFO_H_INCLUDED 143