annotate qm-vamp-plugins.cpp @ 39:a9dbf9f45896 jsonrpc

Update adapter code
author Chris Cannam
date Wed, 05 Oct 2016 18:00:58 +0100
parents e3b070ae24eb
children a734a7e976fa
rev   line source
Chris@37 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@37 2
Chris@37 3 /*
Chris@37 4 VamPipe
Chris@37 5
Chris@37 6 Centre for Digital Music, Queen Mary, University of London.
Chris@37 7 Copyright 2015-2016 QMUL.
Chris@37 8
Chris@37 9 Permission is hereby granted, free of charge, to any person
Chris@37 10 obtaining a copy of this software and associated documentation
Chris@37 11 files (the "Software"), to deal in the Software without
Chris@37 12 restriction, including without limitation the rights to use, copy,
Chris@37 13 modify, merge, publish, distribute, sublicense, and/or sell copies
Chris@37 14 of the Software, and to permit persons to whom the Software is
Chris@37 15 furnished to do so, subject to the following conditions:
Chris@37 16
Chris@37 17 The above copyright notice and this permission notice shall be
Chris@37 18 included in all copies or substantial portions of the Software.
Chris@37 19
Chris@37 20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Chris@37 21 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Chris@37 22 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Chris@37 23 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
Chris@37 24 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
Chris@37 25 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
Chris@37 26 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Chris@37 27
Chris@37 28 Except as contained in this notice, the names of the Centre for
Chris@37 29 Digital Music; Queen Mary, University of London; and Chris Cannam
Chris@37 30 shall not be used in advertising or otherwise to promote the sale,
Chris@37 31 use or other dealings in this Software without prior written
Chris@37 32 authorization.
Chris@37 33 */
Chris@37 34
Chris@37 35 #include "VamPipeAdapter.h"
Chris@37 36 #include "VamPipePluginLibrary.h"
Chris@37 37
Chris@37 38 #include "plugins/BeatTrack.h"
Chris@37 39 #include "plugins/OnsetDetect.h"
Chris@37 40 #include "plugins/ChromagramPlugin.h"
Chris@37 41 #include "plugins/ConstantQSpectrogram.h"
Chris@37 42 #include "plugins/TonalChangeDetect.h"
Chris@37 43 #include "plugins/KeyDetect.h"
Chris@37 44 #include "plugins/MFCCPlugin.h"
Chris@37 45 #include "plugins/SegmenterPlugin.h"
Chris@37 46 #include "plugins/SimilarityPlugin.h"
Chris@37 47 #include "plugins/BarBeatTrack.h"
Chris@37 48 //!!!#include "plugins/AdaptiveSpectrogram.h"
Chris@37 49 #include "plugins/DWT.h"
Chris@37 50 #include "plugins/Transcription.h"
Chris@37 51
Chris@37 52 using vampipe::VamPipeAdapter;
Chris@37 53 using vampipe::VamPipePluginLibrary;
Chris@37 54
Chris@37 55 static std::string soname("qm-vamp-plugins");
Chris@37 56
Chris@37 57 static VamPipeAdapter<BeatTracker> beatTrackerAdapter(soname);
Chris@37 58 static VamPipeAdapter<OnsetDetector> onsetDetectorAdapter(soname);
Chris@37 59 static VamPipeAdapter<ChromagramPlugin> chromagramPluginAdapter(soname);
Chris@37 60 static VamPipeAdapter<ConstantQSpectrogram> constantQAdapter(soname);
Chris@37 61 static VamPipeAdapter<TonalChangeDetect> tonalChangeDetectorAdapter(soname);
Chris@37 62 static VamPipeAdapter<KeyDetector> keyDetectorAdapter(soname);
Chris@37 63 static VamPipeAdapter<MFCCPlugin> mfccPluginAdapter(soname);
Chris@37 64 static VamPipeAdapter<SegmenterPlugin> segmenterPluginAdapter(soname);
Chris@37 65 static VamPipeAdapter<SimilarityPlugin> similarityPluginAdapter(soname);
Chris@37 66 static VamPipeAdapter<BarBeatTracker> barBeatTrackPluginAdapter(soname);
Chris@37 67 //!!!static VamPipeAdapter<AdaptiveSpectrogram> adaptiveSpectrogramAdapter(soname);
Chris@37 68 static VamPipeAdapter<DWT> dwtAdapter(soname);
Chris@37 69 static VamPipeAdapter<Transcription> transcriptionAdapter(soname);
Chris@37 70
Chris@37 71 static VamPipePluginLibrary library({
Chris@37 72 &beatTrackerAdapter,
Chris@37 73 &onsetDetectorAdapter,
Chris@37 74 &chromagramPluginAdapter,
Chris@37 75 &constantQAdapter,
Chris@37 76 &tonalChangeDetectorAdapter,
Chris@37 77 &keyDetectorAdapter,
Chris@37 78 &mfccPluginAdapter,
Chris@37 79 &segmenterPluginAdapter,
Chris@37 80 &similarityPluginAdapter,
Chris@37 81 &barBeatTrackPluginAdapter,
Chris@37 82 //!!! &adaptiveSpectrogramAdapter,
Chris@37 83 &dwtAdapter,
Chris@37 84 &transcriptionAdapter
Chris@37 85 });
Chris@37 86
Chris@37 87 extern "C" {
Chris@37 88
Chris@37 89 const char *vampipeRequestJson(const char *request) {
Chris@37 90 return library.requestJson(request);
Chris@37 91 }
Chris@37 92
Chris@37 93 const char *vampipeProcessRaw(int pluginHandle,
Chris@37 94 const float *const *inputBuffers,
Chris@37 95 int sec,
Chris@37 96 int nsec) {
Chris@37 97 return library.processRaw(pluginHandle, inputBuffers, sec, nsec);
Chris@37 98 }
Chris@37 99
Chris@37 100 void vampipeFreeJson(const char *json) {
Chris@37 101 return library.freeJson(json);
Chris@37 102 }
Chris@37 103
Chris@37 104 }
Chris@37 105