fix: pass complete SysEx buffer instead of last chunk for multi-buffer messages#8
Open
thorinside wants to merge 1 commit into
Open
fix: pass complete SysEx buffer instead of last chunk for multi-buffer messages#8thorinside wants to merge 1 commit into
thorinside wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Multi-buffer SysEx messages (large SysEx that spans more than one Windows MIDI buffer) are delivered incorrectly. When the final
0xF7terminator arrives,handleSysexDatais called withmessageData(only the last chunk) instead ofpartialSysExBuffer(the complete assembled message).This means any SysEx message that requires multiple WinMM MIDI header buffers is silently truncated to its last chunk, causing the receiver to see a corrupt/incomplete SysEx message.
Fix
Pass
partialSysExBuffer(the fully assembled message) rather thanmessageData(the last chunk only). Clear the buffer afterwards as before.Impact
Any app sending large SysEx messages on Windows — such as firmware updates, patch dumps, or bulk preset transfers — would receive corrupted data. This fix ensures the complete SysEx payload is delivered to the application.
Testing
Verified with large SysEx transfers (500+ byte preset dumps) via nt_helper on Windows. Before the fix, only the last WinMM buffer chunk was received; after the fix, the complete message is received correctly.