diff --git a/src/AdjustSync.cpp b/src/AdjustSync.cpp index 7e7ec96247..f626947e87 100644 --- a/src/AdjustSync.cpp +++ b/src/AdjustSync.cpp @@ -277,12 +277,19 @@ void AdjustSync::AutosyncTempo() /* We assume that the stops were measured as a number of beats. * Therefore, if we change the bpms, we need to make a similar * change to the stops. */ - vector &stops = timing.allTimingSegments[SEGMENT_STOP_DELAY]; + vector &stops = timing.allTimingSegments[SEGMENT_STOP]; for (unsigned i = 0; i < stops.size(); i++) { StopSegment *s = static_cast(stops[i]); s->SetPause(s->GetPause() * (1.0f - fSlope)); } + // Do the same for delays. + vector &delays = timing.allTimingSegments[SEGMENT_DELAY]; + for (unsigned i = 0; i < delays.size(); i++) + { + DelaySegment *s = static_cast(delays[i]); + s->SetPause(s->GetPause() * (1.0f - fSlope)); + } SCREENMAN->SystemMessage( AUTOSYNC_CORRECTION_APPLIED.GetValue() ); } @@ -377,8 +384,8 @@ void AdjustSync::GetSyncChangeTextSong( vector &vsAddTo ) } } - vector &stopTest = testing.allTimingSegments[SEGMENT_STOP_DELAY]; - vector &stopOrig = original.allTimingSegments[SEGMENT_STOP_DELAY]; + vector &stopTest = testing.allTimingSegments[SEGMENT_STOP]; + vector &stopOrig = original.allTimingSegments[SEGMENT_STOP]; for( unsigned i=0; i< stopTest.size(); i++ ) { StopSegment *sT = static_cast(stopTest[i]); @@ -401,6 +408,31 @@ void AdjustSync::GetSyncChangeTextSong( vector &vsAddTo ) fNew ) ); } } + + vector &delyTest = testing.allTimingSegments[SEGMENT_DELAY]; + vector &delyOrig = original.allTimingSegments[SEGMENT_DELAY]; + for( unsigned i=0; i< delyTest.size(); i++ ) + { + DelaySegment *sT = static_cast(delyTest[i]); + DelaySegment *sO = static_cast(delyOrig[i]); + float fOld = Quantize( sO->GetPause(), 0.001f ); + float fNew = Quantize( sT->GetPause(), 0.001f ); + float fDelta = fNew - fOld; + + if( fabsf(fDelta) > 0.0001f ) + { + if ( i >= 4 ) + { + vsAddTo.push_back(ETC.GetValue()); + break; + } + vsAddTo.push_back( ssprintf( + CHANGED_STOP.GetValue(), + i+1, + fOld, + fNew ) ); + } + } if( vsAddTo.size() > iOriginalSize && s_fAverageError > 0.0f ) { diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 356bd909fd..14a56d2e66 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -1894,7 +1894,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB ) fDelta *= 40; } unsigned i; - vector &stops = GetAppropriateTiming().allTimingSegments[SEGMENT_STOP_DELAY]; + vector &stops = GetAppropriateTiming().allTimingSegments[SEGMENT_STOP]; for( i=0; iGetRow() == GetRow() ) @@ -1905,7 +1905,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB ) { // create a new StopSegment if( fDelta > 0 ) - GetAppropriateTiming().AddSegment(SEGMENT_STOP_DELAY, + GetAppropriateTiming().AddSegment(SEGMENT_STOP, new StopSegment( GetRow(), fDelta) ); } else // StopSegment being modified is m_SongTiming.m_StopSegments[i] @@ -4329,11 +4329,16 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns cpy = new BPMSegment(*(static_cast(org))); break; } - case SEGMENT_STOP_DELAY: + case SEGMENT_STOP: { cpy = new StopSegment(*(static_cast(org))); break; } + case SEGMENT_DELAY: + { + cpy = new DelaySegment(*(static_cast(org))); + break; + } case SEGMENT_TIME_SIG: { cpy = new TimeSignatureSegment(*(static_cast(org)));