diff --git a/.github/workflows/build-plugin.yml b/.github/workflows/build-plugin.yml index 227a16e..a710fdd 100644 --- a/.github/workflows/build-plugin.yml +++ b/.github/workflows/build-plugin.yml @@ -90,7 +90,7 @@ jobs: - name: Get Rack-SDK run: | pushd $HOME - wget -O Rack-SDK.zip https://vcvrack.com/downloads/Rack-SDK-${{ env.rack-sdk-version }}-mac-${{ matrix.platform }}.zip + wget -O Rack-SDK.zip https://vcvrack.com/downloads/Rack-SDK-${{ env.rack-sdk-version }}-mac-x64%2barm64.zip unzip Rack-SDK.zip - name: Build plugin run: | diff --git a/src/HC-1/HC-1-midi.cpp b/src/HC-1/HC-1-midi.cpp index afa2aad..ecd75f1 100644 --- a/src/HC-1/HC-1-midi.cpp +++ b/src/HC-1/HC-1-midi.cpp @@ -459,6 +459,22 @@ void Hc1Module::onChannel16Message(const midi::Message& msg) } break; + // FW 10.34 + case MidiStatus_PolyKeyPressure: + if (in_preset && !broken) { + switch (data_stream) { + case EM_StreamType::Name: + preset0.build_name(msg.bytes[1]); + preset0.build_name(msg.bytes[2]); + break; + case EM_StreamType::ConText: + preset0.build_text(msg.bytes[1]); + preset0.build_text(msg.bytes[2]); + break; + } + } + break; + case MidiStatus_ChannelPressure: if (in_preset && !broken) { switch (data_stream) { diff --git a/src/em_midi.hpp b/src/em_midi.hpp index ff8f2ed..b00b9c6 100644 --- a/src/em_midi.hpp +++ b/src/em_midi.hpp @@ -472,20 +472,20 @@ inline int MessageBytes(uint8_t status_byte) } union uMidiMessage { - uint64_t dwData; + uint32_t data; uint8_t bytes[4]; - uMidiMessage() : dwData(0) {} - uMidiMessage(uint64_t dw) : dwData(dw) {} - uMidiMessage(uint8_t b1, uint8_t b2) : dwData(0) { + uMidiMessage() : data(0) {} + uMidiMessage(uint64_t dw) : data(dw) {} + uMidiMessage(uint8_t b1, uint8_t b2) : data(0) { bytes[0] = b1; bytes[1] = b2; } - uMidiMessage(uint8_t b0, uint8_t b1, uint8_t b2) : dwData(0) { + uMidiMessage(uint8_t b0, uint8_t b1, uint8_t b2) : data(0) { bytes[0] = b0; bytes[1] = b1; bytes[2] = b2; } - uMidiMessage(const midi::Message& msg) : dwData(0) { + uMidiMessage(const midi::Message& msg) : data(0) { size_t i = 0; for (auto b: msg.bytes) { bytes[i++] = b; @@ -523,7 +523,7 @@ union uMidiMessage { inline uint8_t channel() { return bytes[0] & 0x0f; } inline uint8_t b1() { return bytes[1]; } inline uint8_t b2() { return bytes[2]; } - inline uint64_t raw() { return dwData; } + inline uint64_t raw() { return data; } }; inline uint8_t Status(uint64_t msg) { return uMidiMessage(msg).status(); }