@effetune/dsp 0.4.0 → 0.5.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
@@ -3,8 +3,8 @@
3
3
  <!-- BEGIN DSP-LIBRARY-JAVASCRIPT-SUMMARY -->
4
4
  EffeTune DSP provides the same MIT-licensed C++ audio kernels used by EffeTune
5
5
  as a self-contained WebAssembly package for Node.js and evergreen browsers.
6
- Version 0.4.0 exposes all 83 catalog types through the generic Chain and
7
- `createEffect` APIs and 83 generated named convenience classes,
6
+ Version 0.5.0 exposes all 90 catalog types through the generic Chain and
7
+ `createEffect` APIs and 90 generated named convenience classes,
8
8
  decoded analyzer telemetry, versioned semantic presets, deterministic seeds, and an AudioWorklet wrapper.
9
9
  <!-- END DSP-LIBRARY-JAVASCRIPT-SUMMARY -->
10
10
 
@@ -39,6 +39,44 @@ const output = await chain.process(input, { sampleRate: 48000 });
39
39
  console.log(output.length, output[0].length, output[0][0]);
40
40
  chain.close();
41
41
  ```
42
+
43
+ ### Graph v1 quickstart
44
+
45
+ Graph v1 is opt-in routing for branching and merging:
46
+
47
+ ```js
48
+ import { Graph, createGraph, createVolume } from '@effetune/dsp';
49
+
50
+ const input = [
51
+ new Float32Array(128).fill(0.25),
52
+ new Float32Array(128).fill(0.25)
53
+ ];
54
+ const graphDocument = Graph.wetDry(
55
+ createVolume({ id: 'wet', volume: -6 }),
56
+ { dry: 0.5, wet: 0.5 }
57
+ );
58
+ const graph = await createGraph(graphDocument);
59
+ let stream;
60
+
61
+ try {
62
+ const offline = await graph.process(input, { sampleRate: 48000 });
63
+ stream = await graph.stream({
64
+ sampleRate: 48000,
65
+ channels: 2,
66
+ blockSize: 128
67
+ });
68
+ const continuous = await stream.process(input);
69
+ console.log(
70
+ offline[0][0],
71
+ continuous[0][0],
72
+ stream.latencySamples,
73
+ stream.compileSnapshot.effectiveSchedule
74
+ );
75
+ } finally {
76
+ stream?.close();
77
+ graph.close();
78
+ }
79
+ ```
42
80
  <!-- END DSP-LIBRARY-JAVASCRIPT-START -->
43
81
 
44
82
  The package is ESM-only. Save the example as `start.mjs` and run
@@ -51,10 +89,14 @@ Public package entry points are:
51
89
  - `@effetune/dsp/worklet` for `EffeTuneNode`
52
90
  - `@effetune/dsp/processor` for the side-effect AudioWorklet processor
53
91
  - `@effetune/dsp/schemas/chain-v1.json` for the Chain v1 JSON Schema
92
+ - `@effetune/dsp/schemas/graph-v1.json` for the Graph v1 JSON Schema
54
93
  - `@effetune/dsp/schemas/bundle-v1.json` for the Bundle v1 JSON Schema
55
94
  - `@effetune/dsp/catalog` for ESM catalog exports
56
95
  - `@effetune/dsp/catalog.json` for the machine-readable catalog JSON
57
96
 
97
+ Graph v1 is opt-in. Its current capacities and delay-storage accounting are
98
+ published in the [Graph v1 guide](https://effetune.frieve.com/dsp/reference/graph-v1/#capacity).
99
+
58
100
  Every offline `process()` call starts from fresh DSP state and returns newly
59
101
  owned `Float32Array` channels. Input arrays are never mutated. Effects run in
60
102
  array order; a disabled effect and an empty chain are identity operations.
@@ -134,15 +176,73 @@ verify exact byte length and SHA-256 before accepting an ETA1 payload. The
134
176
  complete payload and convolution footprint must fit the 32 MiB kernel cap.
135
177
 
136
178
  `EFFECT_CATALOG` and `getEffectCatalog()` expose the machine-readable semantic
137
- catalog for all 83 root classes and their `create<Type>()` factories. The
179
+ catalog for all 90 root classes and their `create<Type>()` factories. The
138
180
  catalog contains channel choices, parameters, required assets, telemetry, and
139
181
  latency declarations, but no private implementation mapping.
140
182
 
183
+ ### Modulation Style recipes
184
+
185
+ The application-only **Style** selector is not a DSP parameter or a second
186
+ preset API. The following JSON-compatible objects are the equivalent public
187
+ parameter dictionaries. Copy one into a named constructor, for example
188
+ `new Chorus(MODULATION_STYLES.Chorus.Flanger)`, or into a Chain effect's
189
+ `parameters` object.
190
+
191
+ ```js
192
+ const MODULATION_STYLES = {
193
+ AutoFilter: {
194
+ "Auto Filter Sweep": { mode: "LFO", filterType: "Low-pass", minimumFrequency: 200, maximumFrequency: 4000, resonance: 1.5, mix: 80, rate: 0.5, waveform: "Sine", stereoPhase: 0, sensitivity: 24, attack: 20, release: 250, direction: "Up" },
195
+ "Stereo Filter Sweep": { mode: "LFO", filterType: "Low-pass", minimumFrequency: 160, maximumFrequency: 6000, resonance: 2, mix: 85, rate: 0.35, waveform: "Sine", stereoPhase: 120, sensitivity: 24, attack: 20, release: 250, direction: "Up" },
196
+ "Envelope Filter": { mode: "Envelope", filterType: "Low-pass", minimumFrequency: 100, maximumFrequency: 5000, resonance: 1.2, mix: 85, rate: 0.5, waveform: "Sine", stereoPhase: 0, sensitivity: 24, attack: 18, release: 300, direction: "Up" },
197
+ "Auto Wah": { mode: "Envelope", filterType: "Band-pass", minimumFrequency: 180, maximumFrequency: 2400, resonance: 5, mix: 100, rate: 0.5, waveform: "Sine", stereoPhase: 0, sensitivity: 30, attack: 8, release: 180, direction: "Up" },
198
+ "Reverse Auto Wah": { mode: "Envelope", filterType: "Band-pass", minimumFrequency: 180, maximumFrequency: 2800, resonance: 4, mix: 100, rate: 0.5, waveform: "Sine", stereoPhase: 0, sensitivity: 30, attack: 12, release: 350, direction: "Down" }
199
+ },
200
+ AutoPan: {
201
+ "Gentle Auto Pan": { rate: 0.35, depth: 45, center: 0, width: 70, waveform: "Sine", phase: 0 },
202
+ "Wide Auto Pan": { rate: 0.7, depth: 100, center: 0, width: 100, waveform: "Sine", phase: 0 },
203
+ "Fast Auto Pan": { rate: 4, depth: 85, center: 0, width: 100, waveform: "Triangle", phase: 0 }
204
+ },
205
+ Chorus: {
206
+ "Classic Chorus": { mode: "Chorus", rate: 0.8, delay: 12, depth: 3, voices: 3, stereoSpread: 60, feedback: 0, mix: 45 },
207
+ "Stereo Chorus": { mode: "Stereo Chorus", rate: 0.65, delay: 15, depth: 4, voices: 2, stereoSpread: 80, feedback: 0, mix: 50 },
208
+ Ensemble: { mode: "Ensemble", rate: 0.45, delay: 20, depth: 6, voices: 6, stereoSpread: 100, feedback: 0, mix: 60 },
209
+ Flanger: { mode: "Flanger", rate: 0.35, delay: 2.5, depth: 2, voices: 1, stereoSpread: 35, feedback: 45, mix: 50 },
210
+ "Jet Flanger": { mode: "Flanger", rate: 0.18, delay: 1.5, depth: 1.4, voices: 1, stereoSpread: 70, feedback: -75, mix: 55 },
211
+ Vibrato: { mode: "Vibrato", rate: 4.5, delay: 8, depth: 5, voices: 1, stereoSpread: 50, feedback: 0, mix: 100 }
212
+ },
213
+ FrequencyShifter: {
214
+ "Shift Up": { mode: "Shift", shift: 8, carrierFrequency: 440, minimumShift: 20, maximumShift: 800, rate: 0.15, direction: "Up", stereoPhase: 0, mix: 100 },
215
+ "Shift Down": { mode: "Shift", shift: -8, carrierFrequency: 440, minimumShift: 20, maximumShift: 800, rate: 0.15, direction: "Down", stereoPhase: 0, mix: 100 },
216
+ "Fine Detune": { mode: "Shift", shift: 2, carrierFrequency: 440, minimumShift: 20, maximumShift: 800, rate: 0.15, direction: "Up", stereoPhase: 90, mix: 55 },
217
+ "Ring Modulator": { mode: "Ring Mod", shift: 8, carrierFrequency: 440, minimumShift: 20, maximumShift: 800, rate: 0.15, direction: "Up", stereoPhase: 0, mix: 100 },
218
+ "Barber-pole Up": { mode: "Barber-pole", shift: 8, carrierFrequency: 440, minimumShift: 20, maximumShift: 900, rate: 0.12, direction: "Up", stereoPhase: 90, mix: 85 },
219
+ "Barber-pole Down": { mode: "Barber-pole", shift: -8, carrierFrequency: 440, minimumShift: 20, maximumShift: 900, rate: 0.12, direction: "Down", stereoPhase: 90, mix: 85 }
220
+ },
221
+ Phaser: {
222
+ "Classic Phaser": { mode: "Classic", rate: 0.5, centerFrequency: 1000, range: 3, stages: 6, feedback: 20, stereoPhase: 90, direction: "Up", mix: 50 },
223
+ "Deep Phaser": { mode: "Classic", rate: 0.25, centerFrequency: 700, range: 4.5, stages: 12, feedback: 55, stereoPhase: 30, direction: "Up", mix: 55 },
224
+ "Stereo Phaser": { mode: "Classic", rate: 0.65, centerFrequency: 1200, range: 3.5, stages: 8, feedback: 25, stereoPhase: 120, direction: "Up", mix: 50 },
225
+ "Barber-pole Up": { mode: "Barber-pole", rate: 0.35, centerFrequency: 1000, range: 5, stages: 8, feedback: 30, stereoPhase: 60, direction: "Up", mix: 55 },
226
+ "Barber-pole Down": { mode: "Barber-pole", rate: 0.35, centerFrequency: 1000, range: 5, stages: 8, feedback: 30, stereoPhase: 60, direction: "Down", mix: 55 }
227
+ },
228
+ RotarySpeaker: {
229
+ "Rotary Slow": { speedState: "Slow", speed: 100, acceleration: 2.2, crossover: 800, rotorBalance: 0, stereoWidth: 75, dopplerDepth: 45, amplitudeDepth: 55, mix: 70 },
230
+ "Rotary Fast": { speedState: "Fast", speed: 100, acceleration: 1.4, crossover: 800, rotorBalance: 0, stereoWidth: 85, dopplerDepth: 65, amplitudeDepth: 70, mix: 78 },
231
+ "Gentle Rotary": { speedState: "Slow", speed: 75, acceleration: 3, crossover: 900, rotorBalance: 0, stereoWidth: 45, dopplerDepth: 25, amplitudeDepth: 30, mix: 55 },
232
+ "Leslie Slow": { speedState: "Slow", speed: 100, acceleration: 2.8, crossover: 800, rotorBalance: -5, stereoWidth: 80, dopplerDepth: 50, amplitudeDepth: 60, mix: 75 },
233
+ "Leslie Fast": { speedState: "Fast", speed: 100, acceleration: 1.8, crossover: 800, rotorBalance: -5, stereoWidth: 90, dopplerDepth: 70, amplitudeDepth: 75, mix: 82 }
234
+ }
235
+ };
236
+ ```
237
+
141
238
  For stateful processing, `ChainStream.latencySamples` reports aggregate runtime
142
239
  latency and matches Python `Stream.latency_samples` for the same chain and
143
240
  sample rate. `chain.latencySamples({ sampleRate })` reports the same value
144
- without opening a stream, which aligns offline `process()` output.
145
- `EffeTuneNode` does not expose a latency getter.
241
+ without opening a stream. `EffeTuneNode.latencySamples` exposes the cached
242
+ aggregate for real-time processing; initialization and awaited `setParam()` or
243
+ `reset()` calls update it before returning. These APIs report latency without
244
+ trimming or padding offline output, so the host decides how to place rendered
245
+ audio.
146
246
 
147
247
  For real-time processing:
148
248
 
@@ -156,6 +256,7 @@ const node = await EffeTuneNode.create(context, preset, {
156
256
  });
157
257
  source.connect(node).connect(context.destination);
158
258
  await node.setParam('voice', 'threshold', -20);
259
+ console.log(node.latencySamples);
159
260
  await node.reset();
160
261
  node.close();
161
262
  ```
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "abiVersion": 1,
3
- "sourceDigest": "sha256:1e46f26d7a51f22747ce105a425cf83be4c71ed3f9b1342275cdff2bed6e0590",
3
+ "sourceDigest": "sha256:00067361c0a5d99d45cf1d82c9bf6551d0403f895a8fa49ca21a6c79baf5c4d1",
4
4
  "emsdkVersion": "6.0.2",
5
5
  "g726PerformanceInput": {
6
6
  "contract": "g726-production-performance-input-sha256-v2",
7
7
  "hashAlgorithm": "SHA-256 over the contract and ordered UTF-8 components as id\\0content\\0; CRLF and CR normalize to LF",
8
- "digest": "sha256:2a3c283e9f45f68d561b2d651a8c73d78cab2a8f8cbc74f6f99ebcc64e408598",
8
+ "digest": "sha256:b50736a00940789be0f1ac4cfb8ab918c1ac1226fb9223703c0847d50b82d9e6",
9
9
  "inputs": [
10
10
  {
11
11
  "id": "dsp/core/abi.cpp",
12
12
  "kind": "file",
13
- "sha256": "sha256:97e277947544bcb21015c9fe289af338fbe6f46b97dda233d24b594704bd2059"
13
+ "sha256": "sha256:ae52245f49287e6bf3345ba0860e65c7eb9d49fe61fabb0a3fb3459bb9eb6676"
14
14
  },
15
15
  {
16
16
  "id": "dsp/core/allocation_guard.cpp",
@@ -35,17 +35,17 @@
35
35
  {
36
36
  "id": "dsp/core/engine.cpp",
37
37
  "kind": "file",
38
- "sha256": "sha256:49b8be2b35956dbd34c0cb46a48da64132b8b2b4395437ab3381755936fb4741"
38
+ "sha256": "sha256:be4717516d9fb48de4a4fb68f5338a490ac4a060c571a22237514f311c2c1126"
39
39
  },
40
40
  {
41
41
  "id": "dsp/core/engine.h",
42
42
  "kind": "file",
43
- "sha256": "sha256:5959f7d0bca55fb80c580d16cf7f22859db87b3d20a46f589d96f7682f80fd49"
43
+ "sha256": "sha256:373b70d2e7f6925a79c13e067719b40b36539567d26bf6f3d8df575641e47239"
44
44
  },
45
45
  {
46
46
  "id": "dsp/core/registry.cpp",
47
47
  "kind": "file",
48
- "sha256": "sha256:64c18288f9be512826a01e93c387c9b0105fa716cdd36db5c01e9e9a757132b8"
48
+ "sha256": "sha256:1ca815678d0ecc13ee7dfd35f8c0af6b2ea1d4ff1e7100177349057b7ebbdcab"
49
49
  },
50
50
  {
51
51
  "id": "dsp/core/registry.h",
@@ -55,7 +55,7 @@
55
55
  {
56
56
  "id": "dsp/core/telemetry.cpp",
57
57
  "kind": "file",
58
- "sha256": "sha256:515405f783c4b410567e6b44ec66abd68d1872361840e713518c4bf7425bca42"
58
+ "sha256": "sha256:a78cfe83117c9ea3714f0fe83e320e377165331c56627283f2193c78012514da"
59
59
  },
60
60
  {
61
61
  "id": "dsp/EMSDK_VERSION",
@@ -65,7 +65,7 @@
65
65
  {
66
66
  "id": "dsp/exports.txt",
67
67
  "kind": "file",
68
- "sha256": "sha256:a80c7af5a36d703cae78efc96e7458d238cbff7a9ac86ffaecdb2e6d19d18735"
68
+ "sha256": "sha256:d9fafe26c1f1d23eaa4f38fa61073f992f34a0649e85eac39df9bd1dc8215342"
69
69
  },
70
70
  {
71
71
  "id": "dsp/generated/cpp/G726ADPCMSimulatorPluginParams.h",
@@ -75,7 +75,7 @@
75
75
  {
76
76
  "id": "dsp/include/effetune/abi.h",
77
77
  "kind": "file",
78
- "sha256": "sha256:2e13c9f28ba46ec8a0397a003d360923ccb3367639918e0d24d02ed4f6726894"
78
+ "sha256": "sha256:18dcdc3fdd2af9de4b7acb27dacb3441b01a441e9447af1908efb69437b3909a"
79
79
  },
80
80
  {
81
81
  "id": "dsp/include/effetune/dsp/halfband.h",
@@ -115,7 +115,7 @@
115
115
  {
116
116
  "id": "dsp/plugins/lofi/g726_adpcm_simulator/params.json",
117
117
  "kind": "file",
118
- "sha256": "sha256:a096e3cb9174c7650a7d024f3dc2c28506f8e1b98b879329cd8a9f5dc3d685ee"
118
+ "sha256": "sha256:fccbe3d6b852a1f29f86a1f3d1cc6acf855dbfa7d4472cbb2c211abd52ccd61f"
119
119
  },
120
120
  {
121
121
  "id": "dsp/registry.inc#G726ADPCMSimulatorPlugin-entry",
@@ -130,17 +130,17 @@
130
130
  {
131
131
  "id": "js/audio/dsp-engine-binding.js",
132
132
  "kind": "file",
133
- "sha256": "sha256:5186b3cd1a1d6897f644bfded4ad2f5542e09addf913e98f85b14a95825240e0"
133
+ "sha256": "sha256:4c0efb5c75ee0c051ba2fc0804f908d61363d077fec95f86f5b390a8eb031cc9"
134
134
  },
135
135
  {
136
136
  "id": "production-build#g726-resolved-authority",
137
137
  "kind": "derived",
138
- "sha256": "sha256:083288185aaf9068f11cca8ffef3eefc2a68f8d9aab59f4a43bc2d141e2218be"
138
+ "sha256": "sha256:872376fbba212753fe6283376ec83125c55906cf51b746cebae39882acc2490d"
139
139
  },
140
140
  {
141
141
  "id": "production-build#g726-source-authority",
142
142
  "kind": "derived",
143
- "sha256": "sha256:957f4ed2f398b92b5d6dce22cfabd431b8445dd0b66e3d0312c063c16e09447e"
143
+ "sha256": "sha256:2f0ae13c16cc15cd2953365a24f94d90cbe00ce65a525368a67a6855459affed"
144
144
  },
145
145
  {
146
146
  "id": "tools/dsp-parity/cases.mjs",
@@ -160,7 +160,7 @@
160
160
  {
161
161
  "id": "tools/dsp-parity/runners.mjs",
162
162
  "kind": "file",
163
- "sha256": "sha256:83be9da46b7fdb60a469c853eb501d1a3a7eca7872b143a0d3e972a633229260"
163
+ "sha256": "sha256:2149fe3fd23139997563d401277b0ea5cdc1b893d310f970fc4e5f9b8517d11c"
164
164
  },
165
165
  {
166
166
  "id": "tools/dsp-parity/stimuli.mjs",
@@ -180,7 +180,7 @@
180
180
  "target_compile_options(pffft PRIVATE -msimd128)",
181
181
  "set_target_properties(pffft PROPERTIES POSITION_INDEPENDENT_CODE ON)",
182
182
  "target_link_libraries(pffft PUBLIC m)",
183
- "target_include_directories( effetune_dsp_core PUBLIC include PRIVATE core generated/cpp)",
183
+ "target_include_directories( effetune_dsp_core PUBLIC include bindings/generated PRIVATE core generated/cpp)",
184
184
  "target_link_libraries(effetune_dsp_core PUBLIC pffft)",
185
185
  "target_compile_definitions( effetune_dsp_core PRIVATE $<$<BOOL:${ET_SIMD}>:ET_SIMD=1> $<$<BOOL:${ET_DEBUG_STATE}>:ET_DEBUG_STATE=1> $<$<CONFIG:Debug>:ET_DEBUG_BUILD=1> $<$<CONFIG:Debug>:ET_ALLOCATION_GUARD=1> $<$<AND:$<CONFIG:Debug>,$<NOT:$<CXX_COMPILER_ID:MSVC>>>:ET_WRAP_MALLOC=1> $<$<BOOL:${BUILD_TESTING}>:ET_ENABLE_TEST_KERNEL=1>)",
186
186
  "target_link_options( effetune_dsp_core INTERFACE $<$<AND:$<CONFIG:Debug>,$<NOT:$<CXX_COMPILER_ID:MSVC>>>:-Wl,--wrap=malloc>)",
@@ -222,7 +222,7 @@
222
222
  "-DBUILD_TESTING=OFF"
223
223
  ]
224
224
  },
225
- "digest": "sha256:9f661f9436b7a66184aec1c77806dbfa36d5fe8ed156e4911a771fae4a0d95da"
225
+ "digest": "sha256:c2ea8f18f42afd6375341c9df08f4f21ef57a44875f540126eef084101ddef99"
226
226
  },
227
227
  "resolved": {
228
228
  "source": "configured CMake Ninja compile/link edges",
@@ -255,49 +255,49 @@
255
255
  "source": "dsp/core/abi.cpp",
256
256
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
257
257
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
258
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
258
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
259
259
  },
260
260
  {
261
261
  "source": "dsp/core/allocation_guard.cpp",
262
262
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
263
263
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
264
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
264
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
265
265
  },
266
266
  {
267
267
  "source": "dsp/core/arena.cpp",
268
268
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
269
269
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
270
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
270
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
271
271
  },
272
272
  {
273
273
  "source": "dsp/core/engine.cpp",
274
274
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
275
275
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
276
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
276
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
277
277
  },
278
278
  {
279
279
  "source": "dsp/core/registry.cpp",
280
280
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
281
281
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
282
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
282
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
283
283
  },
284
284
  {
285
285
  "source": "dsp/core/telemetry.cpp",
286
286
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
287
287
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
288
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
288
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
289
289
  },
290
290
  {
291
291
  "source": "dsp/plugins/lofi/g726_adpcm_simulator/kernel.cpp",
292
292
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DPFFFT_STATIC_DEFINE=1",
293
293
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto",
294
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
294
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
295
295
  },
296
296
  {
297
297
  "source": "dsp/wasm/no_entry.cpp",
298
298
  "definitions": "-DPFFFT_STATIC_DEFINE=1",
299
299
  "flags": "-O3 -DNDEBUG -std=c++20",
300
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/vendor/pffft/include/pffft"
300
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/vendor/pffft/include/pffft"
301
301
  }
302
302
  ],
303
303
  "linkCommand": {
@@ -334,49 +334,49 @@
334
334
  "source": "dsp/core/abi.cpp",
335
335
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
336
336
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
337
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
337
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
338
338
  },
339
339
  {
340
340
  "source": "dsp/core/allocation_guard.cpp",
341
341
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
342
342
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
343
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
343
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
344
344
  },
345
345
  {
346
346
  "source": "dsp/core/arena.cpp",
347
347
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
348
348
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
349
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
349
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
350
350
  },
351
351
  {
352
352
  "source": "dsp/core/engine.cpp",
353
353
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
354
354
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
355
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
355
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
356
356
  },
357
357
  {
358
358
  "source": "dsp/core/registry.cpp",
359
359
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
360
360
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
361
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
361
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
362
362
  },
363
363
  {
364
364
  "source": "dsp/core/telemetry.cpp",
365
365
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
366
366
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
367
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
367
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
368
368
  },
369
369
  {
370
370
  "source": "dsp/plugins/lofi/g726_adpcm_simulator/kernel.cpp",
371
371
  "definitions": "-DET_ENABLE_LIFECYCLE_EXCEPTION_BOUNDARY=1 -DET_SIMD=1 -DPFFFT_STATIC_DEFINE=1",
372
372
  "flags": "-O3 -DNDEBUG -std=c++20 -Wall -Wextra -Wpedantic -Werror -fwasm-exceptions -fno-rtti -O3 -flto -msimd128",
373
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
373
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/core -I<repo>/dsp/generated/cpp -I<repo>/dsp/vendor/pffft/include/pffft"
374
374
  },
375
375
  {
376
376
  "source": "dsp/wasm/no_entry.cpp",
377
377
  "definitions": "-DPFFFT_STATIC_DEFINE=1",
378
378
  "flags": "-O3 -DNDEBUG -std=c++20",
379
- "includes": "-I<repo>/dsp/include -I<repo>/dsp/vendor/pffft/include/pffft"
379
+ "includes": "-I<repo>/dsp/include -I<repo>/dsp/bindings/generated -I<repo>/dsp/vendor/pffft/include/pffft"
380
380
  }
381
381
  ],
382
382
  "linkCommand": {
@@ -386,7 +386,7 @@
386
386
  }
387
387
  }
388
388
  },
389
- "digest": "sha256:49d590ffe39aeb113169fefad12d64eef03bd8125686fbed577ddb0f86b4f833"
389
+ "digest": "sha256:25a31669bb24da034d90512065fd746433745ead5d247e352c9ed08b3cbd24ea"
390
390
  }
391
391
  }
392
392
  },
@@ -773,18 +773,60 @@
773
773
  "byteCapacity": 0,
774
774
  "assets": []
775
775
  },
776
+ {
777
+ "name": "AutoFilterPlugin",
778
+ "hash": 1612236675,
779
+ "byteCapacity": 0,
780
+ "assets": []
781
+ },
782
+ {
783
+ "name": "AutoPanPlugin",
784
+ "hash": 1469569767,
785
+ "byteCapacity": 0,
786
+ "assets": []
787
+ },
788
+ {
789
+ "name": "ChorusPlugin",
790
+ "hash": 2730690922,
791
+ "byteCapacity": 0,
792
+ "assets": []
793
+ },
776
794
  {
777
795
  "name": "DopplerDistortionPlugin",
778
796
  "hash": 10372816,
779
797
  "byteCapacity": 0,
780
798
  "assets": []
781
799
  },
800
+ {
801
+ "name": "FrequencyShifterPlugin",
802
+ "hash": 1854760556,
803
+ "byteCapacity": 0,
804
+ "assets": []
805
+ },
806
+ {
807
+ "name": "PhaserPlugin",
808
+ "hash": 2823426285,
809
+ "byteCapacity": 0,
810
+ "assets": []
811
+ },
782
812
  {
783
813
  "name": "PitchShifterPlugin",
784
814
  "hash": 1998192054,
785
815
  "byteCapacity": 0,
786
816
  "assets": []
787
817
  },
818
+ {
819
+ "name": "PitchShifterHQPlugin",
820
+ "hash": 3982397611,
821
+ "byteCapacity": 0,
822
+ "assets": []
823
+ },
824
+ {
825
+ "name": "RotarySpeakerPlugin",
826
+ "hash": 1430720979,
827
+ "byteCapacity": 0,
828
+ "assets": []
829
+ },
788
830
  {
789
831
  "name": "TremoloPlugin",
790
832
  "hash": 1836520376,
@@ -835,7 +877,7 @@
835
877
  },
836
878
  {
837
879
  "name": "IRReverbPlugin",
838
- "hash": 2199744560,
880
+ "hash": 2529061658,
839
881
  "byteCapacity": 0,
840
882
  "assets": [
841
883
  {
@@ -852,6 +894,12 @@
852
894
  "byteCapacity": 0,
853
895
  "assets": []
854
896
  },
897
+ {
898
+ "name": "BandwidthExtenderPlugin",
899
+ "hash": 3030838001,
900
+ "byteCapacity": 0,
901
+ "assets": []
902
+ },
855
903
  {
856
904
  "name": "DynamicSaturationPlugin",
857
905
  "hash": 3365051379,
@@ -896,7 +944,7 @@
896
944
  },
897
945
  {
898
946
  "name": "TubeSimulatorPlugin",
899
- "hash": 3886736006,
947
+ "hash": 127429451,
900
948
  "byteCapacity": 0,
901
949
  "assets": []
902
950
  },
@@ -918,6 +966,12 @@
918
966
  "byteCapacity": 0,
919
967
  "assets": []
920
968
  },
969
+ {
970
+ "name": "PhaseSelectEqPlugin",
971
+ "hash": 4158366201,
972
+ "byteCapacity": 0,
973
+ "assets": []
974
+ },
921
975
  {
922
976
  "name": "StereoBlendPlugin",
923
977
  "hash": 648556109,
@@ -926,7 +980,7 @@
926
980
  }
927
981
  ],
928
982
  "sizes": {
929
- "baseline": 801049,
930
- "simd": 892774
983
+ "baseline": 975148,
984
+ "simd": 1071488
931
985
  }
932
986
  }
Binary file
Binary file