cannam@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ cannam@0: cannam@0: #include cannam@0: cannam@0: #include "audioio/BufferingAudioCallbackRecordTarget.h" cannam@0: #include "audioio/AudioRecordSourceFactory.h" cannam@0: cannam@0: #include cannam@0: #include cannam@0: cannam@0: #include "system/System.h" cannam@0: cannam@0: #include "Processor.h" cannam@0: cannam@0: #include cannam@1: #include cannam@0: cannam@0: #include cannam@0: #include cannam@0: #include cannam@0: cannam@0: using std::cout; cannam@0: using std::cerr; cannam@0: using std::endl; cannam@0: using std::string; cannam@0: using std::vector; cannam@0: cannam@1: static bool loadPlugin(Processor &processor, QString id); cannam@1: cannam@0: cannam@0: int main(int argc, char **argv) cannam@0: { cannam@0: QApplication application(argc, argv); cannam@0: cannam@0: QFont fn = application.font(); cannam@0: fn.setPointSize(fn.pointSize() + 3); cannam@0: application.setFont(fn); cannam@0: cannam@0: QPushButton *button = new QPushButton("Quit"); cannam@0: QObject::connect(button, SIGNAL(clicked()), cannam@0: &application, SLOT(closeAllWindows())); cannam@0: cannam@0: BufferingAudioCallbackRecordTarget *target = cannam@0: new BufferingAudioCallbackRecordTarget(); cannam@0: cannam@0: AudioCallbackRecordSource *source = cannam@0: AudioRecordSourceFactory::createCallbackRecordSource(target); cannam@0: if (!source) { cannam@0: std::cerr << "ERROR: Failed to create audio record source" << std::endl; cannam@0: return 1; cannam@0: } cannam@0: cannam@0: Processor processor(target); cannam@0: cannam@1: int count = 0; cannam@1: if (loadPlugin(processor, "vamp:vamp-aubio:aubiotempo")) ++count; cannam@1: if (loadPlugin(processor, "vamp:vamp-example-plugins:percussiononsets")) ++count; cannam@1: if (loadPlugin(processor, "vamp:qm-vamp-plugins:qm-tempotracker")) ++count; cannam@1: if (loadPlugin(processor, "vamp:qm-vamp-plugins:qm-chromagram")) ++count; cannam@1: if (loadPlugin(processor, "vamp:vamp-example-plugins:zerocrossing")) ++count; cannam@1: cannam@1: std::cerr << count << " plugin(s) loaded" << std::endl; cannam@0: cannam@0: button->show(); cannam@1: processor.start(); cannam@0: cannam@0: application.exec(); cannam@0: } cannam@0: cannam@1: bool loadPlugin(Processor &processor, QString id) cannam@1: { cannam@1: int n = processor.addPlugin(id); cannam@1: if (n) { cannam@1: std::cerr << "Plugin \"" << id.toStdString() << "\" successfully loaded (index " << n << ")" << std::endl; cannam@1: return true; cannam@1: } else { cannam@1: std::cerr << "Failed to load plugin \"" << id.toStdString() << "\"" << std::endl; cannam@1: return false; cannam@1: } cannam@1: }