Project structure

The few project areas you change and the output the toolkit generates.

A Syntho starter is a normal web project with one typed audio module. Canonical modules in the engine repository live under modules/<slug>. Some starters use src/module.ts as the declaration source; the package entry exports it. Names may vary, but the ownership boundaries stay the same.

my-tool/
├── package.json       # imports, exports and project commands
├── README.md          # purpose, setup, targets and verification
├── src/
│   ├── index.ts       # module declaration entry
│   ├── contract/      # parameters and state
│   ├── dsp/           # optional module-owned DSP
│   ├── ui/            # product face, styles and controls
│   └── presets/       # factory preset source
├── assets/            # samples, images and other resources
└── build/             # generated artifacts

Import shared behavior from the central audio SDK and owning packages. Use the UI kit for reusable controls; keep module-specific UI, presets and assets here. A module can be composed without loading its face or importing another app.

What you own

The module declares the sound or MIDI graph and its stable public parameters. The interface is ordinary web code connected through bindings supplied by the starter. Assets and presets remain part of your project.

This is also the useful boundary for a coding agent: ask it to change the graph in the module and the experience in the interface, then verify both in the workbench.

What the toolkit generates

The toolkit handles preview data, host metadata, parameter automation, saved state, native project files, and bundled interface assets. Do not build product logic into generated output because it can be recreated.

Portability and switching

Your module source, web interface, assets, presets, and project configuration remain readable files in your workspace. The interface is ordinary web source, so you can replace packages, connect other services, and deploy a supported browser build on your own site.

This does not mean switching has no cost. The typed graph API, runtime bindings, and native packaging are Syntho dependencies. Moving the project to another audio framework means adapting or replacing those parts. The important point is that you can see the boundary, keep your work, and plan that migration instead of being locked inside a hosted editor or inaccessible project format.

Use pnpm module:dev for the workbench. Use the build scripts included with the starter for its supported native targets. See Export for the current workflow.