Changed the width/position process again
This commit is contained in:
parent
754a7f8be7
commit
186c4f6b53
1 changed files with 3 additions and 32 deletions
|
|
@ -350,40 +350,11 @@ void sfz::Voice::processStereo(AudioSpan<float> buffer) noexcept
|
||||||
egEnvelope.getBlock(modulationSpan);
|
egEnvelope.getBlock(modulationSpan);
|
||||||
buffer.applyGain(modulationSpan);
|
buffer.applyGain(modulationSpan);
|
||||||
|
|
||||||
// Create mid/side from left/right in the output buffer
|
// Apply the width/position process
|
||||||
// Add const aliases to be slightly more readable
|
|
||||||
const auto leftBufferCopy = tempSpan2.first(numSamples);
|
|
||||||
copy<float>(leftBuffer, leftBufferCopy);
|
|
||||||
|
|
||||||
const auto midBuffer = leftBuffer;
|
|
||||||
add<float>(rightBuffer, midBuffer);
|
|
||||||
|
|
||||||
const auto sideBuffer = rightBuffer;
|
|
||||||
applyGain<float>(-1.0f, sideBuffer);
|
|
||||||
add<float>(leftBufferCopy, sideBuffer);
|
|
||||||
|
|
||||||
applyGain<float>(sqrtTwoInv<float>, midBuffer);
|
|
||||||
applyGain<float>(sqrtTwoInv<float>, sideBuffer);
|
|
||||||
|
|
||||||
// Apply the width process
|
|
||||||
widthEnvelope.getBlock(modulationSpan);
|
widthEnvelope.getBlock(modulationSpan);
|
||||||
width<float>(modulationSpan, midBuffer, sideBuffer);
|
width<float>(modulationSpan, leftBuffer, rightBuffer);
|
||||||
|
|
||||||
// Copy the mid channel into another span
|
|
||||||
const auto midBufferCopy = tempSpan3.first(numSamples);
|
|
||||||
copy<float>(midBuffer, midBufferCopy);
|
|
||||||
positionEnvelope.getBlock(modulationSpan);
|
positionEnvelope.getBlock(modulationSpan);
|
||||||
pan<float>(modulationSpan, midBuffer, midBufferCopy);
|
pan<float>(modulationSpan, leftBuffer, rightBuffer);
|
||||||
|
|
||||||
// Rebuild left/right
|
|
||||||
// Recall that midBuffer and leftBuffer point to the same buffer
|
|
||||||
add<float>(sideBuffer, leftBuffer);
|
|
||||||
applyGain(sqrtTwoInv<float>, leftBuffer);
|
|
||||||
|
|
||||||
// Recall that sideBuffer and rightBuffer point to the same buffer
|
|
||||||
applyGain<float>(-1.0f, sideBuffer);
|
|
||||||
add<float>(midBufferCopy, sideBuffer);
|
|
||||||
applyGain(sqrtTwoInv<float>, rightBuffer);
|
|
||||||
|
|
||||||
// Filtering and EQ
|
// Filtering and EQ
|
||||||
const float* inputChannels[2] { leftBuffer.data(), rightBuffer.data() };
|
const float* inputChannels[2] { leftBuffer.data(), rightBuffer.data() };
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue