annotate host/host.cpp @ 1:4342352b8ef3

* run more than one plugin, etc
author cannam
date Fri, 20 Oct 2006 15:31:00 +0000
parents a6020bf991cd
children 86914ea77b7b
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 #include <vamp-sdk/PluginHostAdapter.h>
cannam@0 4
cannam@0 5 #include "audioio/BufferingAudioCallbackRecordTarget.h"
cannam@0 6 #include "audioio/AudioRecordSourceFactory.h"
cannam@0 7
cannam@0 8 #include <iostream>
cannam@0 9 #include <sndfile.h>
cannam@0 10
cannam@0 11 #include "system/System.h"
cannam@0 12
cannam@0 13 #include "Processor.h"
cannam@0 14
cannam@0 15 #include <cmath>
cannam@1 16 #include <cassert>
cannam@0 17
cannam@0 18 #include <QApplication>
cannam@0 19 #include <QFont>
cannam@0 20 #include <QPushButton>
cannam@0 21
cannam@0 22 using std::cout;
cannam@0 23 using std::cerr;
cannam@0 24 using std::endl;
cannam@0 25 using std::string;
cannam@0 26 using std::vector;
cannam@0 27
cannam@1 28 static bool loadPlugin(Processor &processor, QString id);
cannam@1 29
cannam@0 30
cannam@0 31 int main(int argc, char **argv)
cannam@0 32 {
cannam@0 33 QApplication application(argc, argv);
cannam@0 34
cannam@0 35 QFont fn = application.font();
cannam@0 36 fn.setPointSize(fn.pointSize() + 3);
cannam@0 37 application.setFont(fn);
cannam@0 38
cannam@0 39 QPushButton *button = new QPushButton("Quit");
cannam@0 40 QObject::connect(button, SIGNAL(clicked()),
cannam@0 41 &application, SLOT(closeAllWindows()));
cannam@0 42
cannam@0 43 BufferingAudioCallbackRecordTarget *target =
cannam@0 44 new BufferingAudioCallbackRecordTarget();
cannam@0 45
cannam@0 46 AudioCallbackRecordSource *source =
cannam@0 47 AudioRecordSourceFactory::createCallbackRecordSource(target);
cannam@0 48 if (!source) {
cannam@0 49 std::cerr << "ERROR: Failed to create audio record source" << std::endl;
cannam@0 50 return 1;
cannam@0 51 }
cannam@0 52
cannam@0 53 Processor processor(target);
cannam@0 54
cannam@1 55 int count = 0;
cannam@1 56 if (loadPlugin(processor, "vamp:vamp-aubio:aubiotempo")) ++count;
cannam@1 57 if (loadPlugin(processor, "vamp:vamp-example-plugins:percussiononsets")) ++count;
cannam@1 58 if (loadPlugin(processor, "vamp:qm-vamp-plugins:qm-tempotracker")) ++count;
cannam@1 59 if (loadPlugin(processor, "vamp:qm-vamp-plugins:qm-chromagram")) ++count;
cannam@1 60 if (loadPlugin(processor, "vamp:vamp-example-plugins:zerocrossing")) ++count;
cannam@1 61
cannam@1 62 std::cerr << count << " plugin(s) loaded" << std::endl;
cannam@0 63
cannam@0 64 button->show();
cannam@1 65 processor.start();
cannam@0 66
cannam@0 67 application.exec();
cannam@0 68 }
cannam@0 69
cannam@1 70 bool loadPlugin(Processor &processor, QString id)
cannam@1 71 {
cannam@1 72 int n = processor.addPlugin(id);
cannam@1 73 if (n) {
cannam@1 74 std::cerr << "Plugin \"" << id.toStdString() << "\" successfully loaded (index " << n << ")" << std::endl;
cannam@1 75 return true;
cannam@1 76 } else {
cannam@1 77 std::cerr << "Failed to load plugin \"" << id.toStdString() << "\"" << std::endl;
cannam@1 78 return false;
cannam@1 79 }
cannam@1 80 }