diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2019-01-27 17:02:40 +0100 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2019-01-27 17:02:40 +0100 | 
| commit | 2aae9799e1d96d827ad156aeafa549deabd51e5d (patch) | |
| tree | 707fb2798cd3b9304fc4af690b557efc9d98a1a8 /drumgizmo | |
| parent | 053b723adf3948d18f025efed9450d837359edd9 (diff) | |
Re-instate instrument v1.0 support.
Diffstat (limited to 'drumgizmo')
| -rw-r--r-- | drumgizmo/Makefile.am | 18 | ||||
| -rw-r--r-- | drumgizmo/dgvalidator.cc | 90 | 
2 files changed, 107 insertions, 1 deletions
| diff --git a/drumgizmo/Makefile.am b/drumgizmo/Makefile.am index 5455726..40bddc9 100644 --- a/drumgizmo/Makefile.am +++ b/drumgizmo/Makefile.am @@ -2,7 +2,7 @@ DISTDIRS = input output  if ENABLE_CLI -bin_PROGRAMS = drumgizmo +bin_PROGRAMS = drumgizmo dgvalidator  drumgizmo_LDADD = $(JACK_LIBS) $(top_srcdir)/src/libdg.la @@ -101,4 +101,20 @@ EXTRA_DIST = \  	output/oss.h \  	output/wavfile.h +dgvalidator_LDADD = $(JACK_LIBS) $(top_srcdir)/src/libdg.la + +dgvalidator_LDFLAGS = + +dgvalidator_CXXFLAGS = \ +	-I$(top_srcdir)/src -I$(top_srcdir)/getoptpp \ +	-I$(top_srcdir)/hugin -DWITH_HUG_MUTEX -DWITH_HUG_FILTER \ +	$(SSEFLAGS) + +dgvalidator_CFLAGS = -DWITH_HUG_MUTEX -DWITH_HUG_FILTER + +dgvalidator_SOURCES = \ +	dgvalidator.cc \ +	$(top_srcdir)/hugin/hugin.c \ +	$(top_srcdir)/hugin/hugin_filter.c +  endif # ENABLE_CLI diff --git a/drumgizmo/dgvalidator.cc b/drumgizmo/dgvalidator.cc new file mode 100644 index 0000000..d0cef8d --- /dev/null +++ b/drumgizmo/dgvalidator.cc @@ -0,0 +1,90 @@ +/* -*- Mode: c++ -*- */ +/*************************************************************************** + *            dgvalidator.cc + * + *  Sun Jan 27 10:44:44 CET 2019 + *  Copyright 2019 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU Lesser General Public License as published by + *  the Free Software Foundation; either version 3 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 Lesser General Public License for more details. + * + *  You should have received a copy of the GNU Lesser 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 <dgxmlparser.h> +#include <path.h> +#include <domloader.h> +#include <random.h> +#include <settings.h> +#include <drumkit.h> + +#include <string> +#include <hugin.hpp> + +int main(int argc, char* argv[]) +{ +	std::string edited_filename = argv[1]; +	DrumkitDOM drumkitdom; +	std::vector<InstrumentDOM> instrumentdoms; +	std::string path = getPath(edited_filename); +	bool parseerror = false; +	bool ret = parseDrumkitFile(edited_filename, drumkitdom); +	if(!ret) +	{ +		WARN(drumkitloader, "Drumkit file parser error: '%s'", +		     edited_filename.data()); +	} + +	parseerror |= !ret; + +	for(const auto& ref : drumkitdom.instruments) +	{ +		instrumentdoms.emplace_back(); +		bool ret = parseInstrumentFile(path + "/" + ref.file, instrumentdoms.back()); +		if(!ret) +		{ +			WARN(drumkitloader, "Instrument file parser error: '%s'", +			     edited_filename.data()); +		} + +		parseerror |= !ret; +	} + +	if(parseerror) +	{ +		return 1; +	} + +	Settings settings; +	Random rand; +	DrumKit kit; + +	DOMLoader domloader(settings, rand); +	ret = domloader.loadDom(path, drumkitdom, instrumentdoms, kit); +	if(!ret) +	{ +		WARN(drumkitloader, "DOMLoader error"); +		return 1; +	} +	parseerror |= !ret; +	if(parseerror) +	{ +		ERR(drumgizmo, "Drumkit parser failed: %s\n", edited_filename.c_str()); +		return 1; +	} + +	return 0; +} | 
