FetchBuzzScoopOchoSeeti
Snapshots

Ocho sounds wet and bubbly, with a suction cup letting go

Being built
  • Sonic logo: a suction cup lets go of glass, a pop, a few bubbles.
  • Five wet cues map onto today's moments, and the voice is rare.
  • Sound starts off, offered once after the first heart.
  • One body bobs, squashes and hops in fixed slots, all off for reduced motion.
  • Describe sound only: wet, rubbery, bubbly or paper, under two seconds.
29cues in the live product
Your call

Should sound start off and be offered once after the first heart?

Brand · 4.12 · Ocho

Sound and motion, Ocho

DraftLast checked 2026-10-26Owner Param

Answer

What the product plays and how it moves today, and the sound and motion Ocho brings tomorrow: a sonic logo of a suction cup letting go, five wet and bubbly cues mapped onto today's moments, a rare voice, and one body that bobs, squashes and hops in fixed slots, all off for reduced motion.

Today

What the product plays

  • 29 designed cues rendered offline with earshot from tools/sfx/cues.json into public/sfx, one mp3 each. brew/tools/sfx/cues.json:1-32; memory brew-sounds
  • Each cue is levelled by loudness through a small speaker, from minus 38 for ratchet to minus 23 for live and win, never peak normalised. brew/tools/sfx/cues.json:2,6,23,24; memory brew-sounds
  • A synthesised version of every cue stays as the fallback when a file is missing. brew/public/app.js:1481-1513,1524
  • Sound is on unless someone turns it off with the Sounds switch in the account menu, saved per brand in the browser. brew/public/app.js:1470,2939
  • The files load on the first tap or key, or 12 seconds after the page loads. brew/public/app.js:1522
  • One tap is one sound. Background cues give way to any cue played in the last 150 ms, and screens that change by themselves stay silent. brew/public/app.js:1523-1524,1528-1529; memory brew-sounds
  • Repeats get a small pitch drift so they never sound stamped. brew/public/app.js:1525
  • Phones up to 760 pixels wide get a light vibration with some cues. brew/public/app.js:1526
  • Nothing plays while the tab is hidden. brew/public/app.js:1524

When the main cues play

Cue Moment today
heart, unheart Heart a card, and undo it brew/public/app.js:1548
tick Anything copied to the clipboard, including a brief brew/public/app.js:1532
send Sharing, a jam pick, the store link form brew/public/app.js:1536-1537,1558
live Shipping from the jam, share targets brew/public/app.js:1536
ready A creative or a long job is ready brew/public/app.js:4684,4974
error A make that failed brew/public/app.js:4684,4995
win Onboarding finished brew/public/app.js:889
approve An approval, and turning sound back on brew/public/app.js:1544,2939
boop Tapping an agent face, which squishes brew/public/app.js:1551

Motion today

  • Every tap that waits on the server shows one loader on the button, after 140 ms and for at least 380 ms. brew/public/loader.js:1-8; memory brew-loader
  • No character moves in the product. brand-directions/BRIEF.md section 3.8

Ocho's sound, as made

File Name Moment Length What you hear
snd/logo.mp3 Sonic logo End cards, the stage, first open 1.8 s A suction cup lets go of glass, a soft round pop, a few bubbles. An arm coming free brand-directions/octopus/motion.html v0; brand-directions/octopus/snd/sound-log.json logo
snd/cue-heart.mp3 Stick it Heart, More like this 0.8 s A squishy suction pop and one bright rising bubble brand-directions/octopus/motion.html v0
snd/cue-ready.mp3 Arms full Read finished, Monday drop 1.2 s Three wet blips rising in pitch brand-directions/octopus/motion.html v0
snd/cue-handoff.mp3 Free an arm Brief copied 1.2 s A paper slide, then a soft suction release brand-directions/octopus/motion.html v0
snd/cue-error.mp3 Knot Error, read cap 1.0 s A comic rubbery squeak and a small blub. Never an alarm brand-directions/octopus/motion.html v0
snd/cue-caught.mp3 Arms free Caught up 1.8 s A slow calm stream of bubbles ending in one low blip brand-directions/octopus/motion.html v0
  • All made in ElevenLabs as sound effects, no music beds, no words, levelled to about minus 16 LUFS. brand-directions/octopus/motion.html v0; brand-directions/octopus/brand.html b5
  • The voice, Ocho voice, was designed in ElevenLabs: an adult in its thirties, bright and quick, slightly too fast, warm, a little breathless, mid pitch, never shrill. Option one of three was kept, the quickest read. brand-directions/octopus/snd/voice.json; brand-directions/octopus/character.html c6
  • Eight voice files exist: the tagline and seven moment lines, paste, read, drop, heart, handoff, caught and error. brand-directions/octopus/system.md s4; brand-directions/octopus/snd listing
  • The heart line was recorded again without a fixed number of new ideas, and the read line again to say about three to four minutes. brand-directions/octopus/snd/sound-log.json line-heart 02:57:51, line-read 09:05:52; brand-directions/book/content/f.js:1024

Ocho's motion, as made

State Motion Loops
Idle Bob 5 pixels, lean 1.2 degrees, 3.2 s, pivot low on the body Yes brand-directions/octopus/kit-skin.js motion; brand-directions/octopus/motion.html v1
React Squash to 107 by 91, spring back in 280 ms, overshoot 1.06 No brand-directions/octopus/character.html c7
Celebrate Celebration pose, hop 12 pixels, 950 ms Once brand-directions/octopus/kit-skin.js motion
Wait Reading pose, sway 2.5 degrees, 1.2 s Until done brand-directions/octopus/kit-skin.js motion
Free an arm Hand off pose drifts toward the person taking the brief, 3 s Once brand-directions/octopus/motion.html v1
Knot Knot pose wobbles twice, 2.4 s Once brand-directions/octopus/kit-skin.js motion
Frantic 0.32 s jitter, 3 degrees Marketing and the stage only brand-directions/octopus/character.html c7

Every animation sits behind the reduced motion check, which holds Ocho still and swaps poses only. brand-directions/octopus/kit-skin.js motion; brand-directions/octopus/character.html c7

Tomorrow

Sound

  • v1 Changes: sound starts off, and plays only after someone turns it on in Settings. Today it starts on. brand-directions/octopus/brand.html b5
  • v1 Stays: the 29 crisp cues for ordinary taps, the loudness levelling, the synth fallback and one tap one sound.
  • v1 Changes: five moments take Ocho's cues instead of today's: heart takes Stick it, a finished read takes Arms full, a copied brief takes Free an arm, an error or the read cap takes Knot, caught up takes Arms free.
  • v1 New: Ocho's cues are levelled to the same small speaker loudness as today's set before they ship, since the books level them to about minus 16 LUFS on a different rule.
  • v1 New: no sound on a page opened from a brief link, ever.
  • v1 Stays: no sound for loss. There is no sound for a missed week.
  • v1 New: the voice plays only in marketing, the stage and onboarding once. The product speaks in text, and the voice never reads numbers.
  • v2 New: a cue for a post that goes out after a yes, made by the new cue checklist below, never an alarm.
  • v3 New: a cue for How it went, if a moment needs one. Reuse first.

Motion

  • v1 New: Ocho moves only in its slots, one action at a time, and never travels between slots to point at a button.
  • v1 New, by slot:
    • Today corner, 40 to 56 pixels: fades in, idles, a tap reacts.
    • Reading your store, 120 to 180: rises 12 units over 400 ms, then waits.
    • The reveal, 160: squash in over 280 ms.
    • Empty states, 96: a slower 4 s sway.
    • Celebrations, 120: pops in over 300 ms and leaves after 2.5 s or any tap.
    • Errors and cap, 96: knot once, stays until the way out is tapped.
    • Brief page, 32: still.
  • v1 Stays: today's button loader stays for every server wait.
  • v4 Stays: frantic motion never enters the product.

How we do it

  1. Add a cue only for a new moment, and reuse an old cue first.
  2. Describe sound only, wet, rubbery, bubbly or paper, with no music and no voice, under two seconds, the sonic logo under three.
  3. Never an alarm, a buzzer or a loss sound. Test on a phone speaker at half volume.
  4. For the product, add the cue to cues.json and render it with the team's build, then check it loses no more than 6 dB through a small speaker:
    cd /Users/param/Documents/ChatGPT/brew && tools/sfx/build.sh
    
  5. New voice lines use Ocho voice, stay under eight seconds, read aloud first, and level to the same loudness as the rest.
  6. Log every generated file in brand-directions/octopus/snd/sound-log.json.
  7. Every animation goes inside the reduced motion media query.

Numbers

Metric Definition Where measured Status
Cue loudness spread Gap between the quietest and loudest cue through a small speaker The earshot build check in tools/sfx Today minus 38 to minus 23 for the 29 cues
Sound on rate Share of active brands with sound switched on The Sounds switch state Proposed, not tracked
Blind sound match Founders who pick Arms full as your week is ready with no picture The blind sound test Proposed, not run

Open

  1. Should sound start off, as Ocho's books say, or stay on as the product does today? Proposal: start off, and offer it once after the first heart.
  2. Do Ocho's five cues replace today's heart, ready, tick, error and win, or play alongside them? Proposal: replace them on those five moments only and keep the crisp set for everything else.
  3. Should the voice ever play inside the product? Proposal: once, on the first read, then text only.
Sources
  • brew origin/main a559de6: tools/sfx/cues.json:1-32; tools/sfx/build.sh; public/sfx listing; public/app.js:1468-1560, 889, 2939, 4684, 4974
  • brand-directions/octopus/motion.html v0, v1, v2
  • brand-directions/octopus/brand.html b4 motion principles, b5
  • brand-directions/octopus/character.html c6 voice, c7
  • brand-directions/octopus/kit-skin.js motion
  • brand-directions/octopus/snd/sound-log.json, snd/voice.json
  • brand-directions/octopus/system.md s1, s4, s7
  • brand-directions/book/content/f.js:919-1100 f-5
  • memory brew-sounds, brew-loader

Source file content/brand/sound-and-motion.octopus.md · For agents: Markdown · JSON