changeset 42:36f67ba6f29c

Add Constant-Q plugin build
author Chris Cannam <c.cannam@qmul.ac.uk>
date Fri, 10 Mar 2017 15:40:40 +0000
parents efad25f1d334
children f08863ff8a02
files constant-q-cpp/Makefile constant-q-cpp/cqvamp.cpp
diffstat 2 files changed, 85 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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
--- /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<CQVamp>
+{
+public:
+    CQVampMIDIParamsAdapter() : PiperAdapterBase<CQVamp>(soname) { }
+    virtual Vamp::Plugin *createPlugin(float inputSampleRate) const override {
+        return new CQVamp(inputSampleRate, true);
+    }
+};
+
+class CQVampHzParamsAdapter : public piper_vamp_js::PiperAdapterBase<CQVamp>
+{
+public:
+    CQVampHzParamsAdapter() : PiperAdapterBase<CQVamp>(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<CQChromaVamp> cqChromaVampAdapter(soname);
+
+static piper_vamp_js::PiperPluginLibrary library({
+        &cqVampMIDIParamsAdapter,
+        &cqVampHzParamsAdapter,
+        &cqChromaVampAdapter
+    });
+
+PIPER_EXPORT_LIBRARY(library);