summaryrefslogtreecommitdiff
path: root/drumgizmo
diff options
context:
space:
mode:
Diffstat (limited to 'drumgizmo')
-rw-r--r--drumgizmo/Makefile.am18
-rw-r--r--drumgizmo/dgvalidator.cc90
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;
+}