summaryrefslogtreecommitdiff
path: root/muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h')
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h b/muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h
new file mode 100644
index 00000000..c88f679c
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/Seq/MIDIFile.h
@@ -0,0 +1,90 @@
+/*
+ ZynAddSubFX - a software synthesizer
+
+ MIDIFile.h - MIDI file loader
+ Copyright (C) 2003-2005 Nasca Octavian Paul
+ Author: Nasca Octavian Paul
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of version 2 of the GNU General Public License
+ as published by the Free Software Foundation.
+
+ This program 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 (version 2) for more details.
+
+ You should have received a copy of the GNU General Public License (version 2)
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+
+#ifndef MIDIFILE_H
+#define MIDIFILE_H
+
+#include "../globals.h"
+#include "MIDIEvents.h"
+
+class MIDIFile{
+ public:
+ MIDIFile();
+ ~MIDIFile();
+
+ //returns -1 if there is an error, otherwise 0
+ int loadfile(char *filename);
+
+ //returns -1 if there is an error, otherwise 0
+ int parsemidifile(MIDIEvents *me_);
+
+ private:
+ MIDIEvents *me;
+
+ unsigned char *midifile;
+ int midifilesize,midifilek;
+ bool midieof;
+
+ //returns -1 if there is an error, otherwise 0
+ int parsetrack(int ntrack);
+
+ void parsenoteoff(char ntrack,char chan,unsigned int dt);
+ void parsenoteon(char ntrack,char chan,unsigned int dt);
+ void parsecontrolchange(char ntrack,char chan,unsigned int dt);
+ void parsepitchwheel(char ntrack,char chan, unsigned int dt);
+ void parsemetaevent(unsigned char mtype,unsigned char mlength);
+
+ void add_dt(char ntrack, unsigned int dt);
+
+ void clearmidifile();
+
+ //convert the delta-time to internal format
+ unsigned int convertdt(unsigned int dt);
+
+ /* Low Level MIDIfile functions */
+
+ //get a byte from the midifile
+ unsigned char getbyte();
+
+ //peek the current byte from the midifile
+ unsigned char peekbyte();
+
+ //get a set of 4 bytes from the midifile
+ unsigned int getint32();
+
+ //get a word of 2 bytes from the midifile
+ unsigned short int getint16();
+
+ //read a variable length quantity
+ unsigned int getvarint32();
+
+ //skip some bytes
+ void skipnbytes(int n);
+
+ struct {
+ double tick;//how many seconds one tick has
+
+ }data;
+
+};
+
+#endif