mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-28 03:10:24 -04:00
fix(tracker/gomidi): consume all available midi.Messages
This commit is contained in:
parent
97e59c5650
commit
3986bbede7
@ -87,23 +87,26 @@ func (m *RTMIDIContext) HandleMessage(msg midi.Message, timestampms int32) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *RTMIDIContext) NextEvent() (event tracker.MIDINoteEvent, ok bool) {
|
func (c *RTMIDIContext) NextEvent() (event tracker.MIDINoteEvent, ok bool) {
|
||||||
select {
|
for {
|
||||||
case msg := <-c.events:
|
select {
|
||||||
var channel uint8
|
case msg := <-c.events:
|
||||||
var velocity uint8
|
var channel uint8
|
||||||
var key uint8
|
var velocity uint8
|
||||||
if msg.GetNoteOn(&channel, &key, &velocity) {
|
var key uint8
|
||||||
return tracker.MIDINoteEvent{Frame: 0, On: true, Channel: int(channel), Note: key}, true
|
if msg.GetNoteOn(&channel, &key, &velocity) {
|
||||||
} else if msg.GetNoteOff(&channel, &key, &velocity) {
|
return tracker.MIDINoteEvent{Frame: 0, On: true, Channel: int(channel), Note: key}, true
|
||||||
return tracker.MIDINoteEvent{Frame: 0, On: false, Channel: int(channel), Note: key}, true
|
} else if msg.GetNoteOff(&channel, &key, &velocity) {
|
||||||
|
return tracker.MIDINoteEvent{Frame: 0, On: false, Channel: int(channel), Note: key}, true
|
||||||
|
}
|
||||||
|
// TODO: handle control messages with something like:
|
||||||
|
// if msg.GetControlChange(&channel, &controller, &value) {
|
||||||
|
// ....
|
||||||
|
// if the message is not any recognized type, ignore it and continue looping
|
||||||
|
default:
|
||||||
|
// Note (@LeStahL): This empty select case is needed to make the implementation non-blocking.
|
||||||
|
return tracker.MIDINoteEvent{}, false
|
||||||
}
|
}
|
||||||
// TODO: handle control messages with something like:
|
|
||||||
// if msg.GetControlChange(&channel, &controller, &value) {
|
|
||||||
// ....
|
|
||||||
default:
|
|
||||||
// Note (@LeStahL): This empty select case is needed to make the implementation non-blocking.
|
|
||||||
}
|
}
|
||||||
return tracker.MIDINoteEvent{}, false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RTMIDIContext) BPM() (bpm float64, ok bool) {
|
func (c *RTMIDIContext) BPM() (bpm float64, ok bool) {
|
||||||
|
Loading…
Reference in New Issue
Block a user