@openmixer/omx-contract 2.6.0 → 2.7.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 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.6.0 omx-contract`), else the npm tarball, unpacked, and
52
+ that version (`pkg-config --exact-version=2.7.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).
@@ -126,6 +126,28 @@
126
126
  "default": 16,
127
127
  "defaultFrom": "desk"
128
128
  }
129
+ },
130
+ {
131
+ "name": "hpHz",
132
+ "kind": "travel",
133
+ "table": "GATE_KEY_LIMITS",
134
+ "travel": {
135
+ "min": 0,
136
+ "max": 20000,
137
+ "step": 1,
138
+ "unit": "Hz"
139
+ }
140
+ },
141
+ {
142
+ "name": "lpHz",
143
+ "kind": "travel",
144
+ "table": "GATE_KEY_LIMITS",
145
+ "travel": {
146
+ "min": 0,
147
+ "max": 20000,
148
+ "step": 1,
149
+ "unit": "Hz"
150
+ }
129
151
  }
130
152
  ],
131
153
  "readouts": [
@@ -146,6 +168,9 @@
146
168
  "tables": {
147
169
  "GATE_LIMITS": {
148
170
  "doc": "The legal range of each gate field (engineering units). The widget clamps drags to these, `normalizeGate` enforces them, the row's codec refuses by them and the travel sheet publishes them — one source of truth. `rangeDb` reaches GATE_RANGE_FLOOR_DB, shown as \"−∞\" in readouts (a gate fully closed is silence)."
171
+ },
172
+ "GATE_KEY_LIMITS": {
173
+ "doc": "The travel of each edge of the keyed gate's detector filter, 0 (off) up to 20 kHz in whole Hz, as the console's `/channel/{kind}/{index}/gate/key` row serves them (the console's GATE_KEY_LIMITS). A property of the detector filter, not of any desk: no come-up value is declared."
149
174
  }
150
175
  }
151
176
  }
@@ -1012,6 +1012,25 @@ export declare const GATE_LIMITS: {
1012
1012
  };
1013
1013
  };
1014
1014
 
1015
+ /**
1016
+ * The travel of each edge of the keyed gate's detector filter, 0 (off) up to 20 kHz in whole Hz, as the console's `/channel/{kind}/{index}/gate/key` row serves them (the console's GATE_KEY_LIMITS). A property of the detector filter, not of any desk: no come-up value is declared.
1017
+ * @see data/kernels/gate.json
1018
+ */
1019
+ export declare const GATE_KEY_LIMITS: {
1020
+ readonly hpHz: {
1021
+ readonly min: 0;
1022
+ readonly max: 20000;
1023
+ readonly step: 1;
1024
+ readonly unit: "Hz";
1025
+ };
1026
+ readonly lpHz: {
1027
+ readonly min: 0;
1028
+ readonly max: 20000;
1029
+ readonly step: 1;
1030
+ readonly unit: "Hz";
1031
+ };
1032
+ };
1033
+
1015
1034
  /**
1016
1035
  * The generator kinds, in surface order: its position is the integer omx-dsp's omx_gen_fill takes as its kind (OMX_GEN_OSC, OMX_GEN_WHITE, OMX_GEN_PINK).
1017
1036
  * @see data/kernels/generator.json
@@ -1172,6 +1172,25 @@ export const GATE_LIMITS = {
1172
1172
  }
1173
1173
  };
1174
1174
 
1175
+ /**
1176
+ * The travel of each edge of the keyed gate's detector filter, 0 (off) up to 20 kHz in whole Hz, as the console's `/channel/{kind}/{index}/gate/key` row serves them (the console's GATE_KEY_LIMITS). A property of the detector filter, not of any desk: no come-up value is declared.
1177
+ * @see data/kernels/gate.json
1178
+ */
1179
+ export const GATE_KEY_LIMITS = {
1180
+ "hpHz": {
1181
+ "min": 0,
1182
+ "max": 20000,
1183
+ "step": 1,
1184
+ "unit": "Hz"
1185
+ },
1186
+ "lpHz": {
1187
+ "min": 0,
1188
+ "max": 20000,
1189
+ "step": 1,
1190
+ "unit": "Hz"
1191
+ }
1192
+ };
1193
+
1175
1194
  /**
1176
1195
  * The generator kinds, in surface order: its position is the integer omx-dsp's omx_gen_fill takes as its kind (OMX_GEN_OSC, OMX_GEN_WHITE, OMX_GEN_PINK).
1177
1196
  * @see data/kernels/generator.json
@@ -64,6 +64,11 @@
64
64
  #define OMX_GATE_RATIO_MAX 100.0f
65
65
  #define OMX_GATE_RATIO_DEFAULT 16.0f
66
66
 
67
+ #define OMX_GATE_KEY_HP_HZ_MIN 0.0f
68
+ #define OMX_GATE_KEY_HP_HZ_MAX 20000.0f
69
+ #define OMX_GATE_KEY_LP_HZ_MIN 0.0f
70
+ #define OMX_GATE_KEY_LP_HZ_MAX 20000.0f
71
+
67
72
  #define OMX_LIMITER_CEILING_DB_MIN -12.0f
68
73
  #define OMX_LIMITER_CEILING_DB_MAX 0.0f
69
74
  #define OMX_LIMITER_CEILING_DB_DEFAULT -1.0f
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmixer/omx-contract",
3
- "version": "2.6.0",
3
+ "version": "2.7.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",
@@ -41,7 +41,10 @@ function genLimitBlock(prefix, table) {
41
41
  const c = fieldConstName(field);
42
42
  lines.push(`#define OMX_${prefix}_${c}_MIN ${numLiteral(limit.min)}f`);
43
43
  lines.push(`#define OMX_${prefix}_${c}_MAX ${numLiteral(limit.max)}f`);
44
- lines.push(`#define OMX_${prefix}_${c}_DEFAULT ${numLiteral(limit.default)}f`);
44
+ // a field with no come-up value (the gate key filter's edges) has no DEFAULT, as in genCoreLimitBlock
45
+ if (limit.default !== undefined) {
46
+ lines.push(`#define OMX_${prefix}_${c}_DEFAULT ${numLiteral(limit.default)}f`);
47
+ }
45
48
  }
46
49
  return lines.join('\n');
47
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmixer/omx-contract",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "items": {
5
5
  "PAN_RANGE": {
6
6
  "rel": "data/kernels/balance.json",
@@ -1347,6 +1347,26 @@
1347
1347
  }
1348
1348
  }
1349
1349
  },
1350
+ "GATE_KEY_LIMITS": {
1351
+ "rel": "data/kernels/gate.json",
1352
+ "kind": "travels",
1353
+ "doc": "The travel of each edge of the keyed gate's detector filter, 0 (off) up to 20 kHz in whole Hz, as the console's `/channel/{kind}/{index}/gate/key` row serves them (the console's GATE_KEY_LIMITS). A property of the detector filter, not of any desk: no come-up value is declared.",
1354
+ "shape": "table",
1355
+ "value": {
1356
+ "hpHz": {
1357
+ "min": 0,
1358
+ "max": 20000,
1359
+ "step": 1,
1360
+ "unit": "Hz"
1361
+ },
1362
+ "lpHz": {
1363
+ "min": 0,
1364
+ "max": 20000,
1365
+ "step": 1,
1366
+ "unit": "Hz"
1367
+ }
1368
+ }
1369
+ },
1350
1370
  "GENERATOR_KINDS": {
1351
1371
  "rel": "data/kernels/generator.json",
1352
1372
  "kind": "set",
@@ -3027,6 +3047,18 @@
3027
3047
  "kind": "travel",
3028
3048
  "global": "GATE_LIMITS",
3029
3049
  "table": "GATE_LIMITS"
3050
+ },
3051
+ {
3052
+ "name": "hpHz",
3053
+ "kind": "travel",
3054
+ "global": "GATE_KEY_LIMITS",
3055
+ "table": "GATE_KEY_LIMITS"
3056
+ },
3057
+ {
3058
+ "name": "lpHz",
3059
+ "kind": "travel",
3060
+ "global": "GATE_KEY_LIMITS",
3061
+ "table": "GATE_KEY_LIMITS"
3030
3062
  }
3031
3063
  ],
3032
3064
  "readouts": [