diff options
Diffstat (limited to 'libtdemid/midfile.h')
-rw-r--r-- | libtdemid/midfile.h | 99 |
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 |