Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into feature/copy-paste-step
Browse files Browse the repository at this point in the history
  • Loading branch information
ajboni committed Aug 13, 2024
2 parents 110097d + 20e5ae6 commit 39dca26
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,15 @@ jobs:

- name: Tar.gz files
run: tar -zcvf sektron_${{ github.ref_name }}_${{ runner.os}}.tar.gz LICENSE -C bin sektron
if: ${{ !startsWith(matrix.os, 'windows') }}
if: ${{ github.ref_type == 'tag' }}

- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: sektron_${{ github.sha }}
path: sektron_${{ github.ref_name }}_${{ runner.os}}.tar.gz
if-no-files-found: error
if: ${{ github.ref_type == 'tag' }}

release:
needs: build
Expand Down
10 changes: 10 additions & 0 deletions filesystem/keymap.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ type KeyMap struct {
RemoveStep string `json:"remove_step"`
CopyStep string `json:"copy_step"`
PasteStep string `json:"paste_step"`
PreviousStep string `json:"previous_step"`
NextStep string `json:"next_step"`
PageUp string `json:"page_up"`
PageDown string `json:"page_down"`
TempoUp string `json:"tempo_up"`
Expand Down Expand Up @@ -44,6 +46,8 @@ func NewDefaultAzertyKeyMap() KeyMap {
RemoveStep: "°",
CopyStep: "ctrl+c",
PasteStep: "ctrl+v",
PreviousStep: ",",
NextStep: ";",
PageUp: "p",
PageDown: "m",
TempoUp: "shift+up",
Expand Down Expand Up @@ -75,6 +79,8 @@ func NewDefaultAzertyMacKeyMap() KeyMap {
RemoveStep: "°",
CopyStep: "ctrl+c",
PasteStep: "ctrl+v",
PreviousStep: ",",
NextStep: ";",
PageUp: "p",
PageDown: "m",
TempoUp: "shift+up",
Expand Down Expand Up @@ -105,6 +111,8 @@ func NewDefaultQwertyKeyMap() KeyMap {
RemoveStep: "_",
CopyStep: "ctrl+c",
PasteStep: "ctrl+v",
PreviousStep: ",",
NextStep: ".",
PageUp: "p",
PageDown: ";",
TempoUp: "shift+up",
Expand Down Expand Up @@ -136,6 +144,8 @@ func NewDefaultQwertyMacKeyMap() KeyMap {
RemoveStep: "_",
CopyStep: "ctrl+c",
PasteStep: "ctrl+v",
PreviousStep: ",",
NextStep: ".",
PageUp: "p",
PageDown: ";",
TempoUp: "shift+up",
Expand Down
13 changes: 12 additions & 1 deletion ui/keymap.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ type keyMap struct {
CopyStep key.Binding
PasteStep key.Binding

NextStep key.Binding
PreviousStep key.Binding

StepIndex map[string]int
Step key.Binding

Expand Down Expand Up @@ -63,7 +66,7 @@ func (k keyMap) ShortHelp() []key.Binding {
// key.Map interface.
func (k keyMap) FullHelp() [][]key.Binding {
return [][]key.Binding{
{k.Play, k.ParamMode, k.PatternMode, k.AddTrack, k.RemoveTrack, k.AddStep, k.RemoveStep, k.TempoUp, k.TempoDown},
{k.Play, k.ParamMode, k.PatternMode, k.AddTrack, k.RemoveTrack, k.AddStep, k.RemoveStep, k.PreviousStep, k.NextStep, k.TempoUp, k.TempoDown},
{k.Step, k.StepToggle, k.Track, k.TrackToggle, k.PageUp, k.PageDown, k.AddParam, k.RemoveParam},
{k.Validate, k.Up, k.Down, k.Left, k.Right, k.Help, k.Quit},
}
Expand Down Expand Up @@ -108,6 +111,14 @@ func newKeyMap(keys filesystem.KeyMap) keyMap {
key.WithKeys(keys.PasteStep),
key.WithHelp(keys.PasteStep, "paste copied parameters into active step"),
),
PreviousStep: key.NewBinding(
key.WithKeys(keys.PreviousStep),
key.WithHelp(keys.PreviousStep, "select previous step"),
),
NextStep: key.NewBinding(
key.WithKeys(keys.NextStep),
key.WithHelp(keys.NextStep, "select next step"),
),
StepIndex: map[string]int{},
Step: key.NewBinding(
key.WithKeys(keys.Steps[:]...),
Expand Down
48 changes: 48 additions & 0 deletions ui/ui.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ func (m mainModel) Init() tea.Cmd {
}

func (m mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.resetPatternState()

switch msg := msg.(type) {

case tea.WindowSizeMsg:
Expand Down Expand Up @@ -162,6 +164,39 @@ func (m mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.seq.RemoveStep(m.activeTrack)
return m, nil

case key.Matches(msg, m.keymap.PreviousStep):
if m.mode == stepMode || m.mode == trackMode {
newIndex := m.activeStep - 1
if newIndex < 0 {
newIndex = len(m.getActiveTrack().Steps()) - 1
}

m.activeStep = newIndex
// Paginate if needed
m.activeTrackPage = (newIndex / stepsPerPage)

m.mode = stepMode
m.stepModeTimer = 0
m.updateParams()
}
return m, nil

case key.Matches(msg, m.keymap.NextStep):
if m.mode == stepMode || m.mode == trackMode {
newIndex := m.activeStep + 1
if newIndex > len(m.getActiveTrack().Steps())-1 {
newIndex = 0
}
m.activeStep = newIndex
// Paginate if needed
m.activeTrackPage = (newIndex / stepsPerPage)

m.mode = stepMode
m.stepModeTimer = 0
m.updateParams()
}
return m, nil

case key.Matches(msg, m.keymap.Step):
number := m.keymap.StepIndex[msg.String()]
if m.mode == patternMode {
Expand Down Expand Up @@ -287,6 +322,9 @@ func (m mainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.mode = trackMode
m.updateParams()
}
if m.mode == stepMode {
m.seq.ToggleStep(m.activeTrack, m.activeStep)
}
return m, nil

case key.Matches(msg, m.keymap.Left):
Expand Down Expand Up @@ -373,6 +411,16 @@ func (m mainModel) View() string {
)
}

// resetPattern ensures that we reset active track and step state
// after a pattern chain if needed
func (m *mainModel) resetPatternState() {
if m.activeTrack >= len(m.seq.Tracks()) || m.activeStep >= len(m.seq.Tracks()[m.activeTrack].Steps()) {
m.activeTrack = 0
m.activeTrackPage = 0
m.activeStep = 0
}
}

func (m *mainModel) getActiveTrack() sequencer.Track {
return m.seq.Tracks()[m.activeTrack]
}
Expand Down

0 comments on commit 39dca26

Please sign in to comment.