Try a peak p-factor of 1 for the previous peaks
This commit is contained in:
@@ -86,6 +86,7 @@ public:
|
|||||||
void advance(double *const *outPhase,
|
void advance(double *const *outPhase,
|
||||||
const double *const *mag,
|
const double *const *mag,
|
||||||
const double *const *phase,
|
const double *const *phase,
|
||||||
|
const double *const *prevMag,
|
||||||
const Guide::Configuration &configuration,
|
const Guide::Configuration &configuration,
|
||||||
const Guide::Guidance *const *guidance,
|
const Guide::Guidance *const *guidance,
|
||||||
int inhop,
|
int inhop,
|
||||||
@@ -132,10 +133,15 @@ public:
|
|||||||
int endBin = binForFrequency(band.f1);
|
int endBin = binForFrequency(band.f1);
|
||||||
if (startBin > highest || endBin < lowest) continue;
|
if (startBin > highest || endBin < lowest) continue;
|
||||||
int count = endBin - startBin + 1;
|
int count = endBin - startBin + 1;
|
||||||
m_peakPicker.findNearestAndNextPeaks(mag[c], startBin, count,
|
m_peakPicker.findNearestAndNextPeaks(mag[c],
|
||||||
|
startBin, count,
|
||||||
band.p, m_currentPeaks[c],
|
band.p, m_currentPeaks[c],
|
||||||
nullptr);
|
nullptr);
|
||||||
}
|
}
|
||||||
|
m_peakPicker.findNearestAndNextPeaks(prevMag[c],
|
||||||
|
lowest, highest - lowest + 1,
|
||||||
|
1, m_prevPeaks[c],
|
||||||
|
nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channels > 1) {
|
if (channels > 1) {
|
||||||
@@ -218,9 +224,9 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int **tmp = m_prevPeaks;
|
// int **tmp = m_prevPeaks;
|
||||||
m_prevPeaks = m_currentPeaks;
|
// m_prevPeaks = m_currentPeaks;
|
||||||
m_currentPeaks = tmp;
|
// m_currentPeaks = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ R3StretcherImpl::R3StretcherImpl(Parameters parameters,
|
|||||||
WindowType
|
WindowType
|
||||||
R3StretcherImpl::ScaleData::analysisWindowShape(int fftSize)
|
R3StretcherImpl::ScaleData::analysisWindowShape(int fftSize)
|
||||||
{
|
{
|
||||||
//!!! return HannWindow;
|
|
||||||
if (fftSize == 4096) return HannWindow;
|
if (fftSize == 4096) return HannWindow;
|
||||||
else return NiemitaloForwardWindow;
|
else return NiemitaloForwardWindow;
|
||||||
}
|
}
|
||||||
@@ -135,7 +134,6 @@ R3StretcherImpl::ScaleData::analysisWindowLength(int fftSize)
|
|||||||
WindowType
|
WindowType
|
||||||
R3StretcherImpl::ScaleData::synthesisWindowShape(int fftSize)
|
R3StretcherImpl::ScaleData::synthesisWindowShape(int fftSize)
|
||||||
{
|
{
|
||||||
//!!! return HannWindow;
|
|
||||||
if (fftSize == 4096) return HannWindow;
|
if (fftSize == 4096) return HannWindow;
|
||||||
else return NiemitaloReverseWindow;
|
else return NiemitaloReverseWindow;
|
||||||
}
|
}
|
||||||
@@ -143,7 +141,6 @@ R3StretcherImpl::ScaleData::synthesisWindowShape(int fftSize)
|
|||||||
int
|
int
|
||||||
R3StretcherImpl::ScaleData::synthesisWindowLength(int fftSize)
|
R3StretcherImpl::ScaleData::synthesisWindowLength(int fftSize)
|
||||||
{
|
{
|
||||||
//!!! return fftSize/2;
|
|
||||||
if (fftSize == 4096) return fftSize/2;
|
if (fftSize == 4096) return fftSize/2;
|
||||||
else return fftSize;
|
else return fftSize;
|
||||||
}
|
}
|
||||||
@@ -405,6 +402,7 @@ R3StretcherImpl::consume()
|
|||||||
auto &scale = cd->scales.at(fftSize);
|
auto &scale = cd->scales.at(fftSize);
|
||||||
m_channelAssembly.mag[c] = scale->mag.data();
|
m_channelAssembly.mag[c] = scale->mag.data();
|
||||||
m_channelAssembly.phase[c] = scale->phase.data();
|
m_channelAssembly.phase[c] = scale->phase.data();
|
||||||
|
m_channelAssembly.prevMag[c] = scale->prevMag.data();
|
||||||
m_channelAssembly.guidance[c] = &cd->guidance;
|
m_channelAssembly.guidance[c] = &cd->guidance;
|
||||||
m_channelAssembly.outPhase[c] = scale->advancedPhase.data();
|
m_channelAssembly.outPhase[c] = scale->advancedPhase.data();
|
||||||
}
|
}
|
||||||
@@ -412,6 +410,7 @@ R3StretcherImpl::consume()
|
|||||||
(m_channelAssembly.outPhase.data(),
|
(m_channelAssembly.outPhase.data(),
|
||||||
m_channelAssembly.mag.data(),
|
m_channelAssembly.mag.data(),
|
||||||
m_channelAssembly.phase.data(),
|
m_channelAssembly.phase.data(),
|
||||||
|
m_channelAssembly.prevMag.data(),
|
||||||
m_guideConfiguration,
|
m_guideConfiguration,
|
||||||
m_channelAssembly.guidance.data(),
|
m_channelAssembly.guidance.data(),
|
||||||
m_prevInhop,
|
m_prevInhop,
|
||||||
|
|||||||
@@ -218,14 +218,16 @@ protected:
|
|||||||
// from different channels into arguments for PhaseAdvance
|
// from different channels into arguments for PhaseAdvance
|
||||||
FixedVector<double *> mag;
|
FixedVector<double *> mag;
|
||||||
FixedVector<double *> phase;
|
FixedVector<double *> phase;
|
||||||
|
FixedVector<double *> prevMag;
|
||||||
FixedVector<Guide::Guidance *> guidance;
|
FixedVector<Guide::Guidance *> guidance;
|
||||||
FixedVector<double *> outPhase;
|
FixedVector<double *> outPhase;
|
||||||
FixedVector<float *> mixdown;
|
FixedVector<float *> mixdown;
|
||||||
FixedVector<float *> resampled;
|
FixedVector<float *> resampled;
|
||||||
ChannelAssembly(int channels) :
|
ChannelAssembly(int channels) :
|
||||||
mag(channels, nullptr), phase(channels, nullptr),
|
mag(channels, nullptr), phase(channels, nullptr),
|
||||||
guidance(channels, nullptr), outPhase(channels, nullptr),
|
prevMag(channels, nullptr), guidance(channels, nullptr),
|
||||||
mixdown(channels, nullptr), resampled(channels, nullptr) { }
|
outPhase(channels, nullptr), mixdown(channels, nullptr),
|
||||||
|
resampled(channels, nullptr) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ScaleData {
|
struct ScaleData {
|
||||||
|
|||||||
Reference in New Issue
Block a user