# HG changeset patch # User Chris Cannam # Date 1390934051 0 # Node ID cc9aa8f4fceb4f99d8c1642869692f38565a105c # Parent afaa4af03b22d65bdf8ca8e34eef495d3fde36b4 Some CQ spectrogram parameters; add experimental candidate plugin process diff -r afaa4af03b22 -r cc9aa8f4fceb .hgsubstate --- a/.hgsubstate Tue Jan 28 16:01:06 2014 +0000 +++ b/.hgsubstate Tue Jan 28 18:34:11 2014 +0000 @@ -2,4 +2,4 @@ 27d4e7152c954bf3c4387319db088fb3cd02436b sv-dependency-builds d2c13ec0f1482e003d86c0ba3f7c5e5fbae6de08 svapp 4dce43294740dc971bf16d2b98164097749bf814 svcore -137d3ff48f73b9a6bac722491e8628f1721b8f3d svgui +5f9c0147d1d6302edac372e4d5747ae615d57638 svgui diff -r afaa4af03b22 -r cc9aa8f4fceb src/Analyser.cpp --- a/src/Analyser.cpp Tue Jan 28 16:01:06 2014 +0000 +++ b/src/Analyser.cpp Tue Jan 28 18:34:11 2014 +0000 @@ -86,6 +86,9 @@ error = addAnalyses(); if (error != "") return error; + error = addTestCandidates(); + if (error != "") return error; + loadState(Audio); loadState(PitchTrack); loadState(Notes); @@ -115,6 +118,7 @@ Transform transform = tf->getDefaultTransformFor (base + out, m_fileModel->getSampleRate()); + transform.setParameter("bpo", 36); Colour3DPlotLayer *spectrogram = qobject_cast (m_document->createDerivedLayer(transform, m_fileModel)); @@ -126,6 +130,9 @@ (m_document->createMainModelLayer(LayerFactory::MelodicRangeSpectrogram)); */ spectrogram->setColourMap((int)ColourMapper::BlackOnWhite); + spectrogram->setNormalizeHybrid(true); + spectrogram->setSmooth(true); + spectrogram->setGain(0.5); //!!! arbitrary at this point m_document->addLayerToView(m_pane, spectrogram); spectrogram->setLayerDormant(m_pane, true); @@ -202,38 +209,74 @@ std::vector layers = m_document->createDerivedLayers(transforms, m_fileModel); - if (!layers.empty()) { + for (int i = 0; i < (int)layers.size(); ++i) { - for (int i = 0; i < (int)layers.size(); ++i) { - - FlexiNoteLayer *f = qobject_cast(layers[i]); - TimeValueLayer *t = qobject_cast(layers[i]); - - if (f) m_layers[Notes] = f; - if (t) m_layers[PitchTrack] = t; - - m_document->addLayerToView(m_pane, layers[i]); - } - - ColourDatabase *cdb = ColourDatabase::getInstance(); - - TimeValueLayer *pitchLayer = - qobject_cast(m_layers[PitchTrack]); - if (pitchLayer) { - pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black"))); - PlayParameters *params = pitchLayer->getPlayParameters(); - if (params) params->setPlayPan(1); - } - - FlexiNoteLayer *flexiNoteLayer = - qobject_cast(m_layers[Notes]); - if (flexiNoteLayer) { - flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); - PlayParameters *params = flexiNoteLayer->getPlayParameters(); - if (params) params->setPlayPan(1); - } + FlexiNoteLayer *f = qobject_cast(layers[i]); + TimeValueLayer *t = qobject_cast(layers[i]); + + if (f) m_layers[Notes] = f; + if (t) m_layers[PitchTrack] = t; + + m_document->addLayerToView(m_pane, layers[i]); } + ColourDatabase *cdb = ColourDatabase::getInstance(); + + TimeValueLayer *pitchLayer = + qobject_cast(m_layers[PitchTrack]); + if (pitchLayer) { + pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black"))); + PlayParameters *params = pitchLayer->getPlayParameters(); + if (params) params->setPlayPan(1); + } + + FlexiNoteLayer *flexiNoteLayer = + qobject_cast(m_layers[Notes]); + if (flexiNoteLayer) { + flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); + PlayParameters *params = flexiNoteLayer->getPlayParameters(); + if (params) params->setPlayPan(1); + } + + return ""; +} + +QString +Analyser::addTestCandidates() +{ + TransformFactory *tf = TransformFactory::getInstance(); + + QString plugname = "pYIN"; + QString base = "vamp:pyin:localcandidatepyin:"; + QString out = "pitchtrackcandidates"; + + Transforms transforms; + + QString notFound = tr("Transform \"%1\" not found. Unable to perform interactive analysis.

Is the %2 Vamp plugin correctly installed?"); + if (!tf->haveTransform(base + out)) { + return notFound.arg(base + out).arg(plugname); + } + + Transform t = tf->getDefaultTransformFor + (base + out, m_fileModel->getSampleRate()); + t.setStepSize(256); + t.setBlockSize(2048); + + t.setStartTime(RealTime::fromSeconds(10.785)); + t.setDuration(RealTime::fromSeconds(1.2)); + + transforms.push_back(t); + + std::vector layers = + m_document->createDerivedLayers(transforms, m_fileModel); + + std::cerr << "Analyser::addTestCandidates: Have " << layers.size() << " layer(s)" << std::endl; + + for (int i = 0; i < (int)layers.size(); ++i) { + TimeValueLayer *t = qobject_cast(layers[i]); + if (t) m_document->addLayerToView(m_pane, t); + } + return ""; } diff -r afaa4af03b22 -r cc9aa8f4fceb src/Analyser.h --- a/src/Analyser.h Tue Jan 28 16:01:06 2014 +0000 +++ b/src/Analyser.h Tue Jan 28 18:34:11 2014 +0000 @@ -93,6 +93,8 @@ QString addWaveform(); QString addAnalyses(); + QString addTestCandidates(); + void saveState(Component c) const; void loadState(Component c); };