---
id: "4.12"
title: "Sound and motion, Buzz"
dept: brand
status: draft
owner: Param
branded: true
direction: bee
last_verified: '2026-10-26'
sources:
  - brew origin/main tools/sfx/cues.json, tools/sfx/build.py:20, tools/sfx/build.sh
  - brew origin/main public/app.js:1470 to 1560, 889, 3048, 4684, 2939
  - brand-directions/bee/motion.html v0, v1, v2
  - brand-directions/bee/brand.html b4, b5
  - brand-directions/bee/character.html c7
  - brand-directions/bee/kit-skin.js motion, sounds
  - brand-directions/bee/snd/sound-log.json, brand-directions/bee/snd/voice.json
  - brand-directions/book/content/f.js f-5
  - memory brew-sounds
---

# Sound and motion, Buzz

## Answer

How Buzz sounds and moves: a wing zip that lands on wood for the sonic logo, five cues mapped onto today's 29 product cues, one voice, and short motions that never block a control.

## Today

### The product's sound engine

- Since 21 October the product plays 29 designed cues rendered offline with earshot from `tools/sfx/cues.json` into `public/sfx/*.mp3`. [src: memory brew-sounds; brew/tools/sfx/cues.json]
- Each cue is levelled by loudness through a small speaker, LUFS, never peak normalised. A cue that loses more than 6 dB through a small speaker fails the build. [src: brew/tools/sfx/cues.json note; brew/tools/sfx/build.py:20]
- The engine `CUES` and `sound()` decode the files while the page is idle and fall back to a synth version of each cue if a file is missing. [src: brew/public/app.js:1481; brew/public/app.js:1517]
- Sound is on unless the person turns it off with the Sounds switch in the account menu. [src: brew/public/app.js:1470; brew/public/app.js:2939]
- One tap is one sound. Soft cues give way to any cue just played. Screens that change on their own stay silent. Hidden tabs play nothing. [src: brew/public/app.js:1523; brew/public/app.js:1524; memory brew-sounds]
- Phones under 760 pixels get a light vibration with some cues. [src: brew/public/app.js:1526]
- Repeats get a small pitch drift so they never sound stamped. [src: brew/public/app.js:1525]

### Today's cues and when they play

| Cue | Level, LUFS | When it plays |
|---|---|---|
| heart, unheart | -29 | Heart a card, or undo it [src: brew/tools/sfx/cues.json; brew/public/app.js:1548] |
| select | -29 | Onboarding tiles, a pick, approve chips [src: brew/public/app.js:1539] |
| tick | -31 | Any copy to the clipboard, a save [src: brew/public/app.js:1532; brew/public/app.js:1538] |
| send | -29 | Build my feed, a share, a jam message [src: brew/public/app.js:1537; brew/public/app.js:1558; memory brew-sounds] |
| live | -23 | Ship from the jam, share to [src: brew/public/app.js:1536] |
| ready | -25 | A creative or long job is ready [src: brew/public/app.js:4684] |
| error | -27 | Something failed [src: brew/public/app.js:4684] |
| win | -23 | Onboarding finished [src: brew/public/app.js:889] |
| connected | -25 | A tool is connected [src: brew/public/app.js:3048] |
| approve | -25 | An approval, and turning sounds on [src: brew/public/app.js:2939] |
| reply | -27 | A jam reply lands [src: brew/public/app.js:4826] |
| pop, bubble, boop, step, sweep, swish, peel, stick, sheetUp, sheetDown, ratchet, toggleOn, toggleOff, knock, ping, keep, drop | -38 to -27 | Opening, AI fixes, mentions, version steps, closing, stickers, sheets, switches [src: brew/tools/sfx/cues.json; brew/public/app.js:1536 to 1546] |

### Buzz's sound kit

| File | Name | Moment | Length | What you hear |
|---|---|---|---|---|
| bee/snd/logo.mp3 | Sonic logo | End cards, the stage, first open | 2.6 s | A bee zips upward and lands on two bright marimba notes [src: brand-directions/bee/motion.html v0] |
| bee/snd/cue-heart.mp3 | Dance for more | Heart, More like this | 0.9 s | One happy wing flutter and a soft wooden pop [src: brand-directions/bee/motion.html v0] |
| bee/snd/cue-ready.mp3 | Best blooms | Read finished, Monday drop | 1.4 s | A rising zip and a warm chime [src: brand-directions/bee/motion.html v0] |
| bee/snd/cue-handoff.mp3 | Pass the pollen | Brief copied | 1.2 s | A whoosh past left to right, then a paper card flick [src: brand-directions/bee/motion.html v0] |
| bee/snd/cue-error.mp3 | Bumped the window | Error, read cap | 1.3 s | A soft comic bonk on glass and a short confused buzz [src: brand-directions/bee/motion.html v0] |
| bee/snd/cue-caught.mp3 | The hive is humming | Caught up | 1.8 s | A contented buzz settling into three soft marimba notes [src: brand-directions/bee/motion.html v0] |

- All six were made as ElevenLabs sound effects on 25 October, no music bed and no words, levelled to about minus 16 LUFS. Wood, never metal, so nothing sounds like an alarm. [src: brand-directions/bee/snd/sound-log.json; brand-directions/bee/motion.html v0]
- Buzz voice is a designed ElevenLabs voice, option one of three, kept for its quick crisp read. Eight lines are recorded: paste, read, drop, heart, handoff, caught, error, tagline. [src: brand-directions/bee/snd/voice.json; brand-directions/bee/snd/sound-log.json]

### Buzz's motion

| Name | Pose | Timing | Sound |
|---|---|---|---|
| Idle | Master or small mark | 2.4 s loop, 6 pixels, 1.5 degrees | None [src: brand-directions/bee/motion.html v1] |
| Waggle | The drop | 1.1 s, twice, 6 degrees | Best blooms [src: brand-directions/bee/motion.html v1] |
| React | Same pose | 240 ms squash and spring | Dance for more, on heart [src: brand-directions/bee/motion.html v1] |
| Celebrate | Arms up | 900 ms, once | Best blooms or the hive is humming [src: brand-directions/bee/motion.html v1] |
| Bump | Window | 1.6 s, once | Bumped the window [src: brand-directions/bee/motion.html v1] |
| Wait | Reading | 3.2 s loop | None [src: brand-directions/bee/motion.html v1; brand-directions/bee/kit-skin.js motion] |
| Pass the pollen | Hand off, drifts 12 pixels toward the person | 3 s, once | Pass the pollen [src: brand-directions/bee/motion.html v1] |

- Every animation sits inside a reduced motion check, so reduced motion holds Buzz still. [src: brand-directions/bee/kit-skin.js motion]

## Tomorrow

### Sound

- v1, Changes: sound is off by default and plays only after the person turns it on in Settings, never on a page opened from a brief link. Today it is on by default.
- v1, Stays: today's 29 cue engine, the loudness levelling and the 6 dB small speaker rule, one tap one sound.
- v1, New: Buzz's five cues replace today's files at the matching moments, levelled to the product's own LUFS targets, not minus 16:

| Buzz cue | Replaces today's cue | Moment |
|---|---|---|
| Dance for more | heart | Heart a pick |
| Best blooms | ready | The read finishes, the Monday drop |
| Pass the pollen | tick, on brief copy only | Brief copied |
| Bumped the window | error | Something did not work, read cap |
| The hive is humming | win | Caught up |

- v1, Stays: every other cue stays as today's neutral sound. One new cue per new moment, reuse first.
- v1, Stays: Buzz's voice is for marketing, the stage and onboarding once. The product speaks in text.
- v1, Stays: no sound for loss. No sound for a missed week, ever.
- v2, New: a cue for posted after a yes, built from the same wing and wood family, only when posting exists.
- v3 and v4, Stays: no new sound family. New moments reuse the kit first.

### Motion

- v1, New: the slots move as the bee kit says. Today corner idle, reading rises 12 pixels over 400 ms then waits, the reveal waggles twice, celebrations pop up and leave after 2.5 s or any tap, errors bump once and stay until the way out is tapped, the brief page sign off is still.
- v1, Stays: Buzz never travels between slots and never flies across text or toward a button.
- v1, Stays: reduced motion holds every animation still.
- v1, New: reels use three templates: the six second video from Make it carries the brand and no bee, a fifteen second story in five beats of three seconds, a thirty second reel with the sonic logo in the last two seconds.

## How we do it

1. Reuse an existing cue first. A new cue gets one moment only.
2. Describe sound only: wings, wood, paper, glass. No music, no voice. Under two seconds, the logo under three.
3. Nothing that sounds like an alarm, a buzzer or a sting.
4. Render product cues through earshot so they pass the small speaker check.

```sh
cd /Users/param/Documents/ChatGPT/brew && tools/sfx/build.sh heart ready error win
```

5. Test on a phone speaker at half volume before it ships.
6. New voice lines use Buzz voice, under six seconds.

## Numbers

| Metric | Definition | Where measured | Status |
|---|---|---|---|
| Small speaker loss | dB a cue loses between full band and 350 Hz to 9 kHz | tools/sfx/build.py check | Live today, limit 6 dB |
| Sound on rate | Share of signed in people with sound on | The Sounds switch state, not logged today | Proposed |
| Blind sound pick | Share of founders who pick Buzz's logo as ready with no pictures | Founder tests | Proposed |

## Open

1. Off by default or on by default? Today it is on. Proposal: off by default as the bee book says, with a one time prompt after the first win to turn it on.
2. Should Buzz's cues replace today's files or sit on top as a character layer? Proposal: replace only the five matching files, so one tap is still one sound.
3. Buzz files are levelled to about minus 16 LUFS, louder than today's minus 23 to minus 38. Proposal: re-level the five Buzz cues to the product's targets before they ship.
