Audio SDK
The typed boundary shared by module graphs, browser audio, and native hosts.
Most authors work in src/module.ts, using the authoring API from
@syntho/audio-sdk/authoring.
import { defineEffect, nodes } from "@syntho/audio-sdk/authoring"
export default defineEffect(
{
id: "com.example.level",
name: "Level",
schema: {
params: [
{
path: "level",
label: "Level",
group: "Main",
type: "float",
min: 0,
max: 1,
default: 0.8,
},
],
},
},
({ input, output, connect, expose }) => {
const gain = nodes.gain("gain", { gain: 0.8 })
connect(input.output, gain.audioInput)
connect(gain.audioOutput, output.input)
expose("level", gain.params.gain)
}
)
The graph is the source of truth for audio and MIDI connections. The parameter schema is the source of truth for the workbench, UI bindings, host automation, saved state, and generated plugin tables.
The workbench and product shells activate the appropriate engine transport for
you. Low-level createAudioEngine() APIs exist for host integration, but normal
module UI code should use the generated project bindings rather than construct a
runtime by hand.
For the authoring workflow, read How it works, Project structure, and the Development workbench.