@openmixer/omx-contract 2.8.0 → 2.10.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/README.md +1 -1
- package/data/kernels/comp.json +2 -2
- package/data/kernels/eq.json +2 -1
- package/dist/ts/omx-contract.d.ts +3 -3
- package/dist/ts/omx-contract.js +3 -3
- package/include/omxcontract/omx_contract_limits.h +2 -1
- package/package.json +1 -1
- package/schema/omx-contract.schema.json +3 -3
- package/share/omx-contract/omx-contract.json +5 -4
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ pkg-config --cflags omx-contract
|
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
Pin one version and build against its renders instead of keeping a copy: the installed package at exactly
|
|
52
|
-
that version (`pkg-config --exact-version=2.
|
|
52
|
+
that version (`pkg-config --exact-version=2.10.0 omx-contract`), else the npm tarball, unpacked, and
|
|
53
53
|
`omx-contract render --target c --out build/omx-contract/include`. A kernel's controls and readouts, in their
|
|
54
54
|
order, are in `share/omx-contract/omx-contract.json`; how a declaration is written is in
|
|
55
55
|
[docs/kernel-files.md](docs/kernel-files.md), and what a readout is in [docs/readouts.md](docs/readouts.md).
|
package/data/kernels/comp.json
CHANGED
|
@@ -110,11 +110,11 @@
|
|
|
110
110
|
"name": "detectorOversampling",
|
|
111
111
|
"kind": "choice",
|
|
112
112
|
"global": "DETECTOR_OVERSAMPLINGS",
|
|
113
|
-
"doc": "The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `
|
|
113
|
+
"doc": "The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `4x` always (omx-dsp's OMX_DYN_OVS_AUTO, _OFF and _X4, in that order, so the index mapping holds). The ids are the console's wire vocabulary (`CompState.detectorOversampling`, what the dynamics row's OPTIONS publishes and a session stores), so the console re-exports this set; it comes up `auto`.",
|
|
114
114
|
"ids": [
|
|
115
115
|
"auto",
|
|
116
116
|
"off",
|
|
117
|
-
"
|
|
117
|
+
"4x"
|
|
118
118
|
],
|
|
119
119
|
"default": "auto",
|
|
120
120
|
"labels": [
|
package/data/kernels/eq.json
CHANGED
|
@@ -147,11 +147,12 @@
|
|
|
147
147
|
{
|
|
148
148
|
"name": "bandOn",
|
|
149
149
|
"kind": "choice",
|
|
150
|
-
"doc": "A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB.
|
|
150
|
+
"doc": "A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB. A band comes up off (operator ruling, 2026-10-13): an omx-eq plugin brings every band up off so a racked instance is a wire, and the console's channel EQ reads its come-up value here. A stored session keeps its own band states; only a fresh band comes up off.",
|
|
151
151
|
"ids": [
|
|
152
152
|
"off",
|
|
153
153
|
"on"
|
|
154
154
|
],
|
|
155
|
+
"default": "off",
|
|
155
156
|
"labels": [
|
|
156
157
|
"Off",
|
|
157
158
|
"On"
|
|
@@ -249,10 +249,10 @@ export declare const COMP_LIMITS: {
|
|
|
249
249
|
export declare const COMP_KINDS: readonly ["comp", "limiter"];
|
|
250
250
|
|
|
251
251
|
/**
|
|
252
|
-
* The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `
|
|
252
|
+
* The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `4x` always (omx-dsp's OMX_DYN_OVS_AUTO, _OFF and _X4, in that order, so the index mapping holds). The ids are the console's wire vocabulary (`CompState.detectorOversampling`, what the dynamics row's OPTIONS publishes and a session stores), so the console re-exports this set; it comes up `auto`.
|
|
253
253
|
* @see data/kernels/comp.json
|
|
254
254
|
*/
|
|
255
|
-
export declare const DETECTOR_OVERSAMPLINGS: readonly ["auto", "off", "
|
|
255
|
+
export declare const DETECTOR_OVERSAMPLINGS: readonly ["auto", "off", "4x"];
|
|
256
256
|
|
|
257
257
|
/**
|
|
258
258
|
* Where the compressor's detector listens: `feedforward` hears the slot's input (or its key), `feedback` hears the slot's own pre-make-up output DYN_FB_LOOP_DELAY_SAMPLES late, through one envelope stage, and a keyed slot stays feed-forward (omx-dsp's OMX_DYN_TOPOLOGY_FEEDFORWARD 0 and _FEEDBACK 1, in that order; the set is named for its control, so C spells them OMX_DETECTOR_TOPOLOGY_*). The console's comp row carries it (`detectorTopology`, the SSL bus compressor design §3a) and comes up `feedforward`, so a zeroed atom is the compressor every slot runs.
|
|
@@ -651,7 +651,7 @@ export declare const EQ_NOTCH_Q_RANGE: {
|
|
|
651
651
|
};
|
|
652
652
|
|
|
653
653
|
/**
|
|
654
|
-
* A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB.
|
|
654
|
+
* A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB. A band comes up off (operator ruling, 2026-10-13): an omx-eq plugin brings every band up off so a racked instance is a wire, and the console's channel EQ reads its come-up value here. A stored session keeps its own band states; only a fresh band comes up off.
|
|
655
655
|
* @see data/kernels/eq.json
|
|
656
656
|
*/
|
|
657
657
|
export declare const EQ_BAND_ONS: readonly ["off", "on"];
|
package/dist/ts/omx-contract.js
CHANGED
|
@@ -255,13 +255,13 @@ export const COMP_KINDS = [
|
|
|
255
255
|
];
|
|
256
256
|
|
|
257
257
|
/**
|
|
258
|
-
* The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `
|
|
258
|
+
* The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `4x` always (omx-dsp's OMX_DYN_OVS_AUTO, _OFF and _X4, in that order, so the index mapping holds). The ids are the console's wire vocabulary (`CompState.detectorOversampling`, what the dynamics row's OPTIONS publishes and a session stores), so the console re-exports this set; it comes up `auto`.
|
|
259
259
|
* @see data/kernels/comp.json
|
|
260
260
|
*/
|
|
261
261
|
export const DETECTOR_OVERSAMPLINGS = [
|
|
262
262
|
"auto",
|
|
263
263
|
"off",
|
|
264
|
-
"
|
|
264
|
+
"4x"
|
|
265
265
|
];
|
|
266
266
|
|
|
267
267
|
/**
|
|
@@ -710,7 +710,7 @@ export const EQ_NOTCH_Q_RANGE = {
|
|
|
710
710
|
};
|
|
711
711
|
|
|
712
712
|
/**
|
|
713
|
-
* A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB.
|
|
713
|
+
* A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB. A band comes up off (operator ruling, 2026-10-13): an omx-eq plugin brings every band up off so a racked instance is a wire, and the console's channel EQ reads its come-up value here. A stored session keeps its own band states; only a fresh band comes up off.
|
|
714
714
|
* @see data/kernels/eq.json
|
|
715
715
|
*/
|
|
716
716
|
export const EQ_BAND_ONS = [
|
|
@@ -659,7 +659,7 @@ enum omx_delay_pingpongs {
|
|
|
659
659
|
enum omx_detector_oversamplings {
|
|
660
660
|
OMX_DETECTOR_OVERSAMPLINGS_AUTO = 0,
|
|
661
661
|
OMX_DETECTOR_OVERSAMPLINGS_OFF = 1,
|
|
662
|
-
|
|
662
|
+
OMX_DETECTOR_OVERSAMPLINGS_4X = 2,
|
|
663
663
|
};
|
|
664
664
|
#define OMX_DETECTOR_OVERSAMPLINGS_COUNT 3u
|
|
665
665
|
#define OMX_DETECTOR_OVERSAMPLINGS_DEFAULT OMX_DETECTOR_OVERSAMPLINGS_AUTO
|
|
@@ -714,6 +714,7 @@ enum omx_eq_band_ons {
|
|
|
714
714
|
OMX_EQ_BAND_ONS_ON = 1,
|
|
715
715
|
};
|
|
716
716
|
#define OMX_EQ_BAND_ONS_COUNT 2u
|
|
717
|
+
#define OMX_EQ_BAND_ONS_DEFAULT OMX_EQ_BAND_ONS_OFF
|
|
717
718
|
enum omx_eq_band_types {
|
|
718
719
|
OMX_EQ_BAND_TYPES_BELL = 0,
|
|
719
720
|
OMX_EQ_BAND_TYPES_LOW_SHELF = 1,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmixer/omx-contract",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "The FreeMixer declarations as data: a JSON Schema, the data, and one CLI that renders them into C, TypeScript and JSON",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "GPL-3.0-or-later",
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
},
|
|
182
182
|
"set": {
|
|
183
183
|
"type": "object",
|
|
184
|
-
"description": "Ordered ids with an optional default and labels. The ids and their order are the contract: all strings (the id is the name, its position the value) or all non-negative integers (the id is the value). Labels are face text and optional. The default may be a reference to the scalar that states it: a boolean names the second id of a two-id switch when true, the first when false.",
|
|
184
|
+
"description": "Ordered ids with an optional default and labels. The ids and their order are the contract: all strings of letters and digits (the id is the name, its position the value; an id may start with a digit, as 4x does) or all non-negative integers (the id is the value). Labels are face text and optional. The default may be a reference to the scalar that states it: a boolean names the second id of a two-id switch when true, the first when false.",
|
|
185
185
|
"properties": {
|
|
186
186
|
"kind": { "const": "set" },
|
|
187
187
|
"since": { "$ref": "#/$defs/since" },
|
|
@@ -189,11 +189,11 @@
|
|
|
189
189
|
"why": { "$ref": "#/$defs/text" },
|
|
190
190
|
"ids": {
|
|
191
191
|
"oneOf": [
|
|
192
|
-
{ "type": "array", "items": { "type": "string", "pattern": "^[A-Za-
|
|
192
|
+
{ "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z0-9]+$" }, "minItems": 1, "uniqueItems": true },
|
|
193
193
|
{ "type": "array", "items": { "type": "integer", "minimum": 0 }, "minItems": 1, "uniqueItems": true }
|
|
194
194
|
]
|
|
195
195
|
},
|
|
196
|
-
"default": { "oneOf": [{ "type": "string", "pattern": "^[A-Za-
|
|
196
|
+
"default": { "oneOf": [{ "type": "string", "pattern": "^[A-Za-z0-9]+$" }, { "type": "integer", "minimum": 0 }, { "$ref": "#/$defs/ref" }] },
|
|
197
197
|
"labels": { "type": "array", "items": { "$ref": "#/$defs/text" }, "minItems": 1 }
|
|
198
198
|
},
|
|
199
199
|
"required": ["kind", "doc", "ids"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmixer/omx-contract",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"items": {
|
|
5
5
|
"PAN_RANGE": {
|
|
6
6
|
"rel": "data/kernels/balance.json",
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
"DETECTOR_OVERSAMPLINGS": {
|
|
287
287
|
"rel": "data/kernels/comp.json",
|
|
288
288
|
"kind": "set",
|
|
289
|
-
"doc": "The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `
|
|
289
|
+
"doc": "The compressor's detector oversampling: `auto` runs the control path at 4x only while the attack is faster than DETECTOR_OVERSAMPLE_AUTO_MS, `off` never, `4x` always (omx-dsp's OMX_DYN_OVS_AUTO, _OFF and _X4, in that order, so the index mapping holds). The ids are the console's wire vocabulary (`CompState.detectorOversampling`, what the dynamics row's OPTIONS publishes and a session stores), so the console re-exports this set; it comes up `auto`.",
|
|
290
290
|
"default": "auto",
|
|
291
291
|
"labels": [
|
|
292
292
|
"Auto",
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
"value": [
|
|
297
297
|
"auto",
|
|
298
298
|
"off",
|
|
299
|
-
"
|
|
299
|
+
"4x"
|
|
300
300
|
]
|
|
301
301
|
},
|
|
302
302
|
"DETECTOR_TOPOLOGY": {
|
|
@@ -857,7 +857,8 @@
|
|
|
857
857
|
"EQ_BAND_ONS": {
|
|
858
858
|
"rel": "data/kernels/eq.json",
|
|
859
859
|
"kind": "set",
|
|
860
|
-
"doc": "A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB.
|
|
860
|
+
"doc": "A band's switch. Off, the band is not in the EQ's bank (the slots close up); on, it runs, parked when it is a gain-carrying shape at 0 dB. A band comes up off (operator ruling, 2026-10-13): an omx-eq plugin brings every band up off so a racked instance is a wire, and the console's channel EQ reads its come-up value here. A stored session keeps its own band states; only a fresh band comes up off.",
|
|
861
|
+
"default": "off",
|
|
861
862
|
"labels": [
|
|
862
863
|
"Off",
|
|
863
864
|
"On"
|