feat(tracker): show notes for whole song, instead of single pattern

This commit is contained in:
vsariola 2021-01-06 15:14:48 +02:00
parent 76dfd103e7
commit 12e1bde2a2

View File

@ -26,13 +26,26 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions {
if t.DisplayPattern != t.PlayPattern { if t.DisplayPattern != t.PlayPattern {
playRow = -1 playRow = -1
} }
for i, trk := range t.song.Tracks { 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( flexTracks[i] = layout.Rigid(Lowered(t.layoutTrack(
trk.Patterns[trk.Sequence[t.DisplayPattern]], notes,
t.ActiveTrack == i, t.ActiveTrack == i,
t.CursorRow, songCursorRow,
t.CursorColumn, t.CursorColumn,
playRow, songPlayRow,
))) )))
} }
return layout.Flex{Axis: layout.Horizontal}.Layout(gtx, return layout.Flex{Axis: layout.Horizontal}.Layout(gtx,