Я хотел бы слушать входящие MIDI-сообщения, используя мою программу GO. Однако я не могу заставить его работать.
Я пытался использовать миди-библиотеки, такие как https://github.com/gomidi/midi,, но не смог заставить его работать. Здесь нет примеров, и документация мне неясна.
package main
import (
"fmt"
"io"
"github.com/gomidi/midi"
. "github.com/gomidi/midi/midimessage/channel" // (Channel Messages)
"github.com/gomidi/midi/midimessage/realtime"
"github.com/gomidi/midi/midireader"
)
func main() {
var input io.Reader
rthandler := func(m realtime.Message) {
fmt.Printf("Realtime: %s\n", m)
}
rd := midireader.New(input, rthandler)
var m midi.Message
var err error
for {
m, err = rd.Read()
// breaking at least with io.EOF
if err != nil {
break
}
// inspect
fmt.Println(m)
switch v := m.(type) {
case NoteOn:
fmt.Printf("NoteOn at channel %v: key: %v velocity: %v\n", v.Channel(), v.Key(), v.Velocity())
case NoteOff:
fmt.Printf("NoteOff at channel %v: key: %v\n", v.Channel(), v.Key())
}
}
if err != io.EOF {
panic("error: " + err.Error())
}
}
Моя цель - прочитать (просто распечатать, когда получено миди-сообщение) вход MIDI для дальнейшей обработки.
Заранее спасибо