Performance enhancements - Separate Euclid firmware #29

Closed
awonak wants to merge 8 commits from new-euclid into main
Owner

This PR introduces a significant refactor to separate the core functionalities into two distinct firmwares, while introducing new CV inputs, display features, and performance optimizations.

  • Reverted cv mod changes instroduced in v2.0.0beta4 (#24)
  • Firmware Extraction: Split the Gravity firmware into two standalone projects (Gravity and Euclidean). Extracted Euclidean Rhythm features out of Gravity, and removed modifying parameters (probability, duty cycle, offset, swing) from the new Euclidean firmware.
  • CV Run & Reset Integration: Implemented cv_run and cv_reset mappings, allowing users to assign CV1 or CV2 inputs to control Clock Start/Stop and Clock Reset for both firmwares.
  • Display Rotation: Added a new global ROTATE DISP parameter in the UI to vertically invert the OLED display.

Performance & Interrupt Safety:

  • Refactored StateManager interrupt boundaries, moving noInterrupts() and interrupts() to wrap outermost public methods to prevent asynchronous execution bugs.
  • Improved live playback performance by only loading global state variables on pattern changes if the clock is currently paused.
    Version Bump: Updated all file docstrings, serialization headers, and

bumped version v2.0.1beta1.

This PR introduces a significant refactor to separate the core functionalities into two distinct firmwares, while introducing new CV inputs, display features, and performance optimizations. - Reverted cv mod changes instroduced in v2.0.0beta4 (https://git.sitkainstruments.com/awonak/libGravity/pulls/24) - Firmware Extraction: Split the Gravity firmware into two standalone projects (Gravity and Euclidean). Extracted Euclidean Rhythm features out of Gravity, and removed modifying parameters (probability, duty cycle, offset, swing) from the new Euclidean firmware. - CV Run & Reset Integration: Implemented cv_run and cv_reset mappings, allowing users to assign CV1 or CV2 inputs to control Clock Start/Stop and Clock Reset for both firmwares. - Display Rotation: Added a new global ROTATE DISP parameter in the UI to vertically invert the OLED display. Performance & Interrupt Safety: - Refactored StateManager interrupt boundaries, moving noInterrupts() and interrupts() to wrap outermost public methods to prevent asynchronous execution bugs. - Improved live playback performance by only loading global state variables on pattern changes if the clock is currently paused. Version Bump: Updated all file docstrings, serialization headers, and bumped version v2.0.1beta1.
awonak added 6 commits 2026-02-21 18:53:01 +00:00
Refactor the save / load state use of disabling interrupts by wrapping all private methods from inside the public method. This ensures we will not have a race condition if an interrupt is called in between the private method calls.
awonak added 1 commit 2026-02-21 19:14:52 +00:00
awonak added 1 commit 2026-03-08 04:12:27 +00:00
awonak closed this pull request 2026-03-08 04:12:51 +00:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: awonak/libGravity#29
No description provided.