#include <advancedsequencer.h>
|
|
Definition at line 28 of file jdkmidi_advancedsequencer.cpp.
00029 : 00030 thru_processor(2), 00031 thru_transposer(), 00032 thru_rechannelizer(), 00033 driver(256,stdout), 00034 tracks(17), 00035 notifier( stdout ), 00036 seq( &tracks, ¬ifier ), 00037 mgr( &driver, ¬ifier, &seq ), 00038 repeat_start_measure(0), 00039 repeat_end_measure(0), 00040 repeat_play_mode(false), 00041 num_warp_positions(0), 00042 file_loaded(false), 00043 chain_mode(false) 00044 { 00045 } |
|
|
Definition at line 47 of file jdkmidi_advancedsequencer.cpp. References CloseMIDI(), num_warp_positions, Stop(), and warp_positions.
00048 {
00049 Stop();
00050 CloseMIDI();
00051
00052 for( int i=0; i<num_warp_positions; ++i )
00053 {
00054 delete warp_positions[i];
00055 }
00056 }
|
|
|
Definition at line 89 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), driver, and Stop().
|
|
|
Definition at line 642 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::FixQuotes(), jdkmidi::MIDISystemExclusive::GetBuf(), jdkmidi::MIDIMultiTrack::GetClksPerBeat(), jdkmidi::MIDITrack::GetEventAddress(), jdkmidi::MIDISystemExclusive::GetLength(), jdkmidi::MIDIMessage::GetMetaType(), jdkmidi::MIDITrack::GetNumEvents(), jdkmidi::MIDIBigMessage::GetSysEx(), jdkmidi::MIDITimedBigMessage::GetTime(), jdkmidi::MIDIMessage::GetTimeSigDenominator(), jdkmidi::MIDIMessage::GetTimeSigNumerator(), jdkmidi::MIDIMultiTrack::GetTrack(), jdkmidi::MIDIMessage::IsMetaEvent(), jdkmidi::MIDIMessage::IsTextEvent(), jdkmidi::MIDIMessage::IsTimeSig(), marker_times, jdkmidi::META_CUE_TEXT, jdkmidi::META_GENERIC_TEXT, jdkmidi::META_MARKER_TEXT, jdkmidi::MIDIClockTime, num_markers, and tracks.
00643 {
00644 if( !file_loaded )
00645 {
00646 list->clear();
00647 num_markers=0;
00648 return;
00649 }
00650
00651 MIDITrack *t = tracks.GetTrack(0);
00652
00653 list->clear();
00654 int cnt=0;
00655
00656 int measure=0;
00657 int beat=0;
00658
00659 int timesig_numerator=4;
00660 int timesig_denominator=4;
00661
00662 MIDIClockTime last_beat_time=0;
00663 MIDIClockTime last_event_time=0;
00664 int clks_per_beat=tracks.GetClksPerBeat();
00665
00666 for( int i=0; i<t->GetNumEvents(); ++i )
00667 {
00668 MIDITimedBigMessage *m = t->GetEventAddress(i);
00669
00670 if( m )
00671 {
00672 // how many beats have gone by since the last event?
00673
00674 long beats_gone_by = (m->GetTime()-last_beat_time)/clks_per_beat;
00675
00676 if( beats_gone_by>0 )
00677 {
00678 // calculate what our new measure/beat is
00679 beat += beats_gone_by;
00680 // carry over beat overflow to measure
00681 measure += beat/timesig_numerator;
00682 beat = beat%timesig_numerator;
00683 last_beat_time += (clks_per_beat * beats_gone_by);
00684 }
00685
00686
00687 if( m->IsMetaEvent() && m->IsTimeSig() )
00688 {
00689 timesig_numerator = m->GetTimeSigNumerator();
00690 timesig_denominator = m->GetTimeSigDenominator();
00691 clks_per_beat=tracks.GetClksPerBeat() * 4 / timesig_denominator;
00692 }
00693
00694 if( m->IsTextEvent() && m->GetSysEx() )
00695 {
00696 if( (m->GetMetaType() == META_GENERIC_TEXT )
00697 || m->GetMetaType() == META_MARKER_TEXT
00698 || m->GetMetaType() == META_CUE_TEXT )
00699 {
00700 char buf[256];
00701 char line[256];
00702
00703 memcpy( buf, m->GetSysEx()->GetBuf(), m->GetSysEx()->GetLength() );
00704 buf[ m->GetSysEx()->GetLength() ] = '\0';
00705 FixQuotes( buf );
00706
00707 sprintf( line, "%03d:%d %s", measure+1, beat+1, buf );
00708 list->push_back( std::string(line) );
00709 marker_times[ cnt++ ] = m->GetTime();
00710 }
00711 }
00712
00713 last_event_time = m->GetTime();
00714 }
00715 }
00716 num_markers = cnt;
00717 }
|
|
|
Definition at line 789 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetState(), jdkmidi::MIDISequencer::GoToMeasure(), MAX_WARP_POSITIONS, MEASURES_PER_WARP, num_warp_positions, seq, Stop(), and warp_positions.
00790 {
00791 if( !file_loaded )
00792 {
00793 for( int i=0; i<num_warp_positions; ++i )
00794 {
00795 delete warp_positions[i];
00796 }
00797 num_warp_positions=0;
00798 return;
00799 }
00800
00801 Stop();
00802
00803 // delete all our current warp positions
00804
00805 for( int i=0; i<num_warp_positions; ++i )
00806 {
00807 delete warp_positions[i];
00808 }
00809 num_warp_positions=0;
00810
00811
00812
00813 while(num_warp_positions<MAX_WARP_POSITIONS)
00814 {
00815 if( !seq.GoToMeasure( num_warp_positions*MEASURES_PER_WARP, 0 ) )
00816 {
00817 break;
00818 }
00819
00820 // save current sequencer state at this position
00821 warp_positions[num_warp_positions++] =
00822 new MIDISequencerState(
00823 *seq.GetState()
00824 );
00825 }
00826
00827 seq.GoToMeasure( 0,0 );
00828 }
|
|
|
Definition at line 752 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDIMessage::GetChannel(), jdkmidi::MIDITrack::GetEventAddress(), jdkmidi::MIDITrack::GetNumEvents(), jdkmidi::MIDIMultiTrack::GetTrack(), jdkmidi::MIDIMessage::IsChannelMsg(), and tracks.
00753 {
00754 if( !file_loaded )
00755 {
00756 return -1;
00757 }
00758
00759 int first_channel = -1;
00760
00761 MIDITrack *t = tracks.GetTrack(trk);
00762
00763 if( t )
00764 {
00765 // go through all events
00766 // until we find a channel message
00767 // and then return the channel number plus 1
00768
00769 for( int i=0; i<t->GetNumEvents(); ++i )
00770 {
00771 MIDITimedBigMessage *m = t->GetEventAddress(i);
00772
00773 if( m )
00774 {
00775 if( m->IsChannelMsg() )
00776 {
00777 first_channel = m->GetChannel() + 1;
00778 break;
00779 }
00780 }
00781 }
00782
00783 }
00784
00785 return first_channel;
00786 }
|
|
|
Definition at line 463 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetCurrentBeat(), and seq.
00464 {
00465 if( !file_loaded )
00466 {
00467 return 0;
00468 }
00469
00470 return seq.GetCurrentBeat();
00471 }
|
|
|
Definition at line 720 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetCurrentMIDIClockTime(), marker_times, jdkmidi::MIDIClockTime, num_markers, and seq.
00721 {
00722 if( !file_loaded )
00723 {
00724 return -1;
00725 }
00726
00727 // find marker with largest time that
00728 // is before cur_time
00729
00730 MIDIClockTime cur_time = seq.GetCurrentMIDIClockTime();
00731
00732 cur_time+=20;
00733
00734 int last=-1;
00735
00736 for( int i=0; i<num_markers; ++i )
00737 {
00738 if( marker_times[i] > cur_time )
00739 {
00740 break;
00741 }
00742 else
00743 {
00744 last=i;
00745 }
00746 }
00747 return last;
00748 }
|
|
|
Definition at line 452 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetCurrentMeasure(), and seq.
00453 {
00454 if( !file_loaded )
00455 {
00456 return 0;
00457 }
00458
00459 return seq.GetCurrentMeasure();
00460 }
|
|
|
Definition at line 120 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIProcessorRechannelizer::GetRechanMap(), and thru_rechannelizer.
00121 {
00122 return thru_rechannelizer.GetRechanMap( 0 );
00123 }
|
|
|
Definition at line 107 of file jdkmidi_advancedsequencer.cpp. References driver, and jdkmidi::MIDIDriver::GetThruEnable().
00108 {
00109 return driver.GetThruEnable();
00110 }
|
|
|
Definition at line 134 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIProcessorTransposer::GetTransposeChannel(), and thru_transposer.
00135 {
00136 return thru_transposer.GetTransposeChannel( 0 );
00137 }
|
|
|
Definition at line 439 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDISequencer::GetCurrentTempo(), and seq.
00440 {
00441 return seq.GetCurrentTempo();
00442 }
|
|
|
Definition at line 445 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDISequencer::GetCurrentTempo(), jdkmidi::MIDISequencer::GetCurrentTempoScale(), and seq.
|
|
|
Definition at line 485 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackState(), seq, and jdkmidi::MIDISequencerTrackState::timesig_denominator.
00486 {
00487 if( !file_loaded )
00488 {
00489 return 4;
00490 }
00491
00492 return seq.GetTrackState(0)->timesig_denominator;
00493 }
|
|
|
Definition at line 475 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackState(), seq, and jdkmidi::MIDISequencerTrackState::timesig_numerator.
00476 {
00477 if( !file_loaded )
00478 {
00479 return 4;
00480 }
00481 return seq.GetTrackState(0)->timesig_numerator;
00482 }
|
|
|
Definition at line 515 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackState(), seq, and jdkmidi::MIDISequencerTrackState::track_name.
00516 {
00517 if( !file_loaded )
00518 {
00519 return "";
00520 }
00521
00522 return seq.GetTrackState(trk)->track_name;
00523 }
|
|
|
Definition at line 497 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDIMatrix::GetTotalCount(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDIManager::IsSeqStop(), mgr, jdkmidi::MIDISequencerTrackState::note_matrix, and seq.
00498 {
00499 if( !file_loaded )
00500 {
00501 return 0;
00502 }
00503
00504 if( mgr.IsSeqStop() )
00505 {
00506 return 0;
00507 }
00508 else
00509 {
00510 return seq.GetTrackState(trk)->note_matrix.GetTotalCount();
00511 }
00512 }
|
|
|
Definition at line 575 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackProcessor(), jdkmidi::MIDISequencerTrackProcessor::rechannel, and seq.
00576 {
00577 if( !file_loaded )
00578 {
00579 return -1;
00580 }
00581
00582
00583 return seq.GetTrackProcessor(trk)->rechannel;
00584 }
|
|
|
Definition at line 629 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackProcessor(), seq, and jdkmidi::MIDISequencerTrackProcessor::transpose.
00630 {
00631 if( !file_loaded )
00632 {
00633 return 0;
00634 }
00635
00636 return seq.GetTrackProcessor(trk)->transpose;
00637 }
|
|
|
Definition at line 549 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackProcessor(), seq, and jdkmidi::MIDISequencerTrackProcessor::velocity_scale.
00550 {
00551 if( !file_loaded )
00552 {
00553 return 100;
00554 }
00555
00556 return seq.GetTrackProcessor(trk)->velocity_scale;
00557 }
|
|
|
Definition at line 526 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackState(), seq, and jdkmidi::MIDISequencerTrackState::volume.
00527 {
00528 if( !file_loaded )
00529 {
00530 return 100;
00531 }
00532
00533 return seq.GetTrackState(trk)->volume;
00534 }
|
|
||||||||||||
|
Definition at line 215 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIMatrix::Clear(), file_loaded, jdkmidi::MIDISequencer::GetNumTracks(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDISequencer::GoToMeasure(), jdkmidi::MIDIManager::IsSeqPlay(), MEASURES_PER_WARP, mgr, jdkmidi::MIDISequencerTrackState::note_matrix, num_warp_positions, Play(), seq, jdkmidi::MIDISequencer::SetState(), Stop(), and warp_positions.
00216 {
00217 if( !file_loaded )
00218 {
00219 return;
00220 }
00221 // figure out which warp item we use
00222 // try warp to the last warp point BEFORE the
00223 // requested measure
00224
00225 int warp_to_item = (measure-1) / MEASURES_PER_WARP;
00226
00227
00228 if( warp_to_item >= num_warp_positions )
00229 warp_to_item = num_warp_positions-1;
00230
00231 if( warp_to_item<0 )
00232 warp_to_item=0;
00233
00234
00235 if( mgr.IsSeqPlay() )
00236 {
00237 Stop();
00238
00239 if( warp_positions[warp_to_item] )
00240 {
00241 seq.SetState( warp_positions[warp_to_item] );
00242 }
00243 seq.GoToMeasure( measure, beat );
00244 Play();
00245 }
00246 else
00247 {
00248 if( warp_positions[warp_to_item] )
00249 {
00250 seq.SetState( warp_positions[warp_to_item] );
00251 }
00252
00253 seq.GoToMeasure( measure, beat );
00254 for( int i=0; i<seq.GetNumTracks(); ++i )
00255 {
00256 seq.GetTrackState(i)->note_matrix.Clear();
00257 }
00258 }
00259 }
|
|
|
Definition at line 199 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDISequencer::GoToTime(), jdkmidi::MIDIManager::IsSeqPlay(), mgr, jdkmidi::MIDIClockTime, Play(), seq, and Stop().
|
|
|
Definition at line 93 of file advancedsequencer.h. References chain_mode.
00093 { return chain_mode; }
|
|
|
Definition at line 53 of file advancedsequencer.h. References jdkmidi::MIDIManager::IsSeqPlay(), and mgr.
00054 {
00055 return mgr.IsSeqPlay();
00056 }
|
|
|
Definition at line 141 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), chain_mode, jdkmidi::MIDIMultiTrack::Clear(), driver, ExtractWarpPositions(), file_loaded, GoToMeasure(), jdkmidi::MIDIFileRead::Parse(), Reset(), jdkmidi::MIDISequencer::ResetAllTracks(), seq, Stop(), and tracks.
00142 {
00143 char realname[1024];
00144
00145 strcpy( realname, fname );
00146 int orignamelen = strlen(fname);
00147
00148 chain_mode =false;
00149 if( orignamelen>0 )
00150 {
00151 if( realname[orignamelen-1]=='+' )
00152 {
00153 realname[orignamelen-1]=0;
00154 chain_mode = true;
00155 }
00156 }
00157
00158 MIDIFileReadStreamFile mfreader_stream( realname );
00159 MIDIFileReadMultiTrack track_loader( &tracks );
00160 MIDIFileRead reader( &mfreader_stream, &track_loader );
00161
00162 Stop();
00163 driver.AllNotesOff();
00164
00165 tracks.Clear();
00166 seq.ResetAllTracks();
00167
00168 if( reader.Parse() )
00169 {
00170 file_loaded=true;
00171
00172 Reset();
00173
00174 GoToMeasure( 0 );
00175 ExtractWarpPositions();
00176
00177 }
00178 else
00179 {
00180 file_loaded=false;
00181 }
00182 return file_loaded;
00183 }
|
|
||||||||||||||||
|
Definition at line 60 of file jdkmidi_advancedsequencer.cpp. References CloseMIDI(), and driver.
00061 {
00062 #if 0
00063 CloseMIDI();
00064
00065 if( !driver.StartTimer( timer_resolution ) )
00066 {
00067 return false;
00068 }
00069
00070 if( in_port!=-1 )
00071 {
00072 driver.OpenMIDIInPort( in_port );
00073 }
00074
00075 if( driver.OpenMIDIOutPort( out_port ) )
00076 {
00077 return true;
00078 }
00079 else
00080 {
00081 return false;
00082 }
00083 #else
00084 return true;
00085 #endif
00086 }
|
|
|
Definition at line 323 of file jdkmidi_advancedsequencer.cpp. References file_loaded, and Stop().
00324 {
00325 if( !file_loaded )
00326 {
00327 return;
00328 }
00329 Stop();
00330 }
|
|
|
Definition at line 262 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIMatrix::Clear(), file_loaded, jdkmidi::MIDISequencer::GetCurrentMIDIClockTime(), jdkmidi::MIDISequencer::GetCurrentTimeInMs(), jdkmidi::MIDISequencer::GetNumTracks(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDISequencer::GoToMeasure(), jdkmidi::MIDISequencer::GoToTime(), mgr, jdkmidi::MIDIClockTime, jdkmidi::MIDISequencerTrackState::note_matrix, repeat_play_mode, repeat_start_measure, seq, jdkmidi::MIDIManager::SeqPlay(), jdkmidi::MIDIManager::SetSeqOffset(), jdkmidi::MIDIManager::SetTimeOffset(), and Stop().
00263 {
00264 if( !file_loaded )
00265 {
00266 return;
00267 }
00268
00269 Stop();
00270
00271 for( int i=0; i<seq.GetNumTracks(); ++i )
00272 {
00273 seq.GetTrackState(i)->note_matrix.Clear();
00274 }
00275
00276
00277 if( repeat_play_mode )
00278 {
00279 seq.GoToMeasure( repeat_start_measure );
00280 }
00281
00282 MIDIClockTime cur_time = seq.GetCurrentMIDIClockTime();
00283
00284 if( (long)cur_time>-clock_offset )
00285 cur_time+=clock_offset;
00286
00287 seq.GoToTime( cur_time );
00288
00289 mgr.SetSeqOffset( (unsigned long)seq.GetCurrentTimeInMs() );
00290 mgr.SetTimeOffset( 0 );
00291
00292 mgr.SeqPlay();
00293 }
|
|
||||||||||||||||
|
Definition at line 297 of file jdkmidi_advancedsequencer.cpp. References file_loaded, mgr, repeat_end_measure, repeat_play_mode, repeat_start_measure, and jdkmidi::MIDIManager::SetRepeatPlay().
00298 {
00299 if( !file_loaded )
00300 {
00301 return;
00302 }
00303
00304 if( start_measure < end_measure && start_measure>=0 )
00305 {
00306 repeat_play_mode = enable;
00307 repeat_start_measure = start_measure;
00308 repeat_end_measure = end_measure;
00309 }
00310 else
00311 {
00312 repeat_play_mode = false;
00313 }
00314
00315 mgr.SetRepeatPlay(
00316 repeat_play_mode,
00317 repeat_start_measure,
00318 repeat_end_measure
00319 );
00320 }
|
|
|
Definition at line 186 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), driver, GoToMeasure(), jdkmidi::MIDISequencer::ResetAllTracks(), seq, SetTempoScale(), Stop(), UnmuteAllTracks(), and UnSoloTrack().
00187 {
00188 Stop();
00189 driver.AllNotesOff();
00190 UnmuteAllTracks();
00191 UnSoloTrack();
00192 SetTempoScale( 1.00 );
00193
00194 seq.ResetAllTracks();
00195 GoToMeasure( 0 );
00196
00197 }
|
|
|
Definition at line 112 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), driver, jdkmidi::MIDIProcessorRechannelizer::SetAllRechan(), and thru_rechannelizer.
00113 {
00114 thru_rechannelizer.SetAllRechan( chan );
00115 driver.AllNotesOff();
00116
00117 }
|
|
|
Definition at line 102 of file jdkmidi_advancedsequencer.cpp. References driver, and jdkmidi::MIDIDriver::SetThruEnable().
00103 {
00104 driver.SetThruEnable( f );
00105 }
|
|
|
Definition at line 127 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), driver, jdkmidi::MIDIProcessorTransposer::SetAllTranspose(), and thru_transposer.
00128 {
00129 thru_transposer.SetAllTranspose( val );
00130 driver.AllNotesOff();
00131 }
|
|
|
Definition at line 429 of file jdkmidi_advancedsequencer.cpp. References file_loaded, seq, and jdkmidi::MIDISequencer::SetCurrentTempoScale().
00430 {
00431 if( !file_loaded )
00432 {
00433 return;
00434 }
00435 seq.SetCurrentTempoScale( scale );
00436 }
|
|
||||||||||||
|
Definition at line 417 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), driver, file_loaded, jdkmidi::MIDISequencer::GetTrackProcessor(), jdkmidi::MIDISequencerTrackProcessor::mute, and seq.
00418 {
00419 if( !file_loaded )
00420 {
00421 return;
00422 }
00423 seq.GetTrackProcessor(trk)->mute = f;
00424 driver.AllNotesOff();
00425 }
|
|
||||||||||||
|
Definition at line 561 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), jdkmidi::MIDIMatrix::Clear(), driver, file_loaded, jdkmidi::MIDISequencer::GetTrackProcessor(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDISequencerTrackState::note_matrix, jdkmidi::MIDISequencerTrackProcessor::rechannel, and seq.
00562 {
00563 if( !file_loaded )
00564 {
00565 return;
00566 }
00567
00568 seq.GetTrackProcessor(trk)->rechannel = chan;
00569 driver.AllNotesOff();
00570 seq.GetTrackState(trk)->note_matrix.Clear();
00571
00572 }
|
|
||||||||||||
|
Definition at line 588 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), jdkmidi::MIDIMatrix::Clear(), driver, file_loaded, jdkmidi::MIDIMultiTrack::GetNumTracks(), jdkmidi::MIDISequencer::GetTrackProcessor(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDIManager::IsSeqPlay(), mgr, jdkmidi::MIDISequencerTrackState::note_matrix, seq, jdkmidi::MIDIManager::SeqPlay(), jdkmidi::MIDIManager::SeqStop(), tracks, and jdkmidi::MIDISequencerTrackProcessor::transpose.
00589 {
00590 if( !file_loaded )
00591 {
00592 return;
00593 }
00594
00595 bool was_playing=mgr.IsSeqPlay();
00596
00597 if( mgr.IsSeqPlay() )
00598 {
00599 was_playing=true;
00600 mgr.SeqStop();
00601 }
00602
00603 if( trk==-1 )
00604 {
00605 for( trk=0; trk<tracks.GetNumTracks(); ++trk )
00606 {
00607 seq.GetTrackProcessor(trk)->transpose = trans;
00608 }
00609 }
00610 else
00611 {
00612 seq.GetTrackProcessor(trk)->transpose = trans;
00613 }
00614
00615 if( was_playing )
00616 {
00617 #if 0
00618 driver.ResetMIDIOut();
00619 driver.AllNotesOff();
00620 #endif
00621 seq.GetTrackState(trk)->note_matrix.Clear();
00622
00623 mgr.SeqPlay();
00624 }
00625
00626 }
|
|
||||||||||||
|
Definition at line 538 of file jdkmidi_advancedsequencer.cpp. References file_loaded, jdkmidi::MIDISequencer::GetTrackProcessor(), seq, and jdkmidi::MIDISequencerTrackProcessor::velocity_scale.
00539 {
00540 if( !file_loaded )
00541 {
00542 return;
00543 }
00544
00545 seq.GetTrackProcessor(trk)->velocity_scale = scale;
00546 }
|
|
|
Definition at line 372 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), jdkmidi::MIDIMatrix::Clear(), driver, file_loaded, jdkmidi::MIDISequencer::GetNumTracks(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDISequencerTrackState::note_matrix, seq, and jdkmidi::MIDISequencer::SetSoloMode().
00373 {
00374 if( !file_loaded )
00375 {
00376 return;
00377 }
00378 if( trk==-1 )
00379 {
00380 seq.SetSoloMode(false);
00381 driver.AllNotesOff();
00382
00383 for( int i=0; i<seq.GetNumTracks(); ++i )
00384 {
00385 seq.GetTrackState(i)->note_matrix.Clear();
00386 }
00387 }
00388 else
00389 {
00390 seq.SetSoloMode(true,trk);
00391 driver.AllNotesOff();
00392
00393 for( int i=0; i<seq.GetNumTracks(); ++i )
00394 {
00395 seq.GetTrackState(i)->note_matrix.Clear();
00396 }
00397
00398 }
00399 }
|
|
|
|
Definition at line 354 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), jdkmidi::MIDIMatrix::Clear(), driver, file_loaded, jdkmidi::MIDISequencer::GetNumTracks(), jdkmidi::MIDISequencer::GetTrackProcessor(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDISequencerTrackProcessor::mute, jdkmidi::MIDISequencerTrackState::note_matrix, and seq.
00355 {
00356 if( !file_loaded )
00357 {
00358 return;
00359 }
00360 for( int i=0; i<seq.GetNumTracks(); ++i )
00361 {
00362 if( seq.GetTrackProcessor(i)->mute )
00363 {
00364 seq.GetTrackState(i)->note_matrix.Clear();
00365 seq.GetTrackProcessor(i)->mute = false;
00366 }
00367 }
00368
00369 driver.AllNotesOff();
00370 }
|
|
|
Definition at line 402 of file jdkmidi_advancedsequencer.cpp. References jdkmidi::MIDIDriver::AllNotesOff(), jdkmidi::MIDIMatrix::Clear(), driver, file_loaded, jdkmidi::MIDISequencer::GetNumTracks(), jdkmidi::MIDISequencer::GetTrackState(), jdkmidi::MIDISequencerTrackState::note_matrix, seq, and jdkmidi::MIDISequencer::SetSoloMode().
00403 {
00404 if( !file_loaded )
00405 {
00406 return;
00407 }
00408 seq.SetSoloMode( false );
00409 driver.AllNotesOff();
00410 for( int i=0; i<seq.GetNumTracks(); ++i )
00411 {
00412 seq.GetTrackState(i)->note_matrix.Clear();
00413 }
00414 }
|
|
|
Definition at line 121 of file advancedsequencer.h. |
|
|
Definition at line 99 of file advancedsequencer.h. |
|
|
Definition at line 120 of file advancedsequencer.h. |
|
|
Definition at line 108 of file advancedsequencer.h. |
|
|
Definition at line 111 of file advancedsequencer.h. |
|
|
Definition at line 104 of file advancedsequencer.h. |
|
|
Definition at line 109 of file advancedsequencer.h. |
|
|
Definition at line 117 of file advancedsequencer.h. |
|
|
Definition at line 114 of file advancedsequencer.h. |
|
|
Definition at line 115 of file advancedsequencer.h. |
|
|
Definition at line 113 of file advancedsequencer.h. |
|
|
Definition at line 106 of file advancedsequencer.h. |
|
|
Definition at line 95 of file advancedsequencer.h. |
|
|
Definition at line 97 of file advancedsequencer.h. |
|
|
Definition at line 96 of file advancedsequencer.h. |
|
|
Definition at line 101 of file advancedsequencer.h. |
|
|
Definition at line 118 of file advancedsequencer.h. |