diff --git a/Makefile b/Makefile index 5ee49dc..5eb2b7a 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,4 @@ SOURCES += $(wildcard src/noise-plethora/*/*.cpp) DISTRIBUTABLES += $(wildcard LICENSE*) res -BINARIES += src/SpringReverbIR.pcm - include $(RACK_DIR)/plugin.mk diff --git a/src/SpringReverbIR.pcm b/res/SpringReverbIR.f32 similarity index 100% rename from src/SpringReverbIR.pcm rename to res/SpringReverbIR.f32 diff --git a/src/SpringReverb.cpp b/src/SpringReverb.cpp index 59dd5b8..812ee68 100644 --- a/src/SpringReverb.cpp +++ b/src/SpringReverb.cpp @@ -1,8 +1,19 @@ #include "plugin.hpp" #include -BINARY(src_SpringReverbIR_pcm); +static std::vector ir; +static void initIR() { + if (!ir.empty()) + return; + + try { + ir = system::readFile(asset::plugin(pluginInstance, "res/SpringReverbIR.f32")); + } + catch (std::exception& e) { + WARN("Cannot load IR: %s", e.what()); + } +} static const size_t BLOCK_SIZE = 1024; @@ -55,10 +66,12 @@ struct SpringReverb : Module { configParam(LEVEL2_PARAM, 0.0, 1.0, 0.0, "In 2 level", "%", 0, 100); configParam(HPF_PARAM, 0.0, 1.0, 0.5, "High pass filter cutoff"); + initIR(); + convolver = new dsp::RealTimeConvolver(BLOCK_SIZE); - const float* kernel = (const float*) BINARY_START(src_SpringReverbIR_pcm); - size_t kernelLen = BINARY_SIZE(src_SpringReverbIR_pcm) / sizeof(float); + const float* kernel = (const float*) ir.data(); + size_t kernelLen = ir.size() / sizeof(float); convolver->setKernel(kernel, kernelLen); vuFilter.mode = dsp::VuMeter2::PEAK;