fractal-midi 0.3.1 → 0.4.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.
Files changed (153) hide show
  1. package/NOTICE +1 -1
  2. package/README.md +39 -24
  3. package/catalog/axe-fx-gen1.json +1 -1
  4. package/catalog/axe-fx-ii.json +1 -1
  5. package/catalog/axe-fx-iii.json +1 -1
  6. package/catalog/fm3.json +1 -1
  7. package/catalog/fm9.json +1 -1
  8. package/catalog/vp4.json +1 -1
  9. package/dist/am4/setParam.d.ts.map +1 -1
  10. package/dist/am4/setParam.js +1 -5
  11. package/dist/gen1/blockTypes.d.ts.map +1 -0
  12. package/dist/gen1/index.d.ts.map +1 -0
  13. package/dist/{axe-fx-gen1 → gen1}/index.js +1 -1
  14. package/dist/gen1/nibble.d.ts.map +1 -0
  15. package/dist/gen1/params.d.ts.map +1 -0
  16. package/dist/gen1/readParam.d.ts.map +1 -0
  17. package/dist/gen1/setParam.d.ts.map +1 -0
  18. package/dist/gen1/types.d.ts.map +1 -0
  19. package/dist/gen2/axe-fx-ii/applicability.d.ts.map +1 -0
  20. package/dist/gen2/axe-fx-ii/blockTypes.d.ts.map +1 -0
  21. package/dist/gen2/axe-fx-ii/index.d.ts.map +1 -0
  22. package/dist/{axe-fx-ii → gen2/axe-fx-ii}/index.js +1 -1
  23. package/dist/gen2/axe-fx-ii/opcodes.d.ts.map +1 -0
  24. package/dist/gen2/axe-fx-ii/paramAliases.d.ts.map +1 -0
  25. package/dist/gen2/axe-fx-ii/params.d.ts.map +1 -0
  26. package/dist/{axe-fx-ii → gen2/axe-fx-ii}/setParam.d.ts +17 -46
  27. package/dist/gen2/axe-fx-ii/setParam.d.ts.map +1 -0
  28. package/dist/{axe-fx-ii → gen2/axe-fx-ii}/setParam.js +21 -69
  29. package/dist/gen2/axe-fx-ii/typeApplicability.d.ts.map +1 -0
  30. package/dist/gen3/axe-fx-iii/blockTypes.d.ts.map +1 -0
  31. package/dist/gen3/axe-fx-iii/enumOverlay.d.ts.map +1 -0
  32. package/dist/{axe-fx-iii → gen3/axe-fx-iii}/enumOverlay.js +1 -1
  33. package/dist/gen3/axe-fx-iii/enumRawId.d.ts.map +1 -0
  34. package/dist/gen3/axe-fx-iii/gen3ReadRosters.d.ts.map +1 -0
  35. package/dist/gen3/axe-fx-iii/index.d.ts.map +1 -0
  36. package/dist/{axe-fx-iii → gen3/axe-fx-iii}/index.js +1 -1
  37. package/dist/{axe-fx-iii → gen3/axe-fx-iii}/params.d.ts +3 -63
  38. package/dist/gen3/axe-fx-iii/params.d.ts.map +1 -0
  39. package/dist/{axe-fx-iii → gen3/axe-fx-iii}/params.js +1 -1
  40. package/dist/{axe-fx-iii → gen3/axe-fx-iii}/setParam.d.ts +23 -18
  41. package/dist/gen3/axe-fx-iii/setParam.d.ts.map +1 -0
  42. package/dist/{axe-fx-iii → gen3/axe-fx-iii}/setParam.js +20 -43
  43. package/dist/gen3/fm3/index.d.ts.map +1 -0
  44. package/dist/{fm3 → gen3/fm3}/params.d.ts +1 -1
  45. package/dist/gen3/fm3/params.d.ts.map +1 -0
  46. package/dist/gen3/fm9/enumOverrides.d.ts.map +1 -0
  47. package/dist/gen3/fm9/index.d.ts.map +1 -0
  48. package/dist/{fm9 → gen3/fm9}/params.d.ts +1 -1
  49. package/dist/gen3/fm9/params.d.ts.map +1 -0
  50. package/dist/gen3/fm9/ranges.generated.d.ts.map +1 -0
  51. package/dist/gen3/fm9/rosters.generated.d.ts.map +1 -0
  52. package/dist/gen3/types.d.ts +75 -0
  53. package/dist/gen3/types.d.ts.map +1 -0
  54. package/dist/gen3/types.js +13 -0
  55. package/dist/gen3/vp4/index.d.ts.map +1 -0
  56. package/dist/{vp4 → gen3/vp4}/params.d.ts +1 -1
  57. package/dist/gen3/vp4/params.d.ts.map +1 -0
  58. package/dist/{vp4 → gen3/vp4}/setParam.d.ts +5 -3
  59. package/dist/gen3/vp4/setParam.d.ts.map +1 -0
  60. package/dist/{vp4 → gen3/vp4}/setParam.js +12 -29
  61. package/dist/index.js +1 -1
  62. package/dist/shared/displayScale.d.ts +52 -0
  63. package/dist/shared/displayScale.d.ts.map +1 -0
  64. package/dist/shared/displayScale.js +55 -0
  65. package/dist/shared/effectId.js +2 -2
  66. package/dist/shared/index.d.ts +3 -0
  67. package/dist/shared/index.d.ts.map +1 -1
  68. package/dist/shared/index.js +4 -1
  69. package/dist/shared/septet16.d.ts +48 -0
  70. package/dist/shared/septet16.d.ts.map +1 -0
  71. package/dist/shared/septet16.js +65 -0
  72. package/package.json +19 -19
  73. package/dist/axe-fx-gen1/blockTypes.d.ts.map +0 -1
  74. package/dist/axe-fx-gen1/index.d.ts.map +0 -1
  75. package/dist/axe-fx-gen1/nibble.d.ts.map +0 -1
  76. package/dist/axe-fx-gen1/params.d.ts.map +0 -1
  77. package/dist/axe-fx-gen1/readParam.d.ts.map +0 -1
  78. package/dist/axe-fx-gen1/setParam.d.ts.map +0 -1
  79. package/dist/axe-fx-gen1/types.d.ts.map +0 -1
  80. package/dist/axe-fx-ii/applicability.d.ts.map +0 -1
  81. package/dist/axe-fx-ii/blockTypes.d.ts.map +0 -1
  82. package/dist/axe-fx-ii/index.d.ts.map +0 -1
  83. package/dist/axe-fx-ii/opcodes.d.ts.map +0 -1
  84. package/dist/axe-fx-ii/paramAliases.d.ts.map +0 -1
  85. package/dist/axe-fx-ii/params.d.ts.map +0 -1
  86. package/dist/axe-fx-ii/setParam.d.ts.map +0 -1
  87. package/dist/axe-fx-ii/typeApplicability.d.ts.map +0 -1
  88. package/dist/axe-fx-iii/blockTypes.d.ts.map +0 -1
  89. package/dist/axe-fx-iii/enumOverlay.d.ts.map +0 -1
  90. package/dist/axe-fx-iii/enumRawId.d.ts.map +0 -1
  91. package/dist/axe-fx-iii/gen3ReadRosters.d.ts.map +0 -1
  92. package/dist/axe-fx-iii/index.d.ts.map +0 -1
  93. package/dist/axe-fx-iii/params.d.ts.map +0 -1
  94. package/dist/axe-fx-iii/setParam.d.ts.map +0 -1
  95. package/dist/fm3/index.d.ts.map +0 -1
  96. package/dist/fm3/params.d.ts.map +0 -1
  97. package/dist/fm9/enumOverrides.d.ts.map +0 -1
  98. package/dist/fm9/index.d.ts.map +0 -1
  99. package/dist/fm9/params.d.ts.map +0 -1
  100. package/dist/fm9/ranges.generated.d.ts.map +0 -1
  101. package/dist/fm9/rosters.generated.d.ts.map +0 -1
  102. package/dist/vp4/index.d.ts.map +0 -1
  103. package/dist/vp4/params.d.ts.map +0 -1
  104. package/dist/vp4/setParam.d.ts.map +0 -1
  105. /package/dist/{axe-fx-gen1 → gen1}/blockTypes.d.ts +0 -0
  106. /package/dist/{axe-fx-gen1 → gen1}/blockTypes.js +0 -0
  107. /package/dist/{axe-fx-gen1 → gen1}/index.d.ts +0 -0
  108. /package/dist/{axe-fx-gen1 → gen1}/nibble.d.ts +0 -0
  109. /package/dist/{axe-fx-gen1 → gen1}/nibble.js +0 -0
  110. /package/dist/{axe-fx-gen1 → gen1}/params.d.ts +0 -0
  111. /package/dist/{axe-fx-gen1 → gen1}/params.js +0 -0
  112. /package/dist/{axe-fx-gen1 → gen1}/readParam.d.ts +0 -0
  113. /package/dist/{axe-fx-gen1 → gen1}/readParam.js +0 -0
  114. /package/dist/{axe-fx-gen1 → gen1}/setParam.d.ts +0 -0
  115. /package/dist/{axe-fx-gen1 → gen1}/setParam.js +0 -0
  116. /package/dist/{axe-fx-gen1 → gen1}/types.d.ts +0 -0
  117. /package/dist/{axe-fx-gen1 → gen1}/types.js +0 -0
  118. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/applicability.d.ts +0 -0
  119. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/applicability.js +0 -0
  120. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/blockTypes.d.ts +0 -0
  121. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/blockTypes.js +0 -0
  122. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/index.d.ts +0 -0
  123. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/opcodes.d.ts +0 -0
  124. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/opcodes.js +0 -0
  125. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/paramAliases.d.ts +0 -0
  126. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/paramAliases.js +0 -0
  127. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/params.d.ts +0 -0
  128. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/params.js +0 -0
  129. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/typeApplicability.d.ts +0 -0
  130. /package/dist/{axe-fx-ii → gen2/axe-fx-ii}/typeApplicability.js +0 -0
  131. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/blockTypes.d.ts +0 -0
  132. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/blockTypes.js +0 -0
  133. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/enumOverlay.d.ts +0 -0
  134. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/enumRawId.d.ts +0 -0
  135. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/enumRawId.js +0 -0
  136. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/gen3ReadRosters.d.ts +0 -0
  137. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/gen3ReadRosters.js +0 -0
  138. /package/dist/{axe-fx-iii → gen3/axe-fx-iii}/index.d.ts +0 -0
  139. /package/dist/{fm3 → gen3/fm3}/index.d.ts +0 -0
  140. /package/dist/{fm3 → gen3/fm3}/index.js +0 -0
  141. /package/dist/{fm3 → gen3/fm3}/params.js +0 -0
  142. /package/dist/{fm9 → gen3/fm9}/enumOverrides.d.ts +0 -0
  143. /package/dist/{fm9 → gen3/fm9}/enumOverrides.js +0 -0
  144. /package/dist/{fm9 → gen3/fm9}/index.d.ts +0 -0
  145. /package/dist/{fm9 → gen3/fm9}/index.js +0 -0
  146. /package/dist/{fm9 → gen3/fm9}/params.js +0 -0
  147. /package/dist/{fm9 → gen3/fm9}/ranges.generated.d.ts +0 -0
  148. /package/dist/{fm9 → gen3/fm9}/ranges.generated.js +0 -0
  149. /package/dist/{fm9 → gen3/fm9}/rosters.generated.d.ts +0 -0
  150. /package/dist/{fm9 → gen3/fm9}/rosters.generated.js +0 -0
  151. /package/dist/{vp4 → gen3/vp4}/index.d.ts +0 -0
  152. /package/dist/{vp4 → gen3/vp4}/index.js +0 -0
  153. /package/dist/{vp4 → gen3/vp4}/params.js +0 -0
@@ -1,4 +1,4 @@
1
- // Barrel for fractal-midi/axe-fx-iii.
1
+ // Barrel for fractal-midi/gen3/axe-fx-iii.
2
2
  //
3
3
  // **Status: 🟡 community beta.** The III protocol layer is scaffolded
4
4
  // from Fractal's published "Axe-Fx III MIDI for Third-Party Devices"
@@ -34,7 +34,7 @@
34
34
  * defensible Fractal-convention units. ~146 entries.
35
35
  *
36
36
  * Enum vocabularies (resolveEnumValues lookup):
37
- * - `src/axe-fx-iii/enumOverlay.ts` provides a runtime-joined enum
37
+ * - `src/gen3/axe-fx-iii/enumOverlay.ts` provides a runtime-joined enum
38
38
  * vocabulary layer combining AM4-verified shared tables (LFO
39
39
  * waveforms, tempo divisions, filter slopes, channel pickers),
40
40
  * universal Fractal binary toggles (OFF/ON, ENGAGED/BYPASSED), and
@@ -92,68 +92,8 @@
92
92
  * STATE_BROADCAST appears to be an AxeEdit-driven heartbeat poll,
93
93
  * NOT a sync SET echo. See `docs/SYSEX-MAP-AXE-FX-III.md` §0x01.
94
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 fn=0x01 PARAMETER_SETGET 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
- }
95
+ import type { Unit, Param } from '../types.js';
96
+ export type { Unit, Param };
157
97
  /**
158
98
  * Flat catalog of every (family, paramId) entry mined from the
159
99
  * Axe-Edit III dispatcher. Sorted by family-case-index ascending,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/gen3/axe-fx-iii/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAI5B;;;;;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"}
@@ -34,7 +34,7 @@
34
34
  * defensible Fractal-convention units. ~146 entries.
35
35
  *
36
36
  * Enum vocabularies (resolveEnumValues lookup):
37
- * - `src/axe-fx-iii/enumOverlay.ts` provides a runtime-joined enum
37
+ * - `src/gen3/axe-fx-iii/enumOverlay.ts` provides a runtime-joined enum
38
38
  * vocabulary layer combining AM4-verified shared tables (LFO
39
39
  * waveforms, tempo divisions, filter slopes, channel pickers),
40
40
  * universal Fractal binary toggles (OFF/ON, ENGAGED/BYPASSED), and
@@ -1,3 +1,4 @@
1
+ import { packValue16, unpackValue16 } from '../../shared/septet16.js';
1
2
  /** Axe-Fx III model byte. From Fractal's published spec. */
2
3
  export declare const AXE_FX_III_MODEL_ID = 16;
3
4
  export declare const FN_SET_GET_BYPASS = 10;
@@ -73,21 +74,19 @@ export declare const FN_PARAMETER_SETGET = 1;
73
74
  /** Query sentinel — when this is the value byte, the device responds with current state. */
74
75
  export declare const QUERY_SENTINEL = 127;
75
76
  /**
76
- * Pack a 16-bit unsigned value into the wire's three 7-bit septets.
77
+ * `packValue16` / `unpackValue16` (16-bit unsigned across three 7-bit
78
+ * septets: bits 6..0, 13..7, 15..14) are re-exported from
79
+ * `fractal-midi/shared` (`shared/septet16.ts`) — one canonical
80
+ * implementation shared byte-identically with the gen-2 codec.
77
81
  *
78
- * septet 0 = bits 6..0 (lowest seven bits)
79
- * septet 1 = bits 13..7 (next seven bits)
80
- * septet 2 = bits 15..14 (top two bits, zero-padded into a 7-bit byte)
81
- *
82
- * Valid input range 0..65534 (16-bit minus one II wiki convention,
83
- * carried forward to the III on the assumption param-value ranges
84
- * scaled with firmware). All observed III captures use 14-bit values
85
- * (pos 17 always zero); the 16-bit slot exists in the envelope shape
86
- * but isn't exercised by any public capture yet.
82
+ * Value-range note (III-observed): valid input range 0..65534 (16-bit
83
+ * minus one II wiki convention, carried forward to the III on the
84
+ * assumption param-value ranges scaled with firmware). All observed III
85
+ * captures use 14-bit values (pos 17 always zero); the 16-bit slot
86
+ * exists in the envelope shape but isn't exercised by any public
87
+ * capture yet.
87
88
  */
88
- export declare function packValue16(value: number): [number, number, number];
89
- /** Inverse of `packValue16`. Inputs may have unused upper bits — masked. */
90
- export declare function unpackValue16(b0: number, b1: number, b2: number): number;
89
+ export { packValue16, unpackValue16 };
91
90
  /**
92
91
  * Pack a 32-bit unsigned value into five 7-bit septets, LSB-first.
93
92
  *
@@ -302,7 +301,7 @@ export declare const FN_REQUEST_PRESET_DUMP = 3;
302
301
  /**
303
302
  * Build the fn=0x03 REQUEST_PRESET_DUMP for a STORED preset. The device
304
303
  * replies with the 0x77 header + N×0x78 body + 0x79 footer dump; collect
305
- * those frames and parse with `fractal-modern`'s `parsePresetDump`.
304
+ * those frames and parse with `fractal-gen3`'s `parsePresetDump`.
306
305
  * Read-only: carries no value, mutates nothing on the device.
307
306
  *
308
307
  * `presetNumber` is the stored-location index (FM9: 0..511; the III banks
@@ -503,14 +502,20 @@ export declare function xorChecksum32Words(words: readonly number[]): number;
503
502
  * 128..255 = bank 1 PC 0..127, etc.
504
503
  *
505
504
  * BANK-SELECT ENCODING DIVERGES BY DEVICE:
506
- * - `'standard'` (default; Axe-Fx III / FM3 per the v1.4 spec): the device
505
+ * - `'standard'` (default; Axe-Fx III per the v1.4 spec): the device
507
506
  * reads bank = (CC0 << 7) | CC32, so CC0 = bank>>7 (MSB) and CC32 =
508
507
  * bank&0x7f (LSB). For banks 0..7 CC0 is 0 and CC32 carries the bank.
509
508
  * - `'msb'` (FM9, hardware-confirmed on a real unit 2026-06-06 via the
510
- * community fm9-catalog probe): the FM9 reads the bank from CC0/MSB and
509
+ * community fm9-catalog probe; FM3 fw 12.00 field-confirmed to IGNORE
510
+ * CC32 on 2026-06-12 — a 'standard' switch to preset 438 landed on
511
+ * 54 = 438 mod 128, so the FM3 is NOT 'standard' despite the v1.4
512
+ * spec naming it): the device reads the bank from CC0/MSB and
511
513
  * IGNORES CC32. With the standard encoding, any preset above 127 (bank
512
- * >0) lands in bank 0 because the bank sits in CC32, which the FM9 drops.
513
- * So the bank must go in CC0; CC32 is sent as 0 (the FM9 ignores it).
514
+ * >0) lands in bank 0 because the bank sits in CC32, which gets dropped.
515
+ * So the bank must go in CC0; CC32 is sent as 0 (ignored).
516
+ * Note the FM3's default switch_preset path is the SysEx-native
517
+ * sub=0x27 switch (FM3-hardware-confirmed), not PC — see
518
+ * buildSwitchPresetSysEx.
514
519
  *
515
520
  * This is a per-device read divergence with no single universal encoding
516
521
  * (a CC0-only reader and a (CC0<<7)|CC32 reader cannot both be satisfied for
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setParam.d.ts","sourceRoot":"","sources":["../../../src/gen3/axe-fx-iii/setParam.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,9 @@
32
32
  * community RE; not in v1.4.
33
33
  * - SET_PRESET_NAME / SET_SCENE_NAME — names are query-only.
34
34
  */
35
- import { fractalChecksum } from '../shared/checksum.js';
36
- import { packValueChunked, unpackValueChunked } from '../shared/packValue.js';
35
+ import { fractalChecksum } from '../../shared/checksum.js';
36
+ import { packValueChunked, unpackValueChunked } from '../../shared/packValue.js';
37
+ import { encode14, decode14, packValue16, unpackValue16 } from '../../shared/septet16.js';
37
38
  /** Axe-Fx III model byte. From Fractal's published spec. */
38
39
  export const AXE_FX_III_MODEL_ID = 0x10;
39
40
  /** SysEx framing bytes shared across the entire modern Fractal family. */
@@ -117,21 +118,10 @@ const SUB_ACTION_STATE_BROADCAST = [0x04, 0x01];
117
118
  /** Query sentinel — when this is the value byte, the device responds with current state. */
118
119
  export const QUERY_SENTINEL = 0x7f;
119
120
  // ── Encoding helpers ───────────────────────────────────────────────
120
- /**
121
- * Encode a 14-bit value as a 2-byte septet pair (low 7 bits, then high
122
- * 7 bits — little-endian). Preset numbers, BPMs, and effect IDs across
123
- * the Fractal family use this.
124
- */
125
- function encode14(n) {
126
- if (!Number.isInteger(n) || n < 0 || n > 0x3fff) {
127
- throw new Error(`encode14: ${n} out of range (0..16383)`);
128
- }
129
- return [n & 0x7f, (n >> 7) & 0x7f];
130
- }
131
- /** Decode a 2-byte septet pair (low 7 bits then high 7 bits) into a 14-bit integer. */
132
- function decode14(lo, hi) {
133
- return (lo & 0x7f) | ((hi & 0x7f) << 7);
134
- }
121
+ //
122
+ // `encode14` / `decode14` (2-byte LSB-first septet pair preset
123
+ // numbers, BPMs, effect IDs across the Fractal family) come from
124
+ // `fractal-midi/shared` (`shared/septet16.ts`), imported above.
135
125
  /**
136
126
  * Build an envelope: `F0 00 01 74 [model] [function] [payload...]
137
127
  * [checksum] F7`. Checksum covers everything from `F0` through the
@@ -181,32 +171,19 @@ function buildEnvelope(fn, payload, modelByte = AXE_FX_III_MODEL_ID) {
181
171
  // modifier / tailCount / tail (the rest of FUN_14033ec70) stay zero and are not
182
172
  // exposed. Byte-exact vs the 5 oracle frames in setparam.test.ts.
183
173
  /**
184
- * Pack a 16-bit unsigned value into the wire's three 7-bit septets.
174
+ * `packValue16` / `unpackValue16` (16-bit unsigned across three 7-bit
175
+ * septets: bits 6..0, 13..7, 15..14) are re-exported from
176
+ * `fractal-midi/shared` (`shared/septet16.ts`) — one canonical
177
+ * implementation shared byte-identically with the gen-2 codec.
185
178
  *
186
- * septet 0 = bits 6..0 (lowest seven bits)
187
- * septet 1 = bits 13..7 (next seven bits)
188
- * septet 2 = bits 15..14 (top two bits, zero-padded into a 7-bit byte)
189
- *
190
- * Valid input range 0..65534 (16-bit minus one II wiki convention,
191
- * carried forward to the III on the assumption param-value ranges
192
- * scaled with firmware). All observed III captures use 14-bit values
193
- * (pos 17 always zero); the 16-bit slot exists in the envelope shape
194
- * but isn't exercised by any public capture yet.
179
+ * Value-range note (III-observed): valid input range 0..65534 (16-bit
180
+ * minus one II wiki convention, carried forward to the III on the
181
+ * assumption param-value ranges scaled with firmware). All observed III
182
+ * captures use 14-bit values (pos 17 always zero); the 16-bit slot
183
+ * exists in the envelope shape but isn't exercised by any public
184
+ * capture yet.
195
185
  */
196
- export function packValue16(value) {
197
- if (!Number.isInteger(value) || value < 0 || value > 0xffff) {
198
- throw new Error(`packValue16 input out of range: ${value}`);
199
- }
200
- return [
201
- value & 0x7f,
202
- (value >> 7) & 0x7f,
203
- (value >> 14) & 0x03,
204
- ];
205
- }
206
- /** Inverse of `packValue16`. Inputs may have unused upper bits — masked. */
207
- export function unpackValue16(b0, b1, b2) {
208
- return ((b0 & 0x7f)) | ((b1 & 0x7f) << 7) | ((b2 & 0x03) << 14);
209
- }
186
+ export { packValue16, unpackValue16 };
210
187
  /**
211
188
  * Pack a 32-bit unsigned value into five 7-bit septets, LSB-first.
212
189
  *
@@ -559,7 +536,7 @@ export function buildBlockBulkReadPoll(effectId, modelByte = AXE_FX_III_MODEL_ID
559
536
  // `docs/_private/FM9-CAPTURE-RECEIVE+SWEEP-2026-06-04.md` and re-verified
560
537
  // by the `fm9-decode-verify` workflow). A 10-byte request that asks the
561
538
  // device to send a STORED preset back as the 0x77/0x78/0x79 dump chain
562
- // (head + N×body + tail), the same envelope `fractal-modern`'s
539
+ // (head + N×body + tail), the same envelope `fractal-gen3`'s
563
540
  // `presetDump.ts` already parses/serializes. This is the read/backup
564
541
  // trigger; it mutates nothing on the device.
565
542
  //
@@ -578,7 +555,7 @@ export const FN_REQUEST_PRESET_DUMP = 0x03;
578
555
  /**
579
556
  * Build the fn=0x03 REQUEST_PRESET_DUMP for a STORED preset. The device
580
557
  * replies with the 0x77 header + N×0x78 body + 0x79 footer dump; collect
581
- * those frames and parse with `fractal-modern`'s `parsePresetDump`.
558
+ * those frames and parse with `fractal-gen3`'s `parsePresetDump`.
582
559
  * Read-only: carries no value, mutates nothing on the device.
583
560
  *
584
561
  * `presetNumber` is the stored-location index (FM9: 0..511; the III banks
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -20,7 +20,7 @@
20
20
  * catalog uses; join by name, not paramId). The rest stay 'unverified' and pass
21
21
  * the raw 16-bit wire integer through, same as the III's uncalibrated path.
22
22
  */
23
- import type { Param } from '../axe-fx-iii/params.js';
23
+ import type { Param } from '../types.js';
24
24
  export declare const FM3_PARAMS: readonly Param[];
25
25
  /** Params grouped by effect family (built once at module load). */
26
26
  export declare const FM3_PARAMS_BY_FAMILY: Readonly<Record<string, readonly Param[]>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm3/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,UAAU,EAAE,SAAS,KAAK,EAs+DtC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAMxE,CAAC;AAEL,wDAAwD;AACxD,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAA0b,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enumOverrides.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm9/enumOverrides.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CA4BzF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm9/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC"}
@@ -20,7 +20,7 @@
20
20
  * catalog uses; join by name, not paramId). The rest stay 'unverified' and pass
21
21
  * the raw 16-bit wire integer through, same as the III's uncalibrated path.
22
22
  */
23
- import type { Param } from '../axe-fx-iii/params.js';
23
+ import type { Param } from '../types.js';
24
24
  export declare const FM9_PARAMS: readonly Param[];
25
25
  /** Params grouped by effect family (built once at module load). */
26
26
  export declare const FM9_PARAMS_BY_FAMILY: Readonly<Record<string, readonly Param[]>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm9/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,UAAU,EAAE,SAAS,KAAK,EAqgEtC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAMxE,CAAC;AAEL,wDAAwD;AACxD,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAA0b,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranges.generated.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm9/ranges.generated.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;mDAG+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;gEAC4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;mEAC+D;IAC/D,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,uFAAuF;AACvF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CA49DxF,CAAC;AAEF;;;2DAG2D;AAC3D,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAyC3E,CAAC;AAEF;;4EAE4E;AAC5E,eAAO,MAAM,qBAAqB,EAAE,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAK3G,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rosters.generated.d.ts","sourceRoot":"","sources":["../../../src/gen3/fm9/rosters.generated.ts"],"names":[],"mappings":"AAQA,sEAAsE;AACtE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4U3D,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuF7D,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgFnE,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Gen-3 (modern Fractal family) shared catalog types.
3
+ *
4
+ * `Param` is the row shape of every gen-3 device-true param catalog
5
+ * (axe-fx-iii, fm3, fm9, vp4 — the fm3/fm9/vp4 catalogs are
6
+ * AUTO-GENERATED by `scripts/_research/generate-modern-fractal-catalog.ts`
7
+ * and import this type). The shape is shared; the catalog DATA is
8
+ * device-specific — paramIds are never reused across model bytes.
9
+ *
10
+ * Moved verbatim from `axe-fx-iii/params.ts` (which re-exports both
11
+ * types for compatibility).
12
+ */
13
+ /**
14
+ * Display-unit tag for a gen-3 family parameter.
15
+ *
16
+ * `'unverified'` is the default for entries the generator could
17
+ * not infer (the AM4 has no matching parameter, or the III family
18
+ * has no AM4 analog). Other tags are AM4-derived display
19
+ * conventions — they describe the user-facing scale (dB, ms,
20
+ * knob_0_10, etc.) but NOT the gen-3 wire encoding. Display↔wire
21
+ * conversion is still the caller's responsibility
22
+ * until hardware verification lands.
23
+ */
24
+ export type Unit = 'bipolar_percent' | 'count' | 'db' | 'degrees' | 'enum' | 'hz' | 'knob_0_10' | 'knob_0_20' | 'ms' | 'numeric' | 'percent' | 'pf' | 'ratio' | 'seconds' | 'semitones' | 'unverified';
25
+ /** One entry in a gen-3 device parameter catalog. */
26
+ export interface Param {
27
+ /**
28
+ * Effect family symbol (e.g. `'REVERB'`, `'DELAY'`, `'COMP'`).
29
+ * Sourced from the dispatcher's case → table-of-params mapping.
30
+ */
31
+ family: string;
32
+ /**
33
+ * Parameter ID within the family. Wire-encoded as a 14-bit
34
+ * septet pair in fn=0x01 PARAMETER_SETGET frames. Values >= 65520 are
35
+ * firmware-internal sentinels and NOT wire-addressable — see
36
+ * the III catalog's file-level header for details.
37
+ */
38
+ paramId: number;
39
+ /**
40
+ * Symbol name from the device editor's binary (e.g. `'REVERB_TYPE'`).
41
+ * Stable across firmware releases of the same generation.
42
+ */
43
+ name: string;
44
+ /**
45
+ * Human-readable display label from the AxeEdit III JUCE-BinaryData
46
+ * XML mining — the editor's knob caption (e.g. `'Drive'` for
47
+ * `DISTORT_DRIVE`, `'Reverb Time'` for `REVERB_TIME`). Populated
48
+ * for ~91% of catalog entries; absent for symbols the editor
49
+ * doesn't render (firmware-internal blocks, sentinel paramIds).
50
+ * Useful as LLM prompt context independent of unit/range.
51
+ */
52
+ displayLabel?: string;
53
+ /**
54
+ * Display unit tag. `'unverified'` until hardware confirms
55
+ * the real shape; otherwise inferred from one of three sources
56
+ * (see the III catalog's file-level header for provenance — these
57
+ * are display conventions, not wire encodings).
58
+ */
59
+ unit: Unit;
60
+ /**
61
+ * Display range minimum. Populated for AM4-inferred entries
62
+ * (`// inferred from AM4` trailing comment), absent for
63
+ * `unit: 'unverified'` entries.
64
+ */
65
+ displayMin?: number;
66
+ /** Display range maximum. Same population rule as `displayMin`. */
67
+ displayMax?: number;
68
+ /**
69
+ * Optional non-linear scaling, AM4-inferred. `'log10'` for
70
+ * time / frequency knobs that span multiple decades. Absent
71
+ * for linear knobs or `'unverified'` entries.
72
+ */
73
+ scaling?: 'linear' | 'log10';
74
+ }
75
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gen3/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Gen-3 (modern Fractal family) shared catalog types.
3
+ *
4
+ * `Param` is the row shape of every gen-3 device-true param catalog
5
+ * (axe-fx-iii, fm3, fm9, vp4 — the fm3/fm9/vp4 catalogs are
6
+ * AUTO-GENERATED by `scripts/_research/generate-modern-fractal-catalog.ts`
7
+ * and import this type). The shape is shared; the catalog DATA is
8
+ * device-specific — paramIds are never reused across model bytes.
9
+ *
10
+ * Moved verbatim from `axe-fx-iii/params.ts` (which re-exports both
11
+ * types for compatibility).
12
+ */
13
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gen3/vp4/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,EACP,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC"}
@@ -18,7 +18,7 @@
18
18
  * unit is 'unverified' family-wide (no display calibration mined); the wire
19
19
  * value passes through as a 16-bit integer, same as the III's uncalibrated path.
20
20
  */
21
- import type { Param } from '../axe-fx-iii/params.js';
21
+ import type { Param } from '../types.js';
22
22
  export declare const VP4_PARAMS: readonly Param[];
23
23
  /** Params grouped by effect family (built once at module load). */
24
24
  export declare const VP4_PARAMS_BY_FAMILY: Readonly<Record<string, readonly Param[]>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/gen3/vp4/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,UAAU,EAAE,SAAS,KAAK,EA2pDtC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,CAMxE,CAAC;AAEL,wDAAwD;AACxD,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAsc,CAAC"}
@@ -12,13 +12,15 @@ export declare const TC_SAVE = 27;
12
12
  export declare const VP4_BYPASS_ON_NORMALIZED = 0.515625;
13
13
  export declare const VP4_BYPASS_OFF_NORMALIZED = 0;
14
14
  /**
15
- * Encode a float32 as the VP4's on-wire 5-byte value: standard 5-septet LE with
16
- * the TOP TWO septets swapped (emit `[s0,s1,s2,s4,s3]`).
15
+ * Encode a float32 as the VP4's on-wire 5-byte value: standard 5-septet LE
16
+ * (`encode5SeptetFloat32`, shared with the rest of the gen-3 codec) with
17
+ * the VP4-specific TOP-TWO-septet swap (emit `[s0,s1,s2,s4,s3]`).
17
18
  */
18
19
  export declare function encodeVp4Float(value: number): [number, number, number, number, number];
19
20
  /**
20
21
  * Decode the VP4's on-wire 5-byte value field back to a float32. Input bytes are
21
- * `[s0,s1,s2,s4,s3]` (top two swapped); un-swap, reassemble, reinterpret.
22
+ * `[s0,s1,s2,s4,s3]` (top two swapped); un-swap, then reassemble/reinterpret via
23
+ * the shared gen-3 `decode5SeptetFloat32`.
22
24
  */
23
25
  export declare function decodeVp4Float(b: readonly number[]): number;
24
26
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setParam.d.ts","sourceRoot":"","sources":["../../../src/gen3/vp4/setParam.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,YAAY,IAAO,CAAC;AAEjC,qCAAqC;AACrC,eAAO,MAAM,WAAW,IAAO,CAAC;AAChC,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,eAAO,MAAM,OAAO,KAAO,CAAC;AAM5B;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AACjD,eAAO,MAAM,yBAAyB,IAAM,CAAC;AAK7C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGtF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAG3D;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,EAAE,CAUV;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAU/E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CASvC;AAWD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,mFAAmF;IACnF,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAS/E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAG9D"}
@@ -22,7 +22,11 @@
22
22
  * eid/pid/tc (value verbatim for discrete) — `parseVp4WriteEcho`. SAVE additionally
23
23
  * gets a distinct 16-byte completion ack (~+153 ms) — `isVp4SaveAck`.
24
24
  */
25
- import { fractalChecksum } from '../shared/checksum.js';
25
+ import { fractalChecksum } from '../../shared/checksum.js';
26
+ // Throwing form — a deliberate tightening for VP4 (the old local copy
27
+ // silently truncated out-of-range ids instead of throwing).
28
+ import { encode14 } from '../../shared/septet16.js';
29
+ import { encode5SeptetFloat32, decode5SeptetFloat32 } from '../axe-fx-iii/setParam.js';
26
30
  export const VP4_MODEL_ID = 0x14;
27
31
  export const FN_PARAMETER = 0x01;
28
32
  /** tc sub-opcode (payload pos 4). */
@@ -41,44 +45,23 @@ export const VP4_BYPASS_ON_NORMALIZED = 0.515625;
41
45
  export const VP4_BYPASS_OFF_NORMALIZED = 0.0;
42
46
  /** Captured SAVE command value (payload after `04 00`); 0x30 in the low septet. */
43
47
  const SAVE_VALUE_BYTES = [0x30, 0x00, 0x00, 0x00, 0x00];
44
- function encode14(n) {
45
- return [n & 0x7f, (n >> 7) & 0x7f];
46
- }
47
- const _buf = new ArrayBuffer(4);
48
- const _f32 = new Float32Array(_buf);
49
- const _u32 = new Uint32Array(_buf);
50
- /** Standard 5-septet LE split of a u32. */
51
- function septets5LE(u) {
52
- return [
53
- u & 0x7f,
54
- (u >>> 7) & 0x7f,
55
- (u >>> 14) & 0x7f,
56
- (u >>> 21) & 0x7f,
57
- (u >>> 28) & 0x7f,
58
- ];
59
- }
60
48
  /**
61
- * Encode a float32 as the VP4's on-wire 5-byte value: standard 5-septet LE with
62
- * the TOP TWO septets swapped (emit `[s0,s1,s2,s4,s3]`).
49
+ * Encode a float32 as the VP4's on-wire 5-byte value: standard 5-septet LE
50
+ * (`encode5SeptetFloat32`, shared with the rest of the gen-3 codec) with
51
+ * the VP4-specific TOP-TWO-septet swap (emit `[s0,s1,s2,s4,s3]`).
63
52
  */
64
53
  export function encodeVp4Float(value) {
65
- _f32[0] = value;
66
- const [s0, s1, s2, s3, s4] = septets5LE(_u32[0]);
54
+ const [s0, s1, s2, s3, s4] = encode5SeptetFloat32(value);
67
55
  return [s0, s1, s2, s4, s3];
68
56
  }
69
57
  /**
70
58
  * Decode the VP4's on-wire 5-byte value field back to a float32. Input bytes are
71
- * `[s0,s1,s2,s4,s3]` (top two swapped); un-swap, reassemble, reinterpret.
59
+ * `[s0,s1,s2,s4,s3]` (top two swapped); un-swap, then reassemble/reinterpret via
60
+ * the shared gen-3 `decode5SeptetFloat32`.
72
61
  */
73
62
  export function decodeVp4Float(b) {
74
63
  const [w0, w1, w2, w4, w3] = b;
75
- const u = ((w0 & 0x7f)) |
76
- ((w1 & 0x7f) << 7) |
77
- ((w2 & 0x7f) << 14) |
78
- ((w3 & 0x7f) << 21) |
79
- ((w4 & 0x7f) << 28);
80
- _u32[0] = u >>> 0;
81
- return _f32[0];
64
+ return decode5SeptetFloat32(w0, w1, w2, w3, w4);
82
65
  }
83
66
  function buildVp4Frame(payload) {
84
67
  const body = [SYSEX_START, ...MFR, VP4_MODEL_ID, FN_PARAMETER, ...payload];
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  //
6
6
  // import { packValue, fractalChecksum } from 'fractal-midi/shared';
7
7
  // import { ... } from 'fractal-midi/am4';
8
- // import { ... } from 'fractal-midi/axe-fx-ii';
8
+ // import { ... } from 'fractal-midi/gen2/axe-fx-ii';
9
9
  //
10
10
  // The root `VERSION` constant is convenience-only — useful for log
11
11
  // lines and version pinning sanity checks. It's read from package.json
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Display↔wire resolver shared across Fractal codecs.
3
+ *
4
+ * Maps a panel display value (0..10 knob, dB, ms, Hz) onto the 16-bit
5
+ * 0..65534 wire field, linearly or log-base-10. Originally calibrated
6
+ * and hardware-verified on the Axe-Fx II (HW-079 goldens in
7
+ * `scripts/verify-axe-fx-ii-encoding.ts`); the gen-3 catalog
8
+ * (`fractal-gen3/src/catalog.ts`) uses the same resolver for params
9
+ * with a calibrated display range. Housed in `shared/` so neither
10
+ * generation's codec depends on the other's module at runtime.
11
+ *
12
+ * Moved verbatim from `gen2/axe-fx-ii/setParam.ts` (which re-exports
13
+ * it for compatibility).
14
+ */
15
+ /**
16
+ * Convert a display value to its corresponding 16-bit wire value, given
17
+ * a param's calibrated `displayMin` / `displayMax` / `displayScale`.
18
+ *
19
+ * Two scale shapes supported:
20
+ *
21
+ * **`'linear'`** (default) — wire 0..65534 maps linearly onto
22
+ * displayMin..displayMax. Confirmed by / / across
23
+ * 0..10 (AMP knobs), 0..100% (mix), -100..+100% (feedback / balance /
24
+ * pan), -80..+20 dB (cab level).
25
+ *
26
+ * **`'log10'`** — wire 0..65534 maps log-base-10 onto
27
+ * displayMin..displayMax. Used for frequency knobs ( confirmed
28
+ * cab.low_cut 20..2000 Hz and cab.high_cut 200..20000 Hz both fit
29
+ * `displayHz = displayMin × (displayMax/displayMin)^(wire/65534)`
30
+ * exactly at every measured anchor). Requires displayMin > 0.
31
+ *
32
+ * Callers should only invoke this on params with populated displayMin
33
+ * AND displayMax. For uncalibrated params, the tool layer falls back
34
+ * to the wire-value path.
35
+ *
36
+ * Clamps to [displayMin, displayMax] silently — the wire value pins to
37
+ * [0, 65534] either way, so an out-of-range display value rounds to
38
+ * the same endpoint. The tool layer surfaces a clamp note when needed.
39
+ */
40
+ export type DisplayScale = 'linear' | 'log10';
41
+ export interface DisplayToWireOptions {
42
+ readonly displayMin: number;
43
+ readonly displayMax: number;
44
+ readonly displayScale?: DisplayScale;
45
+ }
46
+ export declare function displayToWire(display: number, opts: DisplayToWireOptions): number;
47
+ /**
48
+ * Inverse of `displayToWire`. Wire 0..65534 → display value via the
49
+ * param's linear or log10 scale.
50
+ */
51
+ export declare function wireToDisplay(wire: number, opts: DisplayToWireOptions): number;
52
+ //# sourceMappingURL=displayScale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayScale.d.ts","sourceRoot":"","sources":["../../src/shared/displayScale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9C,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACxC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAsBjF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAiB9E"}