@effetune/dsp 0.5.0 → 0.6.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 +11 -9
- package/dist/assets/effetune-dsp.meta.json +27 -8
- package/dist/assets/effetune-dsp.simd.wasm +0 -0
- package/dist/assets/effetune-dsp.wasm +0 -0
- package/dist/assets.js +23 -0
- package/dist/catalog/effects-v1.json +170 -2
- package/dist/denormal-noise.js +15 -0
- package/dist/effect.js +1 -0
- package/dist/generated-effects.d.ts +38 -2
- package/dist/generated-effects.js +29 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.js +4 -0
- package/dist/internal/dsp-params.generated.js +160 -84
- package/dist/schemas/chain-v1.schema.json +208 -0
- package/dist/schemas/graph-v1.schema.json +208 -0
- package/dist/semantics.js +1 -0
- package/package.json +1 -1
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.
|
|
7
|
-
`createEffect` APIs and
|
|
6
|
+
Version 0.6.0 exposes all 92 catalog types through the generic Chain and
|
|
7
|
+
`createEffect` APIs and 92 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
|
|
|
@@ -139,8 +139,9 @@ seed, and DSP state from stream creation.
|
|
|
139
139
|
assets to be staged again. Open a new stream after changing
|
|
140
140
|
`IRReverb.channelMode`, `latency`, or `convolutionRate`;
|
|
141
141
|
`FIRCrossover.bandCount`, `latencyMode`, or `filterDelaySamples`; or
|
|
142
|
-
`latencyMode` / `filterDelaySamples` on `FiveBandFIRPEQ`, `GroupDelayEQ`,
|
|
143
|
-
`RoomEQ`. The same restriction applies to
|
|
142
|
+
`latencyMode` / `filterDelaySamples` on `FiveBandFIRPEQ`, `GroupDelayEQ`,
|
|
143
|
+
`GroupDelayPEQ`, or `RoomEQ`. The same restriction applies to
|
|
144
|
+
`EffeTuneNode.setParam()`.
|
|
144
145
|
|
|
145
146
|
Canonical presets use semantic long parameter names:
|
|
146
147
|
|
|
@@ -167,16 +168,17 @@ Move or copy the desired effects into one serial path in the app and export it
|
|
|
167
168
|
again, or reproduce the branching in the host around separate Chains.
|
|
168
169
|
Unsupported fields produce a validation error.
|
|
169
170
|
|
|
170
|
-
FIR Crossover, Five Band FIR PEQ, Group Delay EQ, IR Reverb,
|
|
171
|
-
require an `assets.impulseResponse` reference and an
|
|
172
|
-
FIR filter effects use prepared coefficient impulses
|
|
173
|
-
rate. Use the public
|
|
171
|
+
FIR Crossover, Five Band FIR PEQ, Group Delay EQ, Group Delay PEQ, IR Reverb,
|
|
172
|
+
and Room EQ require an `assets.impulseResponse` reference and an
|
|
173
|
+
`assetResolver`. The five FIR filter effects use prepared coefficient impulses
|
|
174
|
+
at the processing sample rate. Use the public
|
|
175
|
+
`encodeEta1({ channels, sampleRate, topology, paths })`
|
|
174
176
|
helper to encode raw planar float32 arrays for a resolver. Bundle manifests
|
|
175
177
|
verify exact byte length and SHA-256 before accepting an ETA1 payload. The
|
|
176
178
|
complete payload and convolution footprint must fit the 32 MiB kernel cap.
|
|
177
179
|
|
|
178
180
|
`EFFECT_CATALOG` and `getEffectCatalog()` expose the machine-readable semantic
|
|
179
|
-
catalog for all
|
|
181
|
+
catalog for all 92 root classes and their `create<Type>()` factories. The
|
|
180
182
|
catalog contains channel choices, parameters, required assets, telemetry, and
|
|
181
183
|
latency declarations, but no private implementation mapping.
|
|
182
184
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"abiVersion": 1,
|
|
3
|
-
"sourceDigest": "sha256:
|
|
3
|
+
"sourceDigest": "sha256:c00f5411a8fe68c2139dd6a5903e1f480229387a9e7057bd6e246fc2676cddec",
|
|
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:
|
|
8
|
+
"digest": "sha256:0dab4b4c5ba1de2a9998e5f2e8bee1b3d31b654b1029fa1be0c677ef6aa295d1",
|
|
9
9
|
"inputs": [
|
|
10
10
|
{
|
|
11
11
|
"id": "dsp/core/abi.cpp",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
{
|
|
36
36
|
"id": "dsp/core/engine.cpp",
|
|
37
37
|
"kind": "file",
|
|
38
|
-
"sha256": "sha256:
|
|
38
|
+
"sha256": "sha256:2d492ff232ddc0d6b64843dba7a08d3f2834c9bb4b0ee923d9a93e2b71c29ec2"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"id": "dsp/core/engine.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:
|
|
118
|
+
"sha256": "sha256:d7ecbfdc5d087b12319c3501e685021b148cd0e21e4f87b36463cbffbabbc879"
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
"id": "dsp/registry.inc#G726ADPCMSimulatorPlugin-entry",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
{
|
|
161
161
|
"id": "tools/dsp-parity/runners.mjs",
|
|
162
162
|
"kind": "file",
|
|
163
|
-
"sha256": "sha256:
|
|
163
|
+
"sha256": "sha256:fe1da8063d168c1b9f142a6217a097230bbf8783bd1d8f4bcb8ac807d78d862f"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
"id": "tools/dsp-parity/stimuli.mjs",
|
|
@@ -622,6 +622,19 @@
|
|
|
622
622
|
}
|
|
623
623
|
]
|
|
624
624
|
},
|
|
625
|
+
{
|
|
626
|
+
"name": "GroupDelayPEQPlugin",
|
|
627
|
+
"hash": 2941825417,
|
|
628
|
+
"byteCapacity": 0,
|
|
629
|
+
"assets": [
|
|
630
|
+
{
|
|
631
|
+
"slot": 0,
|
|
632
|
+
"format": "ET_ASSET_F32_MULTICH",
|
|
633
|
+
"capacity": "32 MiB convolution cap",
|
|
634
|
+
"byteCapacity": 33554432
|
|
635
|
+
}
|
|
636
|
+
]
|
|
637
|
+
},
|
|
625
638
|
{
|
|
626
639
|
"name": "HiPassFilterPlugin",
|
|
627
640
|
"hash": 299011831,
|
|
@@ -731,6 +744,12 @@
|
|
|
731
744
|
"byteCapacity": 0,
|
|
732
745
|
"assets": []
|
|
733
746
|
},
|
|
747
|
+
{
|
|
748
|
+
"name": "MDSimulatorPlugin",
|
|
749
|
+
"hash": 2124600068,
|
|
750
|
+
"byteCapacity": 0,
|
|
751
|
+
"assets": []
|
|
752
|
+
},
|
|
734
753
|
{
|
|
735
754
|
"name": "MP3CodecSimulatorPlugin",
|
|
736
755
|
"hash": 3523139611,
|
|
@@ -968,7 +987,7 @@
|
|
|
968
987
|
},
|
|
969
988
|
{
|
|
970
989
|
"name": "PhaseSelectEqPlugin",
|
|
971
|
-
"hash":
|
|
990
|
+
"hash": 1371985786,
|
|
972
991
|
"byteCapacity": 0,
|
|
973
992
|
"assets": []
|
|
974
993
|
},
|
|
@@ -980,7 +999,7 @@
|
|
|
980
999
|
}
|
|
981
1000
|
],
|
|
982
1001
|
"sizes": {
|
|
983
|
-
"baseline":
|
|
984
|
-
"simd":
|
|
1002
|
+
"baseline": 1167544,
|
|
1003
|
+
"simd": 1286159
|
|
985
1004
|
}
|
|
986
1005
|
}
|
|
Binary file
|
|
Binary file
|
package/dist/assets.js
CHANGED
|
@@ -705,6 +705,29 @@ function prepareFirFilterAsset(effect, resolvedAssets, {
|
|
|
705
705
|
path.irChannel !== paths[index].irChannel))) {
|
|
706
706
|
throw new AssetError(`${effect.id} filter paths do not match its band layout.`);
|
|
707
707
|
}
|
|
708
|
+
} else if (effect.type === 'RoomEQ') {
|
|
709
|
+
const explicitTopology = asset.format.topology;
|
|
710
|
+
if (explicitTopology === IR_ASSET_TOPOLOGY.mono ||
|
|
711
|
+
(explicitTopology === IR_ASSET_TOPOLOGY.unspecified && asset.format.channels === 1)) {
|
|
712
|
+
topology = IR_ASSET_TOPOLOGY.mono;
|
|
713
|
+
} else if (explicitTopology === IR_ASSET_TOPOLOGY.independent ||
|
|
714
|
+
(explicitTopology === IR_ASSET_TOPOLOGY.unspecified &&
|
|
715
|
+
asset.format.channels === processingChannels)) {
|
|
716
|
+
topology = IR_ASSET_TOPOLOGY.independent;
|
|
717
|
+
} else {
|
|
718
|
+
throw new AssetError(
|
|
719
|
+
`${effect.id} requires either one shared filter channel or one filter channel per processing channel.`
|
|
720
|
+
);
|
|
721
|
+
}
|
|
722
|
+
assetChannels = asset.format.channels;
|
|
723
|
+
paths = [];
|
|
724
|
+
inputCount = 0;
|
|
725
|
+
if ((topology === IR_ASSET_TOPOLOGY.mono && assetChannels !== 1) ||
|
|
726
|
+
(topology === IR_ASSET_TOPOLOGY.independent && assetChannels !== processingChannels)) {
|
|
727
|
+
throw new AssetError(
|
|
728
|
+
`${effect.id} requires either one shared filter channel or one filter channel per processing channel.`
|
|
729
|
+
);
|
|
730
|
+
}
|
|
708
731
|
} else {
|
|
709
732
|
topology = IR_ASSET_TOPOLOGY.mono;
|
|
710
733
|
assetChannels = 1;
|
|
@@ -2217,6 +2217,49 @@
|
|
|
2217
2217
|
}
|
|
2218
2218
|
]
|
|
2219
2219
|
},
|
|
2220
|
+
{
|
|
2221
|
+
"type": "GroupDelayPEQ",
|
|
2222
|
+
"parameters": [
|
|
2223
|
+
{
|
|
2224
|
+
"name": "latencyMode",
|
|
2225
|
+
"type": "string",
|
|
2226
|
+
"count": 1,
|
|
2227
|
+
"default": "128",
|
|
2228
|
+
"values": [
|
|
2229
|
+
"0",
|
|
2230
|
+
"128",
|
|
2231
|
+
"256",
|
|
2232
|
+
"512",
|
|
2233
|
+
"1024"
|
|
2234
|
+
]
|
|
2235
|
+
},
|
|
2236
|
+
{
|
|
2237
|
+
"name": "filterDelaySamples",
|
|
2238
|
+
"type": "integer",
|
|
2239
|
+
"count": 1,
|
|
2240
|
+
"default": 8192,
|
|
2241
|
+
"minimum": 0,
|
|
2242
|
+
"maximum": 65536
|
|
2243
|
+
}
|
|
2244
|
+
],
|
|
2245
|
+
"seeded": true,
|
|
2246
|
+
"telemetry": [],
|
|
2247
|
+
"latency": {
|
|
2248
|
+
"kind": "dynamic",
|
|
2249
|
+
"dependsOn": [
|
|
2250
|
+
"latencyMode",
|
|
2251
|
+
"filterDelaySamples",
|
|
2252
|
+
"impulseResponse"
|
|
2253
|
+
]
|
|
2254
|
+
},
|
|
2255
|
+
"assets": [
|
|
2256
|
+
{
|
|
2257
|
+
"name": "impulseResponse",
|
|
2258
|
+
"kind": "impulseResponse",
|
|
2259
|
+
"required": true
|
|
2260
|
+
}
|
|
2261
|
+
]
|
|
2262
|
+
},
|
|
2220
2263
|
{
|
|
2221
2264
|
"type": "HiPassFilter",
|
|
2222
2265
|
"parameters": [
|
|
@@ -3517,6 +3560,59 @@
|
|
|
3517
3560
|
},
|
|
3518
3561
|
"assets": []
|
|
3519
3562
|
},
|
|
3563
|
+
{
|
|
3564
|
+
"type": "MDSimulator",
|
|
3565
|
+
"parameters": [
|
|
3566
|
+
{
|
|
3567
|
+
"name": "mode",
|
|
3568
|
+
"type": "string",
|
|
3569
|
+
"count": 1,
|
|
3570
|
+
"default": "SP (292 kbps)",
|
|
3571
|
+
"values": [
|
|
3572
|
+
"SP (292 kbps)",
|
|
3573
|
+
"LP2 (132 kbps)",
|
|
3574
|
+
"LP4 (66 kbps)"
|
|
3575
|
+
]
|
|
3576
|
+
},
|
|
3577
|
+
{
|
|
3578
|
+
"name": "outputGain",
|
|
3579
|
+
"type": "number",
|
|
3580
|
+
"count": 1,
|
|
3581
|
+
"default": 0,
|
|
3582
|
+
"unit": "dB",
|
|
3583
|
+
"minimum": -24,
|
|
3584
|
+
"maximum": 12
|
|
3585
|
+
},
|
|
3586
|
+
{
|
|
3587
|
+
"name": "mix",
|
|
3588
|
+
"type": "number",
|
|
3589
|
+
"count": 1,
|
|
3590
|
+
"default": 100,
|
|
3591
|
+
"unit": "%",
|
|
3592
|
+
"minimum": 0,
|
|
3593
|
+
"maximum": 100
|
|
3594
|
+
}
|
|
3595
|
+
],
|
|
3596
|
+
"seeded": false,
|
|
3597
|
+
"sampleRates": [
|
|
3598
|
+
44100,
|
|
3599
|
+
48000,
|
|
3600
|
+
88200,
|
|
3601
|
+
96000,
|
|
3602
|
+
176400,
|
|
3603
|
+
192000,
|
|
3604
|
+
352800,
|
|
3605
|
+
384000
|
|
3606
|
+
],
|
|
3607
|
+
"telemetry": [],
|
|
3608
|
+
"latency": {
|
|
3609
|
+
"kind": "sampleRateDependent",
|
|
3610
|
+
"dependsOn": [
|
|
3611
|
+
"sampleRate"
|
|
3612
|
+
]
|
|
3613
|
+
},
|
|
3614
|
+
"assets": []
|
|
3615
|
+
},
|
|
3520
3616
|
{
|
|
3521
3617
|
"type": "MP3CodecSimulator",
|
|
3522
3618
|
"parameters": [
|
|
@@ -6865,6 +6961,78 @@
|
|
|
6865
6961
|
"unit": "%",
|
|
6866
6962
|
"minimum": 0,
|
|
6867
6963
|
"maximum": 200
|
|
6964
|
+
},
|
|
6965
|
+
{
|
|
6966
|
+
"name": "regionSolo",
|
|
6967
|
+
"type": "boolean",
|
|
6968
|
+
"count": 5,
|
|
6969
|
+
"default": [
|
|
6970
|
+
false,
|
|
6971
|
+
false,
|
|
6972
|
+
false,
|
|
6973
|
+
false,
|
|
6974
|
+
false
|
|
6975
|
+
]
|
|
6976
|
+
},
|
|
6977
|
+
{
|
|
6978
|
+
"name": "outerBalanceLow",
|
|
6979
|
+
"type": "number",
|
|
6980
|
+
"count": 5,
|
|
6981
|
+
"default": [
|
|
6982
|
+
-100,
|
|
6983
|
+
-100,
|
|
6984
|
+
-100,
|
|
6985
|
+
-100,
|
|
6986
|
+
-100
|
|
6987
|
+
],
|
|
6988
|
+
"unit": "%",
|
|
6989
|
+
"minimum": -100,
|
|
6990
|
+
"maximum": 100
|
|
6991
|
+
},
|
|
6992
|
+
{
|
|
6993
|
+
"name": "coreBalanceLow",
|
|
6994
|
+
"type": "number",
|
|
6995
|
+
"count": 5,
|
|
6996
|
+
"default": [
|
|
6997
|
+
-100,
|
|
6998
|
+
-100,
|
|
6999
|
+
-100,
|
|
7000
|
+
-100,
|
|
7001
|
+
-100
|
|
7002
|
+
],
|
|
7003
|
+
"unit": "%",
|
|
7004
|
+
"minimum": -100,
|
|
7005
|
+
"maximum": 100
|
|
7006
|
+
},
|
|
7007
|
+
{
|
|
7008
|
+
"name": "coreBalanceHigh",
|
|
7009
|
+
"type": "number",
|
|
7010
|
+
"count": 5,
|
|
7011
|
+
"default": [
|
|
7012
|
+
100,
|
|
7013
|
+
100,
|
|
7014
|
+
100,
|
|
7015
|
+
100,
|
|
7016
|
+
100
|
|
7017
|
+
],
|
|
7018
|
+
"unit": "%",
|
|
7019
|
+
"minimum": -100,
|
|
7020
|
+
"maximum": 100
|
|
7021
|
+
},
|
|
7022
|
+
{
|
|
7023
|
+
"name": "outerBalanceHigh",
|
|
7024
|
+
"type": "number",
|
|
7025
|
+
"count": 5,
|
|
7026
|
+
"default": [
|
|
7027
|
+
100,
|
|
7028
|
+
100,
|
|
7029
|
+
100,
|
|
7030
|
+
100,
|
|
7031
|
+
100
|
|
7032
|
+
],
|
|
7033
|
+
"unit": "%",
|
|
7034
|
+
"minimum": -100,
|
|
7035
|
+
"maximum": 100
|
|
6868
7036
|
}
|
|
6869
7037
|
],
|
|
6870
7038
|
"seeded": false,
|
|
@@ -6899,7 +7067,7 @@
|
|
|
6899
7067
|
}
|
|
6900
7068
|
],
|
|
6901
7069
|
"contractDigests": {
|
|
6902
|
-
"publicCatalogSha256": "
|
|
6903
|
-
"privateLayoutSha256": "
|
|
7070
|
+
"publicCatalogSha256": "3c5f527bbc305e612b94c8e56e7a9eb7bc42ed35574354bb2f60f42e5dfc96af",
|
|
7071
|
+
"privateLayoutSha256": "10371b5016b454f9e056d84f4a43d050e01a6b40ba0d9eb8dd3939f4fba2550c"
|
|
6904
7072
|
}
|
|
6905
7073
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const DENORMAL_NOISE_AMPLITUDE = 1e-19;
|
|
2
|
+
|
|
3
|
+
export function addDenormalNoise(audio, channelCount, frameCount, frameOrigin) {
|
|
4
|
+
const first = (frameOrigin & 1) === 0
|
|
5
|
+
? DENORMAL_NOISE_AMPLITUDE
|
|
6
|
+
: -DENORMAL_NOISE_AMPLITUDE;
|
|
7
|
+
for (let channel = 0; channel < channelCount; channel++) {
|
|
8
|
+
const offset = channel * frameCount;
|
|
9
|
+
let noise = first;
|
|
10
|
+
for (let frame = 0; frame < frameCount; frame++) {
|
|
11
|
+
audio[offset + frame] += noise;
|
|
12
|
+
noise = -noise;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
package/dist/effect.js
CHANGED
|
@@ -12,6 +12,7 @@ const ASSET_NAMES_BY_EFFECT = new Map([
|
|
|
12
12
|
['FIRCrossover', ['impulseResponse']],
|
|
13
13
|
['FiveBandFIRPEQ', ['impulseResponse']],
|
|
14
14
|
['GroupDelayEQ', ['impulseResponse']],
|
|
15
|
+
['GroupDelayPEQ', ['impulseResponse']],
|
|
15
16
|
['IRReverb', ['impulseResponse']],
|
|
16
17
|
['RoomEQ', ['impulseResponse']]
|
|
17
18
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Generated by scripts/gen-dsp-library-bindings.mjs. Do not edit.
|
|
2
2
|
import { Effect } from './effect.js';
|
|
3
3
|
|
|
4
|
-
export type EffectType = "LevelMeter" | "Oscilloscope" | "Spectrogram" | "SpectrumAnalyzer" | "StereoMeter" | "ChannelDivider" | "DCOffset" | "FIRCrossover" | "Matrix" | "MultiChannelPanel" | "Mute" | "PolarityInversion" | "StereoBalance" | "Volume" | "Delay" | "TimeAlignment" | "AutoLeveler" | "BrickwallLimiter" | "Compressor" | "Expander" | "Gate" | "MultibandCompressor" | "MultibandExpander" | "MultibandTransient" | "PowerAmpSag" | "TransientShaper" | "BandPassFilter" | "CombFilter" | "EarphoneCableSim" | "FifteenBandGEQ" | "FifteenBandPEQ" | "FiveBandDynamicEQ" | "FiveBandFIRPEQ" | "FiveBandPEQ" | "GroupDelayEQ" | "HiPassFilter" | "LoPassFilter" | "LoudnessEqualizer" | "NarrowRange" | "RoomEQ" | "TiltEQ" | "ToneControl" | "AMRadioSimulator" | "BitCrusher" | "BluetoothSBCSimulator" | "CassetteArtifacts" | "DigitalErrorEmulator" | "DSD64IMDSimulator" | "FMRadioSimulator" | "G726ADPCMSimulator" | "GSMFullRateSimulator" | "HumGenerator" | "MP3CodecSimulator" | "NoiseBlender" | "SimpleJitter" | "SWRadioSimulator" | "TapeArtifacts" | "VinylArtifacts" | "VinylSimulator" | "AutoFilter" | "AutoPan" | "Chorus" | "DopplerDistortion" | "FrequencyShifter" | "Phaser" | "PitchShifter" | "RotarySpeaker" | "Tremolo" | "WowFlutter" | "Oscillator" | "HornResonator" | "HornResonatorPlus" | "ModalResonator" | "DattorroPlateReverb" | "FDNReverb" | "IRReverb" | "RSReverb" | "DynamicSaturation" | "Exciter" | "HardClipping" | "HarmonicDistortion" | "MultibandSaturation" | "Saturation" | "SubSynth" | "TubeSimulator" | "CrossfeedFilter" | "MSMatrix" | "MultibandBalance" | "PhaseSelectEQ" | "StereoBlend";
|
|
5
|
-
type RequiredAssetEffectType = "FIRCrossover" | "FiveBandFIRPEQ" | "GroupDelayEQ" | "RoomEQ" | "IRReverb";
|
|
4
|
+
export type EffectType = "LevelMeter" | "Oscilloscope" | "Spectrogram" | "SpectrumAnalyzer" | "StereoMeter" | "ChannelDivider" | "DCOffset" | "FIRCrossover" | "Matrix" | "MultiChannelPanel" | "Mute" | "PolarityInversion" | "StereoBalance" | "Volume" | "Delay" | "TimeAlignment" | "AutoLeveler" | "BrickwallLimiter" | "Compressor" | "Expander" | "Gate" | "MultibandCompressor" | "MultibandExpander" | "MultibandTransient" | "PowerAmpSag" | "TransientShaper" | "BandPassFilter" | "CombFilter" | "EarphoneCableSim" | "FifteenBandGEQ" | "FifteenBandPEQ" | "FiveBandDynamicEQ" | "FiveBandFIRPEQ" | "FiveBandPEQ" | "GroupDelayEQ" | "GroupDelayPEQ" | "HiPassFilter" | "LoPassFilter" | "LoudnessEqualizer" | "NarrowRange" | "RoomEQ" | "TiltEQ" | "ToneControl" | "AMRadioSimulator" | "BitCrusher" | "BluetoothSBCSimulator" | "CassetteArtifacts" | "DigitalErrorEmulator" | "DSD64IMDSimulator" | "FMRadioSimulator" | "G726ADPCMSimulator" | "GSMFullRateSimulator" | "HumGenerator" | "MDSimulator" | "MP3CodecSimulator" | "NoiseBlender" | "SimpleJitter" | "SWRadioSimulator" | "TapeArtifacts" | "VinylArtifacts" | "VinylSimulator" | "AutoFilter" | "AutoPan" | "Chorus" | "DopplerDistortion" | "FrequencyShifter" | "Phaser" | "PitchShifter" | "RotarySpeaker" | "Tremolo" | "WowFlutter" | "Oscillator" | "HornResonator" | "HornResonatorPlus" | "ModalResonator" | "DattorroPlateReverb" | "FDNReverb" | "IRReverb" | "RSReverb" | "DynamicSaturation" | "Exciter" | "HardClipping" | "HarmonicDistortion" | "MultibandSaturation" | "Saturation" | "SubSynth" | "TubeSimulator" | "CrossfeedFilter" | "MSMatrix" | "MultibandBalance" | "PhaseSelectEQ" | "StereoBlend";
|
|
5
|
+
type RequiredAssetEffectType = "FIRCrossover" | "FiveBandFIRPEQ" | "GroupDelayEQ" | "GroupDelayPEQ" | "RoomEQ" | "IRReverb";
|
|
6
6
|
export type EffectChannel = "all" | "stereo" | "left" | "right" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "34" | "56" | "78";
|
|
7
7
|
|
|
8
8
|
export interface CommonEffectOptions {
|
|
@@ -555,6 +555,19 @@ export declare class GroupDelayEQ extends Effect {
|
|
|
555
555
|
|
|
556
556
|
export declare function createGroupDelayEQ(options: GroupDelayEQOptions): GroupDelayEQ;
|
|
557
557
|
|
|
558
|
+
export interface GroupDelayPEQOptions extends CommonEffectOptions {
|
|
559
|
+
readonly latencyMode?: "0" | "128" | "256" | "512" | "1024";
|
|
560
|
+
readonly filterDelaySamples?: number;
|
|
561
|
+
readonly assets: IRReverbAssets;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
export declare class GroupDelayPEQ extends Effect {
|
|
565
|
+
static readonly effectType: "GroupDelayPEQ";
|
|
566
|
+
constructor(options: GroupDelayPEQOptions);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
export declare function createGroupDelayPEQ(options: GroupDelayPEQOptions): GroupDelayPEQ;
|
|
570
|
+
|
|
558
571
|
export interface HiPassFilterOptions extends CommonEffectOptions {
|
|
559
572
|
readonly frequency?: number;
|
|
560
573
|
readonly slope?: 0 | -12 | -24 | -36 | -48 | -60 | -72 | -84 | -96;
|
|
@@ -853,6 +866,20 @@ export declare class HumGenerator extends Effect {
|
|
|
853
866
|
|
|
854
867
|
export declare function createHumGenerator(options?: HumGeneratorOptions): HumGenerator;
|
|
855
868
|
|
|
869
|
+
export interface MDSimulatorOptions extends CommonEffectOptions {
|
|
870
|
+
readonly mode?: "SP (292 kbps)" | "LP2 (132 kbps)" | "LP4 (66 kbps)";
|
|
871
|
+
readonly outputGain?: number;
|
|
872
|
+
readonly mix?: number;
|
|
873
|
+
readonly assets?: never;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
export declare class MDSimulator extends Effect {
|
|
877
|
+
static readonly effectType: "MDSimulator";
|
|
878
|
+
constructor(options?: MDSimulatorOptions);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
export declare function createMDSimulator(options?: MDSimulatorOptions): MDSimulator;
|
|
882
|
+
|
|
856
883
|
export interface MP3CodecSimulatorOptions extends CommonEffectOptions {
|
|
857
884
|
readonly codecRate?: "22.05 kHz (MPEG-2)" | "44.1 kHz (MPEG-1)";
|
|
858
885
|
readonly bitrate?: "32" | "48" | "64" | "80" | "96" | "112" | "128" | "160" | "192" | "224" | "256" | "320";
|
|
@@ -1555,6 +1582,11 @@ export interface PhaseSelectEQOptions extends CommonEffectOptions {
|
|
|
1555
1582
|
readonly corePhaseHigh?: readonly [number, number, number, number, number];
|
|
1556
1583
|
readonly outerPhaseHigh?: readonly [number, number, number, number, number];
|
|
1557
1584
|
readonly gain?: readonly [number, number, number, number, number];
|
|
1585
|
+
readonly regionSolo?: readonly [boolean, boolean, boolean, boolean, boolean];
|
|
1586
|
+
readonly outerBalanceLow?: readonly [number, number, number, number, number];
|
|
1587
|
+
readonly coreBalanceLow?: readonly [number, number, number, number, number];
|
|
1588
|
+
readonly coreBalanceHigh?: readonly [number, number, number, number, number];
|
|
1589
|
+
readonly outerBalanceHigh?: readonly [number, number, number, number, number];
|
|
1558
1590
|
readonly assets?: never;
|
|
1559
1591
|
}
|
|
1560
1592
|
|
|
@@ -1613,6 +1645,7 @@ export interface EffectOptionsByType {
|
|
|
1613
1645
|
readonly FiveBandFIRPEQ: FiveBandFIRPEQOptions;
|
|
1614
1646
|
readonly FiveBandPEQ: FiveBandPEQOptions;
|
|
1615
1647
|
readonly GroupDelayEQ: GroupDelayEQOptions;
|
|
1648
|
+
readonly GroupDelayPEQ: GroupDelayPEQOptions;
|
|
1616
1649
|
readonly HiPassFilter: HiPassFilterOptions;
|
|
1617
1650
|
readonly LoPassFilter: LoPassFilterOptions;
|
|
1618
1651
|
readonly LoudnessEqualizer: LoudnessEqualizerOptions;
|
|
@@ -1630,6 +1663,7 @@ export interface EffectOptionsByType {
|
|
|
1630
1663
|
readonly G726ADPCMSimulator: G726ADPCMSimulatorOptions;
|
|
1631
1664
|
readonly GSMFullRateSimulator: GSMFullRateSimulatorOptions;
|
|
1632
1665
|
readonly HumGenerator: HumGeneratorOptions;
|
|
1666
|
+
readonly MDSimulator: MDSimulatorOptions;
|
|
1633
1667
|
readonly MP3CodecSimulator: MP3CodecSimulatorOptions;
|
|
1634
1668
|
readonly NoiseBlender: NoiseBlenderOptions;
|
|
1635
1669
|
readonly SimpleJitter: SimpleJitterOptions;
|
|
@@ -1706,6 +1740,7 @@ export interface EffectClassByType {
|
|
|
1706
1740
|
readonly FiveBandFIRPEQ: FiveBandFIRPEQ;
|
|
1707
1741
|
readonly FiveBandPEQ: FiveBandPEQ;
|
|
1708
1742
|
readonly GroupDelayEQ: GroupDelayEQ;
|
|
1743
|
+
readonly GroupDelayPEQ: GroupDelayPEQ;
|
|
1709
1744
|
readonly HiPassFilter: HiPassFilter;
|
|
1710
1745
|
readonly LoPassFilter: LoPassFilter;
|
|
1711
1746
|
readonly LoudnessEqualizer: LoudnessEqualizer;
|
|
@@ -1723,6 +1758,7 @@ export interface EffectClassByType {
|
|
|
1723
1758
|
readonly G726ADPCMSimulator: G726ADPCMSimulator;
|
|
1724
1759
|
readonly GSMFullRateSimulator: GSMFullRateSimulator;
|
|
1725
1760
|
readonly HumGenerator: HumGenerator;
|
|
1761
|
+
readonly MDSimulator: MDSimulator;
|
|
1726
1762
|
readonly MP3CodecSimulator: MP3CodecSimulator;
|
|
1727
1763
|
readonly NoiseBlender: NoiseBlender;
|
|
1728
1764
|
readonly SimpleJitter: SimpleJitter;
|