diff --git a/src/sfizz/effects/impl/ResonantArrayAVX.cpp b/src/sfizz/effects/impl/ResonantArrayAVX.cpp index 73cbe86c..b06c41f2 100644 --- a/src/sfizz/effects/impl/ResonantArrayAVX.cpp +++ b/src/sfizz/effects/impl/ResonantArrayAVX.cpp @@ -86,7 +86,8 @@ void ResonantArrayAVX::process(const float *inPtr, float *outPtr, unsigned numFr for (unsigned p = 0; p < numStringPacks; ++p) { ResonantStringAVX& rs = stringPacks[p]; for (unsigned i = 0; i < numFrames; ++i) - outputs8[i] += rs.process(_mm256_broadcast_ss(&inPtr[i])); + outputs8[i] = _mm256_add_ps( + outputs8[i], rs.process(_mm256_broadcast_ss(&inPtr[i]))); } // sum resonator outputs 8 to 1 diff --git a/src/sfizz/effects/impl/ResonantArraySSE.cpp b/src/sfizz/effects/impl/ResonantArraySSE.cpp index 75051664..7480a877 100644 --- a/src/sfizz/effects/impl/ResonantArraySSE.cpp +++ b/src/sfizz/effects/impl/ResonantArraySSE.cpp @@ -86,7 +86,8 @@ void ResonantArraySSE::process(const float *inPtr, float *outPtr, unsigned numFr for (unsigned p = 0; p < numStringPacks; ++p) { ResonantStringSSE& rs = stringPacks[p]; for (unsigned i = 0; i < numFrames; ++i) - outputs4[i] += rs.process(_mm_load1_ps(&inPtr[i])); + outputs4[i] = _mm_add_ps( + outputs4[i], rs.process(_mm_load1_ps(&inPtr[i]))); } // sum resonator outputs 4 to 1