@libraz/libsonare 1.7.2 → 1.8.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/NOTICE +178 -0
- package/README.md +26 -203
- package/dist/_chain_config.d.ts +14 -0
- package/dist/_chain_config.d.ts.map +1 -0
- package/dist/_effects_common.d.ts +6 -0
- package/dist/_effects_common.d.ts.map +1 -0
- package/dist/_feature_validation.d.ts +8 -0
- package/dist/_feature_validation.d.ts.map +1 -0
- package/dist/_fft_options.d.ts +24 -0
- package/dist/_fft_options.d.ts.map +1 -0
- package/dist/align_take.d.ts +50 -0
- package/dist/align_take.d.ts.map +1 -0
- package/dist/analysis.d.ts +29 -5840
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +873 -722
- package/dist/analysis.js.map +1 -1
- package/dist/analysis_helpers.d.ts +9 -0
- package/dist/analysis_helpers.d.ts.map +1 -0
- package/dist/audio.d.ts +163 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/clip_page_streamer.d.ts +133 -0
- package/dist/clip_page_streamer.d.ts.map +1 -0
- package/dist/codes.d.ts +44 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/effects_mastering.d.ts +23 -0
- package/dist/effects_mastering.d.ts.map +1 -0
- package/dist/effects_note_ops.d.ts +477 -0
- package/dist/effects_note_ops.d.ts.map +1 -0
- package/dist/effects_percussive.d.ts +185 -0
- package/dist/effects_percussive.d.ts.map +1 -0
- package/dist/effects_separation.d.ts +65 -0
- package/dist/effects_separation.d.ts.map +1 -0
- package/dist/effects_spectral.d.ts +28 -0
- package/dist/effects_spectral.d.ts.map +1 -0
- package/dist/effects_timepitch.d.ts +129 -0
- package/dist/effects_timepitch.d.ts.map +1 -0
- package/dist/effects_voice_change.d.ts +53 -0
- package/dist/effects_voice_change.d.ts.map +1 -0
- package/dist/errors.d.ts +51 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/feature_core.d.ts +341 -0
- package/dist/feature_core.d.ts.map +1 -0
- package/dist/feature_decompose.d.ts +278 -0
- package/dist/feature_decompose.d.ts.map +1 -0
- package/dist/feature_inverse.d.ts +128 -0
- package/dist/feature_inverse.d.ts.map +1 -0
- package/dist/feature_loudness.d.ts +66 -0
- package/dist/feature_loudness.d.ts.map +1 -0
- package/dist/feature_music.d.ts +307 -0
- package/dist/feature_music.d.ts.map +1 -0
- package/dist/feature_pitch.d.ts +108 -0
- package/dist/feature_pitch.d.ts.map +1 -0
- package/dist/feature_resample.d.ts +16 -0
- package/dist/feature_resample.d.ts.map +1 -0
- package/dist/feature_spectral.d.ts +137 -0
- package/dist/feature_spectral.d.ts.map +1 -0
- package/dist/feature_spectrogram.d.ts +198 -0
- package/dist/feature_spectrogram.d.ts.map +1 -0
- package/dist/features.d.ts +10 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/hrtf/default.shrf +0 -0
- package/dist/index.d.ts +74 -7431
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3758 -1362
- package/dist/index.js.map +1 -1
- package/dist/instrument_types.d.ts +517 -0
- package/dist/instrument_types.d.ts.map +1 -0
- package/dist/live_audio.d.ts +35 -0
- package/dist/live_audio.d.ts.map +1 -0
- package/dist/mastering_chain.d.ts +213 -0
- package/dist/mastering_chain.d.ts.map +1 -0
- package/dist/mastering_core.d.ts +457 -0
- package/dist/mastering_core.d.ts.map +1 -0
- package/dist/mastering_dynamics.d.ts +80 -0
- package/dist/mastering_dynamics.d.ts.map +1 -0
- package/dist/metering.d.ts +287 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/mixer.d.ts +464 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixing_assistant.d.ts +62 -0
- package/dist/mixing_assistant.d.ts.map +1 -0
- package/dist/mixing_oneshot.d.ts +40 -0
- package/dist/mixing_oneshot.d.ts.map +1 -0
- package/dist/module_state.d.ts +15 -0
- package/dist/module_state.d.ts.map +1 -0
- package/dist/opfs_clip_pages.d.ts +28 -0
- package/dist/opfs_clip_pages.d.ts.map +1 -0
- package/dist/playback_renderer.d.ts +128 -0
- package/dist/playback_renderer.d.ts.map +1 -0
- package/dist/polyphony.d.ts +202 -0
- package/dist/polyphony.d.ts.map +1 -0
- package/dist/project.d.ts +8 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project_class.d.ts +562 -0
- package/dist/project_class.d.ts.map +1 -0
- package/dist/project_internal.d.ts +194 -0
- package/dist/project_internal.d.ts.map +1 -0
- package/dist/project_synth.d.ts +74 -0
- package/dist/project_synth.d.ts.map +1 -0
- package/dist/project_types.d.ts +652 -0
- package/dist/project_types.d.ts.map +1 -0
- package/dist/public_types.d.ts +185 -0
- package/dist/public_types.d.ts.map +1 -0
- package/dist/public_types_acoustic.d.ts +215 -0
- package/dist/public_types_acoustic.d.ts.map +1 -0
- package/dist/public_types_mastering.d.ts +510 -0
- package/dist/public_types_mastering.d.ts.map +1 -0
- package/dist/public_types_mixing.d.ts +436 -0
- package/dist/public_types_mixing.d.ts.map +1 -0
- package/dist/public_types_music.d.ts +619 -0
- package/dist/public_types_music.d.ts.map +1 -0
- package/dist/public_types_playback.d.ts +164 -0
- package/dist/public_types_playback.d.ts.map +1 -0
- package/dist/public_types_realtime.d.ts +174 -0
- package/dist/public_types_realtime.d.ts.map +1 -0
- package/dist/public_types_repair.d.ts +424 -0
- package/dist/public_types_repair.d.ts.map +1 -0
- package/dist/public_types_spectral.d.ts +697 -0
- package/dist/public_types_spectral.d.ts.map +1 -0
- package/dist/quick_analysis.d.ts +445 -0
- package/dist/quick_analysis.d.ts.map +1 -0
- package/dist/realtime_engine.d.ts +850 -0
- package/dist/realtime_engine.d.ts.map +1 -0
- package/dist/realtime_voice_changer.d.ts +158 -0
- package/dist/realtime_voice_changer.d.ts.map +1 -0
- package/dist/repair_dereverb.d.ts +187 -0
- package/dist/repair_dereverb.d.ts.map +1 -0
- package/dist/repair_impulsive.d.ts +186 -0
- package/dist/repair_impulsive.d.ts.map +1 -0
- package/dist/repair_noise.d.ts +239 -0
- package/dist/repair_noise.d.ts.map +1 -0
- package/dist/repair_trim.d.ts +123 -0
- package/dist/repair_trim.d.ts.map +1 -0
- package/dist/sample_bank.d.ts +84 -0
- package/dist/sample_bank.d.ts.map +1 -0
- package/dist/scale.d.ts +10 -0
- package/dist/scale.d.ts.map +1 -0
- package/dist/schemas/mixer-scene.schema.json +393 -0
- package/dist/schemas/playback-renderer-config.schema.json +392 -0
- package/dist/sonare-analysis.d.ts +8 -0
- package/dist/sonare-analysis.js +2 -2
- package/dist/sonare-analysis.wasm +0 -0
- package/dist/sonare.d.ts +3909 -0
- package/dist/sonare.js +2 -2
- package/dist/sonare.wasm +0 -0
- package/dist/stream_analyzer.d.ts +163 -0
- package/dist/stream_analyzer.d.ts.map +1 -0
- package/dist/stream_types.d.ts +214 -0
- package/dist/stream_types.d.ts.map +1 -0
- package/dist/streaming_mixing.d.ts +6 -0
- package/dist/streaming_mixing.d.ts.map +1 -0
- package/dist/streaming_processors.d.ts +335 -0
- package/dist/streaming_processors.d.ts.map +1 -0
- package/dist/transcribe.d.ts +77 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/validation.d.ts +140 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/web_midi.d.ts +77 -0
- package/dist/web_midi.d.ts.map +1 -0
- package/dist/worker.d.ts +5 -48
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +94 -41
- package/dist/worker.js.map +1 -1
- package/dist/worker_client.d.ts +96 -0
- package/dist/worker_client.d.ts.map +1 -0
- package/dist/worker_protocol.d.ts +43 -0
- package/dist/worker_protocol.d.ts.map +1 -0
- package/dist/worklet/audio_types.d.ts +21 -0
- package/dist/worklet/audio_types.d.ts.map +1 -0
- package/dist/worklet/engine-automation.d.ts +29 -0
- package/dist/worklet/engine-automation.d.ts.map +1 -0
- package/dist/worklet/engine-capture-facade.d.ts +35 -0
- package/dist/worklet/engine-capture-facade.d.ts.map +1 -0
- package/dist/worklet/engine-clips.d.ts +23 -0
- package/dist/worklet/engine-clips.d.ts.map +1 -0
- package/dist/worklet/engine-markers.d.ts +40 -0
- package/dist/worklet/engine-markers.d.ts.map +1 -0
- package/dist/worklet/engine-mixer-facade.d.ts +128 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +81 -0
- package/dist/worklet/engine-node.d.ts.map +1 -0
- package/dist/worklet/engine-offline.d.ts +81 -0
- package/dist/worklet/engine-offline.d.ts.map +1 -0
- package/dist/worklet/engine-options.d.ts +12 -0
- package/dist/worklet/engine-options.d.ts.map +1 -0
- package/dist/worklet/engine-parameter-facade.d.ts +106 -0
- package/dist/worklet/engine-parameter-facade.d.ts.map +1 -0
- package/dist/worklet/engine-processor.d.ts +68 -0
- package/dist/worklet/engine-processor.d.ts.map +1 -0
- package/dist/worklet/engine-register.d.ts +2 -0
- package/dist/worklet/engine-register.d.ts.map +1 -0
- package/dist/worklet/engine-strips.d.ts +73 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +37 -0
- package/dist/worklet/engine-sync.d.ts.map +1 -0
- package/dist/worklet/engine-tempo-facade.d.ts +48 -0
- package/dist/worklet/engine-tempo-facade.d.ts.map +1 -0
- package/dist/worklet/engine.d.ts +397 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +47 -0
- package/dist/worklet/guards.d.ts.map +1 -0
- package/dist/worklet/messages.d.ts +710 -0
- package/dist/worklet/messages.d.ts.map +1 -0
- package/dist/worklet/mixer-processor.d.ts +46 -0
- package/dist/worklet/mixer-processor.d.ts.map +1 -0
- package/dist/worklet/playback-processor.d.ts +62 -0
- package/dist/worklet/playback-processor.d.ts.map +1 -0
- package/dist/worklet/protocol.d.ts +323 -0
- package/dist/worklet/protocol.d.ts.map +1 -0
- package/dist/worklet/voice-changer-processor.d.ts +41 -0
- package/dist/worklet/voice-changer-processor.d.ts.map +1 -0
- package/dist/worklet.d.ts +16 -2515
- package/dist/worklet.d.ts.map +1 -0
- package/dist/worklet.js +2763 -501
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +17 -0
- package/src/_feature_validation.ts +34 -0
- package/src/_fft_options.ts +39 -0
- package/src/align_take.ts +64 -0
- package/src/analysis.ts +56 -3
- package/src/analysis_helpers.ts +7 -0
- package/src/audio.ts +106 -3
- package/src/codes.ts +39 -2
- package/src/effects_mastering.ts +97 -22
- package/src/effects_note_ops.ts +635 -0
- package/src/effects_percussive.ts +217 -0
- package/src/effects_separation.ts +150 -0
- package/src/effects_spectral.ts +60 -0
- package/src/effects_timepitch.ts +377 -0
- package/src/errors.ts +23 -1
- package/src/feature_core.ts +127 -2
- package/src/feature_decompose.ts +633 -0
- package/src/feature_inverse.ts +454 -0
- package/src/feature_loudness.ts +125 -0
- package/src/feature_music.ts +107 -14
- package/src/feature_pitch.ts +96 -1
- package/src/feature_spectral.ts +16 -611
- package/src/feature_spectrogram.ts +63 -450
- package/src/features.ts +36 -22
- package/src/index.ts +282 -30
- package/src/instrument_types.ts +645 -0
- package/src/live_audio.ts +27 -1
- package/src/mastering_chain.ts +184 -0
- package/src/mastering_core.ts +346 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +212 -3
- package/src/mixing_assistant.ts +138 -0
- package/src/mixing_oneshot.ts +10 -5
- package/src/module_state.ts +24 -2
- package/src/playback_renderer.ts +252 -0
- package/src/polyphony.ts +279 -0
- package/src/project.ts +61 -24
- package/src/project_class.ts +450 -27
- package/src/project_internal.ts +149 -42
- package/src/project_synth.ts +67 -1
- package/src/project_types.ts +268 -270
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +254 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +195 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +487 -1
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +711 -28
- package/src/realtime_voice_changer.ts +55 -1
- package/src/repair_dereverb.ts +299 -0
- package/src/repair_impulsive.ts +395 -0
- package/src/repair_noise.ts +425 -0
- package/src/repair_trim.ts +226 -0
- package/src/sample_bank.ts +113 -0
- package/src/sonare.js.d.ts +1122 -30
- package/src/stream_analyzer.ts +36 -4
- package/src/stream_types.ts +37 -0
- package/src/streaming_mixing.ts +1 -1
- package/src/streaming_processors.ts +194 -10
- package/src/transcribe.ts +89 -0
- package/src/validation.ts +285 -11
- package/src/web_midi.ts +1 -6
- package/src/worker.ts +18 -2
- package/src/worklet/audio_types.ts +37 -0
- package/src/worklet/engine-mixer-facade.ts +444 -10
- package/src/worklet/engine-node.ts +78 -26
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +272 -83
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +280 -9
- package/src/worklet/engine-sync.ts +14 -6
- package/src/worklet/engine.ts +365 -31
- package/src/worklet/guards.ts +140 -44
- package/src/worklet/messages.ts +227 -2
- package/src/worklet/mixer-processor.ts +109 -47
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +53 -3
- package/src/worklet/voice-changer-processor.ts +17 -11
- package/src/worklet.ts +17 -0
- package/src/effects_transform.ts +0 -718
- package/src/mastering_repair.ts +0 -273
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://libraz.net/schemas/libsonare/mixer-scene.schema.json",
|
|
4
|
+
"title": "MixSceneDocument",
|
|
5
|
+
"description": "A libsonare mixer scene: the document `sonare mix --scene` reads, `suggestMixScene` returns, and `Mixer.fromSceneJson` builds a graph from. Field paths are held to src/mixing/api/scene_json.cpp's scene_schema_paths() by tests/conformance/check_result_schema_surfaces.py, so this file cannot drift from the writer. Two things this schema deliberately does not describe. The parser also accepts a legacy snake_case spelling of most keys (fader_db beside faderDb); the writer never emits one, and admitting them here would let a document validate in a shape nothing produces. And a scene reaches the mixer through the C++ parser, which refuses values this schema cannot express - an unknown insert processor, a send naming a bus that is not in the document, a connection whose endpoints do not exist. Validating here narrows what reaches that parser; it does not replace it. One numeric limit is also outside what this file states: every float field is stored as a 32-bit float, and the parser refuses a value that is non-finite or past that range. JSON cannot spell a non-finite number at all, and putting the float magnitude on each of the sixteen numeric fields would be sixteen copies of one constant, so a double beyond float range is the one class of value that validates here and is then refused.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["version"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": {
|
|
11
|
+
"description": "Scene document version. 1 is the only accepted value; the parser refuses anything else rather than attempting a migration.",
|
|
12
|
+
"const": 1
|
|
13
|
+
},
|
|
14
|
+
"strips": {
|
|
15
|
+
"description": "Channel strips. A strip is fed by one source and is named by its id, which is what a send's destinationBusId, a connection's source, and a vcaGroup's members refer to.",
|
|
16
|
+
"type": "array",
|
|
17
|
+
"items": { "$ref": "#/$defs/strip" }
|
|
18
|
+
},
|
|
19
|
+
"buses": {
|
|
20
|
+
"description": "Summing buses. Exactly one bus conventionally carries role 'master'; every other bus reaches it through a connection.",
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": { "$ref": "#/$defs/bus" }
|
|
23
|
+
},
|
|
24
|
+
"vcaGroups": {
|
|
25
|
+
"description": "VCA groups. A group applies its gain to every member strip's vcaOffsetDb without moving the strips' own faders.",
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": { "$ref": "#/$defs/vcaGroup" }
|
|
28
|
+
},
|
|
29
|
+
"connections": {
|
|
30
|
+
"description": "Routing edges. Each names a source strip or bus and the bus it sums into; a strip reaches the output only through one.",
|
|
31
|
+
"type": "array",
|
|
32
|
+
"items": { "$ref": "#/$defs/connection" }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"$defs": {
|
|
36
|
+
"insert": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"required": ["processor"],
|
|
40
|
+
"properties": {
|
|
41
|
+
"slot": {
|
|
42
|
+
"description": "Where the insert runs relative to the fader. Defaults to 'pre'.",
|
|
43
|
+
"enum": ["pre", "post"],
|
|
44
|
+
"default": "pre"
|
|
45
|
+
},
|
|
46
|
+
"processor": {
|
|
47
|
+
"description": "Processor id, e.g. 'dynamics.compressor' or 'effects.reverb.plate'. The accepted set is the `processors[].id` list in the capability catalog (schemas/capability-catalog.schema.json); an id outside it is refused by the parser, not by this schema.",
|
|
48
|
+
"type": "string",
|
|
49
|
+
"minLength": 1
|
|
50
|
+
},
|
|
51
|
+
"params": {
|
|
52
|
+
"description": "The processor's parameters, as an object keyed by parameter name ({\"ratio\": 4}). Each processor's parameter names, ranges and defaults are the catalog's `processors[].params[]`; a name outside that set is ignored by the processor and reported on the load warning channel, not refused here. Values are numbers or booleans, with two narrow exceptions the processor that owns the key reads itself: a string for a named rig or an embedded impulse response, and a per-band array for the acoustic room morph.",
|
|
53
|
+
"type": "object"
|
|
54
|
+
},
|
|
55
|
+
"sidechainKey": {
|
|
56
|
+
"description": "Names the signal this insert keys off, for the processors that take one. Empty means no sidechain.",
|
|
57
|
+
"type": "string"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"send": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"additionalProperties": false,
|
|
64
|
+
"required": ["destinationBusId"],
|
|
65
|
+
"properties": {
|
|
66
|
+
"id": {
|
|
67
|
+
"description": "Send id, unique within the strip.",
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
70
|
+
"destinationBusId": {
|
|
71
|
+
"description": "The id of the bus this send feeds. It must name a bus present in this document.",
|
|
72
|
+
"type": "string",
|
|
73
|
+
"minLength": 1
|
|
74
|
+
},
|
|
75
|
+
"sendDb": {
|
|
76
|
+
"description": "Send level in dB.",
|
|
77
|
+
"type": "number",
|
|
78
|
+
"default": 0
|
|
79
|
+
},
|
|
80
|
+
"timing": {
|
|
81
|
+
"description": "Whether the send is taken before or after the strip's fader. A post-fader send follows the fader; a pre-fader one does not.",
|
|
82
|
+
"enum": ["pre", "post"],
|
|
83
|
+
"default": "post"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"surroundPan": {
|
|
88
|
+
"description": "Surround position. Omitted entirely by the writer at the centred point-source default, so a stereo scene carries no surroundPan object at all.",
|
|
89
|
+
"type": "object",
|
|
90
|
+
"additionalProperties": false,
|
|
91
|
+
"properties": {
|
|
92
|
+
"azimuth": { "type": "number", "default": 0 },
|
|
93
|
+
"elevation": { "type": "number", "default": 0 },
|
|
94
|
+
"divergence": { "type": "number", "default": 0 },
|
|
95
|
+
"lfe": { "type": "number", "default": 0 },
|
|
96
|
+
"distance": { "type": "number", "default": 1 }
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"eqBand": {
|
|
100
|
+
"description": "One equalizer band, in the shape sonare_eq_set_band's JSON accepts. Only enabled is required to have any effect at all; every other field falls back to the values shown when the writer omits it.",
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"properties": {
|
|
104
|
+
"type": {
|
|
105
|
+
"enum": ["Peak", "LowShelf", "HighShelf", "LowPass", "HighPass", "BandPass", "Notch", "TiltShelf", "FlatTilt", "AllPass"],
|
|
106
|
+
"default": "Peak"
|
|
107
|
+
},
|
|
108
|
+
"frequencyHz": { "type": "number", "default": 1000 },
|
|
109
|
+
"gainDb": { "type": "number", "default": 0 },
|
|
110
|
+
"q": {
|
|
111
|
+
"description": "Resonance/slope. Ignored for a LowShelf/HighShelf band under coeffMode Vicanek, which has no Q/S parameter.",
|
|
112
|
+
"type": "number"
|
|
113
|
+
},
|
|
114
|
+
"enabled": { "type": "boolean", "default": false },
|
|
115
|
+
"coeffMode": { "enum": ["Rbj", "Vicanek"], "default": "Rbj" },
|
|
116
|
+
"slopeDbOct": {
|
|
117
|
+
"description": "6 selects a first-order section on a pass or shelf band.",
|
|
118
|
+
"type": "integer",
|
|
119
|
+
"default": 12
|
|
120
|
+
},
|
|
121
|
+
"placement": {
|
|
122
|
+
"enum": ["Stereo", "Left", "Right", "Mid", "Side"],
|
|
123
|
+
"default": "Stereo"
|
|
124
|
+
},
|
|
125
|
+
"phase": {
|
|
126
|
+
"enum": ["Inherit", "ZeroLatency", "NaturalPhase", "LinearPhase"],
|
|
127
|
+
"default": "Inherit"
|
|
128
|
+
},
|
|
129
|
+
"soloed": { "type": "boolean", "default": false },
|
|
130
|
+
"bypassed": { "type": "boolean", "default": false },
|
|
131
|
+
"proportionalQ": { "type": "boolean", "default": false },
|
|
132
|
+
"proportionalQStrength": { "type": "number", "default": 0.03 },
|
|
133
|
+
"dynamic": { "type": "boolean", "default": false },
|
|
134
|
+
"thresholdDb": { "type": "number", "default": -24 },
|
|
135
|
+
"autoThreshold": { "type": "boolean", "default": false },
|
|
136
|
+
"ratio": { "type": "number", "default": 2 },
|
|
137
|
+
"rangeDb": { "type": "number", "default": -6 },
|
|
138
|
+
"attackMs": { "type": "number", "default": 5 },
|
|
139
|
+
"releaseMs": { "type": "number", "default": 50 },
|
|
140
|
+
"detectorDelayMs": {
|
|
141
|
+
"description": "Delays the detector's view of the signal; a larger value makes the band react later, not earlier. Not true look-ahead, and adds no latency to the audio path.",
|
|
142
|
+
"type": "number",
|
|
143
|
+
"default": 0
|
|
144
|
+
},
|
|
145
|
+
"externalSidechain": { "type": "boolean", "default": false },
|
|
146
|
+
"sidechainFreqHz": { "type": "number", "default": -1 },
|
|
147
|
+
"sidechainQ": { "type": "number", "default": 1 }
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"eq": {
|
|
151
|
+
"description": "A strip or bus's dedicated equalizer. Omitted entirely by the writer when enabled and every band is at its default, so an existing scene carries neither this key unless it set one.",
|
|
152
|
+
"type": "object",
|
|
153
|
+
"additionalProperties": false,
|
|
154
|
+
"properties": {
|
|
155
|
+
"enabled": {
|
|
156
|
+
"description": "Gates the whole EQ stage without discarding the bands.",
|
|
157
|
+
"type": "boolean",
|
|
158
|
+
"default": true
|
|
159
|
+
},
|
|
160
|
+
"bands": {
|
|
161
|
+
"type": "array",
|
|
162
|
+
"items": { "$ref": "#/$defs/eqBand" }
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"metering": {
|
|
167
|
+
"description": "Which meters this strip computes. Switching one off costs nothing but the measurement.",
|
|
168
|
+
"type": "object",
|
|
169
|
+
"additionalProperties": false,
|
|
170
|
+
"properties": {
|
|
171
|
+
"enabled": { "type": "boolean", "default": true },
|
|
172
|
+
"lufs": { "type": "boolean", "default": true },
|
|
173
|
+
"truePeak": { "type": "boolean", "default": true },
|
|
174
|
+
"truePeakOversample": {
|
|
175
|
+
"description": "Oversampling factor for the inter-sample peak meter. The loader accepts the whole range and resolves a value to the nearest factor the meter implements, so this is a range rather than the set {1, 2, 4, 8, 16}.",
|
|
176
|
+
"type": "integer",
|
|
177
|
+
"minimum": 1,
|
|
178
|
+
"maximum": 16,
|
|
179
|
+
"default": 4
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"strip": {
|
|
184
|
+
"type": "object",
|
|
185
|
+
"additionalProperties": false,
|
|
186
|
+
"required": ["id"],
|
|
187
|
+
"properties": {
|
|
188
|
+
"id": {
|
|
189
|
+
"description": "Strip id, unique within the document. A `mix --input ID=file.wav` entry feeds the strip of this name.",
|
|
190
|
+
"type": "string",
|
|
191
|
+
"minLength": 1
|
|
192
|
+
},
|
|
193
|
+
"inputTrimDb": {
|
|
194
|
+
"description": "Gain applied before the strip's inserts, used to stage a source to a working level.",
|
|
195
|
+
"type": "number",
|
|
196
|
+
"default": 0
|
|
197
|
+
},
|
|
198
|
+
"faderDb": {
|
|
199
|
+
"description": "The strip's fader, applied after its pre-fader inserts.",
|
|
200
|
+
"type": "number",
|
|
201
|
+
"default": 0
|
|
202
|
+
},
|
|
203
|
+
"vcaOffsetDb": {
|
|
204
|
+
"description": "Offset contributed by the vcaGroups this strip belongs to. Written by the mixer; setting it by hand is additive with the group's own gain.",
|
|
205
|
+
"type": "number",
|
|
206
|
+
"default": 0
|
|
207
|
+
},
|
|
208
|
+
"pan": {
|
|
209
|
+
"description": "Stereo position, -1 hard left to +1 hard right.",
|
|
210
|
+
"type": "number",
|
|
211
|
+
"minimum": -1,
|
|
212
|
+
"maximum": 1,
|
|
213
|
+
"default": 0
|
|
214
|
+
},
|
|
215
|
+
"width": {
|
|
216
|
+
"description": "Stereo width: 0 is mono, 1 is unchanged, 2 is doubled. The mixer clamps to [0, 2] on construction, so a scene it emitted is always inside this range and a value outside it would be silently narrowed rather than honoured. Requires a stereo source.",
|
|
217
|
+
"type": "number",
|
|
218
|
+
"minimum": 0,
|
|
219
|
+
"maximum": 2,
|
|
220
|
+
"default": 1
|
|
221
|
+
},
|
|
222
|
+
"muted": { "type": "boolean", "default": false },
|
|
223
|
+
"soloed": { "type": "boolean", "default": false },
|
|
224
|
+
"soloSafe": {
|
|
225
|
+
"description": "Keeps this strip audible while another is soloed - what a reverb return wants, so soloing a source does not also mute its tail.",
|
|
226
|
+
"type": "boolean",
|
|
227
|
+
"default": false
|
|
228
|
+
},
|
|
229
|
+
"panMode": {
|
|
230
|
+
"description": "Panner shape, matching SONARE_PAN_MODE_*. 0 is balance, which is what `pan` drives; a dual-pan mode reads dualPanLeft / dualPanRight instead. The loader rejects a value outside the range rather than clamping it, so the maximum here is what makes validation sufficient.",
|
|
231
|
+
"type": "integer",
|
|
232
|
+
"minimum": 0,
|
|
233
|
+
"maximum": 2,
|
|
234
|
+
"default": 0
|
|
235
|
+
},
|
|
236
|
+
"dualPanLeft": {
|
|
237
|
+
"description": "Destination of the source's left channel under a dual-pan panMode. Ignored in balance mode.",
|
|
238
|
+
"type": "number",
|
|
239
|
+
"minimum": -1,
|
|
240
|
+
"maximum": 1,
|
|
241
|
+
"default": -1
|
|
242
|
+
},
|
|
243
|
+
"dualPanRight": {
|
|
244
|
+
"description": "Destination of the source's right channel under a dual-pan panMode. Ignored in balance mode.",
|
|
245
|
+
"type": "number",
|
|
246
|
+
"minimum": -1,
|
|
247
|
+
"maximum": 1,
|
|
248
|
+
"default": 1
|
|
249
|
+
},
|
|
250
|
+
"polarityInvertLeft": { "type": "boolean", "default": false },
|
|
251
|
+
"polarityInvertRight": { "type": "boolean", "default": false },
|
|
252
|
+
"panLaw": {
|
|
253
|
+
"description": "Pan law, matching the PanLaw enum order. 0 is Const3dB. The maximum is kPanLawCount - 1; the loader rejects anything above it.",
|
|
254
|
+
"type": "integer",
|
|
255
|
+
"minimum": 0,
|
|
256
|
+
"maximum": 3,
|
|
257
|
+
"default": 0
|
|
258
|
+
},
|
|
259
|
+
"channelDelaySamples": {
|
|
260
|
+
"description": "Whole-sample delay applied to this strip, for time-aligning a multi-mic source against its siblings. The maximum is kMaxAlignmentDelaySamples, which the loader rejects above rather than clamping.",
|
|
261
|
+
"type": "integer",
|
|
262
|
+
"minimum": 0,
|
|
263
|
+
"maximum": 192000,
|
|
264
|
+
"default": 0
|
|
265
|
+
},
|
|
266
|
+
"sourceLayout": {
|
|
267
|
+
"description": "Channel layout of the source feeding this strip. Written only when it is not the stereo default.",
|
|
268
|
+
"enum": ["mono", "stereo", "5.1", "7.1"],
|
|
269
|
+
"default": "stereo"
|
|
270
|
+
},
|
|
271
|
+
"surroundPan": { "$ref": "#/$defs/surroundPan" },
|
|
272
|
+
"metering": { "$ref": "#/$defs/metering" },
|
|
273
|
+
"inserts": {
|
|
274
|
+
"description": "Processors on this strip, run in array order within each slot.",
|
|
275
|
+
"type": "array",
|
|
276
|
+
"items": { "$ref": "#/$defs/insert" }
|
|
277
|
+
},
|
|
278
|
+
"sends": {
|
|
279
|
+
"description": "Feeds from this strip to buses, each with its own level and timing.",
|
|
280
|
+
"type": "array",
|
|
281
|
+
"items": { "$ref": "#/$defs/send" }
|
|
282
|
+
},
|
|
283
|
+
"eq": { "$ref": "#/$defs/eq" }
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"bus": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"additionalProperties": false,
|
|
289
|
+
"required": ["id"],
|
|
290
|
+
"properties": {
|
|
291
|
+
"id": {
|
|
292
|
+
"description": "Bus id, unique within the document and referred to by sends and connections.",
|
|
293
|
+
"type": "string",
|
|
294
|
+
"minLength": 1
|
|
295
|
+
},
|
|
296
|
+
"role": {
|
|
297
|
+
"description": "What the bus is for. 'master' marks the output bus and carries the project output layout; 'aux' is an effect return and 'group' a subgroup. The parser does not restrict this string, so a role it does not recognise is stored rather than refused - which means a misspelt 'master' produces a scene with no output bus instead of an error.",
|
|
298
|
+
"type": "string",
|
|
299
|
+
"default": "aux"
|
|
300
|
+
},
|
|
301
|
+
"layout": {
|
|
302
|
+
"description": "Channel layout of this bus. The master bus carries the project output layout.",
|
|
303
|
+
"enum": ["mono", "stereo", "5.1", "7.1"],
|
|
304
|
+
"default": "stereo"
|
|
305
|
+
},
|
|
306
|
+
"inputTrimDb": { "type": "number", "default": 0 },
|
|
307
|
+
"width": {
|
|
308
|
+
"description": "Stereo width of the bus, clamped to [0, 2] the way a strip's is.",
|
|
309
|
+
"type": "number",
|
|
310
|
+
"minimum": 0,
|
|
311
|
+
"maximum": 2,
|
|
312
|
+
"default": 1
|
|
313
|
+
},
|
|
314
|
+
"polarityInvertLeft": { "type": "boolean", "default": false },
|
|
315
|
+
"polarityInvertRight": { "type": "boolean", "default": false },
|
|
316
|
+
"pan": {
|
|
317
|
+
"description": "Stereo position, same range and meaning as a strip's. Rejected (not clamped) at a non-default value when layout carries more than two channels: a surround bus has no pan of its own.",
|
|
318
|
+
"type": "number",
|
|
319
|
+
"minimum": -1,
|
|
320
|
+
"maximum": 1,
|
|
321
|
+
"default": 0
|
|
322
|
+
},
|
|
323
|
+
"panMode": {
|
|
324
|
+
"description": "Panner shape, matching SONARE_PAN_MODE_*. Same meaning as a strip's.",
|
|
325
|
+
"type": "integer",
|
|
326
|
+
"minimum": 0,
|
|
327
|
+
"maximum": 2,
|
|
328
|
+
"default": 0
|
|
329
|
+
},
|
|
330
|
+
"dualPanLeft": {
|
|
331
|
+
"type": "number",
|
|
332
|
+
"minimum": -1,
|
|
333
|
+
"maximum": 1,
|
|
334
|
+
"default": -1
|
|
335
|
+
},
|
|
336
|
+
"dualPanRight": {
|
|
337
|
+
"type": "number",
|
|
338
|
+
"minimum": -1,
|
|
339
|
+
"maximum": 1,
|
|
340
|
+
"default": 1
|
|
341
|
+
},
|
|
342
|
+
"panLaw": {
|
|
343
|
+
"description": "Pan law, matching the PanLaw enum order. Same meaning as a strip's.",
|
|
344
|
+
"type": "integer",
|
|
345
|
+
"minimum": 0,
|
|
346
|
+
"maximum": 3,
|
|
347
|
+
"default": 0
|
|
348
|
+
},
|
|
349
|
+
"inserts": {
|
|
350
|
+
"description": "Processors on this bus, run on the summed signal.",
|
|
351
|
+
"type": "array",
|
|
352
|
+
"items": { "$ref": "#/$defs/insert" }
|
|
353
|
+
},
|
|
354
|
+
"eq": { "$ref": "#/$defs/eq" }
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"vcaGroup": {
|
|
358
|
+
"type": "object",
|
|
359
|
+
"additionalProperties": false,
|
|
360
|
+
"required": ["id"],
|
|
361
|
+
"properties": {
|
|
362
|
+
"id": { "type": "string", "minLength": 1 },
|
|
363
|
+
"gainDb": {
|
|
364
|
+
"description": "Gain the group contributes to every member's vcaOffsetDb.",
|
|
365
|
+
"type": "number",
|
|
366
|
+
"default": 0
|
|
367
|
+
},
|
|
368
|
+
"members": {
|
|
369
|
+
"description": "Ids of the strips this group drives.",
|
|
370
|
+
"type": "array",
|
|
371
|
+
"items": { "type": "string", "minLength": 1 }
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"connection": {
|
|
376
|
+
"type": "object",
|
|
377
|
+
"additionalProperties": false,
|
|
378
|
+
"required": ["source", "destination"],
|
|
379
|
+
"properties": {
|
|
380
|
+
"source": {
|
|
381
|
+
"description": "Id of the strip or bus this edge takes signal from.",
|
|
382
|
+
"type": "string",
|
|
383
|
+
"minLength": 1
|
|
384
|
+
},
|
|
385
|
+
"destination": {
|
|
386
|
+
"description": "Id of the bus this edge sums into.",
|
|
387
|
+
"type": "string",
|
|
388
|
+
"minLength": 1
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|