diff options
| author | Christian Glöckner <cgloeckner@freenet.de> | 2016-01-22 08:55:43 +0100 | 
|---|---|---|
| committer | André Nusser <andre.nusser@googlemail.com> | 2016-02-09 09:03:15 +0100 | 
| commit | 0ace1d379dad2639e878664b115b636421a7baa4 (patch) | |
| tree | 06ad4cb0e8a509be380760cbc82f367774f34b93 /drumgizmo | |
| parent | 2842232cf2074b32d5e7f6869d076dfe1692287a (diff) | |
added dummy io engines
Diffstat (limited to 'drumgizmo')
| -rw-r--r-- | drumgizmo/Makefile.am | 10 | ||||
| -rw-r--r-- | drumgizmo/enginefactory.cc | 22 | ||||
| -rw-r--r-- | drumgizmo/input/inputdummy.cc | 58 | ||||
| -rw-r--r-- | drumgizmo/input/inputdummy.h | 44 | ||||
| -rw-r--r-- | drumgizmo/output/outputdummy.cc | 56 | ||||
| -rw-r--r-- | drumgizmo/output/outputdummy.h | 44 | 
6 files changed, 230 insertions, 4 deletions
| 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<DummyInputEngine>(); +	} +#endif  #ifdef HAVE_INPUT_MIDIFILE  	if (name == "midifile") {  		return std::make_unique<MidifileInputEngine>(); @@ -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<DummyOutputEngine>(); +	} +#endif  #ifdef HAVE_OUTPUT_WAVFILE  	if (name == "wavfile") {  		return std::make_unique<WavfileOutputEngine>(); @@ -67,7 +81,7 @@ OutputEnginePtr createOutputEngine(std::string const & name) {  		return std::make_unique<AlsaOutputEngine>();  	}  #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 <audioinputengine.h> + +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; +}; | 
