diff --git a/ChannelStripAudioApp.hpp b/ChannelStripAudioApp.hpp index f521ff5..793896a 100644 --- a/ChannelStripAudioApp.hpp +++ b/ChannelStripAudioApp.hpp @@ -427,7 +427,7 @@ class ChannelStripAudioApp : public AudioAppBase { public: static constexpr size_t kN_Params = NPARAMS; - static constexpr size_t nVoiceSpaces=5; + static constexpr size_t nVoiceSpaces=6; enum class controlMessages { MSG_BYPASS_ALL=0, @@ -474,12 +474,15 @@ public: auto voiceSpaceSSL9K = [this](const std::array& params) { VOICE_SPACE_CHSTRIP_SSL9KINDA_BODY }; - + auto voiceSpaceNeve80 = [this](const std::array& params) { + VOICE_SPACE_CHSTRIP_NEVE_80 + }; voiceSpaces[0] = {"WannabeNeve66", voiceSpaceNeve66}; voiceSpaces[1] = {"SSL 4K G-ist", voiceSpaceSSL4K}; voiceSpaces[2] = {"SSL 9K-inda", voiceSpaceSSL9K}; voiceSpaces[3] = {"MaleVox", voiceSpaceMaleVox}; voiceSpaces[4] = {"FemaleVox", voiceSpaceFemaleVox}; + voiceSpaces[5] = {"Neve 80", voiceSpaceNeve80}; currentVoiceSpace = voiceSpaces[0].mappingFunction; diff --git a/modes/MEMLNautModeChannelStrip.hpp b/modes/MEMLNautModeChannelStrip.hpp index 2b1ddd2..da9caeb 100644 --- a/modes/MEMLNautModeChannelStrip.hpp +++ b/modes/MEMLNautModeChannelStrip.hpp @@ -50,6 +50,7 @@ public: std::vector{ "All", "EQ", "Comp", "PPG", "InFilt" }); bypassView->SetOnSelectCallback([this] (size_t id) { Serial.println("Bypass toggled: " + String(id)); + bypassView->toggleAlt(id-1); queue_t& audioAppQ = audioAppChannelStrip.controlMessageQueue; switch(id) { case 1: diff --git a/src/memllib b/src/memllib index e86e4a0..799130e 160000 --- a/src/memllib +++ b/src/memllib @@ -1 +1 @@ -Subproject commit e86e4a09c65da723be80dbc3d6a8c85c30307cf8 +Subproject commit 799130e740a392839587f24c3747b27e841957b1 diff --git a/voicespaces/ChannelStrip/basic.hpp b/voicespaces/ChannelStrip/basic.hpp index 27ce114..9a285ea 100644 --- a/voicespaces/ChannelStrip/basic.hpp +++ b/voicespaces/ChannelStrip/basic.hpp @@ -140,30 +140,40 @@ postGain=0.5f + (params[23] * params[23] * 4.f); \ -#define VOICE_SPACE_CHSTRIP_EMI \ +#define VOICE_SPACE_CHSTRIP_NEVE_80 \ preGain=0.5f + (params[0] * params[0] * 4.f); \ - inLowPassCutoff = 1000.f + (params[7] * params[7] * 19000.f); \ - inHighPassCutoff = 10.f + (params[8] * params[8] * 1990.f); \ - compThreshold = params[10] * -30.f; \ - compRatio = 2.0f + (params[11] * 6.f); \ - compAttack = 0.08f + (params[12] * 50.f); \ - compRelease = 50.0f + (params[13] * 500.f); \ + constexpr float loPassFrequencies[] = {190, 1200, 3900, 5600, 9200}; \ + inLowPassCutoff = loPassFrequencies[static_cast(params[7] * 3.999999)]; \ + constexpr float hiPassFrequencies[] = {27, 47, 92, 150, 270}; \ + inHighPassCutoff = hiPassFrequencies[static_cast(params[8] * 3.999999)]; \ \ - lowShelfFreq = 120.f + (params[14] * params[14] * 180.f); \ + compThreshold = params[10] * -30.f; \ + constexpr float compRatios[] = {1.5, 2, 3, 4, 6}; \ + compRatio = compRatios[static_cast(params[11] * 3.999999)]; \ + compAttack = params[12] > 0.5f ? 5.f : 1.f; \ + constexpr float compReleases[] = {400, 800, 1500}; \ + compRelease = compReleases[static_cast(params[13] * 1.999999)]; \ + \ + constexpr float lowShelfFrequencies[] = {33, 56, 100, 190, 330};\ + lowShelfFreq = lowShelfFrequencies[static_cast(params[14] * 3.999999)];\ lowShelfQ = 0.6f + (params[15]*4.4f); \ lowShelfGain = -18.f + (params[16]*36.f);\ \ - peak0Freq = 120.f + (params[1] * params[1] * 380.f); \ + constexpr float lowPeakFrequencies[] = {220, 270, 330, 390, 470, 560, 690, 820, 1000, 1200}; \ + peak0Freq = lowPeakFrequencies[static_cast(params[1] * 8.999999)]; \ peak0Q = 0.6f + (params[5]*4.4f); \ peak0Gain = -18.f + (params[6]*36.f);\ \ - peak1Freq = 300.f + (params[4] * params[4] * 9700.f); \ + constexpr float highPeakFrequencies[] = {1500, 1900, 2200, 2700, 3300, 3900, 4700, 5600, 6900, 8200}; \ + peak1Freq = highPeakFrequencies[static_cast(params[4] * 8.999999)]; \ peak1Q = 0.6f + (params[5]*4.4f); \ peak1Gain = -18.f + (params[6]*36.f);\ \ - highShelfFreq = 1000.f + (params[17] * params[17] * 9000.f); \ + constexpr float highShelfFrequencies[] = {3300, 4700, 6900, 10000, 15000}; \ + highShelfFreq = highShelfFrequencies[static_cast(params[17] * 3.999999)]; \ highShelfQ = 0.6f + (params[18]*4.4f); \ highShelfGain = -18.f + (params[19]*36.f);\ + \ postGain=0.5f + (params[23] * params[23] * 4.f); \ #endif