@litlab/audx 0.0.1 → 0.5.5

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 (81) hide show
  1. package/README.md +96 -53
  2. package/dist/bin.js +1212 -0
  3. package/dist/cc-DgCkkqq8.js +13 -0
  4. package/dist/cc-he3fHS3P.js +12 -0
  5. package/dist/index.d.ts +723 -3
  6. package/dist/index.js +1534 -126
  7. package/dist/react.d.ts +583 -0
  8. package/dist/react.js +1556 -0
  9. package/package.json +64 -39
  10. package/schemas/pack.schema.json +4 -0
  11. package/schemas/patch.schema.json +857 -0
  12. package/dist/codegen/theme-codegen.d.ts +0 -12
  13. package/dist/codegen/theme-codegen.d.ts.map +0 -1
  14. package/dist/codegen/theme-codegen.js +0 -153
  15. package/dist/codegen/theme-codegen.js.map +0 -1
  16. package/dist/commands/add.d.ts +0 -2
  17. package/dist/commands/add.d.ts.map +0 -1
  18. package/dist/commands/add.js +0 -120
  19. package/dist/commands/add.js.map +0 -1
  20. package/dist/commands/diff.d.ts +0 -2
  21. package/dist/commands/diff.d.ts.map +0 -1
  22. package/dist/commands/diff.js +0 -103
  23. package/dist/commands/diff.js.map +0 -1
  24. package/dist/commands/generate.d.ts +0 -12
  25. package/dist/commands/generate.d.ts.map +0 -1
  26. package/dist/commands/generate.js +0 -96
  27. package/dist/commands/generate.js.map +0 -1
  28. package/dist/commands/init.d.ts +0 -2
  29. package/dist/commands/init.d.ts.map +0 -1
  30. package/dist/commands/init.js +0 -79
  31. package/dist/commands/init.js.map +0 -1
  32. package/dist/commands/list.d.ts +0 -14
  33. package/dist/commands/list.d.ts.map +0 -1
  34. package/dist/commands/list.js +0 -93
  35. package/dist/commands/list.js.map +0 -1
  36. package/dist/commands/remove.d.ts +0 -2
  37. package/dist/commands/remove.d.ts.map +0 -1
  38. package/dist/commands/remove.js +0 -71
  39. package/dist/commands/remove.js.map +0 -1
  40. package/dist/commands/theme.d.ts +0 -31
  41. package/dist/commands/theme.d.ts.map +0 -1
  42. package/dist/commands/theme.js +0 -142
  43. package/dist/commands/theme.js.map +0 -1
  44. package/dist/commands/update.d.ts +0 -2
  45. package/dist/commands/update.d.ts.map +0 -1
  46. package/dist/commands/update.js +0 -123
  47. package/dist/commands/update.js.map +0 -1
  48. package/dist/core/alias-resolver.d.ts +0 -24
  49. package/dist/core/alias-resolver.d.ts.map +0 -1
  50. package/dist/core/alias-resolver.js +0 -87
  51. package/dist/core/alias-resolver.js.map +0 -1
  52. package/dist/core/config.d.ts +0 -21
  53. package/dist/core/config.d.ts.map +0 -1
  54. package/dist/core/config.js +0 -43
  55. package/dist/core/config.js.map +0 -1
  56. package/dist/core/file-writer.d.ts +0 -14
  57. package/dist/core/file-writer.d.ts.map +0 -1
  58. package/dist/core/file-writer.js +0 -90
  59. package/dist/core/file-writer.js.map +0 -1
  60. package/dist/core/package-manager.d.ts +0 -3
  61. package/dist/core/package-manager.d.ts.map +0 -1
  62. package/dist/core/package-manager.js +0 -17
  63. package/dist/core/package-manager.js.map +0 -1
  64. package/dist/core/registry.d.ts +0 -18
  65. package/dist/core/registry.d.ts.map +0 -1
  66. package/dist/core/registry.js +0 -69
  67. package/dist/core/registry.js.map +0 -1
  68. package/dist/core/theme-manager.d.ts +0 -35
  69. package/dist/core/theme-manager.d.ts.map +0 -1
  70. package/dist/core/theme-manager.js +0 -94
  71. package/dist/core/theme-manager.js.map +0 -1
  72. package/dist/core/utils.d.ts +0 -22
  73. package/dist/core/utils.d.ts.map +0 -1
  74. package/dist/core/utils.js +0 -44
  75. package/dist/core/utils.js.map +0 -1
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js.map +0 -1
  78. package/dist/types.d.ts +0 -116
  79. package/dist/types.d.ts.map +0 -1
  80. package/dist/types.js +0 -43
  81. package/dist/types.js.map +0 -1
@@ -0,0 +1,857 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://audx.site/schemas/patch.schema.json",
4
+ "title": "@litlab/audx Sound Patch",
5
+ "description": "Schema for @litlab/audx sound patch JSON files",
6
+ "type": "object",
7
+ "required": ["name", "sounds"],
8
+ "properties": {
9
+ "$schema": {
10
+ "type": "string"
11
+ },
12
+ "name": {
13
+ "type": "string",
14
+ "description": "Display name of the patch"
15
+ },
16
+ "author": {
17
+ "type": "string"
18
+ },
19
+ "version": {
20
+ "type": "string"
21
+ },
22
+ "description": {
23
+ "type": "string"
24
+ },
25
+ "tags": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "string"
29
+ }
30
+ },
31
+ "license": {
32
+ "type": "string",
33
+ "description": "SPDX license identifier (e.g. MIT, Apache-2.0)"
34
+ },
35
+ "compatibility": {
36
+ "type": "string",
37
+ "description": "Semver range for @litlab/audx compatibility (e.g. >=1.0.0)"
38
+ },
39
+ "sounds": {
40
+ "type": "object",
41
+ "description": "Map of sound names to their definitions",
42
+ "additionalProperties": {
43
+ "$ref": "#/$defs/SoundDefinition"
44
+ }
45
+ }
46
+ },
47
+ "additionalProperties": false,
48
+ "$defs": {
49
+ "SoundDefinition": {
50
+ "oneOf": [
51
+ {
52
+ "$ref": "#/$defs/Layer"
53
+ },
54
+ {
55
+ "$ref": "#/$defs/MultiLayerSound"
56
+ }
57
+ ]
58
+ },
59
+ "MultiLayerSound": {
60
+ "type": "object",
61
+ "required": ["layers"],
62
+ "properties": {
63
+ "layers": {
64
+ "type": "array",
65
+ "items": {
66
+ "$ref": "#/$defs/Layer"
67
+ }
68
+ },
69
+ "effects": {
70
+ "type": "array",
71
+ "items": {
72
+ "$ref": "#/$defs/Effect"
73
+ }
74
+ }
75
+ },
76
+ "additionalProperties": false
77
+ },
78
+ "Layer": {
79
+ "type": "object",
80
+ "required": ["source"],
81
+ "properties": {
82
+ "source": {
83
+ "$ref": "#/$defs/Source"
84
+ },
85
+ "filter": {
86
+ "oneOf": [
87
+ {
88
+ "$ref": "#/$defs/Filter"
89
+ },
90
+ {
91
+ "type": "array",
92
+ "items": {
93
+ "$ref": "#/$defs/Filter"
94
+ }
95
+ }
96
+ ]
97
+ },
98
+ "envelope": {
99
+ "$ref": "#/$defs/Envelope"
100
+ },
101
+ "gain": {
102
+ "type": "number"
103
+ },
104
+ "pan": {
105
+ "type": "number",
106
+ "minimum": -1,
107
+ "maximum": 1
108
+ },
109
+ "panner": {
110
+ "$ref": "#/$defs/Panner3D"
111
+ },
112
+ "delay": {
113
+ "type": "number",
114
+ "minimum": 0
115
+ },
116
+ "lfo": {
117
+ "oneOf": [
118
+ {
119
+ "$ref": "#/$defs/LFO"
120
+ },
121
+ {
122
+ "type": "array",
123
+ "items": {
124
+ "$ref": "#/$defs/LFO"
125
+ }
126
+ }
127
+ ]
128
+ },
129
+ "effects": {
130
+ "type": "array",
131
+ "items": {
132
+ "$ref": "#/$defs/Effect"
133
+ }
134
+ }
135
+ },
136
+ "additionalProperties": false
137
+ },
138
+ "Source": {
139
+ "oneOf": [
140
+ {
141
+ "$ref": "#/$defs/OscillatorSource"
142
+ },
143
+ {
144
+ "$ref": "#/$defs/NoiseSource"
145
+ },
146
+ {
147
+ "$ref": "#/$defs/WavetableSource"
148
+ },
149
+ {
150
+ "$ref": "#/$defs/SampleSource"
151
+ },
152
+ {
153
+ "$ref": "#/$defs/ConstantSource"
154
+ }
155
+ ]
156
+ },
157
+ "OscillatorSource": {
158
+ "type": "object",
159
+ "required": ["type", "frequency"],
160
+ "properties": {
161
+ "type": {
162
+ "enum": ["sine", "triangle", "square", "sawtooth"]
163
+ },
164
+ "frequency": {
165
+ "oneOf": [
166
+ {
167
+ "type": "number"
168
+ },
169
+ {
170
+ "type": "object",
171
+ "required": ["start", "end"],
172
+ "properties": {
173
+ "start": {
174
+ "type": "number"
175
+ },
176
+ "end": {
177
+ "type": "number"
178
+ }
179
+ },
180
+ "additionalProperties": false
181
+ }
182
+ ]
183
+ },
184
+ "detune": {
185
+ "type": "number"
186
+ },
187
+ "fm": {
188
+ "type": "object",
189
+ "required": ["ratio", "depth"],
190
+ "properties": {
191
+ "ratio": {
192
+ "type": "number"
193
+ },
194
+ "depth": {
195
+ "type": "number"
196
+ }
197
+ },
198
+ "additionalProperties": false
199
+ }
200
+ },
201
+ "additionalProperties": false
202
+ },
203
+ "NoiseSource": {
204
+ "type": "object",
205
+ "required": ["type"],
206
+ "properties": {
207
+ "type": {
208
+ "const": "noise"
209
+ },
210
+ "color": {
211
+ "enum": ["white", "pink", "brown"]
212
+ }
213
+ },
214
+ "additionalProperties": false
215
+ },
216
+ "WavetableSource": {
217
+ "type": "object",
218
+ "required": ["type", "harmonics", "frequency"],
219
+ "properties": {
220
+ "type": {
221
+ "const": "wavetable"
222
+ },
223
+ "harmonics": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "number"
227
+ }
228
+ },
229
+ "frequency": {
230
+ "oneOf": [
231
+ {
232
+ "type": "number"
233
+ },
234
+ {
235
+ "type": "object",
236
+ "required": ["start", "end"],
237
+ "properties": {
238
+ "start": {
239
+ "type": "number"
240
+ },
241
+ "end": {
242
+ "type": "number"
243
+ }
244
+ },
245
+ "additionalProperties": false
246
+ }
247
+ ]
248
+ }
249
+ },
250
+ "additionalProperties": false
251
+ },
252
+ "SampleSource": {
253
+ "type": "object",
254
+ "required": ["type"],
255
+ "properties": {
256
+ "type": {
257
+ "const": "sample"
258
+ },
259
+ "url": {
260
+ "type": "string"
261
+ },
262
+ "playbackRate": {
263
+ "type": "number"
264
+ },
265
+ "detune": {
266
+ "type": "number"
267
+ },
268
+ "loop": {
269
+ "type": "boolean"
270
+ },
271
+ "loopStart": {
272
+ "type": "number"
273
+ },
274
+ "loopEnd": {
275
+ "type": "number"
276
+ }
277
+ },
278
+ "additionalProperties": false
279
+ },
280
+ "ConstantSource": {
281
+ "type": "object",
282
+ "required": ["type"],
283
+ "properties": {
284
+ "type": {
285
+ "const": "constant"
286
+ },
287
+ "offset": {
288
+ "type": "number"
289
+ }
290
+ },
291
+ "additionalProperties": false
292
+ },
293
+ "Filter": {
294
+ "oneOf": [
295
+ {
296
+ "$ref": "#/$defs/BiquadFilter"
297
+ },
298
+ {
299
+ "$ref": "#/$defs/IIRFilter"
300
+ }
301
+ ]
302
+ },
303
+ "BiquadFilter": {
304
+ "type": "object",
305
+ "required": ["type", "frequency"],
306
+ "properties": {
307
+ "type": {
308
+ "enum": [
309
+ "lowpass",
310
+ "highpass",
311
+ "bandpass",
312
+ "notch",
313
+ "allpass",
314
+ "peaking",
315
+ "lowshelf",
316
+ "highshelf"
317
+ ]
318
+ },
319
+ "frequency": {
320
+ "type": "number"
321
+ },
322
+ "resonance": {
323
+ "type": "number"
324
+ },
325
+ "gain": {
326
+ "type": "number"
327
+ },
328
+ "envelope": {
329
+ "$ref": "#/$defs/FilterEnvelope"
330
+ }
331
+ },
332
+ "additionalProperties": false
333
+ },
334
+ "FilterEnvelope": {
335
+ "type": "object",
336
+ "required": ["peak", "decay"],
337
+ "properties": {
338
+ "attack": {
339
+ "type": "number",
340
+ "minimum": 0
341
+ },
342
+ "peak": {
343
+ "type": "number"
344
+ },
345
+ "decay": {
346
+ "type": "number",
347
+ "minimum": 0
348
+ }
349
+ },
350
+ "additionalProperties": false
351
+ },
352
+ "IIRFilter": {
353
+ "type": "object",
354
+ "required": ["type", "feedforward", "feedback"],
355
+ "properties": {
356
+ "type": {
357
+ "const": "iir"
358
+ },
359
+ "feedforward": {
360
+ "type": "array",
361
+ "items": {
362
+ "type": "number"
363
+ }
364
+ },
365
+ "feedback": {
366
+ "type": "array",
367
+ "items": {
368
+ "type": "number"
369
+ }
370
+ }
371
+ },
372
+ "additionalProperties": false
373
+ },
374
+ "Envelope": {
375
+ "type": "object",
376
+ "required": ["decay"],
377
+ "properties": {
378
+ "attack": {
379
+ "type": "number",
380
+ "minimum": 0
381
+ },
382
+ "decay": {
383
+ "type": "number",
384
+ "minimum": 0
385
+ },
386
+ "sustain": {
387
+ "type": "number",
388
+ "minimum": 0,
389
+ "maximum": 1
390
+ },
391
+ "release": {
392
+ "type": "number",
393
+ "minimum": 0
394
+ }
395
+ },
396
+ "additionalProperties": false
397
+ },
398
+ "LFO": {
399
+ "type": "object",
400
+ "required": ["type", "frequency", "depth", "target"],
401
+ "properties": {
402
+ "type": {
403
+ "enum": ["sine", "triangle", "square", "sawtooth"]
404
+ },
405
+ "frequency": {
406
+ "type": "number"
407
+ },
408
+ "depth": {
409
+ "type": "number"
410
+ },
411
+ "target": {
412
+ "enum": [
413
+ "frequency",
414
+ "detune",
415
+ "gain",
416
+ "pan",
417
+ "filter.frequency",
418
+ "filter.detune",
419
+ "filter.Q",
420
+ "filter.gain",
421
+ "playbackRate"
422
+ ]
423
+ }
424
+ },
425
+ "additionalProperties": false
426
+ },
427
+ "Panner3D": {
428
+ "type": "object",
429
+ "required": ["positionX", "positionY", "positionZ"],
430
+ "properties": {
431
+ "positionX": {
432
+ "type": "number"
433
+ },
434
+ "positionY": {
435
+ "type": "number"
436
+ },
437
+ "positionZ": {
438
+ "type": "number"
439
+ },
440
+ "orientationX": {
441
+ "type": "number"
442
+ },
443
+ "orientationY": {
444
+ "type": "number"
445
+ },
446
+ "orientationZ": {
447
+ "type": "number"
448
+ },
449
+ "panningModel": {
450
+ "enum": ["equalpower", "HRTF"]
451
+ },
452
+ "distanceModel": {
453
+ "enum": ["linear", "inverse", "exponential"]
454
+ },
455
+ "maxDistance": {
456
+ "type": "number"
457
+ },
458
+ "refDistance": {
459
+ "type": "number"
460
+ },
461
+ "rolloffFactor": {
462
+ "type": "number"
463
+ },
464
+ "coneInnerAngle": {
465
+ "type": "number"
466
+ },
467
+ "coneOuterAngle": {
468
+ "type": "number"
469
+ },
470
+ "coneOuterGain": {
471
+ "type": "number"
472
+ }
473
+ },
474
+ "additionalProperties": false
475
+ },
476
+ "Effect": {
477
+ "oneOf": [
478
+ {
479
+ "$ref": "#/$defs/ReverbEffect"
480
+ },
481
+ {
482
+ "$ref": "#/$defs/ConvolverEffect"
483
+ },
484
+ {
485
+ "$ref": "#/$defs/DelayEffect"
486
+ },
487
+ {
488
+ "$ref": "#/$defs/DistortionEffect"
489
+ },
490
+ {
491
+ "$ref": "#/$defs/ChorusEffect"
492
+ },
493
+ {
494
+ "$ref": "#/$defs/FlangerEffect"
495
+ },
496
+ {
497
+ "$ref": "#/$defs/PhaserEffect"
498
+ },
499
+ {
500
+ "$ref": "#/$defs/TremoloEffect"
501
+ },
502
+ {
503
+ "$ref": "#/$defs/VibratoEffect"
504
+ },
505
+ {
506
+ "$ref": "#/$defs/BitcrusherEffect"
507
+ },
508
+ {
509
+ "$ref": "#/$defs/CompressorEffect"
510
+ },
511
+ {
512
+ "$ref": "#/$defs/EQEffect"
513
+ },
514
+ {
515
+ "$ref": "#/$defs/GainEffect"
516
+ },
517
+ {
518
+ "$ref": "#/$defs/StereoPanEffect"
519
+ }
520
+ ]
521
+ },
522
+ "ReverbEffect": {
523
+ "type": "object",
524
+ "required": ["type"],
525
+ "properties": {
526
+ "type": {
527
+ "const": "reverb"
528
+ },
529
+ "decay": {
530
+ "type": "number",
531
+ "minimum": 0
532
+ },
533
+ "preDelay": {
534
+ "type": "number",
535
+ "minimum": 0
536
+ },
537
+ "damping": {
538
+ "type": "number",
539
+ "minimum": 0,
540
+ "maximum": 1
541
+ },
542
+ "roomSize": {
543
+ "type": "number",
544
+ "minimum": 0
545
+ },
546
+ "mix": {
547
+ "type": "number",
548
+ "minimum": 0,
549
+ "maximum": 1
550
+ }
551
+ },
552
+ "additionalProperties": false
553
+ },
554
+ "ConvolverEffect": {
555
+ "type": "object",
556
+ "required": ["type"],
557
+ "properties": {
558
+ "type": {
559
+ "const": "convolver"
560
+ },
561
+ "url": {
562
+ "type": "string"
563
+ },
564
+ "mix": {
565
+ "type": "number",
566
+ "minimum": 0,
567
+ "maximum": 1
568
+ }
569
+ },
570
+ "additionalProperties": false
571
+ },
572
+ "DelayEffect": {
573
+ "type": "object",
574
+ "required": ["type"],
575
+ "properties": {
576
+ "type": {
577
+ "const": "delay"
578
+ },
579
+ "time": {
580
+ "type": "number",
581
+ "minimum": 0
582
+ },
583
+ "feedback": {
584
+ "type": "number",
585
+ "minimum": 0,
586
+ "maximum": 1
587
+ },
588
+ "feedbackFilter": {
589
+ "type": "object",
590
+ "required": ["type", "frequency"],
591
+ "properties": {
592
+ "type": {
593
+ "enum": [
594
+ "lowpass",
595
+ "highpass",
596
+ "bandpass",
597
+ "notch",
598
+ "allpass",
599
+ "peaking",
600
+ "lowshelf",
601
+ "highshelf"
602
+ ]
603
+ },
604
+ "frequency": {
605
+ "type": "number"
606
+ },
607
+ "Q": {
608
+ "type": "number"
609
+ }
610
+ },
611
+ "additionalProperties": false
612
+ },
613
+ "mix": {
614
+ "type": "number",
615
+ "minimum": 0,
616
+ "maximum": 1
617
+ }
618
+ },
619
+ "additionalProperties": false
620
+ },
621
+ "DistortionEffect": {
622
+ "type": "object",
623
+ "required": ["type"],
624
+ "properties": {
625
+ "type": {
626
+ "const": "distortion"
627
+ },
628
+ "amount": {
629
+ "type": "number"
630
+ },
631
+ "mix": {
632
+ "type": "number",
633
+ "minimum": 0,
634
+ "maximum": 1
635
+ }
636
+ },
637
+ "additionalProperties": false
638
+ },
639
+ "ChorusEffect": {
640
+ "type": "object",
641
+ "required": ["type"],
642
+ "properties": {
643
+ "type": {
644
+ "const": "chorus"
645
+ },
646
+ "rate": {
647
+ "type": "number"
648
+ },
649
+ "depth": {
650
+ "type": "number"
651
+ },
652
+ "mix": {
653
+ "type": "number",
654
+ "minimum": 0,
655
+ "maximum": 1
656
+ }
657
+ },
658
+ "additionalProperties": false
659
+ },
660
+ "FlangerEffect": {
661
+ "type": "object",
662
+ "required": ["type"],
663
+ "properties": {
664
+ "type": {
665
+ "const": "flanger"
666
+ },
667
+ "rate": {
668
+ "type": "number"
669
+ },
670
+ "depth": {
671
+ "type": "number"
672
+ },
673
+ "feedback": {
674
+ "type": "number"
675
+ },
676
+ "mix": {
677
+ "type": "number",
678
+ "minimum": 0,
679
+ "maximum": 1
680
+ }
681
+ },
682
+ "additionalProperties": false
683
+ },
684
+ "PhaserEffect": {
685
+ "type": "object",
686
+ "required": ["type"],
687
+ "properties": {
688
+ "type": {
689
+ "const": "phaser"
690
+ },
691
+ "rate": {
692
+ "type": "number"
693
+ },
694
+ "depth": {
695
+ "type": "number"
696
+ },
697
+ "stages": {
698
+ "type": "integer",
699
+ "minimum": 1
700
+ },
701
+ "feedback": {
702
+ "type": "number"
703
+ },
704
+ "mix": {
705
+ "type": "number",
706
+ "minimum": 0,
707
+ "maximum": 1
708
+ }
709
+ },
710
+ "additionalProperties": false
711
+ },
712
+ "TremoloEffect": {
713
+ "type": "object",
714
+ "required": ["type"],
715
+ "properties": {
716
+ "type": {
717
+ "const": "tremolo"
718
+ },
719
+ "rate": {
720
+ "type": "number"
721
+ },
722
+ "depth": {
723
+ "type": "number"
724
+ }
725
+ },
726
+ "additionalProperties": false
727
+ },
728
+ "VibratoEffect": {
729
+ "type": "object",
730
+ "required": ["type"],
731
+ "properties": {
732
+ "type": {
733
+ "const": "vibrato"
734
+ },
735
+ "rate": {
736
+ "type": "number"
737
+ },
738
+ "depth": {
739
+ "type": "number"
740
+ }
741
+ },
742
+ "additionalProperties": false
743
+ },
744
+ "BitcrusherEffect": {
745
+ "type": "object",
746
+ "required": ["type"],
747
+ "properties": {
748
+ "type": {
749
+ "const": "bitcrusher"
750
+ },
751
+ "bits": {
752
+ "type": "integer",
753
+ "minimum": 1,
754
+ "maximum": 16
755
+ },
756
+ "sampleRateReduction": {
757
+ "type": "number",
758
+ "minimum": 1
759
+ },
760
+ "mix": {
761
+ "type": "number",
762
+ "minimum": 0,
763
+ "maximum": 1
764
+ }
765
+ },
766
+ "additionalProperties": false
767
+ },
768
+ "CompressorEffect": {
769
+ "type": "object",
770
+ "required": ["type"],
771
+ "properties": {
772
+ "type": {
773
+ "const": "compressor"
774
+ },
775
+ "threshold": {
776
+ "type": "number"
777
+ },
778
+ "knee": {
779
+ "type": "number"
780
+ },
781
+ "ratio": {
782
+ "type": "number"
783
+ },
784
+ "attack": {
785
+ "type": "number"
786
+ },
787
+ "release": {
788
+ "type": "number"
789
+ }
790
+ },
791
+ "additionalProperties": false
792
+ },
793
+ "EQEffect": {
794
+ "type": "object",
795
+ "required": ["type", "bands"],
796
+ "properties": {
797
+ "type": {
798
+ "const": "eq"
799
+ },
800
+ "bands": {
801
+ "type": "array",
802
+ "items": {
803
+ "$ref": "#/$defs/EQBand"
804
+ }
805
+ }
806
+ },
807
+ "additionalProperties": false
808
+ },
809
+ "EQBand": {
810
+ "type": "object",
811
+ "required": ["type", "frequency", "gain"],
812
+ "properties": {
813
+ "type": {
814
+ "enum": ["lowshelf", "highshelf", "peaking"]
815
+ },
816
+ "frequency": {
817
+ "type": "number"
818
+ },
819
+ "gain": {
820
+ "type": "number"
821
+ },
822
+ "Q": {
823
+ "type": "number"
824
+ }
825
+ },
826
+ "additionalProperties": false
827
+ },
828
+ "GainEffect": {
829
+ "type": "object",
830
+ "required": ["type", "value"],
831
+ "properties": {
832
+ "type": {
833
+ "const": "gain"
834
+ },
835
+ "value": {
836
+ "type": "number"
837
+ }
838
+ },
839
+ "additionalProperties": false
840
+ },
841
+ "StereoPanEffect": {
842
+ "type": "object",
843
+ "required": ["type", "value"],
844
+ "properties": {
845
+ "type": {
846
+ "const": "pan"
847
+ },
848
+ "value": {
849
+ "type": "number",
850
+ "minimum": -1,
851
+ "maximum": 1
852
+ }
853
+ },
854
+ "additionalProperties": false
855
+ }
856
+ }
857
+ }