@openmixer/omx-contract 2.12.0 → 2.13.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,10 +49,10 @@ 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.12.0 omx-contract`), else the npm tarball, unpacked, and
52
+ that version (`pkg-config --exact-version=2.13.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
- [docs/kernel-files.md](docs/kernel-files.md), and what a readout is in [docs/readouts.md](docs/readouts.md). The hosting limits, the refusal codes and the `clap_host_limits.h` rendered from them are in [docs/hosting.md](docs/hosting.md).
55
+ [docs/kernel-files.md](docs/kernel-files.md), and what a readout is in [docs/readouts.md](docs/readouts.md). The hosting limits, the refusal codes and the `clap_host_limits.h` rendered from them are in [docs/hosting.md](docs/hosting.md). The frequency grid an EQ curve is sampled on is in [docs/curves.md](docs/curves.md).
56
56
 
57
57
  ## Building
58
58
 
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "../schema/omx-contract.schema.json",
3
+ "EQ_CURVE_GRID": {
4
+ "kind": "sheet",
5
+ "since": "2.13.0",
6
+ "doc": "The log frequency grid an EQ response curve is sampled on: point k is startHz x 10^(k / pointsPerDecade), for k = 0, 1, 2 and on while the point is at or below nyquistFraction x the rate / 2. At these values the points up to 20 kHz are the 160 points from 20 Hz to 20 kHz the console draws its EQ curve on, the same at every rate whose bound lies above 20 kHz; above 20 kHz the grid goes on at the same step up to the bound.",
7
+ "value": {
8
+ "startHz": 20,
9
+ "pointsPerDecade": 53,
10
+ "nyquistFraction": 0.999
11
+ },
12
+ "docs": {
13
+ "startHz": "the first point of the grid, in Hz",
14
+ "pointsPerDecade": "the points in each decade; neighbouring points are a ratio of 10^(1 / pointsPerDecade) apart",
15
+ "nyquistFraction": "the last point is the last at or below this fraction of the Nyquist frequency (the rate / 2)"
16
+ }
17
+ }
18
+ }
@@ -2,6 +2,16 @@
2
2
  // Copyright (C) 2026 Pau Aliagas <linuxnow@gmail.com>
3
3
  // GENERATED by `omx-contract render --target ts` from FreeMixer/omx-contract's data/ — do not edit.
4
4
 
5
+ /**
6
+ * The log frequency grid an EQ response curve is sampled on: point k is startHz x 10^(k / pointsPerDecade), for k = 0, 1, 2 and on while the point is at or below nyquistFraction x the rate / 2. At these values the points up to 20 kHz are the 160 points from 20 Hz to 20 kHz the console draws its EQ curve on, the same at every rate whose bound lies above 20 kHz; above 20 kHz the grid goes on at the same step up to the bound.
7
+ * @see data/curves.json
8
+ */
9
+ export declare const EQ_CURVE_GRID: {
10
+ readonly startHz: 20;
11
+ readonly pointsPerDecade: 53;
12
+ readonly nyquistFraction: 0.999;
13
+ };
14
+
5
15
  /**
6
16
  * The numbers a hosted plugin's stage limits itself to: the warm-up before it is published, the blocks of non-finite output that strike it, the level its output is clamped at, the parameter queue and the events one block delivers, the polls and timeouts of the hand-over between threads, the ports the core accepts and the caps on a plugin's state, log and parameter count. These are the stage's safety numbers, not an operator's travel.
7
17
  * @see data/hosting.json
@@ -2,6 +2,16 @@
2
2
  // Copyright (C) 2026 Pau Aliagas <linuxnow@gmail.com>
3
3
  // GENERATED by `omx-contract render --target ts` from FreeMixer/omx-contract's data/ — do not edit.
4
4
 
5
+ /**
6
+ * The log frequency grid an EQ response curve is sampled on: point k is startHz x 10^(k / pointsPerDecade), for k = 0, 1, 2 and on while the point is at or below nyquistFraction x the rate / 2. At these values the points up to 20 kHz are the 160 points from 20 Hz to 20 kHz the console draws its EQ curve on, the same at every rate whose bound lies above 20 kHz; above 20 kHz the grid goes on at the same step up to the bound.
7
+ * @see data/curves.json
8
+ */
9
+ export const EQ_CURVE_GRID = {
10
+ "startHz": 20,
11
+ "pointsPerDecade": 53,
12
+ "nyquistFraction": 0.999
13
+ };
14
+
5
15
  /**
6
16
  * The numbers a hosted plugin's stage limits itself to: the warm-up before it is published, the blocks of non-finite output that strike it, the level its output is clamped at, the parameter queue and the events one block delivers, the polls and timeouts of the hand-over between threads, the ports the core accepts and the caps on a plugin's state, log and parameter count. These are the stage's safety numbers, not an operator's travel.
7
17
  * @see data/hosting.json
@@ -297,6 +297,10 @@
297
297
  #define OMX_EQ_BAND_COUNTS_STRIP_MAX 4
298
298
  #define OMX_EQ_BAND_DEFAULTS_GAIN_DB 0
299
299
  #define OMX_EQ_BAND_DEFAULTS_Q 1
300
+ #define OMX_EQ_CURVE_GRID_NYQUIST_FRACTION 0.999f
301
+ #define OMX_EQ_CURVE_GRID_NYQUIST_FRACTION_DOUBLE 0.999
302
+ #define OMX_EQ_CURVE_GRID_POINTS_PER_DECADE 53
303
+ #define OMX_EQ_CURVE_GRID_START_HZ 20
300
304
  #define OMX_EQ_FREQ_RANGE_MAX 20000
301
305
  #define OMX_EQ_FREQ_RANGE_MIN 20
302
306
  #define OMX_EQ_FREQ_RANGE_STEP 10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmixer/omx-contract",
3
- "version": "2.12.0",
3
+ "version": "2.13.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",
@@ -1,7 +1,22 @@
1
1
  {
2
2
  "name": "@openmixer/omx-contract",
3
- "version": "2.12.0",
3
+ "version": "2.13.0",
4
4
  "items": {
5
+ "EQ_CURVE_GRID": {
6
+ "rel": "data/curves.json",
7
+ "kind": "sheet",
8
+ "doc": "The log frequency grid an EQ response curve is sampled on: point k is startHz x 10^(k / pointsPerDecade), for k = 0, 1, 2 and on while the point is at or below nyquistFraction x the rate / 2. At these values the points up to 20 kHz are the 160 points from 20 Hz to 20 kHz the console draws its EQ curve on, the same at every rate whose bound lies above 20 kHz; above 20 kHz the grid goes on at the same step up to the bound.",
9
+ "docs": {
10
+ "startHz": "the first point of the grid, in Hz",
11
+ "pointsPerDecade": "the points in each decade; neighbouring points are a ratio of 10^(1 / pointsPerDecade) apart",
12
+ "nyquistFraction": "the last point is the last at or below this fraction of the Nyquist frequency (the rate / 2)"
13
+ },
14
+ "value": {
15
+ "startHz": 20,
16
+ "pointsPerDecade": 53,
17
+ "nyquistFraction": 0.999
18
+ }
19
+ },
5
20
  "HOSTED_STAGE_LIMITS": {
6
21
  "rel": "data/hosting.json",
7
22
  "kind": "sheet",