fractal-midi 0.1.0-alpha.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/LICENSE +200 -0
- package/NOTICE +28 -0
- package/README.md +147 -0
- package/dist/am4/applicability.d.ts +61 -0
- package/dist/am4/applicability.d.ts.map +1 -0
- package/dist/am4/applicability.js +285 -0
- package/dist/am4/blockTypes.d.ts +43 -0
- package/dist/am4/blockTypes.d.ts.map +1 -0
- package/dist/am4/blockTypes.js +48 -0
- package/dist/am4/cacheEnums.d.ts +46 -0
- package/dist/am4/cacheEnums.d.ts.map +1 -0
- package/dist/am4/cacheEnums.js +734 -0
- package/dist/am4/cacheParams.d.ts +3533 -0
- package/dist/am4/cacheParams.d.ts.map +1 -0
- package/dist/am4/cacheParams.js +1996 -0
- package/dist/am4/editorControlLabels.d.ts +45 -0
- package/dist/am4/editorControlLabels.d.ts.map +1 -0
- package/dist/am4/editorControlLabels.js +15894 -0
- package/dist/am4/index.d.ts +28 -0
- package/dist/am4/index.d.ts.map +1 -0
- package/dist/am4/index.js +31 -0
- package/dist/am4/ir/preset.d.ts +24 -0
- package/dist/am4/ir/preset.d.ts.map +1 -0
- package/dist/am4/ir/preset.js +12 -0
- package/dist/am4/ir/transpile.d.ts +9 -0
- package/dist/am4/ir/transpile.d.ts.map +1 -0
- package/dist/am4/ir/transpile.js +19 -0
- package/dist/am4/locations.d.ts +32 -0
- package/dist/am4/locations.d.ts.map +1 -0
- package/dist/am4/locations.js +58 -0
- package/dist/am4/paramNames.d.ts +55 -0
- package/dist/am4/paramNames.d.ts.map +1 -0
- package/dist/am4/paramNames.js +863 -0
- package/dist/am4/paramNamesGenerated.d.ts +41 -0
- package/dist/am4/paramNamesGenerated.d.ts.map +1 -0
- package/dist/am4/paramNamesGenerated.js +183 -0
- package/dist/am4/parameterBridge.d.ts +46 -0
- package/dist/am4/parameterBridge.d.ts.map +1 -0
- package/dist/am4/parameterBridge.js +300 -0
- package/dist/am4/params.d.ts +9577 -0
- package/dist/am4/params.d.ts.map +1 -0
- package/dist/am4/params.js +4537 -0
- package/dist/am4/setParam.d.ts +414 -0
- package/dist/am4/setParam.d.ts.map +1 -0
- package/dist/am4/setParam.js +819 -0
- package/dist/am4/shared/paramHelpers.d.ts +55 -0
- package/dist/am4/shared/paramHelpers.d.ts.map +1 -0
- package/dist/am4/shared/paramHelpers.js +146 -0
- package/dist/am4/symbolicIds.d.ts +11 -0
- package/dist/am4/symbolicIds.d.ts.map +1 -0
- package/dist/am4/symbolicIds.js +587 -0
- package/dist/am4/typeApplicability.d.ts +39 -0
- package/dist/am4/typeApplicability.d.ts.map +1 -0
- package/dist/am4/typeApplicability.js +466 -0
- package/dist/am4/variantResolverTables.d.ts +51 -0
- package/dist/am4/variantResolverTables.d.ts.map +1 -0
- package/dist/am4/variantResolverTables.js +3128 -0
- package/dist/axe-fx-ii/blockTypes.d.ts +45 -0
- package/dist/axe-fx-ii/blockTypes.d.ts.map +1 -0
- package/dist/axe-fx-ii/blockTypes.js +116 -0
- package/dist/axe-fx-ii/index.d.ts +5 -0
- package/dist/axe-fx-ii/index.d.ts.map +1 -0
- package/dist/axe-fx-ii/index.js +18 -0
- package/dist/axe-fx-ii/paramAliases.d.ts +54 -0
- package/dist/axe-fx-ii/paramAliases.d.ts.map +1 -0
- package/dist/axe-fx-ii/paramAliases.js +146 -0
- package/dist/axe-fx-ii/params.d.ts +11502 -0
- package/dist/axe-fx-ii/params.d.ts.map +1 -0
- package/dist/axe-fx-ii/params.js +2847 -0
- package/dist/axe-fx-ii/setParam.d.ts +560 -0
- package/dist/axe-fx-ii/setParam.d.ts.map +1 -0
- package/dist/axe-fx-ii/setParam.js +888 -0
- package/dist/axe-fx-iii/blockTypes.d.ts +87 -0
- package/dist/axe-fx-iii/blockTypes.d.ts.map +1 -0
- package/dist/axe-fx-iii/blockTypes.js +156 -0
- package/dist/axe-fx-iii/enumOverlay.d.ts +73 -0
- package/dist/axe-fx-iii/enumOverlay.d.ts.map +1 -0
- package/dist/axe-fx-iii/enumOverlay.js +236 -0
- package/dist/axe-fx-iii/index.d.ts +9 -0
- package/dist/axe-fx-iii/index.d.ts.map +1 -0
- package/dist/axe-fx-iii/index.js +20 -0
- package/dist/axe-fx-iii/params.d.ts +179 -0
- package/dist/axe-fx-iii/params.d.ts.map +1 -0
- package/dist/axe-fx-iii/params.js +6913 -0
- package/dist/axe-fx-iii/setParam.d.ts +460 -0
- package/dist/axe-fx-iii/setParam.d.ts.map +1 -0
- package/dist/axe-fx-iii/setParam.js +910 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/shared/checksum.d.ts +10 -0
- package/dist/shared/checksum.d.ts.map +1 -0
- package/dist/shared/checksum.js +14 -0
- package/dist/shared/device.d.ts +195 -0
- package/dist/shared/device.d.ts.map +1 -0
- package/dist/shared/device.js +27 -0
- package/dist/shared/index.d.ts +8 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +11 -0
- package/dist/shared/lineage/amp-lineage.json +8313 -0
- package/dist/shared/lineage/axefx2-amp-lineage.json +5871 -0
- package/dist/shared/lineage/axefx2-delay-lineage.json +226 -0
- package/dist/shared/lineage/axefx2-drive-lineage.json +575 -0
- package/dist/shared/lineage/axefx2-reverb-lineage.json +467 -0
- package/dist/shared/lineage/cab-lineage.json +10777 -0
- package/dist/shared/lineage/chorus-lineage.json +173 -0
- package/dist/shared/lineage/compressor-lineage.json +338 -0
- package/dist/shared/lineage/delay-lineage.json +313 -0
- package/dist/shared/lineage/drive-lineage.json +1844 -0
- package/dist/shared/lineage/flanger-lineage.json +313 -0
- package/dist/shared/lineage/phaser-lineage.json +208 -0
- package/dist/shared/lineage/reverb-lineage.json +793 -0
- package/dist/shared/lineage/wah-lineage.json +117 -0
- package/dist/shared/lineageLookup.d.ts +69 -0
- package/dist/shared/lineageLookup.d.ts.map +1 -0
- package/dist/shared/lineageLookup.js +196 -0
- package/dist/shared/packValue.d.ts +40 -0
- package/dist/shared/packValue.d.ts.map +1 -0
- package/dist/shared/packValue.js +105 -0
- package/dist/shared/types.d.ts +23 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +9 -0
- package/package.json +75 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Axe-Fx III parameter catalog.
|
|
3
|
+
*
|
|
4
|
+
* Auto-generated by
|
|
5
|
+
* scripts/_research/generate-axefx3-params-from-catalog.ts
|
|
6
|
+
* from
|
|
7
|
+
* samples/captured/decoded/ghidra-axeedit3-paramnames.json
|
|
8
|
+
* (Ghidra-mined Axe-Edit III v1.14.31 effect-type dispatcher
|
|
9
|
+
* FUN_140397a40 — Session 82), with AM4-derived display
|
|
10
|
+
* calibration layered on top (see
|
|
11
|
+
* `scripts/_research/axefx3-am4-overrides.ts`). DO NOT HAND-EDIT
|
|
12
|
+
* — re-run the generator to refresh.
|
|
13
|
+
*
|
|
14
|
+
* Coverage:
|
|
15
|
+
* - 2216 parameters across 48 effect families.
|
|
16
|
+
* - **2200/2200 (100%) calibration-eligible entries** carry a
|
|
17
|
+
* non-`'unverified'` unit tag after the post-generation overlay
|
|
18
|
+
* pass (`scripts/axe-fx-iii/apply-calibration-overlay.ts`).
|
|
19
|
+
* - 16 entries remain `unit: 'unverified'` and are exempted by the
|
|
20
|
+
* calibration acceptance gate because they are string-typed
|
|
21
|
+
* (`_NAME`, `_LABEL1`..`_LABEL4`, `_MSG`) — the `Param` interface
|
|
22
|
+
* has no `'string'` unit so the codec layer treats them as opaque.
|
|
23
|
+
*
|
|
24
|
+
* Tiered calibration provenance (in declaration order on each entry):
|
|
25
|
+
* • Baseline (from generator):
|
|
26
|
+
* - AM4 symbol-name join — `// inferred from AM4`. 236 entries.
|
|
27
|
+
* - Universal Fractal convention (generator's suffix pass) —
|
|
28
|
+
* `// inferred from Fractal convention`. 226 entries.
|
|
29
|
+
* - AxeEdit III XML controlType — `// inferred from AxeEdit III XML controlType`.
|
|
30
|
+
* 1564 entries with unit but no range.
|
|
31
|
+
* • Post-generation overlay (`apply-calibration-overlay.ts`):
|
|
32
|
+
* - `// post-gen overlay: <reason>` — extended suffix table
|
|
33
|
+
* closing the long-tail of `'unverified'` entries with
|
|
34
|
+
* defensible Fractal-convention units. ~146 entries.
|
|
35
|
+
*
|
|
36
|
+
* Enum vocabularies (resolveEnumValues lookup):
|
|
37
|
+
* - `src/axe-fx-iii/enumOverlay.ts` provides a runtime-joined enum
|
|
38
|
+
* vocabulary layer combining AM4-verified shared tables (LFO
|
|
39
|
+
* waveforms, tempo divisions, filter slopes, channel pickers),
|
|
40
|
+
* universal Fractal binary toggles (OFF/ON, ENGAGED/BYPASSED), and
|
|
41
|
+
* hand-curated III-specific entries. Each vocabulary tier carries
|
|
42
|
+
* a `provenance` tag (`'am4-shared'` / `'fractal-convention'` /
|
|
43
|
+
* `'iii-spec'`). Hardware-verification of III enum values is
|
|
44
|
+
* user-driven via GitHub issue.
|
|
45
|
+
*
|
|
46
|
+
* Calibration sources (per-family inferred count):
|
|
47
|
+
* CABINET=104, CHORUS=32, COMP=35, CONTROLLERS=136, CROSSOVER=15, DELAY=86, DISTORT=135, DYNDIST=12, ENHANCER=12, FC=8, FDBKRET=6, FILTER=37, FLANGER=55, FORMANT=12, FUZZ=43, GATE=19, GEQ=20, GLOBAL=228, INPUT=10, IRPLAYER=22, LOOPER=22, MEGATAP=34, MIDIBLOCK=10, MIXER=23, MOD=20, MULTICOMP=37, MULTIPLEXER=7, MULTITAP=116, OUTPUT=26, PEQ=33, PHASER=35, PITCH=112, PLEX=93, PRESET=51, RESONATOR=39, REVERB=71, RINGMOD=12, ROTARY=21, RTA=4, SYNTH=41, TENTAP=44, TONEMATCH=21, TREMOLO=22, VOCODER=67, VOLUME=13, WAH=25
|
|
48
|
+
*
|
|
49
|
+
* Inferred-from-AM4 caveat:
|
|
50
|
+
* - AM4 is the closest hardware-verified analog Fractal device.
|
|
51
|
+
* Same vendor, same naming convention, similar musical scope.
|
|
52
|
+
* The inferred display range (e.g. reverb time 0.1..100 s,
|
|
53
|
+
* drive 0..10 knob) is correct as a *display* convention —
|
|
54
|
+
* this is what Fractal's UI shows for the knob across both
|
|
55
|
+
* devices.
|
|
56
|
+
* - The III's wire encoding for the displayed value is NOT
|
|
57
|
+
* yet verified. AM4 packs values into normalized [0,1] Q15;
|
|
58
|
+
* the III packs into a 16-bit linear field via packValue16.
|
|
59
|
+
* Display↔wire conversion still requires III-side capture.
|
|
60
|
+
* - Enum entries inherit `unit: 'enum'` from AM4 but DO NOT
|
|
61
|
+
* ship AM4's enumValues table. III firmware adds reverb
|
|
62
|
+
* types, amp models, etc. post-AM4 — copying AM4's vocabulary
|
|
63
|
+
* verbatim would mislead the agent. The III's enum vocabulary
|
|
64
|
+
* needs III-side Ghidra mining or hardware capture.
|
|
65
|
+
*
|
|
66
|
+
* Wire constraints (see ./setParam.ts):
|
|
67
|
+
* - paramId is sent as a 14-bit septet pair → wire range is
|
|
68
|
+
* 0..16383. Catalog entries with paramId >= 65520 are
|
|
69
|
+
* firmware-internal sentinels (e.g. *_SET_ALL, *_VAL_ALL)
|
|
70
|
+
* and are NOT addressable via 0x02 SET_PARAMETER — they
|
|
71
|
+
* will fail the encode14 range guard. They are retained in
|
|
72
|
+
* this catalog as documentary entries because they show up
|
|
73
|
+
* in the dispatcher tables; tooling that resolves a name to
|
|
74
|
+
* a paramId should filter > 16383 before attempting a wire
|
|
75
|
+
* write.
|
|
76
|
+
*
|
|
77
|
+
* Firmware-legacy overlays:
|
|
78
|
+
* - (family, paramId) is NOT unique. Some families (notably
|
|
79
|
+
* FLANGER) keep older symbol names alongside the current
|
|
80
|
+
* ones at the same paramIds (e.g. `FLANGER_TYPE` and
|
|
81
|
+
* `FLANGER_OLD_TYPE` both at paramId 0). The duplicates are
|
|
82
|
+
* intentional — older firmware presets store under the
|
|
83
|
+
* `_OLD_` symbols, while new writes use the current names.
|
|
84
|
+
* The composite key `(family, name)` IS unique; use
|
|
85
|
+
* `PARAM_BY_KEY` for stable lookup.
|
|
86
|
+
*
|
|
87
|
+
* 🟢 SET wire shape byte-verified Session 97 against 10 public
|
|
88
|
+
* captures: `fn=0x01` + sub-action `09 00` (typed-input), 23-byte
|
|
89
|
+
* envelope. NOT the pre-Session-97 `fn=0x02` II-port. Capture
|
|
90
|
+
* corpus + field layout: `docs/axefx3-set-parameter-captures.md`.
|
|
91
|
+
* 🟡 GET response shape still unverified — the `04 01`
|
|
92
|
+
* STATE_BROADCAST appears to be an AxeEdit-driven heartbeat poll,
|
|
93
|
+
* NOT a sync SET echo. See `docs/SYSEX-MAP-AXE-FX-III.md` §0x01.
|
|
94
|
+
*/
|
|
95
|
+
/**
|
|
96
|
+
* Display-unit tag for an Axe-Fx III parameter.
|
|
97
|
+
*
|
|
98
|
+
* `'unverified'` is the default for entries the generator could
|
|
99
|
+
* not infer (the AM4 has no matching parameter, or the III family
|
|
100
|
+
* has no AM4 analog). Other tags are AM4-derived display
|
|
101
|
+
* conventions — they describe the user-facing scale (dB, ms,
|
|
102
|
+
* knob_0_10, etc.) but NOT the III's wire encoding. Display↔wire
|
|
103
|
+
* conversion is still the caller's responsibility on the III
|
|
104
|
+
* until hardware verification lands.
|
|
105
|
+
*/
|
|
106
|
+
export type Unit = 'bipolar_percent' | 'count' | 'db' | 'degrees' | 'enum' | 'hz' | 'knob_0_10' | 'knob_0_20' | 'ms' | 'numeric' | 'percent' | 'pf' | 'ratio' | 'seconds' | 'semitones' | 'unverified';
|
|
107
|
+
/** One entry in the Axe-Fx III parameter catalog. */
|
|
108
|
+
export interface Param {
|
|
109
|
+
/**
|
|
110
|
+
* Effect family symbol (e.g. `'REVERB'`, `'DELAY'`, `'COMP'`).
|
|
111
|
+
* Sourced from the dispatcher's case → table-of-params mapping.
|
|
112
|
+
*/
|
|
113
|
+
family: string;
|
|
114
|
+
/**
|
|
115
|
+
* Parameter ID within the family. Wire-encoded as a 14-bit
|
|
116
|
+
* septet pair in 0x02 SET_PARAMETER frames. Values >= 65520 are
|
|
117
|
+
* firmware-internal sentinels and NOT wire-addressable — see
|
|
118
|
+
* file-level header for details.
|
|
119
|
+
*/
|
|
120
|
+
paramId: number;
|
|
121
|
+
/**
|
|
122
|
+
* Symbol name from Axe-Edit III's binary (e.g. `'REVERB_TYPE'`).
|
|
123
|
+
* Stable across firmware releases of the same generation.
|
|
124
|
+
*/
|
|
125
|
+
name: string;
|
|
126
|
+
/**
|
|
127
|
+
* Human-readable display label from the AxeEdit III JUCE-BinaryData
|
|
128
|
+
* XML mining — the editor's knob caption (e.g. `'Drive'` for
|
|
129
|
+
* `DISTORT_DRIVE`, `'Reverb Time'` for `REVERB_TIME`). Populated
|
|
130
|
+
* for ~91% of catalog entries; absent for symbols the editor
|
|
131
|
+
* doesn't render (firmware-internal blocks, sentinel paramIds).
|
|
132
|
+
* Useful as LLM prompt context independent of unit/range.
|
|
133
|
+
*/
|
|
134
|
+
displayLabel?: string;
|
|
135
|
+
/**
|
|
136
|
+
* Display unit tag. `'unverified'` until III hardware confirms
|
|
137
|
+
* the real shape; otherwise inferred from one of three sources
|
|
138
|
+
* (see file-level header for provenance — these are display
|
|
139
|
+
* conventions, not wire encodings).
|
|
140
|
+
*/
|
|
141
|
+
unit: Unit;
|
|
142
|
+
/**
|
|
143
|
+
* Display range minimum. Populated for AM4-inferred entries
|
|
144
|
+
* (`// inferred from AM4` trailing comment), absent for
|
|
145
|
+
* `unit: 'unverified'` entries.
|
|
146
|
+
*/
|
|
147
|
+
displayMin?: number;
|
|
148
|
+
/** Display range maximum. Same population rule as `displayMin`. */
|
|
149
|
+
displayMax?: number;
|
|
150
|
+
/**
|
|
151
|
+
* Optional non-linear scaling, AM4-inferred. `'log10'` for
|
|
152
|
+
* time / frequency knobs that span multiple decades. Absent
|
|
153
|
+
* for linear knobs or `'unverified'` entries.
|
|
154
|
+
*/
|
|
155
|
+
scaling?: 'linear' | 'log10';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Flat catalog of every (family, paramId) entry mined from the
|
|
159
|
+
* Axe-Edit III dispatcher. Sorted by family-case-index ascending,
|
|
160
|
+
* then paramId ascending within each family, for byte-stable
|
|
161
|
+
* regeneration.
|
|
162
|
+
*/
|
|
163
|
+
export declare const PARAMS: readonly Param[];
|
|
164
|
+
/**
|
|
165
|
+
* Lookup by family symbol. Each family's entry preserves the
|
|
166
|
+
* paramId-ascending order from `PARAMS`.
|
|
167
|
+
*/
|
|
168
|
+
export declare const PARAMS_BY_FAMILY: Readonly<Record<string, readonly Param[]>>;
|
|
169
|
+
/**
|
|
170
|
+
* Lookup by `'FAMILY.NAME'` (the catalog's natural composite key).
|
|
171
|
+
* Example: `PARAM_BY_KEY['REVERB.REVERB_TYPE']` → the Reverb Type
|
|
172
|
+
* entry. Use this when callers reference a param by its symbolic
|
|
173
|
+
* name; use `PARAMS_BY_FAMILY[family]` when iterating a whole
|
|
174
|
+
* family.
|
|
175
|
+
*/
|
|
176
|
+
export declare const PARAM_BY_KEY: Readonly<Record<string, Param>>;
|
|
177
|
+
/** Family symbols present in the catalog, in dispatcher-case order. */
|
|
178
|
+
export declare const FAMILIES: readonly string[];
|
|
179
|
+
//# sourceMappingURL=params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/axe-fx-iii/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,IAAI,GAAG,iBAAiB,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvM,qDAAqD;AACrD,MAAM,WAAW,KAAK;IACpB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,IAAI,EAAE,IAAI,CAAC;IACX;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B;AAID;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,KAAK,EAyqElC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAywEvE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAyqExD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAiDrC,CAAC"}
|