changeset 85:1a9ba1c08f9e

Merge from branch process-noparse
author Chris Cannam <c.cannam@qmul.ac.uk>
date Wed, 14 Sep 2016 14:43:37 +0100
parents 5e6ff69b4209 (current diff) 604244038b81 (diff)
children e434cb4f850d
files Makefile.example Makefile.example.emscripten
diffstat 11 files changed, 250 insertions(+), 117 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.example	Thu Sep 08 15:27:48 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-
-ADAPTER_HEADERS	:= VamPipeAdapter.h VamPipePluginLibrary.h 
-ADAPTER_SOURCES	:= VamPipePluginLibrary.cpp
-
-SDK_DIR		:= ../vamp-plugin-sdk
-
-PLUGIN_SOURCES	:= \
-		$(SDK_DIR)/examples/ZeroCrossing.cpp \
-		$(SDK_DIR)/examples/SpectralCentroid.cpp \
-		$(SDK_DIR)/examples/PercussionOnsetDetector.cpp \
-		$(SDK_DIR)/examples/FixedTempoEstimator.cpp \
-		$(SDK_DIR)/examples/AmplitudeFollower.cpp \
-		$(SDK_DIR)/examples/PowerSpectrum.cpp
-
-OTHER_SOURCES	:= \
-		../json/json11/json11.cpp
-
-SDK_LIBS	:= \
-		$(SDK_DIR)/libvamp-hostsdk.a \
-		$(SDK_DIR)/libvamp-sdk.a
-
-EXAMPLE_EXT	:= .so
-EXAMPLE		:= example$(EXAMPLE_EXT)
-EXAMPLE_SOURCE	:= example.cpp
-EXAMPLE_SOURCES	:= $(EXAMPLE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(OTHER_SOURCES)
-EXAMPLE_LDFLAGS	:= -shared -Wl,-Bsymbolic -Wl,-soname=example.so -Wl,-z,defs -Wl,--version-script=vampipe.map
-
-TEST		:= quick-test
-TEST_SOURCE	:= quick-test.cpp
-TEST_LDFLAGS	:= -ldl
-
-CXXFLAGS	:= -std=c++11 -fPIC -Wall -Wextra -g
-INCPATH		:= -I$(SDK_DIR) -I.. -I../json
-
-all:		$(EXAMPLE) $(TEST)
-		./$(TEST)
-
-$(EXAMPLE):	$(EXAMPLE_SOURCES) $(ADAPTER_HEADERS) $(SDK_LIBS)
-		$(CXX) $(CXXFLAGS) $(INCPATH) -o $(EXAMPLE) \
-		       $(EXAMPLE_SOURCES) $(SDK_LIBS) $(EXAMPLE_LDFLAGS)
-
-$(TEST):	$(TEST_SOURCE)
-		$(CXX) $(CXXFLAGS) -o $(TEST) $(TEST_SOURCE) $(TEST_LDFLAGS)
-
-clean:
-		rm -f $(EXAMPLE) $(TEST)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.example.em	Wed Sep 14 14:43:37 2016 +0100
@@ -0,0 +1,16 @@
+
+MODULE_NAME	:= VampExamplePlugins
+
+EXAMPLE_DIR	:= ../vamp-plugin-sdk/examples
+
+PLUGIN_SOURCES	:= \
+		$(EXAMPLE_DIR)/ZeroCrossing.cpp \
+		$(EXAMPLE_DIR)/SpectralCentroid.cpp \
+		$(EXAMPLE_DIR)/PercussionOnsetDetector.cpp \
+		$(EXAMPLE_DIR)/FixedTempoEstimator.cpp \
+		$(EXAMPLE_DIR)/AmplitudeFollower.cpp \
+		$(EXAMPLE_DIR)/PowerSpectrum.cpp
+
+MODULE_SOURCE	:= example.cpp
+
+include Makefile.inc.em
--- a/Makefile.example.emscripten	Thu Sep 08 15:27:48 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-
-ADAPTER_HEADERS	:= VamPipeAdapter.h VamPipePluginLibrary.h 
-ADAPTER_SOURCES	:= VamPipePluginLibrary.cpp
-
-SDK_DIR		:= ../vamp-plugin-sdk
-
-PLUGIN_SOURCES	:= \
-		$(SDK_DIR)/examples/ZeroCrossing.cpp \
-		$(SDK_DIR)/examples/SpectralCentroid.cpp \
-		$(SDK_DIR)/examples/PercussionOnsetDetector.cpp \
-		$(SDK_DIR)/examples/FixedTempoEstimator.cpp \
-		$(SDK_DIR)/examples/AmplitudeFollower.cpp \
-		$(SDK_DIR)/examples/PowerSpectrum.cpp
-
-SDK_SOURCES	:= \
-        	$(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \
-		$(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \
-        	$(SDK_DIR)/src/vamp-hostsdk/Files.cpp \
-		$(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \
-		$(SDK_DIR)/src/vamp-sdk/RealTime.cpp \
-		$(SDK_DIR)/src/vamp-sdk/FFT.cpp
-
-OTHER_SOURCES	:= \
-		../json/json11/json11.cpp
-
-EMFLAGS		:= \
-		--memory-init-file 0 \
-		-s MODULARIZE=1 \
-		-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
-		-s DISABLE_EXCEPTION_CATCHING=0 \
-	    	-s EXPORT_NAME="'ExampleModule'" \
-	    	-s EXPORTED_FUNCTIONS="['_vampipeRequestJson','_vampipeFreeJson']"
-
-#		-s NO_FILESYSTEM=1 \
-# no longer exists?		-s NO_BROWSER=1 
-
-EXAMPLE_EXT	:= .js
-EXAMPLE		:= example$(EXAMPLE_EXT)
-EXAMPLE_SOURCE	:= example.cpp
-EXAMPLE_SOURCES	:= $(EXAMPLE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(OTHER_SOURCES)
-EXAMPLE_LDFLAGS	:= $(EMFLAGS)
-
-CXX		:= em++
-
-#OPTFLAGS	:= -g3
-OPTFLAGS	:= -O3 -ffast-math
-
-DEFINES		:= -DSINGLE_PRECISION_FFT
-
-CXXFLAGS	:= -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS)
-
-INCPATH		:= -I$(SDK_DIR) -I.. -I../json
-
-all:		$(EXAMPLE)
-
-$(EXAMPLE):	$(EXAMPLE_SOURCES) $(ADAPTER_HEADERS) $(SDK_SOURCES)
-		$(CXX) $(CXXFLAGS) $(EMFLAGS) $(INCPATH) -o $(EXAMPLE) \
-		       $(EXAMPLE_SOURCES) $(SDK_SOURCES) $(EXAMPLE_LDFLAGS) && \
-		( echo "module.exports=ExampleModule;" >> $(EXAMPLE) )
-
-clean:
-		rm -f $(EXAMPLE) $(EXAMPLE).map
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.example.linux	Wed Sep 14 14:43:37 2016 +0100
@@ -0,0 +1,46 @@
+
+ADAPTER_HEADERS	:= VamPipeAdapter.h VamPipePluginLibrary.h 
+ADAPTER_SOURCES	:= VamPipePluginLibrary.cpp
+
+SDK_DIR		:= ../vamp-plugin-sdk
+
+PLUGIN_SOURCES	:= \
+		$(SDK_DIR)/examples/ZeroCrossing.cpp \
+		$(SDK_DIR)/examples/SpectralCentroid.cpp \
+		$(SDK_DIR)/examples/PercussionOnsetDetector.cpp \
+		$(SDK_DIR)/examples/FixedTempoEstimator.cpp \
+		$(SDK_DIR)/examples/AmplitudeFollower.cpp \
+		$(SDK_DIR)/examples/PowerSpectrum.cpp
+
+OTHER_SOURCES	:= \
+		../json/json11/json11.cpp
+
+SDK_LIBS	:= \
+		$(SDK_DIR)/libvamp-hostsdk.a \
+		$(SDK_DIR)/libvamp-sdk.a
+
+EXAMPLE_EXT	:= .so
+EXAMPLE		:= example$(EXAMPLE_EXT)
+EXAMPLE_SOURCE	:= example.cpp
+EXAMPLE_SOURCES	:= $(EXAMPLE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(OTHER_SOURCES)
+EXAMPLE_LDFLAGS	:= -shared -Wl,-Bsymbolic -Wl,-soname=example.so -Wl,-z,defs -Wl,--version-script=vampipe.map
+
+TEST		:= quick-test
+TEST_SOURCE	:= quick-test.cpp
+TEST_LDFLAGS	:= -ldl
+
+CXXFLAGS	:= -std=c++11 -fPIC -Wall -Wextra -g
+INCPATH		:= -I$(SDK_DIR) -I.. -I../json
+
+all:		$(EXAMPLE) $(TEST)
+		./$(TEST)
+
+$(EXAMPLE):	$(EXAMPLE_SOURCES) $(ADAPTER_HEADERS) $(SDK_LIBS)
+		$(CXX) $(CXXFLAGS) $(INCPATH) -o $(EXAMPLE) \
+		       $(EXAMPLE_SOURCES) $(SDK_LIBS) $(EXAMPLE_LDFLAGS)
+
+$(TEST):	$(TEST_SOURCE)
+		$(CXX) $(CXXFLAGS) -o $(TEST) $(TEST_SOURCE) $(TEST_LDFLAGS)
+
+clean:
+		rm -f $(EXAMPLE) $(TEST)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.inc.em	Wed Sep 14 14:43:37 2016 +0100
@@ -0,0 +1,59 @@
+
+ADAPTER_HEADERS	:= VamPipeAdapter.h VamPipePluginLibrary.h 
+ADAPTER_SOURCES	:= VamPipePluginLibrary.cpp
+
+SDK_DIR		:= ../vamp-plugin-sdk
+
+SDK_SOURCES	:= \
+        	$(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \
+		$(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \
+        	$(SDK_DIR)/src/vamp-hostsdk/Files.cpp \
+		$(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \
+		$(SDK_DIR)/src/vamp-sdk/RealTime.cpp \
+		$(SDK_DIR)/src/vamp-sdk/FFT.cpp
+
+OTHER_SOURCES	:= \
+		../json/json11/json11.cpp
+
+MODULE_EXT	:= .js
+MODULE		:= $(MODULE_NAME)$(MODULE_EXT)
+MODULE_SYMBOL	:= $(MODULE_NAME)Module
+
+EMFLAGS		:= \
+		--memory-init-file 0 \
+		-s MODULARIZE=1 \
+		-s NO_FILESYSTEM=1 \
+		-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
+		-s DISABLE_EXCEPTION_CATCHING=0 \
+	    	-s EXPORT_NAME="'$(MODULE_SYMBOL)'" \
+	    	-s EXPORTED_FUNCTIONS="['_vampipeRequestJson','_vampipeProcessRaw','_vampipeFreeJson']"
+
+SOURCES		:= $(MODULE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(OTHER_SOURCES)
+LDFLAGS		:= $(EMFLAGS)
+
+CXX		:= em++
+
+#OPTFLAGS	:= -g3
+OPTFLAGS	:= -O3 -ffast-math
+
+DEFINES		:= -DSINGLE_PRECISION_FFT $(DEFINES)
+
+CXXFLAGS	:= -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS)
+
+INCPATH		:= -I$(SDK_DIR) -I.. -I../json $(INCPATH)
+
+all:		$(MODULE)
+
+$(MODULE):	$(SOURCES) $(ADAPTER_HEADERS) $(SDK_SOURCES)
+		$(CXX) $(CXXFLAGS) $(EMFLAGS) $(INCPATH) -o $(MODULE) \
+		       $(SOURCES) $(SDK_SOURCES) $(MODULE_LDFLAGS) && \
+		( echo "module.exports=$(MODULE_SYMBOL);" >> $(MODULE) )
+
+clean:
+		rm -f $(MODULE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.silvet.em	Wed Sep 14 14:43:37 2016 +0100
@@ -0,0 +1,48 @@
+
+MODULE_NAME	:= Silvet
+
+SILVET_DIR	:= ../../silvet
+
+SRC_DIR		:= $(SILVET_DIR)/src
+CQ_DIR	     	:= $(SILVET_DIR)/constant-q-cpp
+CQSRC_DIR     	:= $(SILVET_DIR)/constant-q-cpp/src
+KFFT_DIR  	:= $(SILVET_DIR)/constant-q-cpp/src/ext/kissfft
+BQVEC_DIR     	:= $(SILVET_DIR)/bqvec
+FD_DIR	     	:= $(SILVET_DIR)/flattendynamics
+
+INCPATH		:= -I$(SRC_DIR) -I$(CQ_DIR) -I$(CQ_DIR)/cq -I$(KFFT_DIR) -I$(KFFT_DIR)/tools -I$(SILVET_DIR) -I$(FD_DIR) -I$(BQVEC_DIR)
+
+DEFINES		:= -Dkiss_fft_scalar=double
+ 
+PLUGIN_SOURCES 	:= \
+		$(SRC_DIR)/Silvet.cpp \
+		$(SRC_DIR)/EM.cpp \
+		$(SRC_DIR)/Instruments.cpp \
+		$(SRC_DIR)/LiveInstruments.cpp
+
+BQVEC_SOURCES	:= \
+		$(BQVEC_DIR)/src/Allocators.cpp
+
+FD_SOURCES	:= \
+		$(FD_DIR)/flattendynamics-ladspa.cpp
+
+CQ_SOURCES	:= \
+		$(CQSRC_DIR)/CQKernel.cpp \
+		$(CQSRC_DIR)/ConstantQ.cpp \
+		$(CQSRC_DIR)/CQSpectrogram.cpp \
+		$(CQSRC_DIR)/CQInverse.cpp \
+		$(CQSRC_DIR)/Chromagram.cpp \
+		$(CQSRC_DIR)/Pitch.cpp \
+		$(CQSRC_DIR)/dsp/FFT.cpp \
+		$(CQSRC_DIR)/dsp/KaiserWindow.cpp \
+		$(CQSRC_DIR)/dsp/MathUtilities.cpp \
+		$(CQSRC_DIR)/dsp/Resampler.cpp \
+		$(CQSRC_DIR)/dsp/SincWindow.cpp \
+		$(KFFT_DIR)/kiss_fft.c \
+		$(KFFT_DIR)/tools/kiss_fftr.c
+
+PLUGIN_SOURCES	:= $(PLUGIN_SOURCES) $(BQVEC_SOURCES) $(FD_SOURCES) $(CQ_SOURCES)
+
+MODULE_SOURCE	:= silvet.cpp
+
+include Makefile.inc.em
--- a/VamPipePluginLibrary.cpp	Thu Sep 08 15:27:48 2016 +0100
+++ b/VamPipePluginLibrary.cpp	Wed Sep 14 14:43:37 2016 +0100
@@ -193,6 +193,36 @@
 }
 
 string
+VamPipePluginLibrary::processRawImpl(int pluginHandle,
+                                     const float *const *inputBuffers,
+                                     int sec,
+                                     int nsec)
+{
+    RequestOrResponse response;
+    response.direction = RequestOrResponse::Response;
+    response.type = RRType::Process;
+
+    try {
+        if (!m_mapper.isConfigured(pluginHandle)) {
+            throw runtime_error("plugin has not been configured");
+        }
+
+        Vamp::Plugin *plugin = m_mapper.handleToPlugin(pluginHandle);
+        Vamp::RealTime timestamp(sec, nsec);
+        
+        response.processResponse.features = plugin->process(inputBuffers, timestamp);
+        response.success = true;
+
+        m_useBase64 = true;
+        
+	return writeResponse(response);
+
+    } catch (const std::exception &e) {
+	return VampJson::fromException(e, RRType::Process).dump();
+    }
+}
+
+string
 VamPipePluginLibrary::requestJsonImpl(string req)
 {
     RequestOrResponse request;
@@ -200,7 +230,6 @@
     try {
 	request = readRequest(req);
     } catch (const std::exception &e) {
-        std::cerr << "FAILURE" << std::endl;
 	return VampJson::fromException(e, RRType::NotValid).dump();
     }
 
@@ -254,7 +283,7 @@
 	    if (channels != m_mapper.getChannelCount(h)) {
 		throw runtime_error("wrong number of channels supplied to process");
 	    }
-		
+
 	    const float **fbuffers = new const float *[channels];
 	    for (int i = 0; i < channels; ++i) {
 		if (int(preq.inputBuffers[i].size()) != m_mapper.getBlockSize(h)) {
--- a/VamPipePluginLibrary.h	Thu Sep 08 15:27:48 2016 +0100
+++ b/VamPipePluginLibrary.h	Wed Sep 14 14:43:37 2016 +0100
@@ -58,12 +58,18 @@
 	return strdup(requestJsonImpl(request).c_str());
     }
 
+    const char *processRaw(int handle, const float *const *inputBuffers,
+                           int sec, int nsec) {
+        return strdup(processRawImpl(handle, inputBuffers, sec, nsec).c_str());
+    }
+    
     void freeJson(const char *json) {
 	free(const_cast<char *>(json));
     }
     
 private:
     std::string requestJsonImpl(std::string req);
+    std::string processRawImpl(int, const float *const *, int, int);
 
     RequestOrResponse readRequest(std::string req);
     std::string writeResponse(const RequestOrResponse &resp) const;
--- a/example.cpp	Thu Sep 08 15:27:48 2016 +0100
+++ b/example.cpp	Wed Sep 14 14:43:37 2016 +0100
@@ -69,6 +69,13 @@
     return library.requestJson(request);
 }
 
+const char *vampipeProcessRaw(int pluginHandle,
+                              const float *const *inputBuffers,
+                              int sec,
+                              int nsec) {
+    return library.processRaw(pluginHandle, inputBuffers, sec, nsec);
+}
+    
 void vampipeFreeJson(const char *json) {
     return library.freeJson(json);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/silvet.cpp	Wed Sep 14 14:43:37 2016 +0100
@@ -0,0 +1,36 @@
+
+#include "VamPipeAdapter.h"
+#include "VamPipePluginLibrary.h"
+
+#include "Silvet.h"
+
+using vampipe::VamPipeAdapter;
+using vampipe::VamPipePluginLibrary;
+
+static std::string soname("silvet");
+
+static VamPipeAdapter<Silvet> silvetAdapter(soname);
+
+static VamPipePluginLibrary library({
+    &silvetAdapter
+});
+
+extern "C" {
+
+const char *vampipeRequestJson(const char *request) {
+    return library.requestJson(request);
+}
+
+const char *vampipeProcessRaw(int pluginHandle,
+                              const float *const *inputBuffers,
+                              int sec,
+                              int nsec) {
+    return library.processRaw(pluginHandle, inputBuffers, sec, nsec);
+}
+    
+void vampipeFreeJson(const char *json) {
+    return library.freeJson(json);
+}
+
+}
+
--- a/vampipe.map	Thu Sep 08 15:27:48 2016 +0100
+++ b/vampipe.map	Wed Sep 14 14:43:37 2016 +0100
@@ -1,4 +1,4 @@
 {
-	global: vampipeRequestJson; vampipeFreeJson;
+	global: vampipeRequestJson; vampipeProcessRaw; vampipeFreeJson;
 	local: *;
 };