diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /libkmid/midfile.h | |
download | tdelibs-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.h | 99 |
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 |