Mercurial > hg > vamp-fanchirp
view plugins.cpp @ 15:0a860992b4f4 spect
Break out the plugin into three different plugins (using the same class in different modes) in order to provide simplistic and more sophisticated spectrograms as well as the f0-gram. Remove the program support, since it doesn't work usefully anyway (it just overrides the user's preferred settings).
author | Chris Cannam |
---|---|
date | Wed, 03 Oct 2018 13:16:09 +0100 |
parents | d912b9d53e50 |
children |
line wrap: on
line source
// This is a skeleton file for use in creating your own plugin // libraries. Replace MyPlugin and myPlugin throughout with the name // of your first plugin class, and fill in the gaps as appropriate. #include <vamp/vamp.h> #include <vamp-sdk/PluginAdapter.h> #include "FChTransformF0gram.h" class FChTransformAdapter : public Vamp::PluginAdapterBase { public: FChTransformAdapter(FChTransformF0gram::ProcessingMode mode) : PluginAdapterBase(), m_mode(mode) { } virtual ~FChTransformAdapter() { } protected: Vamp::Plugin *createPlugin(float inputSampleRate) { return new FChTransformF0gram(m_mode, inputSampleRate); } FChTransformF0gram::ProcessingMode m_mode; }; static FChTransformAdapter f0gram(FChTransformF0gram::ModeF0Gram); static FChTransformAdapter spectrogram(FChTransformF0gram::ModeSpectrogram); static FChTransformAdapter rough(FChTransformF0gram::ModeRoughSpectrogram); // This is the entry-point for the library, and the only function that // needs to be publicly exported. const VampPluginDescriptor * vampGetPluginDescriptor(unsigned int version, unsigned int index) { if (version < 1) return 0; // Return a different plugin adaptor's descriptor for each index, // and return 0 for the first index after you run out of plugins. // (That's how the host finds out how many plugins are in this // library.) switch (index) { case 0: return f0gram.getDescriptor(); case 1: return spectrogram.getDescriptor(); case 2: return rough.getDescriptor(); default: return 0; } }