# HG changeset patch # User Chris Cannam # Date 1489160440 0 # Node ID 87fc2ac1a25a6b86b32ea059f61b77d26e09c661 # Parent 5ff45be86e537d88af7a38924b56373d55d54161 Add Constant-Q plugin build diff -r 5ff45be86e53 -r 87fc2ac1a25a constant-q-cpp/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/constant-q-cpp/Makefile Fri Mar 10 15:40:40 2017 +0000 @@ -0,0 +1,47 @@ +PIPER_VAMP_JS_DIR := ../../piper-vamp-js +PLUGIN_SRC_DIR := ../../constant-q-cpp + +MODULE_NAME := CQ +MODULE_SOURCE := cqvamp.cpp + +LIB_DIR := src +INC_DIR := cq +VAMP_DIR := vamp +KFFT_DIR := src/ext/kissfft + +LIB_SOURCES := \ + $(LIB_DIR)/CQKernel.cpp \ + $(LIB_DIR)/ConstantQ.cpp \ + $(LIB_DIR)/CQSpectrogram.cpp \ + $(LIB_DIR)/CQInverse.cpp \ + $(LIB_DIR)/Chromagram.cpp \ + $(LIB_DIR)/Pitch.cpp \ + $(LIB_DIR)/dsp/FFT.cpp \ + $(LIB_DIR)/dsp/KaiserWindow.cpp \ + $(LIB_DIR)/dsp/MathUtilities.cpp \ + $(LIB_DIR)/dsp/Resampler.cpp \ + $(LIB_DIR)/dsp/SincWindow.cpp + +VAMP_SOURCES := \ + $(VAMP_DIR)/CQVamp.cpp \ + $(VAMP_DIR)/CQChromaVamp.cpp \ + $(VAMP_DIR)/libmain.cpp + +SOURCE_FILES := \ + $(LIB_SOURCES) \ + $(VAMP_SOURCES) + +KFFT_FILES := \ + $(LIB_DIR)/ext/kissfft/kiss_fft.c \ + $(LIB_DIR)/ext/kissfft/tools/kiss_fftr.c + +PLUGIN_SOURCES := $(addprefix $(PLUGIN_SRC_DIR)/,$(SOURCE_FILES)) +PLUGIN_C_SOURCES := $(addprefix $(PLUGIN_SRC_DIR)/,$(KFFT_FILES)) + +EMFLAGS := -s TOTAL_MEMORY=100000000 + +DEFINES := -Dkiss_fft_scalar=double + +INCLUDES := -I$(PLUGIN_SRC_DIR) -I$(PLUGIN_SRC_DIR)/$(LIB_DIR) -I$(PLUGIN_SRC_DIR)/$(INC_DIR) -I$(PLUGIN_SRC_DIR)/$(VAMP_DIR) -I$(PLUGIN_SRC_DIR)/$(KFFT_DIR) -I$(PLUGIN_SRC_DIR)/$(KFFT_DIR)/tools + +include $(PIPER_VAMP_JS_DIR)/Makefile.inc diff -r 5ff45be86e53 -r 87fc2ac1a25a constant-q-cpp/cqvamp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/constant-q-cpp/cqvamp.cpp Fri Mar 10 15:40:40 2017 +0000 @@ -0,0 +1,38 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +#include "PiperExport.h" +#include "CQVamp.h" +#include "CQChromaVamp.h" + +static std::string soname("cqvamp"); + +class CQVampMIDIParamsAdapter : public piper_vamp_js::PiperAdapterBase +{ +public: + CQVampMIDIParamsAdapter() : PiperAdapterBase(soname) { } + virtual Vamp::Plugin *createPlugin(float inputSampleRate) const override { + return new CQVamp(inputSampleRate, true); + } +}; + +class CQVampHzParamsAdapter : public piper_vamp_js::PiperAdapterBase +{ +public: + CQVampHzParamsAdapter() : PiperAdapterBase(soname) { } + virtual Vamp::Plugin *createPlugin(float inputSampleRate) const override { + return new CQVamp(inputSampleRate, false); + } +}; + +static CQVampMIDIParamsAdapter cqVampMIDIParamsAdapter; +static CQVampHzParamsAdapter cqVampHzParamsAdapter; + +static piper_vamp_js::PiperAdapter cqChromaVampAdapter(soname); + +static piper_vamp_js::PiperPluginLibrary library({ + &cqVampMIDIParamsAdapter, + &cqVampHzParamsAdapter, + &cqChromaVampAdapter + }); + +PIPER_EXPORT_LIBRARY(library);