summaryrefslogtreecommitdiffstats
path: root/libkmid/midfile.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch)
tree5ac38a06f3dde268dc7927dc155896926aaf7012 /libkmid/midfile.h
downloadtdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz
tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkmid/midfile.h')
-rw-r--r--libkmid/midfile.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/libkmid/midfile.h b/libkmid/midfile.h
new file mode 100644
index 000000000..843e4fc44
--- /dev/null
+++ b/libkmid/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/libkmid.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 <libkmid/dattypes.h>
+#include <libkmid/track.h>
+#include <stdio.h>
+#include <kdelibs_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