diff --git a/freeverb/allpass.hpp b/freeverb/allpass.hpp index 9d1ba6e..86ea1c2 100644 --- a/freeverb/allpass.hpp +++ b/freeverb/allpass.hpp @@ -21,12 +21,12 @@ class allpass ~allpass() { - if (buffer) delete buffer; + if (buffer) delete[] buffer; }; void makebuffer(float *buf, int size) { - if (buffer) delete buffer; + if (buffer) delete[] buffer; buffer = new float[size]; bufsize = size; bufidx = 0; @@ -34,7 +34,7 @@ class allpass void deletebuffer() { - if(buffer) delete buffer; + if(buffer) delete[] buffer; bufsize = 0; }; diff --git a/freeverb/comb.hpp b/freeverb/comb.hpp index a0a8bbf..35ae6dc 100644 --- a/freeverb/comb.hpp +++ b/freeverb/comb.hpp @@ -23,12 +23,12 @@ class comb ~comb() { - if (buffer) delete buffer; + if (buffer) delete[] buffer; }; void makebuffer(float *buf, int size) { - if (buffer) {delete buffer;} + if (buffer) {delete[] buffer;} buffer = new float[size]; bufsize = size; bufidx = 0; @@ -36,7 +36,7 @@ class comb void deletebuffer() { - if(buffer) delete buffer; + if(buffer) delete[] buffer; bufsize = 0; }; diff --git a/freeverb/revmodel.cpp b/freeverb/revmodel.cpp index 3fa1390..dde19d8 100644 --- a/freeverb/revmodel.cpp +++ b/freeverb/revmodel.cpp @@ -73,13 +73,16 @@ void revmodel::init(const float sampleRate) feedback_allpass = 0.5; - setwet(initialwet); - setroomsize(initialroom); - setdry(initialdry); - setdamp(initialdamp); - setwidth(initialwidth); - setmode(initialmode); - + // safely initialize all values first + wet = initialwet * scalewet; + roomsize = (initialroom * scaleroom) + offsetroom; + dry = initialdry * scaledry; + damp = initialdamp * scaledamp * sqrt(conversion); + width = initialwidth; + mode = initialmode; + + // now we can call update after all values are initialized + update(); // Buffer will be full of rubbish - so we MUST mute them mute();