view plugins.cpp @ 18:3835e03650cc spect

Change calculation of frequency index based on the usual FFT bin frequencies. I'm troubled by this change, but it does appear to produce the correct result.
author Chris Cannam
date Thu, 04 Oct 2018 10:17:32 +0100
parents 0a860992b4f4
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;
    }
}