AM4 adapter: Fractal's smallest rig, possibly the smallest adapter
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 22/100
Research direction
This is a tracking issue for a new AM4 adapter matching the existing fm9/adapter.py contract, with a simulator like fm9/sim.py, plus registry and docs in docs/PROTOCOL.md / docs/PROTOCOL-CONTRIBUTIONS.md. First work is capturing AM4-Edit traffic to identify the protocol family and model byte; done means honest Capabilities, a green simulator suite without hardware, then write-plus-readback on a real AM4 with firmware logged. The maintainer has no AM4, so captures and hardware verification belong to whoever takes it.
Written by the indexing model from the issue text.
Description
Tracking issue for an AM4 adapter, in the same spirit as the FM3 one (#40): what the work is, what "done" means, and what each side owes the other. Whoever wants it, comment and it is yours.
What the AM4 is, for anyone landing here cold
Fractal's compact amp modeler, announced November 2025: Axe-Fx III-generation modeling in a four-footswitch pedal. 104 presets, each a fixed mini-rig of four blocks with four scenes and four channels per block, MIDI plus 4x4 USB audio, dual expression jacks, and its own editor (AM4-Edit, with integrated Fractal-Bot). Announcement: https://www.fractalaudio.com/downloads/manuals/AM4/251124-Fractal-Audio-Systems-Announces-the-AM4.pdf and product page: https://shop.fractalaudio.com/products/am4-amp-modeler
Why it is interesting here
It is the cheapest door into Fractal's modeling, which makes it the device a lot of first-time buyers will actually own, and its rig model is a strict subset of what ToneCommand already reasons about: scenes, channels, per-channel parameters, named presets. Four fixed blocks means the entire grid/cable problem that consumed months of FM9 protocol work (docs/PROTOCOL-CONTRIBUTIONS.md items 5, 7, 11, 12) may simply not exist on this device. If the editor protocol cooperates, this could be the smallest adapter in the family.
The open questions, which ARE the first work items
Unlike the FM3 (#40), which shares the decoded gen-3 editor protocol, nothing public says yet what AM4-Edit speaks. In order:
- Protocol family. Capture AM4-Edit traffic and establish whether it is the known gen-3 sysex family with a new model byte, a variant, or something new. AM4-Edit shipping with integrated Fractal-Bot hints at family lineage; hints are not findings.
- Model byte and command coverage. If gen-3: which byte, and which of the documented commands (scenes, bypass, channels, names, tempo, parameter reads/writes) answer. Every claim proven by write-plus-readback on the hardware, firmware version stated.
- The lying reads. Check which of the FM9's documented read quirks (zeroed GETs, stale asynchronous reads, display-name defaults) exist here. Assume nothing in either direction.
- Rosters. Amp/cab/effect complements differ from the FM9's; the adapter needs its own registry and grounding mapping under the same facts-only, cited, drift-guarded rules.
What the adapter then is
One class behind the existing fm9/adapter.py contract with an honest Capabilities declaration (four scenes, no free-form grid, whatever else is true), a parameter registry, and a simulator in the mold of fm9/sim.py, undecoded territory named rather than pretended. The safety layer - validation, confirmation, preset pinning, store whitelist, read-back verification - is inherited, never reimplemented. Rule zero is structural from day one: the transport whitelist keeps firmware and bootloader operations unreachable by construction.
Division of labor
The maintainer owns no AM4, so captures and hardware verification belong to whoever takes this, and their regression log is what review will ask for. In return: quick answers on the adapter contract, review with file-level findings, and protocol discoveries landing in docs/PROTOCOL.md with credit, exactly as the FM9 findings did.
Done means
- Protocol family established from captures, written up whichever way it goes; a finding of "not the gen-3 family, here is what it is instead" is a full success for step one.
- Adapter behind the existing contract, capabilities declared honestly, partial but truthful beats complete and guessed.
- AM4 registry and simulator, full suite green without hardware.
- Write-plus-readback verification on a real AM4, firmware version logged.
- Rule zero demonstrated: no path to any message type outside the decoded surface.
- Dominant language
- Python
- Stars
- 7
- Forks
- 3
- Avg merge
- 2h 17m
- Merged PRs (30d)
- 49
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from monzta1/ToneCommand
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
monzta1/ToneCommand#293 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
monzta1/ToneCommand#268 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
monzta1/ToneCommand#269 ·
Maintainers usually reply within 1 day
-
bug device
Difficulty 4/5 3-5 days Newbie friendliness 12/100
monzta1/ToneCommand#250 · 1 comment ·
Maintainers usually reply within 1 day
-
bug device
Difficulty 4/5 3-5 days Newbie friendliness 18/100
monzta1/ToneCommand#241 · 2 comments ·
Maintainers usually reply within 1 day
All issues in monzta1/ToneCommand
Similar issues
-
Support .aac audio uploadsPossibly taken @julien731 claimed this today. Openfeature
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nimblehq/audio-transcriber#153 ·
-
help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
antonyrag/ragleap-core#1062 ·
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
gke-labs/kube-agents#4321 ·
Maintainers usually reply within 1 day
-
enhancement help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Git-Hospital/githealthcheck#61 ·
Maintainers usually reply within 1 day
-
changelog investigate
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
ramnes/notion-sdk-py#433 ·