[{"data":1,"prerenderedAt":132},["ShallowReactive",2],{"blog-en-sound-design-without-audio-files":3},{"id":4,"title":5,"body":6,"cover":115,"date":116,"description":117,"draft":118,"extension":119,"locale":120,"meta":121,"navigation":122,"path":123,"seo":124,"stem":125,"tags":126,"__hash__":131},"blog\u002Fblog\u002Fen\u002Fsound-design-without-audio-files.md","Sound design without a single audio file",{"type":7,"value":8,"toc":106},"minimark",[9,13,18,21,24,30,34,37,40,48,51,54,61,64,68,71,74,77,81,84,87,90,93,96,100,103],[10,11,12],"p",{},"TaskAlarm has eleven sounds and zero audio files. meetre's onboarding has a dozen more and also zero audio files. Every chime, alarm and click in both apps is calculated from sine waves the moment it's first needed, written into a buffer, and played. I didn't do this to be clever. I did it because every sound pack I tried sounded like it belonged to a different app.",[14,15,17],"h2",{"id":16},"sound-is-copywriting-for-your-ears","Sound is copywriting for your ears",[10,19,20],{},"I spend a lot of time on the words in an interface. \"It's time!\" instead of \"ALERT: Task due.\" \"Is it really done?\" instead of \"Confirm completion.\" Then you pick a stock notification sound and it undoes all of it in half a second, because a shrill beep says \"ALERT\" no matter what the text says.",[10,22,23],{},"So both apps follow the same rule I use for copy: the sound has to match the personality. TaskAlarm's brand guide puts it as \"warm, round, never shrill.\" meetre's is quieter still. Once you write that down, a downloaded sound pack stops being an option, because nobody else made sounds for your exact tone.",[25,26,27],"blockquote",{},[10,28,29],{},"A sound is tone of voice. If the copy says \"you've got this\" and the chime says \"WRONG\", people believe the chime.",[14,31,33],{"id":32},"how-taskalarm-makes-a-bell","How TaskAlarm makes a bell",[10,35,36],{},"Every TaskAlarm sound is a short list of notes. Each note has a frequency, a start time, a length, a volume and a wave type. The \"it's time\" chime, for example, is C5, E5, G5 and C6 starting 0.11 seconds apart, with a soft low C4 underneath the last one. A rising major arpeggio. Hard to read as bad news.",[10,38,39],{},"The palette is C major and stays mostly between C4 and C6, roughly 262 Hz to 1047 Hz. That range alone does a lot: nothing gets high enough to pierce, nothing low enough to rumble through laptop speakers.",[10,41,42,43,47],{},"The bell itself is three sine waves. A fundamental, a copy detuned by a quarter of a percent so the two gently beat against each other (that's the warmth), and a quiet octave on top that fades fast for a bit of shimmer. Notes get a 12-millisecond attack so they bloom instead of snapping, and a short release so they don't click when they end. Then the whole mix runs through a simple low-pass filter around 2.8 kHz to sand off whatever brightness is left, and through a ",[44,45,46],"code",{},"tanh"," soft limiter so stacked notes can't clip.",[10,49,50],{},"The full set: a chime when something's due, a two-note nudge while it waits, an alarm when it's missed, a success sound, a tiny fanfare when the last task is done, a sleepy descending snooze, a bubbly pop when you add a task, a \"hey\" check-in, a soft heads-up sparkle, and two clicks called tick and tock.",[10,52,53],{},"The missed alarm is the one I tuned longest. It's three \"ding-dong\" pairs, E5 then C5, with a slightly harder wave. It has to be insistent enough that you can't ignore it, while still sounding like a doorbell rather than a smoke detector.",[10,55,56],{},[57,58],"img",{"alt":59,"src":60},"The four TaskAlarm screens, including the sound settings with preview buttons for Due, Done, Snooze and Missed.","\u002Fimages\u002Fblog\u002Ftaskalarm\u002Fcollage.png",[10,62,63],{},"The settings let you preview the important ones (Due, Done, Snooze, Missed), adjust volume and turn click sounds on or off. The clicks pair with trackpad haptics on Force Touch Macs, so a tap is something you feel and hear on every machine.",[14,65,67],{"id":66},"the-boring-parts-that-make-it-work","The boring parts that make it work",[10,69,70],{},"Two details nobody will ever notice unless I get them wrong.",[10,72,73],{},"The audio engine stops itself five seconds after the last sound. A to-do app has no business keeping your Mac's audio hardware awake all day for a click it might play at 3 pm.",[10,75,76],{},"And when the output device changes, say you plug in headphones, the engine stops and restarts lazily on the next sound instead of trying to play into a graph that no longer exists.",[14,78,80],{"id":79},"meetre-bells-only-at-the-door","meetre: bells only at the door",[10,82,83],{},"meetre is a meeting recorder. It sits next to your calls, so its everyday rule is simple: silence. The only sounds you hear in normal use are the system's own notifications. Making noise during somebody's meeting is the fastest way to get uninstalled.",[10,85,86],{},"The one exception is onboarding, the first few minutes after install, where a full-screen dark scene says \"Hi.\" and walks you through setup. There, sound helps it feel like a welcome rather than a settings dialog.",[10,88,89],{},"These bells are built differently from TaskAlarm's. Each note is a sine fundamental plus a soft octave and a quiet overtone at 2.76 times the frequency, which is what makes a struck bell sound like a bell rather than a flute. Everything goes through a medium-hall reverb at 28 percent wet. And the notes come from a major pentatonic scale, which has one great property: any combination of its notes sounds friendly. When cues overlap because someone clicks fast, they still sound like they meant to.",[10,91,92],{},"Each scene gets its own cue. \"Hi.\" is a slow rising major-ninth arpeggio. \"It listens.\" is a quick rising figure, like a voice level coming up. \"It writes it down.\" is a sprinkle of tiny typing ticks with one \"done writing\" note at the end. \"It stays on this Mac.\" is a warm low chord with a soft latch click, like a lock closing. Underneath it all breathes a long ambient pad. Install steps each play one note higher than the last, success is a bright flourish, and failure is two soft descending notes.",[10,94,95],{},"The mixer sits at 0.55, about minus five decibels, because nothing in a first-run experience should startle anyone. There's a mute button in the bottom-right corner, and no sound ever loops.",[14,97,99],{"id":98},"what-id-tell-anyone-trying-this","What I'd tell anyone trying this",[10,101,102],{},"Start with the words. Decide how your app talks, then make the sounds say the same thing. Pick a scale before you pick notes. Low-pass more than you think. And write the rules down, because \"it should sound warm\" turns into \"C major, C4 to C6, filtered at 2.8 kHz\" the moment someone has to build it.",[10,104,105],{},"I now have opinions about the frequency of a to-do list's doorbell, which I did not expect at 24.",{"title":107,"searchDepth":108,"depth":108,"links":109},"",2,[110,111,112,113,114],{"id":16,"depth":108,"text":17},{"id":32,"depth":108,"text":33},{"id":66,"depth":108,"text":67},{"id":79,"depth":108,"text":80},{"id":98,"depth":108,"text":99},"\u002Fimages\u002Fblog\u002Fmeetre\u002Fonboarding-hello.png","2026-10-16","Both of my new Mac apps make every sound from scratch at runtime, out of sine waves and a bit of maths. Why I did it, how a reminder chime and an onboarding bell are actually built, and why sound is tone of voice you can hear.",false,"md","en",{},true,"\u002Fblog\u002Fen\u002Fsound-design-without-audio-files",{"title":5,"description":117},"blog\u002Fen\u002Fsound-design-without-audio-files",[127,128,129,130],"Sound","UX","Interaction","macOS","myHLQbAAqvB91DZS4iR5VoRQcaEZTnc5e5dp-k9C72E",1792165383084]