refactor(tracker): ask for midiContext in the model constructor

This commit is contained in:
5684185+vsariola@users.noreply.github.com 2024-10-14 17:03:17 +03:00
parent f427eca1f4
commit 2809526de6
3 changed files with 6 additions and 7 deletions

View File

@ -53,9 +53,8 @@ func main() {
if configDir, err := os.UserConfigDir(); err == nil {
recoveryFile = filepath.Join(configDir, "Sointu", "sointu-track-recovery")
}
model, player := tracker.NewModelPlayer(cmd.MainSynther, recoveryFile)
midiContext := gomidi.NewContext()
model.MIDI = midiContext
model, player := tracker.NewModelPlayer(cmd.MainSynther, midiContext, recoveryFile)
defer model.MIDI.Close()
if a := flag.Args(); len(a) > 0 {
f, err := os.Open(a[0])

View File

@ -27,11 +27,11 @@ type (
NullMIDIContext struct{}
)
func (m *NullMIDIContext) ListInputDevices() func(yield func(tracker.MIDIDevice) bool) {
func (m NullMIDIContext) ListInputDevices() func(yield func(tracker.MIDIDevice) bool) {
return func(yield func(tracker.MIDIDevice) bool) {}
}
func (m *NullMIDIContext) Close() {}
func (m NullMIDIContext) Close() {}
func (c *VSTIProcessContext) NextEvent() (event tracker.MIDINoteEvent, ok bool) {
for c.eventIndex < len(c.events) {
@ -72,8 +72,7 @@ func init() {
rand.Read(randBytes)
recoveryFile = filepath.Join(configDir, "sointu", "sointu-vsti-recovery-"+hex.EncodeToString(randBytes))
}
model, player := tracker.NewModelPlayer(cmd.MainSynther, recoveryFile)
model.MIDI = &NullMIDIContext{}
model, player := tracker.NewModelPlayer(cmd.MainSynther, NullMIDIContext{}, recoveryFile)
t := gioui.NewTracker(model)
tracker.Bool{BoolData: (*tracker.InstrEnlarged)(model)}.Set(true)

View File

@ -175,9 +175,10 @@ func (m *Model) Dialog() Dialog { return m.dialog }
func (m *Model) Quitted() bool { return m.quitted }
// NewModelPlayer creates a new model and a player that communicates with it
func NewModelPlayer(synther sointu.Synther, recoveryFilePath string) (*Model, *Player) {
func NewModelPlayer(synther sointu.Synther, midiContext MIDIContext, recoveryFilePath string) (*Model, *Player) {
m := new(Model)
m.synther = synther
m.MIDI = midiContext
modelMessages := make(chan interface{}, 1024)
playerMessages := make(chan PlayerMsg, 1024)
m.modelMessages = modelMessages