MIDI supports the concept of "release velocity," which expresses how fast a key is raised or released. This means that noteOff messages can contain non-zero velocities, yet Bubbles assumes that any note message (on or off) with a non-zero velocity means that the note is still on.
The modelization of MIDI messages in Bubbles needs to properly handle the difference between on and off messages, and arguably to also properly encode this state separately from velocity.
I first noticed this issue when trying to drive Bubbles using the awesome Numerology software sequencer, since it sends noteOff messages with release velocity values, and Bubbles was failing to turn layers off after they'd been triggered.
MIDI supports the concept of "release velocity," which expresses how fast a key is raised or released. This means that noteOff messages can contain non-zero velocities, yet Bubbles assumes that any note message (on or off) with a non-zero velocity means that the note is still on.
The modelization of MIDI messages in Bubbles needs to properly handle the difference between on and off messages, and arguably to also properly encode this state separately from velocity.
I first noticed this issue when trying to drive Bubbles using the awesome Numerology software sequencer, since it sends noteOff messages with release velocity values, and Bubbles was failing to turn layers off after they'd been triggered.