jdkmidi class library documentation

Copyright © 2004 J.D. Koftinoff Software, Ltd.

Released under the GNU General Public License (GPL)




Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

jdkmidi::MIDIFile Class Reference

#include <file.h>

Inheritance diagram for jdkmidi::MIDIFile:

jdkmidi::MIDIFileEvents jdkmidi::MIDIFileRead jdkmidi::MIDIFileWrite jdkmidi::MIDIFileReadMultiTrack jdkmidi::MIDIFileShow List of all members.

Public Types

enum  {
  MF_SEQUENCE_NUMBER = 0,
  MF_TEXT_EVENT = 1,
  MF_COPYRIGHT = 2,
  MF_TRACK_NAME = 3,
  MF_INSTRUMENT_NAME = 4,
  MF_LYRIC = 5,
  MF_MARKER = 6,
  MF_CUE_POINT = 7,
  MF_GENERIC_TEXT_8 = 8,
  MF_GENERIC_TEXT_9 = 9,
  MF_GENERIC_TEXT_A = 0xA,
  MF_GENERIC_TEXT_B = 0xB,
  MF_GENERIC_TEXT_C = 0xC,
  MF_GENERIC_TEXT_D = 0xD,
  MF_GENERIC_TEXT_E = 0xE,
  MF_GENERIC_TEXT_F = 0xF,
  MF_OUTPUT_CABLE = 0x21,
  MF_TRACK_LOOP = 0x2E,
  MF_END_OF_TRACK = 0x2F,
  MF_TEMPO = 0x51,
  MF_SMPTE = 0x54,
  MF_TIMESIG = 0x58,
  MF_KEYSIG = 0x59,
  MF_SEQUENCER_SPECIFIC = 0x7F
}

Public Member Functions

 MIDIFile ()
virtual ~MIDIFile ()

Static Public Member Functions

unsigned long ConvertTempoToFreq (short division, MIDITempo &tempo)
unsigned long To32Bit (unsigned char a, unsigned char b, unsigned char c, unsigned char d)
unsigned short To16Bit (unsigned char a, unsigned char b)
unsigned long ReadVariableLengthNumber (unsigned char **in)
unsigned char * WriteVariableLengthNumber (unsigned long num, unsigned char *out)

Member Enumeration Documentation

anonymous enum
 

Enumeration values:
MF_SEQUENCE_NUMBER 
MF_TEXT_EVENT 
MF_COPYRIGHT 
MF_TRACK_NAME 
MF_INSTRUMENT_NAME 
MF_LYRIC 
MF_MARKER 
MF_CUE_POINT 
MF_GENERIC_TEXT_8 
MF_GENERIC_TEXT_9 
MF_GENERIC_TEXT_A 
MF_GENERIC_TEXT_B 
MF_GENERIC_TEXT_C 
MF_GENERIC_TEXT_D 
MF_GENERIC_TEXT_E 
MF_GENERIC_TEXT_F 
MF_OUTPUT_CABLE 
MF_TRACK_LOOP 
MF_END_OF_TRACK 
MF_TEMPO 
MF_SMPTE 
MF_TIMESIG 
MF_KEYSIG 
MF_SEQUENCER_SPECIFIC 

Definition at line 80 of file file.h.

00081         {
00082           MF_SEQUENCE_NUMBER  =0,
00083           MF_TEXT_EVENT   =1,
00084           MF_COPYRIGHT    =2,
00085           MF_TRACK_NAME   =3,
00086           MF_INSTRUMENT_NAME  =4,
00087           MF_LYRIC    =5,
00088           MF_MARKER   =6,
00089           MF_CUE_POINT    =7,
00090           MF_GENERIC_TEXT_8 =8,
00091           MF_GENERIC_TEXT_9 =9,
00092           MF_GENERIC_TEXT_A =0xA,
00093           MF_GENERIC_TEXT_B =0xB,
00094           MF_GENERIC_TEXT_C =0xC,
00095           MF_GENERIC_TEXT_D =0xD,
00096           MF_GENERIC_TEXT_E =0xE,
00097           MF_GENERIC_TEXT_F =0xF,
00098           
00099           MF_OUTPUT_CABLE   =0x21,
00100           MF_TRACK_LOOP   =0x2E,
00101           MF_END_OF_TRACK   =0x2F,
00102           MF_TEMPO    =0x51,
00103           MF_SMPTE    =0x54,
00104           MF_TIMESIG    =0x58,
00105           MF_KEYSIG   =0x59,
00106           MF_SEQUENCER_SPECIFIC =0x7F
00107         };


Constructor & Destructor Documentation

jdkmidi::MIDIFile::MIDIFile  ) 
 

Definition at line 47 of file jdkmidi_file.cpp.

00048   {
00049   } 

jdkmidi::MIDIFile::~MIDIFile  )  [virtual]
 

Definition at line 51 of file jdkmidi_file.cpp.

00052   {
00053   } 


Member Function Documentation

unsigned long jdkmidi::MIDIFile::ConvertTempoToFreq short  division,
MIDITempo tempo
[static]
 

Definition at line 55 of file jdkmidi_file.cpp.

References jdkmidi::MIDITempo::GetMIDIFileTempo().

00059   {
00060     if( division>0 )
00061     {
00062       long clocks_per_beat = (long)division*1000;
00063       long micro_sec_per_beat = tempo.GetMIDIFileTempo()/1000;
00064       
00065       return (unsigned long) clocks_per_beat/micro_sec_per_beat;
00066     }
00067     else
00068     {
00069       // TO DO: handle smpte frame rate references
00070       return 120;
00071     }
00072   } 

unsigned long jdkmidi::MIDIFile::ReadVariableLengthNumber unsigned char **  in  )  [static]
 

Definition at line 75 of file jdkmidi_file.cpp.

00076   {
00077     unsigned long num=0;
00078     unsigned char *t=*in;
00079     
00080     do
00081     {
00082       num <<= 7;
00083       num |= (*t);
00084     } while( (*t++)&0x80 );
00085     
00086     *in=t;
00087     return num;
00088   } 

unsigned short jdkmidi::MIDIFile::To16Bit unsigned char  a,
unsigned char  b
[inline, static]
 

Definition at line 137 of file file.h.

00138         {
00139           return    (unsigned short)(((unsigned short)a << 8)
00140                                            + ((unsigned short)b << 0));
00141         } 

unsigned long jdkmidi::MIDIFile::To32Bit unsigned char  a,
unsigned char  b,
unsigned char  c,
unsigned char  d
[inline, static]
 

Definition at line 124 of file file.h.

00125         {
00126           return    ((unsigned long)a << 24)
00127             + ((unsigned long)b << 16)
00128             + ((unsigned long)c << 8 )
00129             + ((unsigned long)d << 0 );
00130         } 

unsigned char * jdkmidi::MIDIFile::WriteVariableLengthNumber unsigned long  num,
unsigned char *  out
[static]
 

Definition at line 90 of file jdkmidi_file.cpp.

00091   {
00092     register unsigned long buffer;
00093     
00094     buffer = num & 0x7f;
00095     while( (num >>=7 )>0 )
00096     {
00097       buffer <<= 8;
00098       buffer |=0x80;
00099       buffer += (num & 0x7f);
00100     }
00101     
00102     do
00103     {
00104       *out++ = (unsigned char)buffer;
00105       if( buffer & 0x80 )
00106         buffer >>=8;
00107       else
00108         break;            
00109     } while( true );
00110     
00111     return out;
00112   } 


The documentation for this class was generated from the following files: