per-operator phase offset & DX7 import
Pre-release
Pre-release
Add per-operator phase offset (note-on start phase) with UI + preset compatibility
- add a dedicated phase offset parameter for each operator
- apply operator phase offset on note-on in voice init path
- add operator-page UI state to edit phase offset with short labels
- keep editor architecture intact by using dedicated operator phase rows
- extend runtime and flash parameter structs for phase persistence
- update save/load conversion for new phase parameters
- preserve compatibility for existing/legacy patches (including v2 layout handling)
- update built-in preset initializers with default phase entries
- add/refresh code comments in changed areas for maintainability
DX7 import: validate sysex bank and align importer mapping
- harden DX7 sysex loading by reading full 32-voice bank frames and validating:
- frame size and header/footer bytes
- MIDI channel nibble format
- 7-bit payload/checksum bytes
- Yamaha checksum integrity
- reject invalid patch indices and invalid bank data before import.
- add null-safe DX7 patch loading path in synth state to avoid loading invalid pointers.
- rework DX7 feedback import:
- map DX7 feedback to modulationIndex6 (capped at 0.9)
- remove legacy fb>4 saw-shape workaround branches
- fix transpose import branch ordering so deep negative transpose is reachable.
- fix AM depth regression:
- preserve row 2 AMD-derived modulation amount
- add regression guard comment
- improve IM velocity split mapping with updated KVS ratios and apply split only when KVS > 0.
- import DX7 LFO waveform and key sync in importer:
- map DX7 wave shapes to internal LFO shapes
- map key sync state into keybRamp sign semantics
- deduplicate shared LFO import assignment logic
- clamp DX7 PMD/AMD to 0..99 before scaling/table lookup.
- add compile-time table-size guard for DX7 AMD lookup table.
- fix LFO switch-case scope issue in header after key-sync update.
- refresh and correct README/docs wording and links.
hints:
- rename firmware and bootloader files to shorter name
- bootloader untested