diff --git a/include/bb_track.h b/include/bb_track.h index c2b9e4086..da96a5a05 100644 --- a/include/bb_track.h +++ b/include/bb_track.h @@ -121,6 +121,19 @@ public: return( m_trackLabel ); } + bool isDisabled( track * _track ) + { + return( m_disabled_tracks.containsRef( _track ) ); + } + void disableTrack( track * _track ) + { + m_disabled_tracks.append( _track ); + } + void enableTrack( track * _track ) + { + m_disabled_tracks.removeRef( _track ); + } + public slots: void clickedTrackLabel( void ); @@ -135,6 +148,7 @@ protected: private: nameLabel * m_trackLabel; + QPtrList m_disabled_tracks; typedef QMap infoMap; static infoMap s_infoMap; diff --git a/include/track.h b/include/track.h index a3d179134..62c735703 100644 --- a/include/track.h +++ b/include/track.h @@ -63,6 +63,7 @@ class QMenu; class QPushButton; class automationPattern; +class bbTrack; class pixmapButton; class textFloat; class track; @@ -265,9 +266,12 @@ protected: private slots: void cloneTrack( void ); + void disableTrack( void ); + void enableTrack( void ); void removeTrack( void ); void removeTrackTimer( void ); void muteBtnRightClicked( void ); + void updateMenu( void ); private: @@ -278,6 +282,9 @@ private: QPushButton * m_trackOps; pixmapButton * m_muteBtn; + bbTrack * currentBBTrack( void ); + bool inBBEditor( void ); + } ; diff --git a/src/core/bb_editor.cpp b/src/core/bb_editor.cpp index 6ab82c463..3055c56ff 100644 --- a/src/core/bb_editor.cpp +++ b/src/core/bb_editor.cpp @@ -239,11 +239,12 @@ bool FASTCALL bbEditor::play( midiTime _start, f_cnt_t _start_frame, _start = ( _start.getTact() % lengthOfBB( _tco_num ) ) * 64 + _start.getTact64th(); + bbTrack * bb_track = bbTrack::findBBTrack( _tco_num, eng() ); trackVector tv = tracks(); for( trackVector::iterator it = tv.begin(); it != tv.end(); ++it ) { - if( ( *it )->play( _start, _start_frame, _frames, _frame_base, - _tco_num ) == TRUE ) + if( !bb_track->isDisabled( *it ) && ( *it )->play( _start, + _start_frame, _frames, _frame_base, _tco_num ) == TRUE ) { played_a_note = TRUE; }