@openmixer/omx-contract 1.2.1 → 2.0.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 (42) hide show
  1. package/README.md +41 -4
  2. package/bin/omx-contract.mjs +14 -3
  3. package/data/kernels/balance.json +18 -14
  4. package/data/kernels/band_dyn.json +132 -0
  5. package/data/kernels/chorus.json +87 -56
  6. package/data/kernels/comp.json +67 -29
  7. package/data/kernels/deesser.json +114 -86
  8. package/data/kernels/delay.json +67 -57
  9. package/data/kernels/drive.json +118 -87
  10. package/data/kernels/eq.json +284 -113
  11. package/data/kernels/fbs.json +150 -0
  12. package/data/kernels/flanger.json +74 -44
  13. package/data/kernels/gate.json +76 -21
  14. package/data/kernels/geq.json +32 -27
  15. package/data/kernels/hrp.json +68 -0
  16. package/data/kernels/limiter.json +25 -9
  17. package/data/kernels/mixmatrix.json +11 -0
  18. package/data/kernels/phaser.json +110 -100
  19. package/data/kernels/pitch.json +35 -17
  20. package/data/kernels/reverb.json +176 -142
  21. package/data/kernels/rotary.json +189 -177
  22. package/data/kernels/rta.json +17 -0
  23. package/data/kernels/transient.json +64 -36
  24. package/data/kernels/tremolo.json +59 -48
  25. package/data/primitives.json +51 -0
  26. package/data/rates.json +29 -0
  27. package/dist/ts/omx-contract.d.ts +527 -21
  28. package/dist/ts/omx-contract.js +832 -57
  29. package/include/omxcontract/omx_contract_limits.h +233 -0
  30. package/lib/data.mjs +115 -3
  31. package/lib/eq-defaults.mjs +87 -0
  32. package/lib/fmt.mjs +24 -4
  33. package/lib/semver.mjs +12 -2
  34. package/lib/validate.mjs +99 -3
  35. package/package.json +1 -1
  36. package/render/c.mjs +76 -10
  37. package/render/doors.mjs +6 -3
  38. package/render/ts.mjs +40 -2
  39. package/schema/omx-contract.schema.json +39 -3
  40. package/share/omx-contract/omx-contract.json +759 -71
  41. package/render/c/omx_plugin_param.h +0 -25
  42. package/render/c/params-generate.mjs +0 -83
@@ -117,5 +117,56 @@
117
117
  "defaultFrom": "desk"
118
118
  }
119
119
  }
120
+ },
121
+ "PARAM_SCALES": {
122
+ "kind": "set",
123
+ "since": "1.3.0",
124
+ "doc": "How a host draws a parameter: linear, logarithmic (a frequency, a time) or in discrete steps. The words omx-plugins' declarations and plugin-hostd's protocol use; a travel names its own with `scale`.",
125
+ "ids": [
126
+ "linear",
127
+ "log",
128
+ "stepped"
129
+ ],
130
+ "default": "linear"
131
+ },
132
+ "EQ_CONTINUOUS_TRAVELS": {
133
+ "kind": "travels",
134
+ "since": "1.3.0",
135
+ "doc": "The EQ's three frequency travels as a host draws them: the band frequency, the high-pass corner and the low-pass corner, EQ_FREQ_RANGE's, HPF_FREQ_RANGE's and LPF_FREQ_RANGE's bounds with no step and a logarithmic scale. The console's EQ quantises frequency to 10 Hz; a frequency drags continuously on a log axis, which is how every host draws it, so this is the form the omx-plugins read. Every number but the step is the source's, held equal by test/continuous-travels.test.mjs. Not rendered to C: no C reader needs a second spelling of the EQ's bounds.",
136
+ "fields": {
137
+ "freqHz": {
138
+ "min": {
139
+ "ref": "EQ_FREQ_RANGE.min"
140
+ },
141
+ "max": {
142
+ "ref": "EQ_FREQ_RANGE.max"
143
+ },
144
+ "step": 0,
145
+ "unit": "Hz",
146
+ "scale": "log"
147
+ },
148
+ "hpfFreqHz": {
149
+ "min": {
150
+ "ref": "HPF_FREQ_RANGE.min"
151
+ },
152
+ "max": {
153
+ "ref": "HPF_FREQ_RANGE.max"
154
+ },
155
+ "step": 0,
156
+ "unit": "Hz",
157
+ "scale": "log"
158
+ },
159
+ "lpfFreqHz": {
160
+ "min": {
161
+ "ref": "LPF_FREQ_RANGE.min"
162
+ },
163
+ "max": {
164
+ "ref": "LPF_FREQ_RANGE.max"
165
+ },
166
+ "step": 0,
167
+ "unit": "Hz",
168
+ "scale": "log"
169
+ }
170
+ }
120
171
  }
121
172
  }
package/data/rates.json CHANGED
@@ -26,5 +26,34 @@
26
26
  "doc": "The rate a unit-range DSP knob is quoted at (R-058): the rate this desk runs (ruling 2026-09-14). A kernel raises the knob to `REF / sr`, so at this rate the exponent is exactly 1 and the response is bit-for-bit the one cut before the law. Emitted to C as `OMX_DSP_KNOB_REFERENCE_RATE`; the reverb damping and FX-delay tone references `#define` from it.",
27
27
  "unit": "Hz",
28
28
  "value": 96000
29
+ },
30
+ "ORACLE_FLOOR_RATES": {
31
+ "kind": "list",
32
+ "since": "1.3.0",
33
+ "doc": "The four rates every kernel oracle runs at, whatever STANDARD_SAMPLE_RATES says: a declared list missing one of them stops a suite instead of testing less (omx-dsp, omx-plugins and omx-clap-host run their oracles at these).",
34
+ "unit": "Hz",
35
+ "values": [
36
+ 44100,
37
+ 48000,
38
+ 96000,
39
+ 192000
40
+ ]
41
+ },
42
+ "RME_RATES": {
43
+ "kind": "list",
44
+ "since": "1.3.0",
45
+ "doc": "The nine rates an RME interface clocks at, 32 to 192 kHz. STANDARD_SAMPLE_RATES is a subset of them; an oracle that runs here also covers 32, 64 and 128 kHz, where a kernel still has to meet its closed form even though the console never asks for them.",
46
+ "unit": "Hz",
47
+ "values": [
48
+ 32000,
49
+ 44100,
50
+ 48000,
51
+ 64000,
52
+ 88200,
53
+ 96000,
54
+ 128000,
55
+ 176400,
56
+ 192000
57
+ ]
29
58
  }
30
59
  }