summaryrefslogtreecommitdiffstats
path: root/libtdemid/midfile.h
diff options
context:
space:
mode:
Diffstat (limited to 'libtdemid/midfile.h')
-rw-r--r--libtdemid/midfile.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/libtdemid/midfile.h b/libtdemid/midfile.h
new file mode 100644
index 000000000..0791ff0fa
--- /dev/null
+++ b/libtdemid/midfile.h
@@ -0,0 +1,99 @@
+/* midfile.h - function which reads a midi file,and creates the track classes
+ This file is part of LibKMid 0.9.5
+ Copyright (C) 1997,98,99,2000 Antonio Larrosa Jimenez
+ LibKMid's homepage : http://www.arrakis.es/~rlarrosa/libtdemid.html
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ Send comments and bug fixes to Antonio Larrosa <larrosa@kde.org>
+
+ ***************************************************************************/
+#ifndef _MIDFILE_H
+#define _MIDFILE_H
+
+#include <libtdemid/dattypes.h>
+#include <libtdemid/track.h>
+#include <stdio.h>
+#include <tdelibs_export.h>
+
+/**
+ * Contains all the information about a MIDI file.
+ *
+ * @short All the information about a MIDI file.
+ * @version 0.9.5 17/01/2000
+ * @author Antonio Larrosa Jimenez <larrosa@kde.org>
+ */
+struct MidiFileInfo
+{
+ /**
+ * Format of MIDI file.
+ */
+ int format;
+
+ /**
+ * Number of tracks.
+ */
+ int ntracks;
+
+ /**
+ * Ticks per cuarter note.
+ */
+ int ticksPerCuarterNote;
+
+ /**
+ * Total number of MIDI ticks
+ */
+ ulong ticksTotal;
+
+ /**
+ * Total number of milliseconds
+ */
+ double millisecsTotal;
+
+ ulong ticksPlayed;
+
+ /**
+ * Patches used in the MIDI file.
+ *
+ * In each position of the array it stores the number of times the
+ * corresponding patch is used. So, if a MIDI file plays 782 notes
+ * with a piano, patchesUsed[0] will store 782. In the same way,
+ * if it doesn't use the Music Box patch, patchesUsed[10] will be 0.
+ *
+ */
+ int patchesUsed[256];
+
+};
+
+double KMID_EXPORT tempoToMetronomeTempo(ulong x);
+double metronomeTempoToTempo(ulong x);
+
+/**
+ * Reads a midi file.
+ *
+ * @param name the filename of the midi file to load.
+ * @param info a pointer to the MidiFileInfo struct that will be
+ * filled with the information of the loaded file.
+ * @param ok return status.
+ * @return an array of MidiTrack objects with the contents of the file.
+ */
+MidiTrack **readMidiFile( const char *name, MidiFileInfo *info, int &ok);
+
+void parseInfoData( MidiFileInfo *info, MidiTrack **tracks, float ratioTempo);
+
+void parsePatchesUsed( MidiTrack **tracks, MidiFileInfo *info, int gm);
+
+#endif