Play a sound
Point it at files or a whole folder and it picks one each time, in order or at random, never the same one twice running. Volume can follow how hard you hit it.
# out of the box
/System/Library/
Sounds/Sosumi.aiff Slap detection for Apple Silicon MacBooks.
Hit the laptop, it makes a noise. The interesting part is that it works at all — the sensor is undocumented, invisible to CoreMotion, and telling a slap from someone thumping the desk needs the gyroscope.
macOS 13+ · Apple Silicon laptops · M2 and later, or M1 Pro/Max
0.52 g 47.7 °/s fires
0.73 g 14.5 °/s ignored
Two real recordings, drawn on the same axes. The desk bump is the larger impact by 39 % and the detector throws it away — it barely rotates the machine.
The discriminator
A knock through the desk shakes the machine more than a slap on the lid does. Sort by how hard and you build something that fires at furniture.
Striking the lid twists it about the hinge, so the gyroscope sees a large rotation. A knock through the desk mostly slides the whole machine, and a trackpad click barely moves it at all — both stay flat on the rotation axis.
Neither axis works alone. Sort by acceleration and the desk bump outranks every slap. Sort by rotation alone and a trackpad click looks respectable, because it rotates about as much per unit of force as a slap does — it is simply tiny. The detector has to read both, and it does that with five statistics voting on whether the moment was an impact at all, then amplitude deciding how hard.
The thresholds were measured, not guessed. The obvious-looking constants for this problem sit below this machine's noise floor: a 0.005 g micro-shock floor lands around the 95th percentile of an idle laptop.
Sensitivity
40 recorded slaps, and 150 seconds of typing, trackpad clicks, desk bumps, lid movement and an untouched laptop that all have to stay silent. One slider moves between these.
The default.
| Slider | Caught | False positives | Character |
|---|---|---|---|
| 0.20 | 13/40 | 0 | Only a deliberate whack. |
| 0.35 | 19/40 | 0 | Never fires by accident. |
| 0.50 | 35/40 | 0 | The default. |
| 0.65 | 39/40 | 7 | Catches almost everything, desk bumps too. |
| 0.80 | 39/40 | 11 | Twitchy. |
| 1.00 | 40/40 | 18 | Anything that shakes the desk. |
The default sits where the corpus is still clean. Push it up and you buy the last few slaps with desk bumps. Typing never triggers a detection at any position.
Actions
Three kinds of response, each filtered by how hard the hit was. Every one of them can read the slap it is responding to.
Point it at files or a whole folder and it picks one each time, in order or at random, never the same one twice running. Volume can follow how hard you hit it.
# out of the box
/System/Library/
Sounds/Sosumi.aiff Any method, any headers, any body. The URL and the body are templated, so it can talk to Home Assistant, a Shortcut or an IFTTT hook without special-casing.
# POST body
{
"tier": "{{tier}}",
"g": {{peak_g}}
} The slap arrives twice over: as environment variables for shell one-liners, and as a JSON object on stdin for anything that would rather parse it.
$ osascript -e "set volume 0"
# $YAMETE_TIER → major
# $YAMETE_PEAK_G → 0.52 Detection is fast enough that a sound starts while the physical slap is still audible, and gets partly masked by it. The response wants to land after the impact, not on top of it. 200 ms was chosen by ear, and it is adjustable per action.
How many detectors agreed answers "was that an impact at all". How hard you hit it is amplitude, and that alone decides whether an action tagged major fires. Gating one on the other reported a real whack as a graze.
The app
Opening it starts detection, quitting it stops detection. The daemon does the real work over a unix socket; the window is a controller that attaches to it.
The window follows the system appearance rather than picking a look. A menu bar utility that ignores light and dark reads as broken rather than styled.
It ships the daemon inside itself and owns its lifetime, so there is nothing to install separately and nothing left running when you quit. If a daemon is already running the app attaches to it and leaves it alone.
You can also skip the app. The daemon runs on its own as a user LaunchAgent, and
the protocol is newline-delimited JSON — you can drive it by hand with nc -U.
On your Mac
Detection, config and logs stay in your home directory. There is no account, no Chipcolate cloud, and no analytics SDK. The only network paths are ones you configure.
Local only
Sensor samples are processed on-device. Optional scope telemetry is a local socket stream to the menu bar app, off when nobody is watching.
No account
No sign-up, no profile, no server we operate. Uninstall and delete a few paths
under ~/Library and it is gone.
Your actions
Sounds stay local. Webhooks and commands only talk to endpoints or programs you set — never to us by default.
Install
yamete probe says so plainly rather than hanging.
Signed and notarised · Apple Silicon · open the DMG and drag it across
It runs happily without the app, which is how the detector was developed. A user LaunchAgent keeps detection running with nothing on screen.
# is the sensor there, at what rate, decoding correctly
yamete probe
# live detections, with the five detector scores
yamete watch --scores
# run it permanently, independent of the app
yamete install --copy Everything — the detector, the corpus and the tuning tools — is at github.com/chipcolate/yamete.
Also from Chipcolate
Check out our other projects and products — same studio, different surfaces. Built with the same preference for ownership, clarity, and tools that stay out of the way.
Your loyalty cards. On your phone. That's it. Local-first wallet with no cloud, no accounts, and no tracking — open source under Apache 2.0.
tesserone.comYour touch, on objects that last. Logo, name or QR on real things made to order — from a single piece, no minimums.
makolate.storeYour brand comes first. Commission-free restaurant bookings, white-label guest pages, and guest data that stays yours — 86 the middlemen.
eighty-six.tech/en
Studio Who we are. Hardcore engineering and first-principles thinking — hardware, software and infrastructure, without the politics.
chipcolate.com