diff options
Diffstat (limited to 'src/drumgizmo.cc')
-rw-r--r-- | src/drumgizmo.cc | 89 |
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); |