fractal-midi 0.1.0-alpha.11 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +17 -0
- package/README.md +28 -21
- package/dist/am4/cacheOracleParams.generated.d.ts +1247 -0
- package/dist/am4/cacheOracleParams.generated.d.ts.map +1 -0
- package/dist/am4/cacheOracleParams.generated.js +783 -0
- package/dist/am4/cacheParams.d.ts +88 -24
- package/dist/am4/cacheParams.d.ts.map +1 -1
- package/dist/am4/cacheParams.js +81 -17
- package/dist/am4/index.d.ts +2 -2
- package/dist/am4/index.d.ts.map +1 -1
- package/dist/am4/index.js +2 -2
- package/dist/am4/params.d.ts +1353 -283
- package/dist/am4/params.d.ts.map +1 -1
- package/dist/am4/params.js +639 -246
- package/dist/am4/setParam.d.ts +20 -5
- package/dist/am4/setParam.d.ts.map +1 -1
- package/dist/am4/setParam.js +33 -5
- package/dist/am4/typeApplicability.d.ts.map +1 -1
- package/dist/am4/typeApplicability.js +0 -1
- package/dist/axe-fx-gen1/blockTypes.d.ts +6 -0
- package/dist/axe-fx-gen1/blockTypes.d.ts.map +1 -0
- package/dist/axe-fx-gen1/blockTypes.js +48 -0
- package/dist/axe-fx-gen1/index.d.ts +7 -0
- package/dist/axe-fx-gen1/index.d.ts.map +1 -0
- package/dist/axe-fx-gen1/index.js +15 -0
- package/dist/axe-fx-gen1/nibble.d.ts +5 -0
- package/dist/axe-fx-gen1/nibble.d.ts.map +1 -0
- package/dist/axe-fx-gen1/nibble.js +22 -0
- package/dist/axe-fx-gen1/params.d.ts +8 -0
- package/dist/axe-fx-gen1/params.d.ts.map +1 -0
- package/dist/axe-fx-gen1/params.js +935 -0
- package/dist/axe-fx-gen1/readParam.d.ts +37 -0
- package/dist/axe-fx-gen1/readParam.d.ts.map +1 -0
- package/dist/axe-fx-gen1/readParam.js +140 -0
- package/dist/axe-fx-gen1/setParam.d.ts +23 -0
- package/dist/axe-fx-gen1/setParam.d.ts.map +1 -0
- package/dist/axe-fx-gen1/setParam.js +76 -0
- package/dist/axe-fx-gen1/types.d.ts +51 -0
- package/dist/axe-fx-gen1/types.d.ts.map +1 -0
- package/dist/axe-fx-gen1/types.js +14 -0
- package/dist/axe-fx-ii/paramAliases.d.ts.map +1 -1
- package/dist/axe-fx-ii/paramAliases.js +15 -0
- package/dist/axe-fx-ii/params.d.ts +449 -23
- package/dist/axe-fx-ii/params.d.ts.map +1 -1
- package/dist/axe-fx-ii/params.js +286 -178
- package/dist/axe-fx-ii/setParam.d.ts +136 -19
- package/dist/axe-fx-ii/setParam.d.ts.map +1 -1
- package/dist/axe-fx-ii/setParam.js +167 -13
- package/dist/axe-fx-ii/typeApplicability.d.ts.map +1 -1
- package/dist/axe-fx-ii/typeApplicability.js +92 -0
- package/dist/axe-fx-iii/blockTypes.d.ts +16 -11
- package/dist/axe-fx-iii/blockTypes.d.ts.map +1 -1
- package/dist/axe-fx-iii/blockTypes.js +27 -20
- package/dist/axe-fx-iii/enumOverlay.d.ts +14 -0
- package/dist/axe-fx-iii/enumOverlay.d.ts.map +1 -1
- package/dist/axe-fx-iii/enumOverlay.js +71 -0
- package/dist/axe-fx-iii/enumRawId.d.ts +57 -0
- package/dist/axe-fx-iii/enumRawId.d.ts.map +1 -0
- package/dist/axe-fx-iii/enumRawId.js +102 -0
- package/dist/axe-fx-iii/gen3ReadRosters.d.ts +37 -0
- package/dist/axe-fx-iii/gen3ReadRosters.d.ts.map +1 -0
- package/dist/axe-fx-iii/gen3ReadRosters.js +595 -0
- package/dist/axe-fx-iii/index.d.ts +5 -3
- package/dist/axe-fx-iii/index.d.ts.map +1 -1
- package/dist/axe-fx-iii/index.js +8 -4
- package/dist/axe-fx-iii/params.d.ts +2 -2
- package/dist/axe-fx-iii/params.js +4 -4
- package/dist/axe-fx-iii/setParam.d.ts +386 -87
- package/dist/axe-fx-iii/setParam.d.ts.map +1 -1
- package/dist/axe-fx-iii/setParam.js +1009 -197
- package/dist/fm3/index.d.ts +2 -0
- package/dist/fm3/index.d.ts.map +1 -0
- package/dist/fm3/index.js +1 -0
- package/dist/fm3/params.d.ts +29 -0
- package/dist/fm3/params.d.ts.map +1 -0
- package/dist/fm3/params.js +2033 -0
- package/dist/fm9/enumOverrides.d.ts +2 -0
- package/dist/fm9/enumOverrides.d.ts.map +1 -0
- package/dist/fm9/enumOverrides.js +64 -0
- package/dist/fm9/index.d.ts +4 -0
- package/dist/fm9/index.d.ts.map +1 -0
- package/dist/fm9/index.js +3 -0
- package/dist/fm9/params.d.ts +29 -0
- package/dist/fm9/params.d.ts.map +1 -0
- package/dist/fm9/params.js +2064 -0
- package/dist/fm9/ranges.generated.d.ts +46 -0
- package/dist/fm9/ranges.generated.d.ts.map +1 -0
- package/dist/fm9/ranges.generated.js +2106 -0
- package/dist/fm9/rosters.generated.d.ts +7 -0
- package/dist/fm9/rosters.generated.d.ts.map +1 -0
- package/dist/fm9/rosters.generated.js +512 -0
- package/dist/shared/effectId.d.ts +56 -0
- package/dist/shared/effectId.d.ts.map +1 -0
- package/dist/shared/effectId.js +117 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -0
- package/dist/shared/lineage/amp-lineage.json +270 -292
- package/dist/shared/lineage/axefx2-amp-lineage.json +343 -147
- package/dist/shared/lineage/cab-lineage.json +10777 -10777
- package/dist/shared/lineage/chorus-lineage.json +173 -173
- package/dist/shared/lineage/compressor-lineage.json +338 -338
- package/dist/shared/lineage/delay-lineage.json +313 -313
- package/dist/shared/lineage/drive-lineage.json +217 -39
- package/dist/shared/lineage/flanger-lineage.json +313 -313
- package/dist/shared/lineage/phaser-lineage.json +208 -208
- package/dist/shared/lineage/reverb-lineage.json +793 -793
- package/dist/shared/lineage/wah-lineage.json +117 -117
- package/dist/shared/lineageLookup.d.ts +1 -0
- package/dist/shared/lineageLookup.d.ts.map +1 -1
- package/dist/shared/lineageLookup.js +4 -0
- package/dist/vp4/index.d.ts +3 -0
- package/dist/vp4/index.d.ts.map +1 -0
- package/dist/vp4/index.js +2 -0
- package/dist/vp4/params.d.ts +27 -0
- package/dist/vp4/params.d.ts.map +1 -0
- package/dist/vp4/params.js +1702 -0
- package/dist/vp4/setParam.d.ts +59 -0
- package/dist/vp4/setParam.d.ts.map +1 -0
- package/dist/vp4/setParam.js +161 -0
- package/package.json +21 -2
package/NOTICE
CHANGED
|
@@ -26,3 +26,20 @@ descriptively (nominative fair use) to identify the hardware family
|
|
|
26
26
|
this library targets. The library does not embed Fractal Audio
|
|
27
27
|
firmware, factory presets, branding assets, or any other Fractal-
|
|
28
28
|
copyrighted material.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
THIRD-PARTY SOFTWARE
|
|
33
|
+
|
|
34
|
+
This library includes gen-3 (Axe-Fx III / FM3 / FM9) protocol data
|
|
35
|
+
derived from:
|
|
36
|
+
|
|
37
|
+
- fractal-syx-codec (Apache License, Version 2.0)
|
|
38
|
+
Copyright 2026 Andrew Mercurio ("BoodieTraps")
|
|
39
|
+
https://github.com/drewmerc302/fractal-syx-codec
|
|
40
|
+
The gen-3 preset-file format spec (FORMAT.md) and the read-ordinal
|
|
41
|
+
effect-type roster tables (shipped as the gen-3 read rosters /
|
|
42
|
+
body-decode tables). The Huffman/CRC codec is a clean-room
|
|
43
|
+
reimplementation from that spec; the roster name tables are derived
|
|
44
|
+
from its data, independently cross-validated against our own
|
|
45
|
+
hardware captures.
|
package/README.md
CHANGED
|
@@ -4,10 +4,11 @@ Pure-TypeScript codec and parameter dictionaries for Fractal Audio
|
|
|
4
4
|
guitar processors. Build and parse the SysEx wire bytes a Fractal
|
|
5
5
|
device speaks, without pulling in a MIDI transport library.
|
|
6
6
|
|
|
7
|
-
>
|
|
8
|
-
>
|
|
9
|
-
> verification and
|
|
10
|
-
>
|
|
7
|
+
> Covers AM4 and Axe-Fx II at hardware-verified parity, the modern Fractal
|
|
8
|
+
> family (Axe-Fx III / FM3 / FM9) at codec and calibration via public-capture
|
|
9
|
+
> verification and editor-binary mining, and the Axe-Fx Standard/Ultra (gen-1)
|
|
10
|
+
> as a SET-only descriptor. The gen-3 family stays community-driven for
|
|
11
|
+
> hardware verification; see the per-device notes in the coverage table.
|
|
11
12
|
|
|
12
13
|
> **Unaffiliated community library.** "Fractal Audio", "AM4",
|
|
13
14
|
> "Axe-Fx", "Axe-Fx II", "Axe-Fx III", "FM3", and "FM9" are
|
|
@@ -20,16 +21,16 @@ device speaks, without pulling in a MIDI transport library.
|
|
|
20
21
|
|
|
21
22
|
## What this is
|
|
22
23
|
|
|
23
|
-
- **JSON-shaped parameter dictionaries
|
|
24
|
+
- **JSON-shaped parameter dictionaries.** Every block-and-param the
|
|
24
25
|
device understands, with display unit, value range, and the
|
|
25
26
|
paramId that goes on the wire. Reverse-engineered against real
|
|
26
27
|
hardware and Fractal's own published 3rd-party MIDI specs.
|
|
27
|
-
- **Pure-TypeScript codec
|
|
28
|
+
- **Pure-TypeScript codec.** Display value in (`gain: 7.5`,
|
|
28
29
|
`'Plexi 100W High'`), SysEx bytes out (`Uint8Array`). No MIDI
|
|
29
30
|
library required.
|
|
30
|
-
- **Parsers
|
|
31
|
+
- **Parsers and validators.** Given captured bytes, parse back to
|
|
31
32
|
display values for round-trip equality testing.
|
|
32
|
-
- **Reference data
|
|
33
|
+
- **Reference data.** Fractal's amp / cab / drive lineage tables
|
|
33
34
|
(the "the JC-120 model is based on this real-world amp" data),
|
|
34
35
|
factory bank metadata, applicability tables.
|
|
35
36
|
|
|
@@ -37,7 +38,7 @@ device speaks, without pulling in a MIDI transport library.
|
|
|
37
38
|
|
|
38
39
|
- **Not a MIDI library.** Routing bytes to and from your hardware
|
|
39
40
|
is your responsibility. Use `node-midi`, `webmidi`,
|
|
40
|
-
`easymidi`, JUCE, RtMidi, CoreMIDI, ALSA
|
|
41
|
+
`easymidi`, JUCE, RtMidi, CoreMIDI, ALSA, whatever fits.
|
|
41
42
|
- **Not a preset editor.** This package gives you the wire-level
|
|
42
43
|
primitives a preset editor would be built on top of.
|
|
43
44
|
- **Not affiliated with Fractal Audio Systems.** See the trademark
|
|
@@ -83,9 +84,10 @@ import { params } from 'fractal-midi/axe-fx-iii';
|
|
|
83
84
|
|---|---|---|---|---|
|
|
84
85
|
| AM4 | ✅ | ✅ | ✅ | ✅ |
|
|
85
86
|
| Axe-Fx II | ✅ | ✅ | ✅ | ✅ |
|
|
86
|
-
| Axe-Fx III | ✅ (
|
|
87
|
-
| FM3 |
|
|
88
|
-
| FM9 |
|
|
87
|
+
| Axe-Fx III | ✅ (full catalog) | ✅ ([see note](#axe-fx-iii-codec-note)) | ✅ ([see note](#axe-fx-iii-calibration-note)) | 🟡 community beta ([see note](#axe-fx-iii-hardware-note)) |
|
|
88
|
+
| FM3 | ✅ (device-true, mined from FM3-Edit) | ✅ (shared gen-3) | 🟡 (linear; some non-linear pending) | ❌ community beta |
|
|
89
|
+
| FM9 | ✅ (device-true, mined from FM9-Edit) | ✅ (shared gen-3) | 🟡 (linear; some non-linear pending) | ❌ community beta |
|
|
90
|
+
| Axe-Fx Standard/Ultra (gen-1) | ✅ (922 params) | ✅ (nibble-split, SET-only) | 🟡 (linear; 171 non-linear pending) | ❌ community beta (no gen-1 hardware) |
|
|
89
91
|
|
|
90
92
|
### Coverage notes
|
|
91
93
|
|
|
@@ -93,9 +95,9 @@ import { params } from 'fractal-midi/axe-fx-iii';
|
|
|
93
95
|
|
|
94
96
|
The III's SET_PARAMETER wire envelope (fn=0x01, sub-action `09 00`,
|
|
95
97
|
23-byte frame) is byte-verified against 10 public community captures
|
|
96
|
-
spanning two effect blocks and two sub-action codes
|
|
97
|
-
`axe-fx-iii/setparam` test goldens (302 cases: 36 envelope vectors
|
|
98
|
-
264 round-trip `build
|
|
98
|
+
spanning two effect blocks and two sub-action codes. See the
|
|
99
|
+
`axe-fx-iii/setparam` test goldens (302 cases: 36 envelope vectors,
|
|
100
|
+
264 round-trip `build` to `parse` to equality cases, and 2
|
|
99
101
|
`parseStateBroadcast` assertions). The GET-response shape is
|
|
100
102
|
hypothesis-only (no public capture exists); the parser handles both
|
|
101
103
|
the `09 00` / `52 00` set-echo shape and the async `04 01`
|
|
@@ -106,14 +108,14 @@ STATE_BROADCAST shape via `parseSetGetParameterResponse` /
|
|
|
106
108
|
|
|
107
109
|
III calibration = 100% of catalog entries carry a non-`'unverified'`
|
|
108
110
|
unit tag (16 string-typed `_NAME` / `_LABEL` / `_MSG` entries are
|
|
109
|
-
exempted by the calibration gate
|
|
111
|
+
exempted by the calibration gate, since they have no `'string'` unit in
|
|
110
112
|
the `Param` type). Enum vocabularies are resolved at runtime via
|
|
111
113
|
`resolveEnumValues(name)` from `enumOverlay.ts`, which carries a
|
|
112
|
-
`provenance` field on every entry
|
|
114
|
+
`provenance` field on every entry: `'am4-shared'` (AM4-verified,
|
|
113
115
|
shared with III), `'fractal-convention'` (universal Fractal-family
|
|
114
116
|
convention like OFF/ON / channel pickers), or `'iii-spec'` (hand-
|
|
115
117
|
curated for III-only params). Coverage of enum vocabularies and
|
|
116
|
-
numeric display ranges is partial
|
|
118
|
+
numeric display ranges is partial: `resolveEnumValues` returns
|
|
117
119
|
`undefined` for params not yet mapped, and many XML-derived numeric
|
|
118
120
|
entries carry a unit tag but no `displayMin` / `displayMax`. Treat
|
|
119
121
|
the catalog as the wire-level truth; treat the calibration overlay
|
|
@@ -130,9 +132,14 @@ that disagrees with their hardware.
|
|
|
130
132
|
|
|
131
133
|
FM3 and FM9 share the III protocol family (model bytes `0x11` /
|
|
132
134
|
`0x12` vs III's `0x10`, identical envelope per Fractal's v1.4 MIDI
|
|
133
|
-
spec).
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
spec). Both ship device-true param catalogs mined from their own
|
|
136
|
+
FM3-Edit / FM9-Edit JUCE binaries (paramIds are device-specific and are
|
|
137
|
+
never reused from the III) on the shared gen-3 codec. Calibration
|
|
138
|
+
covers the linear params; some non-linear display formulas are still
|
|
139
|
+
pending. Neither has been hardware-verified by the maintainer, so they
|
|
140
|
+
remain community beta: FM9 has real community captures confirming the
|
|
141
|
+
shared read and preset-dump paths, while FM3 confirmation is still
|
|
142
|
+
open.
|
|
136
143
|
|
|
137
144
|
## License
|
|
138
145
|
|