139 lines
4.5 KiB
Plaintext
139 lines
4.5 KiB
Plaintext
{
|
|
"xzbt": "0.1",
|
|
"meta": {
|
|
"id": "minimal-audio",
|
|
"name": "Minimal Audio",
|
|
"version": "1.1.0",
|
|
"author": "XZBT",
|
|
"description": "A minimal generic exhibit exercising audio graphs, components, routing, buses, and the Phase 3c automation modes and curves.",
|
|
"license": "CC0-1.0",
|
|
"tags": ["minimal", "audio"]
|
|
},
|
|
"runtime": {
|
|
"seed": 42
|
|
},
|
|
"parameters": {
|
|
"level": {
|
|
"type": "number",
|
|
"default": 0.6,
|
|
"min": 0,
|
|
"max": 4,
|
|
"step": 0.01,
|
|
"label": "Ambient bus level"
|
|
}
|
|
},
|
|
"bindings": [
|
|
{
|
|
"source": "parameters.level",
|
|
"target": "audio.buses.ambient.gain"
|
|
}
|
|
],
|
|
"components": {
|
|
"audio": {
|
|
"partial": {
|
|
"parameters": {
|
|
"pitch": { "type": "number", "default": 220, "min": 20, "max": 4000, "unit": "Hz" },
|
|
"level": { "type": "number", "default": 0.2, "min": 0, "max": 1 }
|
|
},
|
|
"input": false,
|
|
"nodes": {
|
|
"tone": { "type": "oscillator", "waveform": "triangle", "frequency": { "ref": "inputs.pitch" } },
|
|
"shape": { "type": "filter", "mode": "lowpass", "frequency": 1800, "q": 0.7 },
|
|
"level": { "type": "gain", "gain": { "ref": "inputs.level" } }
|
|
},
|
|
"routes": [
|
|
{ "from": "tone", "to": "shape" },
|
|
{ "from": "shape", "to": "level" },
|
|
{ "from": "level", "to": "output" }
|
|
],
|
|
"automation": [
|
|
{ "target": "shape.frequency", "interpolation": "exponential", "points": [
|
|
{ "at": "0s", "value": 1800 }, { "at": "12s", "value": 800 }
|
|
] }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"audio": {
|
|
"buses": {
|
|
"ambient": { "gain": 0.6 },
|
|
"effects": { "gain": 0.8 }
|
|
},
|
|
"recipes": {
|
|
"drift": {
|
|
"mode": "continuous",
|
|
"nodes": {
|
|
"low": { "type": "component", "use": "partial", "values": { "pitch": 110, "level": 0.25 } },
|
|
"high": { "type": "component", "use": "partial", "values": { "pitch": { "random": { "min": 320, "max": 340 } }, "level": 0.12 } },
|
|
"wobble": { "type": "lfo", "waveform": "sine", "frequency": 0.08, "amplitude": 1 },
|
|
"wander": { "type": "sample-hold", "rate": 0.5, "min": -6, "max": 6, "slew": "600ms" },
|
|
"blend": { "type": "mixer" },
|
|
"space": { "type": "reverb", "size": 0.7, "decay": "3.5s", "damping": 0.6, "mix": 0.3 },
|
|
"trim": { "type": "gain", "gain": 0.7 }
|
|
},
|
|
"routes": [
|
|
{ "from": "low", "to": "blend" },
|
|
{ "from": "high", "to": "blend" },
|
|
{ "from": "blend", "to": "space" },
|
|
{ "from": "space", "to": "trim" },
|
|
{ "from": "trim", "to": "output" },
|
|
{ "from": "wobble", "to": "low.pitch", "depth": 1.5 },
|
|
{ "from": "wander", "to": "high.pitch", "depth": 1 }
|
|
],
|
|
"automation": [
|
|
{ "target": "low.pitch", "mode": "offset", "interpolation": "smooth", "points": [
|
|
{ "at": "0s", "value": 0 }, { "at": "6s", "value": 12 }, { "at": "18s", "value": -4 }
|
|
] },
|
|
{ "target": "high.level", "mode": "scale", "points": [
|
|
{ "at": "0s", "value": 0.4 }, { "at": "3s", "value": 1 }
|
|
] }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"sounds": {
|
|
"drift": {
|
|
"name": "Drift",
|
|
"tags": ["continuous", "abstract"],
|
|
"usage": ["manual"],
|
|
"bus": "ambient",
|
|
"recipe": { "use": "drift" }
|
|
},
|
|
"tick": {
|
|
"name": "Tick",
|
|
"tags": ["transient"],
|
|
"usage": ["manual", "automatic"],
|
|
"bus": "effects",
|
|
"recipe": {
|
|
"mode": "oneshot",
|
|
"nodes": {
|
|
"hit": { "type": "impulse", "color": "white", "duration": "6ms", "amplitude": 0.9, "decay": "exponential" },
|
|
"body": {
|
|
"type": "resonator",
|
|
"fundamental": 480,
|
|
"modes": [
|
|
{ "ratio": 1, "gain": 1, "decay": "260ms" },
|
|
{ "ratio": 2.7, "gain": 0.35, "decay": "140ms" },
|
|
{ "ratio": 5.4, "gain": 0.12, "decay": "70ms" }
|
|
],
|
|
"mix": 1
|
|
},
|
|
"place": { "type": "stereo-pan", "pan": -0.2 },
|
|
"trim": { "type": "gain", "gain": 0.5 }
|
|
},
|
|
"routes": [
|
|
{ "from": "hit", "to": "body" },
|
|
{ "from": "body", "to": "place" },
|
|
{ "from": "place", "to": "trim" },
|
|
{ "from": "trim", "to": "output" }
|
|
],
|
|
"automation": [
|
|
{ "target": "place.pan", "interpolation": "step", "points": [
|
|
{ "at": "0ms", "value": -0.2 }, { "at": "120ms", "value": 0.2 }
|
|
] }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|