drivers: Axe-Fx II (gen2, 0x07) + VP4 (0x14) device drivers#33
Merged
Conversation
Wire both remaining ForgeFX-MIDI devices through the driver layer. Reads reuse the verified forgefx-midi descriptor readers over the shared transport; writes use the low-level wire builders so setParam(eid,paramId,...) stays byte-precise. - descriptorConn: shared MidiConnection<->Transport bridge for descriptor-driven drivers (extracted from the AM4 pattern) - gen2: 4x12 grid, 8 scenes, X/Y channels; getPreset-backed grid/blockParams, raw-builder writes (param/bypass/channel/place/scene/select/store/rename) - vp4: linear 4-slot; shared gen-3 reader; only continuous set_param, set_bypass, and save are decoded (community-beta) - discrete/placement/scene/rename stay gated (routes 501). grid() is discovery-order: the gen-3 grid read has no VP4 4-slot geometry, so true slot placement is not decodable yet - registry: detect + drive 0x07/0x14; forced-profile keys axe2/vp4 - test: detection cases (handshake + port-name + longest-name regression) and gen2/vp4 write-frame + capability suites (mocked transport, no hardware)
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.
Wires Axe-Fx II and VP4 through the driver layer + detection so Axis can edit them. Community-beta, not yet hardware-verified (mocked-transport tests only — no device available here).
What
descriptorConn.ts— sharedMidiConnection↔Transportbridge for descriptor-driven drivers (extracted from the AM4 pattern; AM4 left untouched).gen2.ts(0x07, keyaxe2) — 4×12 grid, 8 scenes, X/Y channels. Reads via the verifiedAXEFX2_DESCRIPTOR.reader.getPreset(behind a reader mutex + TTL cache); writes via the low-level wire builders sosetParam(eid,paramId,…)stays byte-precise (fn 0x2e display-float for continuous, fn 0x02 int for discrete, plus bypass/channel/place/scene/select/store/rename).vp4.ts(0x14, keyvp4) — linear 4-slot; shared gen-3 reader. Only continuousset_param,set_bypass, andsaveare decoded → shipped; discrete/placement/scene/rename are gated (methods omitted → routes501).grid()is discovery-order, not true slot position: the gen-3 grid read has no VP4 4-slot geometry, so real placement isn't decodable yet (needs asub=0x2Ecapture upstream).registryCore.ts— detect + drive0x07/0x14; forced-profile keysaxe2/vp4.Verification
npm run typecheckclean;npm test— 11/11 suites pass; browser-safe check clean.Base is
feature/gen3-telemetry(PR #32) so this diff is isolated to the axe2/VP4 work. gen1 (Axe-Fx Std/Ultra) is intentionally out of scope — its protocol has no grid/preset read.