mirror of
https://github.com/vsariola/sointu.git
synced 2025-06-03 00:58:26 -04:00
feat(tracker): auto-create patterns when adding notes to empty area
Closes #53.
This commit is contained in:
parent
adc12dde4f
commit
8a5d337775
@ -300,13 +300,22 @@ func (m *Model) Note() byte {
|
|||||||
func (m *Model) SetNote(iv byte) {
|
func (m *Model) SetNote(iv byte) {
|
||||||
m.saveUndo("SetNote", 10)
|
m.saveUndo("SetNote", 10)
|
||||||
tracks := m.song.Score.Tracks
|
tracks := m.song.Score.Tracks
|
||||||
order := tracks[m.cursor.Track].Order
|
if m.cursor.Pattern < 0 || m.cursor.Row < 0 {
|
||||||
if m.cursor.Pattern < 0 || m.cursor.Pattern >= len(order) || m.cursor.Row < 0 {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
for len(tracks[m.cursor.Track].Order) <= m.cursor.Pattern {
|
||||||
|
tracks[m.cursor.Track].Order = append(tracks[m.cursor.Track].Order, -1)
|
||||||
|
}
|
||||||
|
order := tracks[m.cursor.Track].Order
|
||||||
patIndex := order[m.cursor.Pattern]
|
patIndex := order[m.cursor.Pattern]
|
||||||
if patIndex < 0 {
|
if patIndex < 0 {
|
||||||
return
|
patIndex = len(tracks[m.cursor.Track].Patterns)
|
||||||
|
for _, pi := range tracks[m.cursor.Track].Order {
|
||||||
|
if pi >= patIndex {
|
||||||
|
patIndex = pi + 1 // we find a pattern that is not in the pattern table nor in the order list i.e. completely new pattern
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tracks[m.cursor.Track].Order[m.cursor.Pattern] = patIndex
|
||||||
}
|
}
|
||||||
for len(tracks[m.cursor.Track].Patterns) <= patIndex {
|
for len(tracks[m.cursor.Track].Patterns) <= patIndex {
|
||||||
tracks[m.cursor.Track].Patterns = append(tracks[m.cursor.Track].Patterns, nil)
|
tracks[m.cursor.Track].Patterns = append(tracks[m.cursor.Track].Patterns, nil)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user