# AudioLanguage Preset Schema

Return one strict JSON object using schema version 2:

```json
{
  "schemaVersion": 2,
  "name": "Glass Pluck",
  "description": "Bright short pluck with a clean octave shimmer.",
  "tags": ["pluck", "bright"],
  "settings": {
    "volume": 0.52,
    "waveform": "sawtooth",
    "osc2Interval": 12,
    "osc2Mix": 0.28,
    "attack": 0.002,
    "decay": 0.18,
    "sustain": 0.2,
    "release": 0.28,
    "fmAmount": 0.04,
    "filterMode": "lowPass",
    "filterCutoff": 2800,
    "filterResonance": 0.35,
    "filterEnvelopeAttack": 0.003,
    "filterEnvelopeRelease": 0.18,
    "filterEnvelopeAmount": 0.55,
    "filterEnvelopeShape": "exponential"
  }
}
```

## Required Values

- `schemaVersion`: exactly `2`
- `name`: 1-64 characters
- `description`: optional, 0-240 characters
- `tags`: optional, maximum 8 strings, each 1-24 characters
- `settings.volume`: `0...1`
- `settings.waveform`: `sine`, `triangle`, `square`, or `sawtooth`
- `settings.osc2Interval`: whole semitone value, `-24...24`
- `settings.osc2Mix`: `0...1`
- `settings.attack`: seconds, `0...2`
- `settings.decay`: seconds, `0...2`
- `settings.sustain`: `0...1`
- `settings.release`: seconds, `0...3`
- `settings.fmAmount`: `0...1`
- `settings.filterMode`: `lowPass`, `highPass`, or `bandPass`
- `settings.filterCutoff`: Hz, `20...20000`
- `settings.filterResonance`: `0...1`
- `settings.filterEnvelopeAttack`: seconds, `0...2`
- `settings.filterEnvelopeRelease`: seconds, `0...3`
- `settings.filterEnvelopeAmount`: bipolar, `-1...1`
- `settings.filterEnvelopeShape`: `linear` or `exponential`

## Heuristics

- Pure, round, glassy, flute-like: `sine`
- Mellow, soft, muted, rounded bass: `triangle`
- Hollow, nasal, retro, chiptune: `square`
- Bright, brassy, aggressive, buzzy: `sawtooth`
- Pluck: attack `0...0.01`, decay `0.08...0.35`, sustain `0...0.35`, release `0.08...0.45`
- Pad: attack `0.2...1.2`, decay `0.3...1.2`, sustain `0.45...0.9`, release `0.5...2.5`
- Lead: attack `0...0.04`, decay `0.08...0.35`, sustain `0.45...0.85`, release `0.08...0.45`
- Bass: osc2Interval `-24...0`, osc2Mix `0.2...0.55`, attack `0...0.02`, release `0.06...0.3`
- Octave shimmer: osc2Interval `12`, osc2Mix `0.15...0.4`
- Sub weight: osc2Interval `-12`, osc2Mix `0.25...0.55`
- Wide fifth: osc2Interval `7` or `-5`
- Warm, dark, muted: `lowPass`, lower cutoff `400...3000`, resonance `0.05...0.35`
- Bright, open: `lowPass`, high cutoff `6000...20000`, resonance `0...0.2`
- Nasal, formant, telephone: `bandPass`, cutoff `600...3000`, resonance `0.4...0.85`
- Airy, thin, riser: `highPass`, cutoff `300...3000`, resonance `0.05...0.35`
- Wah, sweep, pluck: positive filter envelope amount `0.35...0.9`, short filter attack/release, usually `exponential`
- Inverted darker sweep: negative filter envelope amount `-0.7...-0.15`
- Metallic, bell, digital: higher FM amount `0.25...0.65`, usually `sine` or `triangle`
- Harsh, aggressive: `sawtooth` or `square`, moderate FM `0.08...0.3`, resonance `0.25...0.7`

Prefer moderate output level, FM, and resonance unless the user explicitly asks for an extreme sound.

## Example

User: "Make a soft analog pad, mellow and slow."

```json
{
  "schemaVersion": 2,
  "name": "Mellow Drift Pad",
  "description": "Soft slow pad with a gentle triangle tone and relaxed filtered movement.",
  "tags": ["pad", "mellow", "soft"],
  "settings": {
    "volume": 0.48,
    "waveform": "triangle",
    "osc2Interval": 7,
    "osc2Mix": 0.24,
    "attack": 0.55,
    "decay": 0.7,
    "sustain": 0.68,
    "release": 1.4,
    "fmAmount": 0.02,
    "filterMode": "lowPass",
    "filterCutoff": 4200,
    "filterResonance": 0.12,
    "filterEnvelopeAttack": 0.65,
    "filterEnvelopeRelease": 1.2,
    "filterEnvelopeAmount": 0.25,
    "filterEnvelopeShape": "linear"
  }
}
```
