@@ -12,8 +12,6 @@ import (
12
12
"gitlab.com/gomidi/midi/mid"
13
13
"gitlab.com/gomidi/midi/midimessage/channel"
14
14
"gitlab.com/gomidi/midi/midimessage/meta"
15
- "gitlab.com/gomidi/rtmididrv"
16
- "gitlab.com/ubunatic/portmididrv"
17
15
)
18
16
19
17
// TicksPerSecond defines the default number of MIDI ticks per second used for playback.
@@ -42,6 +40,10 @@ const (
42
40
Any Provider = "any"
43
41
)
44
42
43
+ type drvInitFunc func () (mid.Driver , error )
44
+
45
+ var drvInit = make (map [Provider ]drvInitFunc )
46
+
45
47
func (p Provider ) match (provider Provider ) bool {
46
48
return p == Any || p == provider
47
49
}
@@ -58,19 +60,19 @@ func (p *Player) initDriver(providers ...Provider) error {
58
60
providers = []Provider {Any }
59
61
}
60
62
61
- for _ , pr := range providers {
63
+ var initFunc drvInitFunc = nil
64
+ for _ , prov := range providers {
62
65
switch {
63
- case pr .match (RTMidi ):
64
- fmt .Println ("trying MIDI driver: gomidi/rtmididrv" )
65
- if drv , err := rtmididrv .New (); err != nil {
66
- errors = append (errors , err .Error ())
67
- } else {
68
- p .drv = drv
69
- return nil
70
- }
71
- case pr .match (PortMidi ):
72
- fmt .Println ("trying MIDI driver: ubunatic/portmididrv" )
73
- if drv , err := portmididrv .New (); err != nil {
66
+ case prov .match (RTMidi ):
67
+ initFunc = drvInit [RTMidi ]
68
+ fmt .Printf ("trying MIDI driver: %s\n " , string (RTMidi ))
69
+ case prov .match (PortMidi ):
70
+ initFunc = drvInit [PortMidi ]
71
+ fmt .Printf ("trying MIDI driver: %s\n " , string (PortMidi ))
72
+ }
73
+
74
+ if initFunc != nil {
75
+ if drv , err := initFunc (); err != nil {
74
76
errors = append (errors , err .Error ())
75
77
} else {
76
78
p .drv = drv
0 commit comments