summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2011-08-08 22:19:46 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2011-08-08 22:19:46 +0200
commit2289074fe008a0d1a8d05f44a12a405351aad506 (patch)
treef79089a47b6c7269a5d60b5d5b7608fef05135d6
parent08a41cf525193e90ce8f397476ac3825e5e9fdb8 (diff)
New midimapper.
-rw-r--r--kits/test/general-midi-drummap.xml50
-rw-r--r--kits/test/midimap.xml25
-rw-r--r--src/midi.h33
-rw-r--r--src/midimap.h43
-rw-r--r--src/midimapparser.cc (renamed from drumgizmo/input/midifile/midimap.cc)63
-rw-r--r--src/midimapparser.h (renamed from drumgizmo/input/midifile/midimap.h)33
-rw-r--r--src/midimapper.cc74
-rw-r--r--src/midimapper.h16
-rw-r--r--src/midiplayer.cc174
-rw-r--r--src/midiplayer.h54
10 files changed, 126 insertions, 439 deletions
diff --git a/kits/test/general-midi-drummap.xml b/kits/test/general-midi-drummap.xml
new file mode 100644
index 0000000..3f832cc
--- /dev/null
+++ b/kits/test/general-midi-drummap.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<midimap>
+ <map note="35" instr="Bass Kick"/>
+ <map note="36" instr="Rock Kick"/>
+ <map note="37" instr="Side Kick"/>
+ <map note="38" instr="Acoustic Snare"/>
+ <map note="39" instr="Handclap"/>
+ <map note="40" instr="Electric Snare"/>
+ <map note="41" instr="Low Floor Tom"/>
+ <map note="42" instr="Closed Hi-Hat"/>
+ <map note="43" instr="High Floor Tom"/>
+ <map note="44" instr="Pedal Hi-Hat"/>
+ <map note="45" instr="Low Tom"/>
+ <map note="46" instr="Open Hi-Hat"/>
+ <map note="47" instr="Low Mid-Tom"/>
+ <map note="48" instr="High Mid-Tom"/>
+ <map note="49" instr="Crash Cymbal 1"/>
+ <map note="50" instr="High Tom"/>
+ <map note="51" instr="Ride Cymbal 1"/>
+ <map note="52" instr="Chinese Cymbal"/>
+ <map note="53" instr="Ride Bell"/>
+ <map note="54" instr="Tambourine"/>
+ <map note="55" instr="Splash Cymbal"/>
+ <map note="56" instr="Cowbell"/>
+ <map note="57" instr="Crash Cymbal 2"/>
+ <map note="58" instr="Vibraslap"/>
+ <map note="59" instr="Ride Cymbal 2"/>
+ <map note="60" instr="High Bongo"/>
+ <map note="61" instr="Low Bongo"/>
+ <map note="62" instr="Mute High Conga"/>
+ <map note="63" instr="Open High Conga"/>
+ <map note="64" instr="Low Conga"/>
+ <map note="65" instr="High Timbale"/>
+ <map note="66" instr="Low Timbale"/>
+ <map note="67" instr="High Agogo"/>
+ <map note="68" instr="Low Agogo"/>
+ <map note="69" instr="Cabasa"/>
+ <map note="70" instr="Maracas"/>
+ <map note="71" instr="Short Whistle"/>
+ <map note="72" instr="Long Whistle"/>
+ <map note="73" instr="Short Guiro"/>
+ <map note="74" instr="Long Guiro"/>
+ <map note="75" instr="Claves"/>
+ <map note="76" instr="High Woodblock"/>
+ <map note="77" instr="Low Woodblock"/>
+ <map note="78" instr="Mute Cuica"/>
+ <map note="79" instr="Open Cuica"/>
+ <map note="80" instr="Mute Triangle"/>
+ <map note="81" instr="Open Triangle"/>
+</midimap> \ No newline at end of file
diff --git a/kits/test/midimap.xml b/kits/test/midimap.xml
new file mode 100644
index 0000000..908996a
--- /dev/null
+++ b/kits/test/midimap.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<midimap>
+ <map note="35" instr="kick"/>
+ <map note="36" instr="kick"/>
+
+ <map note="38" instr="snare"/>
+
+ <map note="43" instr="tom4"/>
+ <map note="45" instr="tom3"/>
+ <map note="47" instr="tom2"/>
+ <map note="48" instr="tom1"/>
+
+ <map note="46" instr="hihat"/>
+
+ <map note="51" instr="ride"/>
+ <map note="53" instr="ride-bell"/>
+
+ <map note="49" instr="crash-1"/>
+ <map note="57" instr="crash-2"/>
+
+ <map note="52" instr="china"/>
+
+ <map note="55" instr="splash"/>
+
+</midimap> \ No newline at end of file
diff --git a/src/midi.h b/src/midi.h
deleted file mode 100644
index 5d1515e..0000000
--- a/src/midi.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * midi.h
- *
- * Wed Sep 15 15:43:53 CEST 2010
- * Copyright 2010 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 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.
- */
-#ifndef __DRUMGIZMO_MIDI_H__
-#define __DRUMGIZMO_MIDI_H__
-
-typedef unsigned int midi_note_t;
-typedef unsigned int midi_velocity_t;
-
-#endif/*__DRUMGIZMO_MIDI_H__*/
diff --git a/src/midimap.h b/src/midimap.h
deleted file mode 100644
index 6679d98..0000000
--- a/src/midimap.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * midimap.h
- *
- * Wed Sep 15 15:44:48 CEST 2010
- * Copyright 2010 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 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.
- */
-#ifndef __DRUMGIZMO_MIDIMAP_H__
-#define __DRUMGIZMO_MIDIMAP_H__
-
-#include "midi.h"
-
-class MidiMap {
-public:
- midi_note_t note;
- midi_velocity_t from;
- midi_velocity_t to;
- std::string instrument;
- // float gain; // TODO: Add this to gain the entire instrument.
-};
-
-//typedef std::vector< MidiMap > MidiMaps;
-
-#endif/*__DRUMGIZMO_MIDIMAP_H__*/
diff --git a/drumgizmo/input/midifile/midimap.cc b/src/midimapparser.cc
index ccb9b3c..07210a5 100644
--- a/drumgizmo/input/midifile/midimap.cc
+++ b/src/midimapparser.cc
@@ -1,8 +1,8 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/***************************************************************************
- * midimap.cc
+ * midimapparser.cc
*
- * Mon Jun 13 21:36:30 CEST 2011
+ * Mon Aug 8 16:55:30 CEST 2011
* Copyright 2011 Bent Bisballe Nyeng
* deva@aasimon.org
****************************************************************************/
@@ -24,61 +24,34 @@
* along with DrumGizmo; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-#include "midimap.h"
+#include "midimapparser.h"
-/*
-
- 35 = 1
- 36-51 = 2 - TODO!
- 51, 53 = 3 - TODO!
- 54, 56-59, 62 = 4 - TODO!
-
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-MidiMap::MidiMap()
+MidiMapParser::MidiMapParser(std::string file)
{
+ fd = fopen(file.c_str(), "r");
}
-bool MidiMap::load(std::string file)
+MidiMapParser::~MidiMapParser()
{
- FILE *fp = fopen(file.c_str(), "r");
- if(!fp) return false;
+ if(fd) fclose(fd);
+}
- std::string line;
- while(!feof(fp)) {
- int c = fgetc(fp);
- // printf("[%c]\n", c);
- if(c == '\n') {
- if(line != "") {
- int from = atoi(line.substr(0, line.find('=')).c_str());
- int to = atoi(line.substr(line.find('=')+1,
- line.length()-line.find('=')+1).c_str());
- map[from] = to;
- // printf("Line: '%s', from: %d to: %d\n", line.c_str(), from, to);
-
- }
- line = "";
- } else {
- if((c >= '0' && c <= '9') || c == ',' || c == '-' || c == '=') {
- line += (char)c;
- } else {
- if(c != '\t' && c != ' ') return false; // Parse error.
- }
+void MidiMapParser::startTag(std::string name, attr_t attr)
+{
+ if(name == "map") {
+ if(attr.find("note") != attr.end() && attr.find("instr") != attr.end()) {
+ midimap[atoi(attr["note"].c_str())] = attr["instr"];
}
}
-
- return true;
}
-int MidiMap::lookup(int note)
+int MidiMapParser::readData(char *data, size_t size)
{
- return map[note];
+ if(!fd) return -1;
+ return fread(data, 1, size, fd);
}
-#ifdef TEST_MIDIMAP
+#ifdef TEST_MIDIMAPPARSER
//Additional dependency files
//deps:
//Required cflags (autoconf vars may be used)
@@ -93,4 +66,4 @@ TEST_BEGIN;
TEST_END;
-#endif/*TEST_MIDIMAP*/
+#endif/*TEST_MIDIMAPPARSER*/
diff --git a/drumgizmo/input/midifile/midimap.h b/src/midimapparser.h
index 183d2d3..98ab886 100644
--- a/drumgizmo/input/midifile/midimap.h
+++ b/src/midimapparser.h
@@ -1,8 +1,8 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/***************************************************************************
- * midimap.h
+ * midimapparser.h
*
- * Mon Jun 13 21:36:29 CEST 2011
+ * Mon Aug 8 16:55:30 CEST 2011
* Copyright 2011 Bent Bisballe Nyeng
* deva@aasimon.org
****************************************************************************/
@@ -24,20 +24,29 @@
* along with DrumGizmo; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-#ifndef __DRUMGIZMO_MIDIMAP_H__
-#define __DRUMGIZMO_MIDIMAP_H__
+#ifndef __DRUMGIZMO_MIDIMAPPARSER_H__
+#define __DRUMGIZMO_MIDIMAPPARSER_H__
-#include <map>
-#include <string>
+#include <stdio.h>
-class MidiMap {
+#include "saxparser.h"
+
+#include "midimapper.h"
+
+class MidiMapParser : public SAXParser {
public:
- MidiMap();
- bool load(std::string file);
- int lookup(int note);
+ MidiMapParser(std::string file);
+ ~MidiMapParser();
+
+ void startTag(std::string name, attr_t attr);
+
+ midimap_t midimap;
+
+protected:
+ int readData(char *data, size_t size);
private:
- std::map<int, int> map;
+ FILE *fd;
};
-#endif/*__DRUMGIZMO_MIDIMAP_H__*/
+#endif/*__DRUMGIZMO_MIDIMAPPARSER_H__*/
diff --git a/src/midimapper.cc b/src/midimapper.cc
index 243c22e..ca0cc21 100644
--- a/src/midimapper.cc
+++ b/src/midimapper.cc
@@ -26,74 +26,10 @@
*/
#include "midimapper.h"
-#include <stdio.h>
-
-#define NOTE_ON 0x9
-
-MidiMapper::MidiMapper(DrumKit *drumkit)
-{
- this->drumkit = drumkit;
- /*
-35 Acoustic Bass Drum 59 Ride Cymbal 2
-36 Bass Drum 1 60 Hi Bongo
-37 Side Stick 61 Low Bongo
-38 Acoustic Snare 62 Mute Hi Conga
-39 Hand Clap 63 Open Hi Conga
-40 Electric Snare 64 Low Conga
-41 Low Floor Tom 65 High Timbale
-42 Closed Hi-Hat 66 Low Timbale
-43 High Floor Tom 67 High Agogo
-44 Pedal Hi-Hat 68 Low Agogo
-45 Low Tom 69 Cabasa
-46 Open Hi-Hat 70 Maracas
-47 Low-Mid Tom 71 Short Whistle
-48 Hi-Mid Tom 72 Long Whistle
-49 Crash Cymbal 1 73 Short Guiro
-50 High Tom 74 Long Guiro
-51 Ride Cymbal 1 75 Claves
-52 Chinese Cymbal 76 Hi Wood Block
-53 Ride Bell 77 Low Wood Block
-54 Tambourine 78 Mute Cuica
-55 Splash Cymbal 79 Open Cuica
-56 Cowbell 80 Mute Triangle
-57 Crash Cymbal 2 81 Open Triangle
-58 Vibraslap
- */
-}
-
-//http://ccrma-www.stanford.edu/~craig/articles/linuxmidi/misc/essenmidi.html
-Sample *MidiMapper::map(jack_midi_event_t event)
+int MidiMapper::lookup(int note)
{
- Sample *sample = NULL;
-#if 0
- // printf("m"); fflush(stdout);
-
- if(event.size != 3) return NULL;
- if((event.buffer[0] & NOTE_ON) != NOTE_ON) return NULL;
-
- int key = event.buffer[1];
- int velocity = event.buffer[2];
-
- if(velocity == 0) return NULL;
- /*
- // Parse midi event
- printf("[ Time: %d Size: %d ", event.time, event.size);
- for(size_t j = 0; j < event.size; j++) {
- jack_midi_data_t m = event.buffer[j];
- printf(" Data: %d ", m);
- }
- printf("]\n");
- */
-
- if(drumkit->instruments.find(key) == drumkit->instruments.end()) {
- printf("Unknown instrument %d\n", key);
- return NULL;
- }
-
- Velocity *v = drumkit->instruments[key]->getVelocity(velocity);
-
- if(!v) return NULL;
- sample = v->getSample();
-#endif
- return sample;
+ if(midimap.find(note) == midimap.end()) return -1;
+ std::string instr = midimap[note];
+ if(instrmap.find(instr) == instrmap.end()) return -1;
+ return instrmap[instr];
}
diff --git a/src/midimapper.h b/src/midimapper.h
index c600d4f..74c268c 100644
--- a/src/midimapper.h
+++ b/src/midimapper.h
@@ -27,20 +27,18 @@
#ifndef __DRUMGIZMO_MIDIMAPPER_H__
#define __DRUMGIZMO_MIDIMAPPER_H__
-#include <jack/midiport.h>
-
-#include "drumkit.h"
-
#include <map>
+#include <string>
+
+typedef std::map<int, std::string> midimap_t;
+typedef std::map<std::string, int> instrmap_t;
class MidiMapper {
public:
- MidiMapper(DrumKit *drumkit);
-
- Sample *map(jack_midi_event_t event);
+ int lookup(int note);
-private:
- DrumKit *drumkit;
+ instrmap_t instrmap;
+ midimap_t midimap;
};
#endif/*__DRUMGIZMO_MIDIMAPPER_H__*/
diff --git a/src/midiplayer.cc b/src/midiplayer.cc
deleted file mode 100644
index 9864d1c..0000000
--- a/src/midiplayer.cc
+++ /dev/null
@@ -1,174 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * midiplayer.cc
- *
- * Sat Jul 26 15:23:19 CEST 2008
- * Copyright 2008 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 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 "midiplayer.h"
-
-int _process(jack_nframes_t nframes, void *arg)
-{
- return ((MidiPlayer*)arg)->process(nframes);
-}
-
-MidiPlayer::MidiPlayer(std::string filename)
-{
- timeline = 0;
- cur_event = NULL;
-
- printf("Loading MIDI file: %s\n", filename.c_str());
- smf = smf_load(filename.c_str());
- printf("done\n");
-
- jack_status_t status;
-
- jack_client_t *jack_client = jack_client_open("MidiGizmo", JackNullOption, &status);
-
- port = jack_port_register(jack_client,
- "midi_out",
- JACK_DEFAULT_MIDI_TYPE,
- JackPortIsOutput,// | JackPortIsTerminal,
- 0);
-
- jack_set_process_callback(jack_client, _process, this);
-
- jack_activate(jack_client);
-
- jack_connect(jack_client, "MidiGizmo:midi_out", "DrumGizmo:midi_in");
-
- jack_connect(jack_client, "DrumGizmo:Alesis", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Kick-R", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Kick-L", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:SnareTop", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:SnareBottom", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:SnareTrigger", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Tom1", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Tom2", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Tom3", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Tom4", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Ride", "system:playback_1");
- // jack_connect(jack_client, "DrumGizmo:Hihat", "system:playback_1");
-
- jack_connect(jack_client, "DrumGizmo:Alesis", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Kick-R", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Kick-L", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:SnareTop", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:SnareBottom", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:SnareTrigger", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Tom1", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Tom2", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Tom3", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Tom4", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Ride", "system:playback_2");
- // jack_connect(jack_client, "DrumGizmo:Hihat", "system:playback_2");
-
- jack_connect(jack_client, "DrumGizmo:OH-R", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:OH-L", "system:playback_2");
- jack_connect(jack_client, "DrumGizmo:Amb-R", "system:playback_1");
- jack_connect(jack_client, "DrumGizmo:Amb-L", "system:playback_2");
-
- /*
- timer = 0;
- next = 44100;
- */
-}
-
-MidiPlayer::~MidiPlayer()
-{
- smf_delete(smf);
-}
-
-#if 0 // All
-#define NUM_INST 11
-static int inst[] = { 35, 36, 38, 46, 41, 43, 45, 47, 49, 57, 51 };
-#endif
-
-#if 0 // Cymbals
-#define NUM_INST 3
-static int inst[] = { 51, 49, 57 };
-#endif
-
-#if 0 // Toms
-#define NUM_INST 4
-static int inst[] = { 41, 43, 45, 47 };
-#endif
-
-#if 0 // Kicks
-#define NUM_INST 2
-static int inst[] = { 35, 36 };
-#endif
-int MidiPlayer::process(jack_nframes_t nframes)
-{
- // if(jack_port_connected_to(test_midi_port, "DrumGizmo:midi_in")) {
- void* port_buf = jack_port_get_buffer(port, nframes);
-
-
- double cur_max_time = (double)(timeline + nframes) / 44100.0;
- double cur_min_time = (double)(timeline) / 44100.0;
-
- printf("["); fflush(stdout);
-
- if(!cur_event) cur_event = smf_get_next_event(smf);
-
- do {
- if(cur_event) {
- if(!smf_event_is_metadata(cur_event)) {
-
- printf("p"); fflush(stdout);
-
- jack_nframes_t time = (jack_nframes_t)((cur_event->time_seconds - cur_min_time) * 44100.0);
- jack_midi_event_write(port_buf, time, (jack_midi_data_t*)cur_event->midi_buffer,
- cur_event->midi_buffer_length);
- }
- } else {
- smf_rewind(smf);
- }
- cur_event = smf_get_next_event(smf);
- while(!cur_event) cur_event = smf_get_next_event(smf);
- } while(cur_event->time_seconds < cur_max_time && cur_event->time_seconds >= cur_min_time);
-
- timeline += nframes;
-
- printf("]\n"); fflush(stdout);
-
-
- /*
- if(timer > next) { // activate every second (44100 samples)
-
-
- jack_nframes_t time = (jack_nframes_t)(((float)rand() / (float)RAND_MAX) * nframes);
- size_t size = 3;
- jack_midi_data_t note[] = { NOTE_ON, inst[rand() % NUM_INST], rand() % 127};
- jack_midi_event_write(port_buf, time, note, size);
-
- timer = 0;
- next = (size_t)(((float)rand() / (float)RAND_MAX) * 0.2 * 44100);
- }
-
- timer += nframes;
- */
-
- return 0;
-}
-
-
diff --git a/src/midiplayer.h b/src/midiplayer.h
deleted file mode 100644
index e41c73a..0000000
--- a/src/midiplayer.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * midiplayer.h
- *
- * Sat Jul 26 15:23:18 CEST 2008
- * Copyright 2008 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 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.
- */
-#ifndef __DRUMGIZMO_MIDIPLAYER_H__
-#define __DRUMGIZMO_MIDIPLAYER_H__
-
-#include <jack/jack.h>
-#include <jack/midiport.h>
-#include <string>
-#include <smf.h>
-
-class MidiPlayer {
-public:
- MidiPlayer(std::string midifile);
- ~MidiPlayer();
-
- int process(jack_nframes_t nframes);
-
-private:
- jack_client_t *jack_client;
- jack_port_t *port;
-
- size_t timer;
- size_t next;
-
- smf_t *smf;
- smf_event_t *cur_event;
- unsigned int timeline;
-};
-
-#endif/*__DRUMGIZMO_MIDIPLAYER_H__*/