Mercurial > hg > vamp-test-plugin
changeset 4:6ece30ceb931
Output something on all outputs defined so far
author | Chris Cannam |
---|---|
date | Mon, 25 Mar 2013 22:46:17 +0000 |
parents | 72c80798371e |
children | d83566810b96 |
files | VampTestPlugin.cpp |
diffstat | 1 files changed, 59 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/VampTestPlugin.cpp Mon Mar 25 22:07:30 2013 +0000 +++ b/VampTestPlugin.cpp Mon Mar 25 22:46:17 2013 +0000 @@ -192,10 +192,10 @@ d.description = "A fixed-height grid of values with one column per process block"; d.unit = ""; d.hasFixedBinCount = true; - d.binCount = 1; + d.binCount = 10; d.hasKnownExtents = false; d.isQuantized = false; - d.sampleType = OutputDescriptor::VariableSampleRate; + d.sampleType = OutputDescriptor::OneSamplePerStep; d.sampleRate = 0; d.hasDuration = false; list.push_back(d); @@ -206,11 +206,11 @@ d.description = "A fixed-height grid of values with equally-spaced columns (independent of process step size)"; d.unit = ""; d.hasFixedBinCount = true; - d.binCount = 1; + d.binCount = 10; d.hasKnownExtents = false; d.isQuantized = false; - d.sampleType = OutputDescriptor::VariableSampleRate; - d.sampleRate = 0; + d.sampleType = OutputDescriptor::FixedSampleRate; + d.sampleRate = 2; d.hasDuration = false; list.push_back(d); @@ -263,6 +263,37 @@ return f; } +static Vamp::Plugin::Feature +timedCurveValue(RealTime r, int i, int n) +{ + std::stringstream s; + Vamp::Plugin::Feature f; + f.hasTimestamp = true; + f.timestamp = r; + f.hasDuration = false; + float v = float(i) / float(n); + f.values.push_back(v); + s << i+1 << " of " << n << ": " << v << " at " << r.toText(); + f.label = s.str(); + return f; +} + +static Vamp::Plugin::Feature +gridColumn(RealTime r, int i, int n) +{ + std::stringstream s; + Vamp::Plugin::Feature f; + f.hasTimestamp = false; + f.hasDuration = false; + for (int j = 0; j < 10; ++j) { + float v = float(j + i + 2) / float(n + 10); + f.values.push_back(v); + } + s << i+1 << " of " << n << " at " << r.toText(); + f.label = s.str(); + return f; +} + VampTestPlugin::FeatureSet VampTestPlugin::process(const float *const *inputBuffers, RealTime timestamp) { @@ -276,6 +307,12 @@ // instants output fs[0].push_back(instant(m_instants[i], i, m_instants.size())); } + + RealTime variCurveTime = m_instants[i] / 2; + if (variCurveTime >= timestamp && variCurveTime < endTime) { + // curve-vsr output + fs[3].push_back(timedCurveValue(variCurveTime, i, m_instants.size())); + } } if (m_n < 20) { @@ -288,6 +325,11 @@ fs[2].push_back(untimedCurveValue(RealTime::fromSeconds(m_n / 2.0), m_n, 10)); } + if (m_n < 20) { + // grid-oss output + fs[4].push_back(gridColumn(timestamp, m_n, 20)); + } + m_lastTime = endTime; m_n = m_n + 1; return fs; @@ -300,8 +342,15 @@ for (int i = 0; i < (int)m_instants.size(); ++i) { if (m_instants[i] >= m_lastTime) { + // instants output fs[0].push_back(instant(m_instants[i], i, m_instants.size())); } + + RealTime variCurveTime = m_instants[i] / 2; + if (variCurveTime >= m_lastTime) { + // curve-vsr output + fs[3].push_back(timedCurveValue(m_instants[i], i, m_instants.size())); + } } for (int i = (m_n > 5 ? 5 : m_n); i < 10; ++i) { @@ -309,6 +358,11 @@ fs[2].push_back(untimedCurveValue(RealTime::fromSeconds(i / 2.0), i, 10)); } + for (int i = (m_n > 5 ? 5 : m_n); i < 10; ++i) { + // grid-fsr output + fs[5].push_back(gridColumn(RealTime::fromSeconds(i / 2.0), i, 10)); + } + return fs; }