mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-28 03:10:24 -04:00
feat(tracker): save recovery file regularly & load it on startup
This commit is contained in:
parent
12f15d1066
commit
df2605fddd
@ -33,7 +33,10 @@ func main() {
|
|||||||
defer audioContext.Close()
|
defer audioContext.Close()
|
||||||
modelMessages := make(chan interface{}, 1024)
|
modelMessages := make(chan interface{}, 1024)
|
||||||
playerMessages := make(chan tracker.PlayerMessage, 1024)
|
playerMessages := make(chan tracker.PlayerMessage, 1024)
|
||||||
model := tracker.NewModel(modelMessages, playerMessages)
|
model, err := tracker.LoadRecovery(modelMessages, playerMessages)
|
||||||
|
if err != nil {
|
||||||
|
model = tracker.NewModel(modelMessages, playerMessages)
|
||||||
|
}
|
||||||
player := tracker.NewPlayer(cmd.DefaultService, playerMessages, modelMessages)
|
player := tracker.NewPlayer(cmd.DefaultService, playerMessages, modelMessages)
|
||||||
tracker := gioui.NewTracker(model, cmd.DefaultService)
|
tracker := gioui.NewTracker(model, cmd.DefaultService)
|
||||||
output := audioContext.Output()
|
output := audioContext.Output()
|
||||||
|
@ -49,7 +49,10 @@ func init() {
|
|||||||
vst2.PluginAllocator = func(h vst2.Host) (vst2.Plugin, vst2.Dispatcher) {
|
vst2.PluginAllocator = func(h vst2.Host) (vst2.Plugin, vst2.Dispatcher) {
|
||||||
modelMessages := make(chan interface{}, 1024)
|
modelMessages := make(chan interface{}, 1024)
|
||||||
playerMessages := make(chan tracker.PlayerMessage, 1024)
|
playerMessages := make(chan tracker.PlayerMessage, 1024)
|
||||||
model := tracker.NewModel(modelMessages, playerMessages)
|
model, err := tracker.LoadRecovery(modelMessages, playerMessages)
|
||||||
|
if err != nil {
|
||||||
|
model = tracker.NewModel(modelMessages, playerMessages)
|
||||||
|
}
|
||||||
player := tracker.NewPlayer(cmd.DefaultService, playerMessages, modelMessages)
|
player := tracker.NewPlayer(cmd.DefaultService, playerMessages, modelMessages)
|
||||||
tracker := gioui.NewTracker(model, cmd.DefaultService)
|
tracker := gioui.NewTracker(model, cmd.DefaultService)
|
||||||
tracker.SetInstrEnlarged(true) // start the vsti with the instrument editor enlarged
|
tracker.SetInstrEnlarged(true) // start the vsti with the instrument editor enlarged
|
||||||
|
@ -148,8 +148,6 @@ func NewTracker(model *tracker.Model, synthService sointu.SynthService) *Tracker
|
|||||||
t.Theme.Palette.Fg = primaryColor
|
t.Theme.Palette.Fg = primaryColor
|
||||||
t.Theme.Palette.ContrastFg = black
|
t.Theme.Palette.ContrastFg = black
|
||||||
t.TrackEditor.Focus()
|
t.TrackEditor.Focus()
|
||||||
t.SetOctave(4)
|
|
||||||
t.ResetSong()
|
|
||||||
t.quitWG.Add(1)
|
t.quitWG.Add(1)
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
@ -160,6 +158,7 @@ func (t *Tracker) Main() {
|
|||||||
app.Size(unit.Dp(800), unit.Dp(600)),
|
app.Size(unit.Dp(800), unit.Dp(600)),
|
||||||
app.Title("Sointu Tracker"),
|
app.Title("Sointu Tracker"),
|
||||||
)
|
)
|
||||||
|
recoveryTicker := time.NewTicker(time.Second * 10)
|
||||||
t.Explorer = explorer.NewExplorer(w)
|
t.Explorer = explorer.NewExplorer(w)
|
||||||
var ops op.Ops
|
var ops op.Ops
|
||||||
mainloop:
|
mainloop:
|
||||||
@ -180,6 +179,7 @@ mainloop:
|
|||||||
}
|
}
|
||||||
select {
|
select {
|
||||||
case <-t.quitChannel:
|
case <-t.quitChannel:
|
||||||
|
recoveryTicker.Stop()
|
||||||
break mainloop
|
break mainloop
|
||||||
case e := <-t.errorChannel:
|
case e := <-t.errorChannel:
|
||||||
t.Alert.Update(e.Error(), Error, time.Second*5)
|
t.Alert.Update(e.Error(), Error, time.Second*5)
|
||||||
@ -211,9 +211,12 @@ mainloop:
|
|||||||
t.Layout(gtx, w)
|
t.Layout(gtx, w)
|
||||||
e.Frame(gtx.Ops)
|
e.Frame(gtx.Ops)
|
||||||
}
|
}
|
||||||
|
case <-recoveryTicker.C:
|
||||||
|
go t.SaveRecovery()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w.Perform(system.ActionClose)
|
w.Perform(system.ActionClose)
|
||||||
|
t.SaveRecovery()
|
||||||
t.quitWG.Done()
|
t.quitWG.Done()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
629
tracker/model.go
629
tracker/model.go
File diff suppressed because it is too large
Load Diff
@ -296,6 +296,9 @@ loop:
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) compileOrUpdateSynth() {
|
func (p *Player) compileOrUpdateSynth() {
|
||||||
|
if p.bpm <= 0 {
|
||||||
|
return // bpm not set yet
|
||||||
|
}
|
||||||
if p.synth != nil {
|
if p.synth != nil {
|
||||||
err := p.synth.Update(p.patch, p.bpm)
|
err := p.synth.Update(p.patch, p.bpm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user