Never phase reset on silence in side channel, now that such resets are carried across
This commit is contained in:
@@ -208,6 +208,7 @@ public:
|
||||
int unityCount,
|
||||
bool realtime,
|
||||
bool tighterChannelLock,
|
||||
bool resetOnSilence,
|
||||
Guidance &guidance) const {
|
||||
|
||||
Profiler profiler("Guide::updateGuidance");
|
||||
@@ -282,7 +283,7 @@ public:
|
||||
// the band ranges as well - in normal multi-window mode we
|
||||
// still have to do that, but we should do these first
|
||||
|
||||
if (meanMagnitude < 1.0e-6) {
|
||||
if (resetOnSilence && meanMagnitude < 1.0e-6) {
|
||||
updateForSilence(guidance);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1304,6 +1304,15 @@ R3Stretcher::analyseChannel(int c, int inhop, int prevInhop, int prevOuthop)
|
||||
|
||||
double magMean = v_mean(classifyScale->mag.data() + 1, classify/2);
|
||||
|
||||
bool resetOnSilence = true;
|
||||
if (useMidSide() && c == 1) {
|
||||
// Do not phase reset on silence in the side channel - the
|
||||
// reset is propagated across to the mid channel, giving
|
||||
// constant resets for e.g. mono material in a stereo
|
||||
// configuration
|
||||
resetOnSilence = false;
|
||||
}
|
||||
|
||||
if (m_useReadahead) {
|
||||
m_guide.updateGuidance(ratio,
|
||||
prevOuthop,
|
||||
@@ -1317,6 +1326,7 @@ R3Stretcher::analyseChannel(int c, int inhop, int prevInhop, int prevOuthop)
|
||||
m_unityCount,
|
||||
isRealTime(),
|
||||
tighterChannelLock,
|
||||
resetOnSilence,
|
||||
cd->guidance);
|
||||
} else {
|
||||
m_guide.updateGuidance(ratio,
|
||||
@@ -1331,6 +1341,7 @@ R3Stretcher::analyseChannel(int c, int inhop, int prevInhop, int prevOuthop)
|
||||
m_unityCount,
|
||||
isRealTime(),
|
||||
tighterChannelLock,
|
||||
resetOnSilence,
|
||||
cd->guidance);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user