{
  "$schema": "https://www.beeps.studio/schema/v1",
  "generator": "Beeps — www.beeps.studio",
  "source": "https://www.beeps.studio/",
  "preset": "warm",
  "presetName": "Warm",
  "baseHz": 680,
  "notes": {
    "normalizedGain": "Omitted. Loudness normalization is measured from a real render, which needs Web Audio; a server has none. The browser applies it, so a sound played from the page is level-matched and these parameters alone are not.",
    "durations": "durationMs is the envelope; soundingMs adds note offsets and any room tail."
  },
  "sounds": [
    {
      "id": "tap",
      "key": "tap",
      "tier": "subtle",
      "durationMs": 130,
      "soundingMs": 132,
      "frequencyHz": {
        "min": 680,
        "max": 729
      },
      "pitchHz": {
        "start": 729,
        "end": 680,
        "sweepMs": 39
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 73.1,
        "sustain": 0,
        "release": 42.8
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 820,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 70,
        "maxMs": 180,
        "verdict": "ok"
      },
      "character": "Falls a minor second over 132 ms, with a soft onset, and a dark, filtered tail.",
      "when": "A discrete press that commits something small — a button, a segment, a menu item.",
      "whenNot": "Hover, focus, scroll, or any pointer movement. Never on every keystroke."
    },
    {
      "id": "notification",
      "key": "notification",
      "tier": "alert",
      "durationMs": 428,
      "soundingMs": 554,
      "frequencyHz": {
        "min": 1019,
        "max": 1527
      },
      "pitchHz": {
        "start": 1019,
        "end": 1019,
        "sweepMs": 141
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 261,
        "sustain": 0,
        "release": 153
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 968,
        "q": 0.5
      },
      "voices": 6,
      "budget": {
        "minMs": 120,
        "maxMs": 700,
        "verdict": "ok"
      },
      "character": "Holds one note for 554 ms, with a soft onset, and a dark, filtered tail.",
      "when": "An interruption that is genuinely new information.",
      "whenNot": "Anything the user can see happening. Never when the originating tab is focused and the item is already on screen."
    },
    {
      "id": "open",
      "key": "open",
      "tier": "subtle",
      "durationMs": 147,
      "soundingMs": 149,
      "frequencyHz": {
        "min": 879,
        "max": 1144
      },
      "pitchHz": {
        "start": 879,
        "end": 1144,
        "sweepMs": 68
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 84,
        "sustain": 0,
        "release": 49.3
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 581,
        "endCutoffHz": 2225,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 70,
        "maxMs": 180,
        "verdict": "ok"
      },
      "character": "Rises a fourth over 149 ms, with a soft onset, and a dark, filtered tail.",
      "when": "A surface the user opened: menu, sheet, drawer, disclosure.",
      "whenNot": "Anything that opens by itself, including tooltips on hover."
    },
    {
      "id": "close",
      "key": "close",
      "tier": "subtle",
      "durationMs": 147,
      "soundingMs": 149,
      "frequencyHz": {
        "min": 509,
        "max": 663
      },
      "pitchHz": {
        "start": 663,
        "end": 509,
        "sweepMs": 68
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 84,
        "sustain": 0,
        "release": 49.3
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 1025,
        "endCutoffHz": 590,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 70,
        "maxMs": 180,
        "verdict": "ok"
      },
      "character": "Falls a fourth over 149 ms, with a soft onset, and a dark, filtered tail.",
      "when": "The same surface dismissed.",
      "whenNot": "Route changes and page navigation — those are not closes."
    },
    {
      "id": "send",
      "key": "send",
      "tier": "notable",
      "durationMs": 373,
      "soundingMs": 375,
      "frequencyHz": {
        "min": 466,
        "max": 606
      },
      "pitchHz": {
        "start": 466,
        "end": 606,
        "sweepMs": 61
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 226.2,
        "sustain": 0,
        "release": 132.6
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 968,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 90,
        "maxMs": 450,
        "verdict": "ok"
      },
      "character": "Rises a fourth over 375 ms, with a soft onset, and a dark, filtered tail.",
      "when": "Outbound, user-initiated: a message sent, a form submitted, a job queued.",
      "whenNot": "Autosave, background sync, telemetry, retries."
    },
    {
      "id": "receive",
      "key": "receive",
      "tier": "notable",
      "durationMs": 373,
      "soundingMs": 375,
      "frequencyHz": {
        "min": 404,
        "max": 526
      },
      "pitchHz": {
        "start": 526,
        "end": 404,
        "sweepMs": 61
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 226.2,
        "sustain": 0,
        "release": 132.6
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 968,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 90,
        "maxMs": 450,
        "verdict": "ok"
      },
      "character": "Falls a fourth over 375 ms, with a soft onset, and a dark, filtered tail.",
      "when": "Inbound content arriving while the user is present and looking.",
      "whenNot": "Bulk arrivals — play once for a batch, never once per item."
    },
    {
      "id": "toggle.on",
      "key": "toggle-on",
      "tier": "subtle",
      "durationMs": 123,
      "soundingMs": 125,
      "frequencyHz": {
        "min": 1170,
        "max": 1360
      },
      "pitchHz": {
        "start": 1170,
        "end": 1360,
        "sweepMs": 19
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 68.7,
        "sustain": 0,
        "release": 40.3
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 820,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 70,
        "maxMs": 180,
        "verdict": "ok"
      },
      "character": "Rises a minor third over 125 ms, with a soft onset, and a dark, filtered tail.",
      "when": "A binary control turning on, when the user turned it on.",
      "whenNot": "Programmatic state changes, or restoring saved settings on load."
    },
    {
      "id": "toggle.off",
      "key": "toggle-off",
      "tier": "subtle",
      "durationMs": 123,
      "soundingMs": 125,
      "frequencyHz": {
        "min": 857,
        "max": 996
      },
      "pitchHz": {
        "start": 996,
        "end": 857,
        "sweepMs": 19
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 68.7,
        "sustain": 0,
        "release": 40.3
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 820,
        "q": 0.5
      },
      "voices": 3,
      "budget": {
        "minMs": 70,
        "maxMs": 180,
        "verdict": "ok"
      },
      "character": "Falls a minor third over 125 ms, with a soft onset, and a dark, filtered tail.",
      "when": "The same control turning off.",
      "whenNot": "Programmatic state changes, or restoring saved settings on load."
    },
    {
      "id": "success",
      "key": "success",
      "tier": "notable",
      "durationMs": 290,
      "soundingMs": 394,
      "frequencyHz": {
        "min": 680,
        "max": 973
      },
      "pitchHz": {
        "start": 729,
        "end": 680,
        "sweepMs": 94
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 174,
        "sustain": 0,
        "release": 102
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 968,
        "q": 0.5
      },
      "voices": 6,
      "budget": {
        "minMs": 90,
        "maxMs": 450,
        "verdict": "ok"
      },
      "character": "Falls a minor second over 394 ms, with a soft onset, and a dark, filtered tail.",
      "when": "A user-initiated operation completed. Only on completion the user was waiting for.",
      "whenNot": "Background success, cache warms, or anything they did not start. Never as a page-load chime."
    },
    {
      "id": "error",
      "key": "error",
      "tier": "alert",
      "durationMs": 428,
      "soundingMs": 430,
      "frequencyHz": {
        "min": 509,
        "max": 578
      },
      "pitchHz": {
        "start": 578,
        "end": 540,
        "sweepMs": 141
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 261,
        "sustain": 0,
        "release": 153
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 640,
        "q": 0.73
      },
      "voices": 4,
      "budget": {
        "minMs": 120,
        "maxMs": 700,
        "verdict": "ok"
      },
      "character": "Falls a minor second over 430 ms, with a soft onset, and a dark, filtered tail.",
      "when": "An operation failed in a way the user must respond to.",
      "whenNot": "Validation on a field they have not finished typing in. Never more than once per submit."
    },
    {
      "id": "delete",
      "key": "delete",
      "tier": "notable",
      "durationMs": 290,
      "soundingMs": 292,
      "frequencyHz": {
        "min": 340,
        "max": 534
      },
      "pitchHz": {
        "start": 534,
        "end": 340,
        "sweepMs": 47
      },
      "envelopeMs": {
        "attack": 14,
        "decay": 174,
        "sustain": 0,
        "release": 102
      },
      "filter": {
        "type": "lowpass",
        "cutoffHz": 820,
        "q": 0.5
      },
      "voices": 4,
      "budget": {
        "minMs": 90,
        "maxMs": 450,
        "verdict": "ok"
      },
      "character": "Falls a minor sixth over 292 ms, with a soft onset, and a dark, filtered tail.",
      "when": "Destructive removal that has actually happened.",
      "whenNot": "Opening a confirmation dialog — that is `open`."
    }
  ],
  "tiers": {
    "subtle": {
      "minMs": 70,
      "maxMs": 180
    },
    "notable": {
      "minMs": 90,
      "maxMs": 450
    },
    "alert": {
      "minMs": 120,
      "maxMs": 700
    }
  },
  "presets": [
    {
      "id": "warm",
      "name": "Warm",
      "blurb": "Three sines a few cents apart, beating audibly against each other. Dark and full.",
      "suits": "finance, health, anything that should feel steady"
    },
    {
      "id": "soft",
      "name": "Soft",
      "blurb": "Rounded, low, unhurried. Nothing sharp, so it survives being heard all day.",
      "suits": "the neutral base to build from"
    },
    {
      "id": "minimal",
      "name": "Minimal",
      "blurb": "You notice it missing, not present. About a third of Soft's loudness.",
      "suits": "tools people live in all day"
    },
    {
      "id": "crisp",
      "name": "Crisp",
      "blurb": "A click, not a beep. A 1 ms attack, a noise transient, and almost no tail.",
      "suits": "dense, fast interfaces"
    },
    {
      "id": "bloopy",
      "name": "Bloopy",
      "blurb": "Round, wet and unhurried — a drop into water. Deep glide, almost no edge.",
      "suits": "therapy, meditation, anything that should slow you down"
    },
    {
      "id": "glassy",
      "name": "Glassy",
      "blurb": "A struck rim. Almost a pure tone, ringing longer than anything else here.",
      "suits": "premium, editorial, anything unhurried"
    },
    {
      "id": "playful",
      "name": "Playful",
      "blurb": "Bouncy and bright, with exaggerated leaps. A square edge over a soft core.",
      "suits": "games, kids' apps, anything that rewards you"
    },
    {
      "id": "retro",
      "name": "Retro",
      "blurb": "Chiptune. Square waves, an octave stacked on top, and pitch that jumps in steps.",
      "suits": "games, dev tools, anything with a sense of humour"
    },
    {
      "id": "scifi",
      "name": "Sci-Fi",
      "blurb": "Zaps. A modulated core under a sawtooth fifth, plunging through a resonant filter.",
      "suits": "games, dashboards, anything that wants to feel like a console"
    }
  ],
  "docs": "https://www.beeps.studio/llms.txt"
}