#include <filereadmultitrack.h>
Inheritance diagram for jdkmidi::MIDIFileReadMultiTrack:
Public Member Functions | |
MIDIFileReadMultiTrack (MIDIMultiTrack *mlttrk) | |
virtual | ~MIDIFileReadMultiTrack () |
virtual void | mf_sysex (MIDIClockTime time, const MIDISystemExclusive &ex) |
virtual void | mf_arbitrary (MIDIClockTime time, int len, unsigned char *data) |
virtual void | mf_metamisc (MIDIClockTime time, int, int, unsigned char *) |
virtual void | mf_seqnum (MIDIClockTime time, int) |
virtual void | mf_smpte (MIDIClockTime time, int, int, int, int, int) |
virtual void | mf_timesig (MIDIClockTime time, int, int, int, int) |
virtual void | mf_tempo (MIDIClockTime time, unsigned long tempo) |
virtual void | mf_keysig (MIDIClockTime time, int, int) |
virtual void | mf_sqspecific (MIDIClockTime time, int, unsigned char *) |
virtual void | mf_text (MIDIClockTime time, int, int, unsigned char *) |
virtual void | mf_eot (MIDIClockTime time) |
virtual void | mf_error (char *) |
virtual void | mf_starttrack (int trk) |
virtual void | mf_endtrack (int trk) |
virtual void | mf_header (int, int, int) |
virtual void | ChanMessage (const MIDITimedMessage &msg) |
Protected Member Functions | |
void | AddEventToMultiTrack (const MIDITimedMessage &msg, MIDISystemExclusive *sysex, int dest_track) |
Protected Attributes | |
MIDIMultiTrack * | multitrack |
int | cur_track |
int | the_format |
int | num_tracks |
int | division |
|
Definition at line 43 of file jdkmidi_filereadmultitrack.cpp.
00044 : multitrack( mlttrk ), cur_track(-1) 00045 { 00046 00047 } |
|
Definition at line 49 of file jdkmidi_filereadmultitrack.cpp.
00050 { 00051 00052 } |
|
Definition at line 71 of file jdkmidi_filereadmultitrack.cpp. References jdkmidi::MIDIMultiTrack::GetNumTracks(), jdkmidi::MIDIMultiTrack::GetTrack(), multitrack, and jdkmidi::MIDITrack::PutEvent().
00076 { 00077 if( dest_track!=-1 && dest_track<multitrack->GetNumTracks() ) 00078 { 00079 MIDITrack *t = multitrack->GetTrack( dest_track ); 00080 00081 if( t ) 00082 { 00083 t->PutEvent( msg, sysex ); 00084 } 00085 } 00086 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 104 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::MIDIMessage::GetChannel(), and the_format.
00105 { 00106 if( the_format == 0 || cur_track==0 ) 00107 { 00108 // split format 0 files into separate tracks, one for each channel, 00109 // keep track 0 for tempo and meta-events 00110 00111 AddEventToMultiTrack( msg, 0, msg.GetChannel()+1 ); 00112 } 00113 else 00114 { 00115 AddEventToMultiTrack( msg, 0, cur_track ); 00116 } 00117 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 136 of file jdkmidi_filereadmultitrack.cpp. References jdkmidi::MIDIClockTime.
00137 {
00138 // ignore arbitrary byte strings
00139 }
|
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 66 of file jdkmidi_filereadmultitrack.cpp. References cur_track.
00067 { 00068 cur_track = -1; 00069 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 249 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::META_END_OF_TRACK, jdkmidi::META_EVENT, jdkmidi::MIDIClockTime, jdkmidi::MIDIMessage::SetMetaType(), jdkmidi::MIDIMessage::SetStatus(), and jdkmidi::MIDITimedMessage::SetTime().
00250 { 00251 MIDITimedMessage msg; 00252 00253 msg.SetStatus( META_EVENT ); 00254 msg.SetMetaType( META_END_OF_TRACK ); 00255 msg.SetTime( time ); 00256 00257 AddEventToMultiTrack( msg, 0, cur_track ); 00258 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 54 of file jdkmidi_filereadmultitrack.cpp.
00055 { 00056 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 89 of file jdkmidi_filereadmultitrack.cpp. References division, multitrack, num_tracks, jdkmidi::MIDIMultiTrack::SetClksPerBeat(), and the_format.
00094 { 00095 the_format = the_format_; 00096 num_tracks = ntrks_; 00097 division = division_; 00098 00099 multitrack->SetClksPerBeat( division ); 00100 00101 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 213 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::MIDIClockTime, jdkmidi::MIDIMessage::SetKeySig(), and jdkmidi::MIDITimedMessage::SetTime().
00214 { 00215 MIDITimedMessage msg; 00216 00217 msg.SetKeySig( (unsigned char)c, (unsigned char)v ); 00218 msg.SetTime( time ); 00219 00220 AddEventToMultiTrack( msg, 0, cur_track ); 00221 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 142 of file jdkmidi_filereadmultitrack.cpp. References jdkmidi::MIDIClockTime.
00143 {
00144 // ignore miscellaneous meta events
00145 }
|
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 148 of file jdkmidi_filereadmultitrack.cpp. References jdkmidi::MIDIClockTime.
00149 {
00150 // ignore sequence number events
00151 }
|
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 154 of file jdkmidi_filereadmultitrack.cpp. References jdkmidi::MIDIClockTime.
00155 {
00156 // ignore smpte events
00157 }
|
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 224 of file jdkmidi_filereadmultitrack.cpp. References jdkmidi::MIDIClockTime.
00225 {
00226 // ignore any sequencer specific messages
00227 }
|
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 60 of file jdkmidi_filereadmultitrack.cpp. References cur_track.
00061 { 00062 cur_track = trk; 00063 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 122 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::MIDIClockTime, jdkmidi::MIDIMessage::SetSysEx(), and jdkmidi::MIDITimedMessage::SetTime().
00123 { 00124 MIDITimedMessage msg; 00125 00126 msg.SetSysEx(); 00127 msg.SetTime(time); 00128 00129 MIDISystemExclusive *sysex = new MIDISystemExclusive( ex ); 00130 00131 AddEventToMultiTrack( msg, sysex, cur_track ); 00132 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 186 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::MIDIClockTime, jdkmidi::MIDIMessage::SetTempo32(), and jdkmidi::MIDITimedMessage::SetTime().
00187 { 00188 unsigned long tempo_bpm_times_32; 00189 00190 if( tempo==0 ) 00191 tempo=1; 00192 00193 // tempo is in microseconds per beat 00194 00195 // calculate beats per second by 00196 00197 float beats_per_second = 1e6 // 1 million microseconds per second 00198 / (double)tempo; 00199 00200 float beats_per_minute = beats_per_second * 60; 00201 00202 tempo_bpm_times_32 = (unsigned long) (beats_per_minute * 32.0); 00203 00204 MIDITimedMessage msg; 00205 00206 msg.SetTempo32( tempo_bpm_times_32 ); 00207 msg.SetTime( time ); 00208 00209 AddEventToMultiTrack( msg, 0, cur_track ); 00210 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 230 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::META_EVENT, jdkmidi::MIDIClockTime, jdkmidi::MIDISystemExclusive::PutSysByte(), jdkmidi::MIDIMessage::SetMetaType(), jdkmidi::MIDIMessage::SetStatus(), jdkmidi::MIDITimedMessage::SetTime(), and uchar.
00231 { 00232 MIDITimedMessage msg; 00233 00234 msg.SetStatus( META_EVENT ); 00235 msg.SetMetaType( (uchar)type ); // remember - MF_*_TEXT* id codes match META_*_TEXT codes 00236 msg.SetTime( time ); 00237 00238 MIDISystemExclusive *sysex = new MIDISystemExclusive(len); 00239 00240 for( int i=0; i<len; ++i ) 00241 { 00242 sysex->PutSysByte( s[i] ); 00243 } 00244 00245 AddEventToMultiTrack( msg, sysex, cur_track ); 00246 } |
|
Reimplemented from jdkmidi::MIDIFileEvents. Definition at line 160 of file jdkmidi_filereadmultitrack.cpp. References AddEventToMultiTrack(), cur_track, jdkmidi::MIDIClockTime, jdkmidi::MIDISystemExclusive::PutByte(), jdkmidi::MIDITimedMessage::SetTime(), and jdkmidi::MIDIMessage::SetTimeSig().
00167 { 00168 MIDITimedMessage msg; 00169 00170 int denom= 1<<denom_power; 00171 00172 msg.SetTimeSig( (unsigned char)num, (unsigned char)denom ); 00173 msg.SetTime( time ); 00174 00175 MIDISystemExclusive *sysex = new MIDISystemExclusive( 4 ); 00176 00177 sysex->PutByte( (unsigned char)num ); 00178 sysex->PutByte( (unsigned char)denom_power ); 00179 sysex->PutByte( (unsigned char)clks_per_metro ); 00180 sysex->PutByte( (unsigned char)notated_32nd_per_quarter ); 00181 00182 AddEventToMultiTrack( msg, sysex, cur_track ); 00183 } |
|
Definition at line 96 of file filereadmultitrack.h. |
|
Definition at line 100 of file filereadmultitrack.h. |
|
Definition at line 95 of file filereadmultitrack.h. |
|
Definition at line 99 of file filereadmultitrack.h. |
|
Definition at line 98 of file filereadmultitrack.h. |