# audio.synth

> Talos next · Since next

[editor or disk] Synthesise a WAV audio asset into the project (as asset.import does) with the make-your-own-sounds recipe's synthesiser: a preset, or voices on a timeline.

Same parameters, same bytes. Max 12 s, 1 MiB. ctx.audio.play(<asset>) plays it.

| | |
|---|---|
| Title | Make a sound |
| Mode |  |
| Token cost | about 354 tokens (listed only when its toolset is enabled) |
| Toolset | `audio` |

## Arguments

| Argument | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| `drive` | `number` | no |  |  | Voices: saturation, 0.1-10 |
| `echo` | `object` | no |  |  | Voices: {time, feedback, wet, repeats} |
| `name` | `string` | yes |  |  | Asset id and file name: laser -> assets/laser.wav |
| `options` | `object` | no |  |  | Per preset: blip {low, high, seed}; whoosh {seconds, low, high, seed}; engine-loop {hz, seconds, bright, rough, seed}; explosion {seconds, seed}; jingle {notes, step, hold, wave, seed} |
| `peakDb` | `number` | no |  |  | Peak level, -30 to 0; default -3 |
| `preset` | `enum` | no |  | `blip`, `whoosh`, `engine-loop`, `explosion`, `jingle` |  |
| `sampleRate` | `integer` | no |  |  | Voices only, 8000-48000; default 44100 |
| `scene` | `string` | no |  |  | The scene file to act on. The open scene when absent. |
| `voices` | `object[]` | no |  |  | Instead of preset: [{at, dur, wave sine\|square\|saw\|tri\|noise\|pink, freq (Hz, "A4" or {from, to}), pw, adsr {a, d, s, r}, filter {type lp\|hp\|bp, cutoff, q}, vibrato {hz, depth}, seed, gain}] |

## Example

An MCP `tools/call` with the required arguments (placeholders in angle brackets).

```json
{
  "name": "audio.synth",
  "arguments": {
    "name": "<name>"
  }
}
```
