From 5e65410d27786a50550d12c876480172845dd707 Mon Sep 17 00:00:00 2001 From: "5684185+vsariola@users.noreply.github.com" <5684185+vsariola@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:45:14 +0300 Subject: [PATCH] fix(sointu): use proper modulo in SongPos The previous implementations used remained, not modulo, which could cause issues with negative values. --- song.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/song.go b/song.go index a348080..698275e 100644 --- a/song.go +++ b/song.go @@ -81,8 +81,8 @@ func (s *Score) SongPos(songRow int) SongPos { if s.RowsPerPattern == 0 { return SongPos{OrderRow: 0, PatternRow: 0} } - orderRow := songRow / s.RowsPerPattern - patternRow := songRow % s.RowsPerPattern + patternRow := (songRow%s.RowsPerPattern + s.RowsPerPattern) % s.RowsPerPattern + orderRow := ((songRow - patternRow) / s.RowsPerPattern) return SongPos{OrderRow: orderRow, PatternRow: patternRow} } @@ -92,7 +92,7 @@ func (s *Score) SongRow(songPos SongPos) int { func (s *Score) Wrap(songPos SongPos) SongPos { ret := s.SongPos(s.SongRow(songPos)) - ret.OrderRow %= s.Length + ret.OrderRow = (ret.OrderRow%s.Length + s.Length) % s.Length return ret }