From 0ace1d379dad2639e878664b115b636421a7baa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gl=C3=B6ckner?= Date: Fri, 22 Jan 2016 08:55:43 +0100 Subject: added dummy io engines --- drumgizmo/Makefile.am | 10 +++++++ drumgizmo/enginefactory.cc | 22 +++++++++++++--- drumgizmo/input/inputdummy.cc | 58 +++++++++++++++++++++++++++++++++++++++++ drumgizmo/input/inputdummy.h | 44 +++++++++++++++++++++++++++++++ drumgizmo/output/outputdummy.cc | 56 +++++++++++++++++++++++++++++++++++++++ drumgizmo/output/outputdummy.h | 44 +++++++++++++++++++++++++++++++ 6 files changed, 230 insertions(+), 4 deletions(-) create mode 100644 drumgizmo/input/inputdummy.cc create mode 100644 drumgizmo/input/inputdummy.h create mode 100644 drumgizmo/output/outputdummy.cc create mode 100644 drumgizmo/output/outputdummy.h (limited to 'drumgizmo') diff --git a/drumgizmo/Makefile.am b/drumgizmo/Makefile.am index 4988b1c..bdf36c4 100644 --- a/drumgizmo/Makefile.am +++ b/drumgizmo/Makefile.am @@ -29,6 +29,11 @@ drumgizmo_SOURCES = \ $(top_srcdir)/hugin/hugin.c \ $(top_srcdir)/hugin/hugin_filter.c +if HAVE_INPUT_DUMMY +drumgizmo_SOURCES += input/inputdummy.cc +drumgizmo_CXXFLAGS += -DHAVE_INPUT_DUMMY +endif # HAVE_INPUT_DUMMY + if HAVE_INPUT_MIDIFILE drumgizmo_CXXFLAGS += $(SMF_CFLAGS) drumgizmo_LDADD += $(SMF_LIBS) @@ -36,6 +41,11 @@ drumgizmo_SOURCES += input/midifile.cc drumgizmo_CXXFLAGS += -DHAVE_INPUT_MIDIFILE endif # HAVE_INPUT_MIDIFILE +if HAVE_OUTPUT_DUMMY +drumgizmo_SOURCES += output/outputdummy.cc +drumgizmo_CXXFLAGS += -DHAVE_OUTPUT_DUMMY +endif # HAVE_OUTPUT_DUMMY + if HAVE_OUTPUT_WAVFILE drumgizmo_SOURCES += output/wavfile.cc drumgizmo_CXXFLAGS += -DHAVE_OUTPUT_WAVFILE diff --git a/drumgizmo/enginefactory.cc b/drumgizmo/enginefactory.cc index 4e9bc62..5fa230b 100644 --- a/drumgizmo/enginefactory.cc +++ b/drumgizmo/enginefactory.cc @@ -27,14 +27,18 @@ #include "enginefactory.h" #include "jackclient.h" -#define HAVE_INPUT_MIDIFILE 1 -#define HAVE_OUTPUT_WAVFILE 1 -#define HAVE_OUTPUT_ALSA 1 +#ifdef HAVE_INPUT_DUMMY +#include "input/inputdummy.h" +#endif #ifdef HAVE_INPUT_MIDIFILE #include "input/midifile.h" #endif +#ifdef HAVE_OUTPUT_DUMMY +#include "output/outputdummy.h" +#endif + #ifdef HAVE_OUTPUT_WAVFILE #include "output/wavfile.h" #endif @@ -44,6 +48,11 @@ #endif InputEnginePtr createInputEngine(std::string const & name) { +#ifdef HAVE_INPUT_DUMMY + if (name == "dummy") { + return std::make_unique(); + } +#endif #ifdef HAVE_INPUT_MIDIFILE if (name == "midifile") { return std::make_unique(); @@ -57,6 +66,11 @@ InputEnginePtr createInputEngine(std::string const & name) { } OutputEnginePtr createOutputEngine(std::string const & name) { +#ifdef HAVE_OUTPUT_DUMMY + if (name == "dummy") { + return std::make_unique(); + } +#endif #ifdef HAVE_OUTPUT_WAVFILE if (name == "wavfile") { return std::make_unique(); @@ -67,7 +81,7 @@ OutputEnginePtr createOutputEngine(std::string const & name) { return std::make_unique(); } #endif - + // todo: add more engines printf("Unsupported output engine: %s\n", name.c_str()); diff --git a/drumgizmo/input/inputdummy.cc b/drumgizmo/input/inputdummy.cc new file mode 100644 index 0000000..a994a1e --- /dev/null +++ b/drumgizmo/input/inputdummy.cc @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * dummy.cc + * + * Fr 22. Jan 08:14:58 CET 2016 + * Copyright 2016 Christian Glöckner + * cgloeckner@freenet.de + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * DrumGizmo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "inputdummy.h" + +DummyInputEngine::DummyInputEngine() { +} + +DummyInputEngine::~DummyInputEngine() { +} + +bool DummyInputEngine::init(Instruments& instruments) { + return true; +} + +void DummyInputEngine::setParm(std::string parm, std::string value) { +} + +bool DummyInputEngine::start() { + return true; +} + +void DummyInputEngine::stop() { +} + +void DummyInputEngine::pre() { +} + +event_t* DummyInputEngine::run(size_t pos, size_t len, size_t *nevents) { + nevents = 0u; + return nullptr; +} + +void DummyInputEngine::post() { +} diff --git a/drumgizmo/input/inputdummy.h b/drumgizmo/input/inputdummy.h new file mode 100644 index 0000000..ef59e3f --- /dev/null +++ b/drumgizmo/input/inputdummy.h @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * dummy.h + * + * Fr 22. Jan 08:14:58 CET 2016 + * Copyright 2016 Christian Glöckner + * cgloeckner@freenet.de + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * DrumGizmo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#pragma once +#include + +class DummyInputEngine + : public AudioInputEngine { + public: + DummyInputEngine(); + ~DummyInputEngine(); + + // based on AudioInputEngine + bool init(Instruments &instruments) override; + void setParm(std::string parm, std::string value) override; + bool start() override; + void stop() override; + void pre() override; + event_t* run(size_t pos, size_t len, size_t* nevents) override; + void post() override; +}; diff --git a/drumgizmo/output/outputdummy.cc b/drumgizmo/output/outputdummy.cc new file mode 100644 index 0000000..7f62a3d --- /dev/null +++ b/drumgizmo/output/outputdummy.cc @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * dummy.cc + * + * Fr 22. Jan 08:15:04 CET 2016 + * Copyright 2016 Christian Glöckner + * cgloeckner@freenet.de + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * DrumGizmo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "outputdummy.h" + +DummyOutputEngine::DummyOutputEngine() { +} + +DummyOutputEngine::~DummyOutputEngine() { +} + +bool DummyOutputEngine::init(Channels data) { + return true; +} + +void DummyOutputEngine::setParm(std::string parm, std::string value) { +} + +bool DummyOutputEngine::start() { + return true; +} + +void DummyOutputEngine::stop() { +} + +void DummyOutputEngine::pre(size_t nsamples) { +} + +void DummyOutputEngine::run(int ch, sample_t* samples, size_t nsamples) { +} + +void DummyOutputEngine::post(size_t nsamples) { +} diff --git a/drumgizmo/output/outputdummy.h b/drumgizmo/output/outputdummy.h new file mode 100644 index 0000000..758a47a --- /dev/null +++ b/drumgizmo/output/outputdummy.h @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * dummy.h + * + * Fr 22. Jan 08:15:04 CET 2016 + * Copyright 2016 Christian Glöckner + * cgloeckner@freenet.de + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * DrumGizmo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#pragma once +#include "audiooutputengine.h" + +class DummyOutputEngine + : public AudioOutputEngine { + public: + DummyOutputEngine(); + ~DummyOutputEngine(); + + // based on AudioOutputEngine + bool init(Channels chan) override; + void setParm(std::string parm, std::string value) override; + bool start() override; + void stop() override; + void pre(size_t nsamples) override; + void run(int ch, sample_t* samples, size_t nsamples) override; + void post(size_t nsamples) override; +}; -- cgit v1.2.3