summaryrefslogtreecommitdiff
path: root/src/drumgizmo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/drumgizmo.cc')
-rw-r--r--src/drumgizmo.cc89
1 files changed, 86 insertions, 3 deletions
diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc
index 4445712..77b8433 100644
--- a/src/drumgizmo.cc
+++ b/src/drumgizmo.cc
@@ -24,21 +24,104 @@
* along with DrumGizmo; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-
+#include <config.h>
+#include <getopt.h>
#include "jackclient.h"
#include "drumkitparser.h"
#include "midiplayer.h"
+static const char version_str[] =
+"DrumGizmo v" VERSION "\n"
+;
+
+static const char copyright_str[] =
+"Copyright (C) 2008-2009 Bent Bisballe Nyeng - Aasimon.org.\n"
+"This is free software. You may redistribute copies of it under the terms of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+"Written by Bent Bisballe Nyeng (deva@aasimon.org)\n"
+;
+
+static const char usage_str[] =
+"Usage: %s [options] drumkitfile\n"
+"Options:\n"
+" -p, --preload Load entire kit audio files into memory (uses ALOT of memory).\n"
+" -m, --midi midifile Load midifile, and play it.\n"
+" -v, --version Print version information and exit.\n"
+" -h, --help Print this message and exit.\n"
+;
+
int main(int argc, char *argv[])
{
- DrumKitParser parser("/tmp/aasimonster/aasimonster.xml");
+ int c;
+
+ char *midifile = NULL;
+ bool preload = false;
+
+ int option_index = 0;
+ while(1) {
+ static struct option long_options[] = {
+ {"midi", required_argument, 0, 'm'},
+ {"help", no_argument, 0, 'h'},
+ {"version", no_argument, 0, 'v'},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long (argc, argv, "hvpm:", long_options, &option_index);
+
+ if (c == -1)
+ break;
+
+ switch(c) {
+ case 'm':
+ midifile = strdup(optarg);
+ break;
+
+ case 'p':
+ preload = true;
+ break;
+
+ case '?':
+ case 'h':
+ printf(version_str);
+ printf(usage_str, argv[0]);
+ return 0;
+
+ case 'v':
+ printf(version_str);
+ printf(copyright_str);
+ return 0;
+
+ default:
+ break;
+ }
+ }
+
+ if(argc < option_index + 2) {
+ fprintf(stderr, "Missing kitfile.\n");
+ printf(usage_str, argv[0]);
+ return 1;
+ }
+
+ if(argc > option_index + 2) {
+ fprintf(stderr, "Can only handle a single kitfile.\n");
+ printf(usage_str, argv[0]);
+ return 1;
+ }
+
+ std::string kitfile = argv[option_index + 1];
+
+ printf("Using kitfile: %s\n", kitfile.c_str());
+
+ DrumKitParser parser(kitfile, preload);
if(parser.parse()) return 1;
JackClient client(parser.getDrumkit());
client.activate();
- MidiPlayer player("dimmer.mid");
+ if(midifile) MidiPlayer player(midifile);
while(1) sleep(1);