#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. |