Chris@37: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@37: Chris@37: /* Chris@37: VamPipe Chris@37: Chris@37: Centre for Digital Music, Queen Mary, University of London. Chris@37: Copyright 2015-2016 QMUL. Chris@37: Chris@37: Permission is hereby granted, free of charge, to any person Chris@37: obtaining a copy of this software and associated documentation Chris@37: files (the "Software"), to deal in the Software without Chris@37: restriction, including without limitation the rights to use, copy, Chris@37: modify, merge, publish, distribute, sublicense, and/or sell copies Chris@37: of the Software, and to permit persons to whom the Software is Chris@37: furnished to do so, subject to the following conditions: Chris@37: Chris@37: The above copyright notice and this permission notice shall be Chris@37: included in all copies or substantial portions of the Software. Chris@37: Chris@37: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Chris@37: EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Chris@37: MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Chris@37: NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR Chris@37: ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF Chris@37: CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION Chris@37: WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Chris@37: Chris@37: Except as contained in this notice, the names of the Centre for Chris@37: Digital Music; Queen Mary, University of London; and Chris Cannam Chris@37: shall not be used in advertising or otherwise to promote the sale, Chris@37: use or other dealings in this Software without prior written Chris@37: authorization. Chris@37: */ Chris@37: Chris@37: #include "VamPipeAdapter.h" Chris@37: #include "VamPipePluginLibrary.h" Chris@37: Chris@37: #include "plugins/BeatTrack.h" Chris@37: #include "plugins/OnsetDetect.h" Chris@37: #include "plugins/ChromagramPlugin.h" Chris@37: #include "plugins/ConstantQSpectrogram.h" Chris@37: #include "plugins/TonalChangeDetect.h" Chris@37: #include "plugins/KeyDetect.h" Chris@37: #include "plugins/MFCCPlugin.h" Chris@37: #include "plugins/SegmenterPlugin.h" Chris@37: #include "plugins/SimilarityPlugin.h" Chris@37: #include "plugins/BarBeatTrack.h" Chris@37: //!!!#include "plugins/AdaptiveSpectrogram.h" Chris@37: #include "plugins/DWT.h" Chris@37: #include "plugins/Transcription.h" Chris@37: Chris@37: using vampipe::VamPipeAdapter; Chris@37: using vampipe::VamPipePluginLibrary; Chris@37: Chris@37: static std::string soname("qm-vamp-plugins"); Chris@37: Chris@37: static VamPipeAdapter beatTrackerAdapter(soname); Chris@37: static VamPipeAdapter onsetDetectorAdapter(soname); Chris@37: static VamPipeAdapter chromagramPluginAdapter(soname); Chris@37: static VamPipeAdapter constantQAdapter(soname); Chris@37: static VamPipeAdapter tonalChangeDetectorAdapter(soname); Chris@37: static VamPipeAdapter keyDetectorAdapter(soname); Chris@37: static VamPipeAdapter mfccPluginAdapter(soname); Chris@37: static VamPipeAdapter segmenterPluginAdapter(soname); Chris@37: static VamPipeAdapter similarityPluginAdapter(soname); Chris@37: static VamPipeAdapter barBeatTrackPluginAdapter(soname); Chris@37: //!!!static VamPipeAdapter adaptiveSpectrogramAdapter(soname); Chris@37: static VamPipeAdapter dwtAdapter(soname); Chris@37: static VamPipeAdapter transcriptionAdapter(soname); Chris@37: Chris@37: static VamPipePluginLibrary library({ Chris@37: &beatTrackerAdapter, Chris@37: &onsetDetectorAdapter, Chris@37: &chromagramPluginAdapter, Chris@37: &constantQAdapter, Chris@37: &tonalChangeDetectorAdapter, Chris@37: &keyDetectorAdapter, Chris@37: &mfccPluginAdapter, Chris@37: &segmenterPluginAdapter, Chris@37: &similarityPluginAdapter, Chris@37: &barBeatTrackPluginAdapter, Chris@37: //!!! &adaptiveSpectrogramAdapter, Chris@37: &dwtAdapter, Chris@37: &transcriptionAdapter Chris@37: }); Chris@37: Chris@37: extern "C" { Chris@37: Chris@37: const char *vampipeRequestJson(const char *request) { Chris@37: return library.requestJson(request); Chris@37: } Chris@37: Chris@37: const char *vampipeProcessRaw(int pluginHandle, Chris@37: const float *const *inputBuffers, Chris@37: int sec, Chris@37: int nsec) { Chris@37: return library.processRaw(pluginHandle, inputBuffers, sec, nsec); Chris@37: } Chris@37: Chris@37: void vampipeFreeJson(const char *json) { Chris@37: return library.freeJson(json); Chris@37: } Chris@37: Chris@37: } Chris@37: