1
0

Spread feedback delays out better

This commit is contained in:
Geraint 2022-12-06 19:59:04 +00:00
parent 9df6e69313
commit 3771df3f1f

View File

@ -128,7 +128,7 @@ namespace signalsmith { namespace basics {
delay2.configure(maxRoomSamples, 1); delay2.configure(maxRoomSamples, 1);
delay3.configure(maxRoomSamples, 0.5); delay3.configure(maxRoomSamples, 0.5);
delay4.configure(maxRoomSamples, 0.25); delay4.configure(maxRoomSamples, 0.25);
delayFeedback.configure(maxRoomSamples*1.5 + detuneDepthSamples, 1); delayFeedback.configure(maxRoomSamples*1.6 + detuneDepthSamples, 1);
delayEarly.configure(maxRoomSamples, 0.25); delayEarly.configure(maxRoomSamples, 0.25);
} }
@ -344,16 +344,12 @@ namespace signalsmith { namespace basics {
} }
} }
void updateLengthsExponential(int seed, double rangeSamples) { void updateLengthsExponential(double rangeSamples) {
rangeSamples *= delayScale; rangeSamples *= delayScale;
delayOffsetsPrev = delayOffsets; delayOffsetsPrev = delayOffsets;
std::mt19937 engine(seed);
constexpr double ratios[8] = {0.0625, -0.0625, 0.1875, -0.1875, 0.3125, -0.3125, 0.4375, -0.4375}; constexpr double ratios[8] = {0.0625, -0.0625, 0.1875, -0.1875, 0.3125, -0.3125, 0.4375, -0.4375};
for (int i = 0; i < 8; ++i) { for (int i = 0; i < 8; ++i) {
delayOffsets[i] = int(-std::floor(rangeSamples*std::pow(2, ratios[i]/2))); delayOffsets[i] = int(-std::floor(rangeSamples*std::pow(2, ratios[i])));
std::uniform_int_distribution<int> indexDist(0, i);
int swapIndex = indexDist(engine);
std::swap(delayOffsets[i], delayOffsets[swapIndex]);
} }
} }
@ -411,11 +407,11 @@ namespace signalsmith { namespace basics {
MultiDelay delay1, delay2, delay3, delay4, delayFeedback, delayEarly; MultiDelay delay1, delay2, delay3, delay4, delayFeedback, delayEarly;
void updateDelays(double roomSamples) { void updateDelays(double roomSamples) {
delay1.updateLengths(0x876753A5, roomSamples, false); delay1.updateLengths(0x6DD09EE5, roomSamples, false);
delay2.updateLengths(0x876753A5, roomSamples); delay2.updateLengths(0x876753A5, roomSamples);
delay3.updateLengths(0x5974DF44, roomSamples); delay3.updateLengths(0x5974DF44, roomSamples);
delay4.updateLengths(0x8CDBF7E6, roomSamples); delay4.updateLengths(0x8CDBF7E6, roomSamples);
delayFeedback.updateLengthsExponential(0xC6BF7158, roomSamples); delayFeedback.updateLengthsExponential(roomSamples);
delayEarly.updateLengths(0x0BDDE171, roomSamples); delayEarly.updateLengths(0x0BDDE171, roomSamples);
} }
}; };