diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index c7159a39a1..80db2cd711 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -1722,38 +1722,42 @@ void NoteDataUtil::InsertIntelligentTaps( int iTrackOfNoteLater = -1; inout.GetTapFirstNonEmptyTrack( iRowLater, iTrackOfNoteLater ); int iTrackOfNoteToAdd = 0; - if( bSkippy && - iTrackOfNoteEarlier != iTrackOfNoteLater ) // Don't make skips on the same note - { - if( bEarlierHasNonEmptyTrack ) - { - iTrackOfNoteToAdd = iTrackOfNoteEarlier; - goto done_looking_for_track_to_add; - } - } - - // try to choose a track between the earlier and later notes - if( abs(iTrackOfNoteEarlier-iTrackOfNoteLater) >= 2 ) - { - iTrackOfNoteToAdd = min(iTrackOfNoteEarlier,iTrackOfNoteLater)+1; - goto done_looking_for_track_to_add; - } - // try to choose a track just to the left - if( min(iTrackOfNoteEarlier,iTrackOfNoteLater)-1 >= 0 ) + for (;;) { - iTrackOfNoteToAdd = min(iTrackOfNoteEarlier,iTrackOfNoteLater)-1; - goto done_looking_for_track_to_add; + if( bSkippy && + iTrackOfNoteEarlier != iTrackOfNoteLater ) // Don't make skips on the same note + { + if( bEarlierHasNonEmptyTrack ) + { + iTrackOfNoteToAdd = iTrackOfNoteEarlier; + break; + } + } + + // try to choose a track between the earlier and later notes + if( abs(iTrackOfNoteEarlier-iTrackOfNoteLater) >= 2 ) + { + iTrackOfNoteToAdd = min(iTrackOfNoteEarlier,iTrackOfNoteLater)+1; + break; + } + + // try to choose a track just to the left + if( min(iTrackOfNoteEarlier,iTrackOfNoteLater)-1 >= 0 ) + { + iTrackOfNoteToAdd = min(iTrackOfNoteEarlier,iTrackOfNoteLater)-1; + break; + } + + // try to choose a track just to the right + if( max(iTrackOfNoteEarlier,iTrackOfNoteLater)+1 < inout.GetNumTracks() ) + { + iTrackOfNoteToAdd = max(iTrackOfNoteEarlier,iTrackOfNoteLater)+1; + break; + } + break; } - // try to choose a track just to the right - if( max(iTrackOfNoteEarlier,iTrackOfNoteLater)+1 < inout.GetNumTracks() ) - { - iTrackOfNoteToAdd = max(iTrackOfNoteEarlier,iTrackOfNoteLater)+1; - goto done_looking_for_track_to_add; - } - -done_looking_for_track_to_add: inout.SetTapNote(iTrackOfNoteToAdd, iRowToAdd, TAP_ADDITION_TAP); } }