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