diff options
author | David Robillard <d@drobilla.net> | 2022-08-18 01:16:43 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-08-18 01:16:43 -0400 |
commit | 86a914ed7bf5316cad6dcac5f69cc3b300b40a23 (patch) | |
tree | a21951bd3115520a06c93cc3c86c82b32b35a884 /src/server/ControlBindings.cpp | |
parent | 1bf1ab5c898f6e6d6e878a716540d0049f5cb206 (diff) | |
download | ingen-86a914ed7bf5316cad6dcac5f69cc3b300b40a23.tar.gz ingen-86a914ed7bf5316cad6dcac5f69cc3b300b40a23.tar.bz2 ingen-86a914ed7bf5316cad6dcac5f69cc3b300b40a23.zip |
Fix control binding value computation
Diffstat (limited to 'src/server/ControlBindings.cpp')
-rw-r--r-- | src/server/ControlBindings.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/server/ControlBindings.cpp b/src/server/ControlBindings.cpp index 8ae4f7c2..60684440 100644 --- a/src/server/ControlBindings.cpp +++ b/src/server/ControlBindings.cpp @@ -124,17 +124,20 @@ ControlBindings::midi_event_key(uint16_t, const uint8_t* buf, uint16_t& value) { switch (lv2_midi_message_type(buf)) { case LV2_MIDI_MSG_CONTROLLER: - value = static_cast<int8_t>(buf[2]); + value = buf[2]; return {Type::MIDI_CC, static_cast<int8_t>(buf[1])}; case LV2_MIDI_MSG_BENDER: - value = (static_cast<int8_t>(buf[2]) << 7) + static_cast<int8_t>(buf[1]); + value = (buf[2] << 7U) + buf[1]; return {Type::MIDI_BENDER}; case LV2_MIDI_MSG_CHANNEL_PRESSURE: - value = static_cast<int8_t>(buf[1]); + value = buf[1]; return {Type::MIDI_CHANNEL_PRESSURE}; case LV2_MIDI_MSG_NOTE_ON: - value = 1.0f; - return {Type::MIDI_NOTE, static_cast<int8_t>(buf[1])}; + value = 1; + return {Type::MIDI_NOTE, buf[1]}; + case LV2_MIDI_MSG_NOTE_OFF: + value = 0; + return {Type::MIDI_NOTE, buf[1]}; default: return {}; } |