Чтение ввода MIDI из GO - PullRequest
1 голос
/ 05 мая 2019

Я хотел бы слушать входящие 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 для дальнейшей обработки.

Заранее спасибо

...