From 07b339df1315d638beae4786774e52c17145c619 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 7 Jun 2022 12:12:06 +0100 Subject: [PATCH] Try a peak p-factor of 1 for the previous peaks --- src/finer/PhaseAdvance.h | 14 ++++++++++---- src/finer/R3StretcherImpl.cpp | 5 ++--- src/finer/R3StretcherImpl.h | 6 ++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/finer/PhaseAdvance.h b/src/finer/PhaseAdvance.h index 92e75ec..3789b79 100644 --- a/src/finer/PhaseAdvance.h +++ b/src/finer/PhaseAdvance.h @@ -86,6 +86,7 @@ public: void advance(double *const *outPhase, const double *const *mag, const double *const *phase, + const double *const *prevMag, const Guide::Configuration &configuration, const Guide::Guidance *const *guidance, int inhop, @@ -132,10 +133,15 @@ public: int endBin = binForFrequency(band.f1); if (startBin > highest || endBin < lowest) continue; int count = endBin - startBin + 1; - m_peakPicker.findNearestAndNextPeaks(mag[c], startBin, count, + m_peakPicker.findNearestAndNextPeaks(mag[c], + startBin, count, band.p, m_currentPeaks[c], nullptr); } + m_peakPicker.findNearestAndNextPeaks(prevMag[c], + lowest, highest - lowest + 1, + 1, m_prevPeaks[c], + nullptr); } if (channels > 1) { @@ -218,9 +224,9 @@ public: } } - int **tmp = m_prevPeaks; - m_prevPeaks = m_currentPeaks; - m_currentPeaks = tmp; +// int **tmp = m_prevPeaks; +// m_prevPeaks = m_currentPeaks; +// m_currentPeaks = tmp; } protected: diff --git a/src/finer/R3StretcherImpl.cpp b/src/finer/R3StretcherImpl.cpp index 4849dbc..d2b078b 100644 --- a/src/finer/R3StretcherImpl.cpp +++ b/src/finer/R3StretcherImpl.cpp @@ -121,7 +121,6 @@ R3StretcherImpl::R3StretcherImpl(Parameters parameters, WindowType R3StretcherImpl::ScaleData::analysisWindowShape(int fftSize) { -//!!! return HannWindow; if (fftSize == 4096) return HannWindow; else return NiemitaloForwardWindow; } @@ -135,7 +134,6 @@ R3StretcherImpl::ScaleData::analysisWindowLength(int fftSize) WindowType R3StretcherImpl::ScaleData::synthesisWindowShape(int fftSize) { -//!!! return HannWindow; if (fftSize == 4096) return HannWindow; else return NiemitaloReverseWindow; } @@ -143,7 +141,6 @@ R3StretcherImpl::ScaleData::synthesisWindowShape(int fftSize) int R3StretcherImpl::ScaleData::synthesisWindowLength(int fftSize) { -//!!! return fftSize/2; if (fftSize == 4096) return fftSize/2; else return fftSize; } @@ -405,6 +402,7 @@ R3StretcherImpl::consume() auto &scale = cd->scales.at(fftSize); m_channelAssembly.mag[c] = scale->mag.data(); m_channelAssembly.phase[c] = scale->phase.data(); + m_channelAssembly.prevMag[c] = scale->prevMag.data(); m_channelAssembly.guidance[c] = &cd->guidance; m_channelAssembly.outPhase[c] = scale->advancedPhase.data(); } @@ -412,6 +410,7 @@ R3StretcherImpl::consume() (m_channelAssembly.outPhase.data(), m_channelAssembly.mag.data(), m_channelAssembly.phase.data(), + m_channelAssembly.prevMag.data(), m_guideConfiguration, m_channelAssembly.guidance.data(), m_prevInhop, diff --git a/src/finer/R3StretcherImpl.h b/src/finer/R3StretcherImpl.h index 80e9bc9..3213d7e 100644 --- a/src/finer/R3StretcherImpl.h +++ b/src/finer/R3StretcherImpl.h @@ -218,14 +218,16 @@ protected: // from different channels into arguments for PhaseAdvance FixedVector mag; FixedVector phase; + FixedVector prevMag; FixedVector guidance; FixedVector outPhase; FixedVector mixdown; FixedVector resampled; ChannelAssembly(int channels) : mag(channels, nullptr), phase(channels, nullptr), - guidance(channels, nullptr), outPhase(channels, nullptr), - mixdown(channels, nullptr), resampled(channels, nullptr) { } + prevMag(channels, nullptr), guidance(channels, nullptr), + outPhase(channels, nullptr), mixdown(channels, nullptr), + resampled(channels, nullptr) { } }; struct ScaleData {