从GO读取MIDI输入
我想用我的围棋程序收听传入的MIDI消息。然而,我不能让它工作 我曾尝试使用midi库,例如,但无法使其正常工作。没有可以找到的例子,文档对我来说也不清楚从GO读取MIDI输入,go,midi,Go,Midi,我想用我的围棋程序收听传入的MIDI消息。然而,我不能让它工作 我曾尝试使用midi库,例如,但无法使其正常工作。没有可以找到的例子,文档对我来说也不清楚 package main import ( "fmt" "io" "github.com/gomidi/midi" . "github.com/gomidi/midi/midimessage/channel" // (Channel Messages) "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消息时仅打印)midi输入以进行进一步处理
提前感谢这里有一个当前版本的
gitlab.com/gomidi/midi
的工作示例(也可以查看gitlab.com/gomidi/midi/examples
)
主程序包
进口(
“fmt”
“时间”
“gitlab.com/gomidi/midi”
“gitlab.com/gomidi/midi/midimessage/channel”//(channelmessages)
“gitlab.com/gomidi/midi/reader”
“gitlab.com/gomidi/rtmiddrv”
)
//此示例从第一个输入端口读取数据
func main(){
drv,err:=rtmiddrv.New()
必须(错误)
//确保最后关闭驱动器
延迟drv.Close()
ins,err:=drv.ins()
必须(错误)
//获取第一个输入
in:=ins[0]
fmt.Printf(“打开MIDI端口%v\n”,在中)
必须(在.Open()中)
延迟进入。关闭()
//要禁用日志记录,请将mid.NoLogger()作为选项传递
rd:=读卡器。新建(
reader.NoLogger(),
//打印每封邮件
reader.Each(func(pos*reader.Position,msg midi.Message){
//检查
fmt.Println(味精)
开关v:=消息(类型){
案例说明:
fmt.Printf(“在通道%v:键:%v速度:%v\n”、通道()、键()、速度()处的注释)
案件记录:
fmt.Printf(“在通道%v:键:%v\n处的注释”,通道(),键())
}
}),
)
//听MIDI
err=rd.ListenTo(在中)
必须(错误)
时间。睡眠(10*时间。秒)
err=in.StopListening()
必须(错误)
fmt.Printf(“关闭MIDI端口%v\n”,在中)
}
func必须(错误){
如果错误!=零{
死机(err.Error())
}
}
您能解决这个问题吗?我认为原因是您没有打开任何MIDI端口来读取数据。