From 12e1bde2a21e17cf873241801f535ef08c8546b9 Mon Sep 17 00:00:00 2001 From: vsariola Date: Wed, 6 Jan 2021 15:14:48 +0200 Subject: [PATCH] feat(tracker): show notes for whole song, instead of single pattern --- tracker/layout.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tracker/layout.go b/tracker/layout.go index 845af40..a2737f9 100644 --- a/tracker/layout.go +++ b/tracker/layout.go @@ -26,13 +26,26 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions { if t.DisplayPattern != t.PlayPattern { playRow = -1 } + for i, trk := range t.song.Tracks { + sumLen := 0 + for _, patIndex := range trk.Sequence { + sumLen += len(trk.Patterns[patIndex]) + } + notes := make([]byte, sumLen) + window := notes + for _, patIndex := range trk.Sequence { + elementsCopied := copy(window, trk.Patterns[patIndex]) + window = window[elementsCopied:] + } + songCursorRow := t.CursorRow + t.DisplayPattern*t.song.PatternRows() + songPlayRow := playRow + t.PlayPattern*t.song.PatternRows() flexTracks[i] = layout.Rigid(Lowered(t.layoutTrack( - trk.Patterns[trk.Sequence[t.DisplayPattern]], + notes, t.ActiveTrack == i, - t.CursorRow, + songCursorRow, t.CursorColumn, - playRow, + songPlayRow, ))) } return layout.Flex{Axis: layout.Horizontal}.Layout(gtx,