• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • libkmid
 

libkmid

track.h
00001 /*  track.h  - class track, which has a midi file track and its events
00002     This file is part of LibKMid 0.9.5
00003     Copyright (C) 1997,98,99,2000  Antonio Larrosa Jimenez
00004     LibKMid's homepage : http://www.arrakis.es/~rlarrosa/libkmid.html
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010  
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015  
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.                                                  
00020 
00021     Send comments and bug fixes to Antonio Larrosa <larrosa@kde.org>
00022 
00023 ***************************************************************************/
00024 #ifndef _TRACK_H
00025 #define _TRACK_H
00026 
00027 #include <stdio.h>
00028 #include <libkmid/dattypes.h>
00029 
00037 struct MidiEvent
00038 {
00044   uchar command;
00045 
00049   uchar   chn;
00050 
00054   uchar   note;
00055 
00059   uchar   vel;
00060 
00064   uchar   patch;
00065 
00069   uchar   ctl;
00070 
00074   uchar   d1;
00075 
00079   uchar   d2;
00080 
00084   uchar   d3;
00085 
00089   uchar   d4;
00090 
00094   uchar   d5;
00095 
00099   uchar   d6;
00100 
00104   ulong length;
00105 
00109   uchar  *data;
00110 
00111 };
00112 
00126 class MidiTrack
00127 {
00128   private:
00129     class MidiTrackPrivate;
00130     MidiTrackPrivate *d;
00131 
00132     int id;
00133 
00134     ulong size;
00135     uchar *data;
00136     uchar *ptrdata;
00137 
00138     bool  note[16][128]; // Notes that are set on or off by this track
00139     ulong current_ticks; // Total number of ticks since beginning of song
00140     ulong delta_ticks;   // Delta ticks from previous event to next event
00141     ulong wait_ticks;    // Wait ticks from previous event in other track
00142     // to next event in this track
00143 
00144     ulong currentpos; // Some songs don't have a endoftrack event, so
00145     // we have to see when currentpos > size
00146     int endoftrack;
00147 
00148     ulong readVariableLengthValue(void);
00149 
00150     uchar lastcommand;  // This is to run light without overbyte :-)
00151 
00152 
00153     double current_time; // in ms.
00154     double time_at_previous_tempochange;  // in ms.
00155     double ticks_from_previous_tempochange; // in ticks 
00156     //  double  time_to_next_event;  // in ms.
00157     double  time_at_next_event;  // in ms.
00158     int tPCN;
00159     ulong   tempo;
00160 
00161     int power2to(int i);
00162 
00163   public:
00172     MidiTrack(FILE *file,int tpcn,int Id);
00173 
00177     ~MidiTrack();
00178 
00186     int ticksPassed (ulong ticks); 
00187 
00195     int msPassed    (ulong ms);
00196 
00200     int currentMs   (double ms);
00201 
00205     ulong   waitTicks   (void) { return wait_ticks; }
00206 
00207     //  ulong   waitMs (void) {return time_to_next_event;};
00208 
00212     double   absMsOfNextEvent (void) { return time_at_next_event; }
00213 
00217     void    changeTempo(ulong t);
00218 
00223     void    readEvent(MidiEvent *ev);
00224 
00228     void    init(void);
00229 
00233     void    clear(void);
00234 
00235 };
00236 
00237 #endif

libkmid

Skip menu "libkmid"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

libkmid

Skip menu "libkmid"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for libkmid by doxygen 1.7.6.1
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |