Mercurial > hg > qm-vamp-plugins
diff plugins/BeatTrack.cpp @ 30:ff5a09e45209
* add support for adaptive whitening
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Thu, 09 Aug 2007 16:35:37 +0000 |
parents | 56fe3bd9de6e |
children | 5cd7e3069553 |
line wrap: on
line diff
--- a/plugins/BeatTrack.cpp Fri Jun 01 15:07:55 2007 +0000 +++ b/plugins/BeatTrack.cpp Thu Aug 09 16:35:37 2007 +0000 @@ -44,7 +44,8 @@ BeatTracker::BeatTracker(float inputSampleRate) : Vamp::Plugin(inputSampleRate), m_d(0), - m_dfType(DF_COMPLEXSD) + m_dfType(DF_COMPLEXSD), + m_whiten(false) { } @@ -110,6 +111,18 @@ desc.valueNames.push_back("Broadband Energy Rise"); list.push_back(desc); + desc.identifier = "whiten"; + desc.name = "Adaptive Whitening"; + desc.description = "Normalize frequency bin magnitudes relative to recent peak levels"; + desc.minValue = 0; + desc.maxValue = 1; + desc.defaultValue = 0; + desc.isQuantized = true; + desc.quantizeStep = 1; + desc.unit = ""; + desc.valueNames.clear(); + list.push_back(desc); + return list; } @@ -123,7 +136,10 @@ case DF_PHASEDEV: return 2; default: case DF_COMPLEXSD: return 3; case DF_BROADBAND: return 4; + case DF_POWER: return 5; } + } else if (name == "whiten") { + return m_whiten ? 1.0 : 0.0; } return 0.0; } @@ -138,7 +154,10 @@ case 2: m_dfType = DF_PHASEDEV; break; default: case 3: m_dfType = DF_COMPLEXSD; break; case 4: m_dfType = DF_BROADBAND; break; + case 5: m_dfType = DF_POWER; break; } + } else if (name == "whiten") { + m_whiten = (value > 0.5); } } @@ -175,6 +194,9 @@ dfConfig.stepSize = stepSize; dfConfig.frameLength = blockSize; dfConfig.dbRise = 3; + dfConfig.adaptiveWhitening = m_whiten; + dfConfig.whiteningRelaxCoeff = -1; + dfConfig.whiteningFloor = -1; m_d = new BeatTrackerData(dfConfig); return true;