<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>KHTDR – Web-Audio</title><description/><link>https://khtdr.com/tags/web-audio.html</link><lastBuildDate>Sun, 27 Sep 2026 00:00:00 -0600</lastBuildDate><language>en-us</language><managingEditor>mazzarelli@gmail.com (Joey Mazzarelli)</managingEditor><webMaster>mazzarelli@gmail.com (Joey Mazzarelli)</webMaster><atom:link href="https://khtdr.com/tags/web-audio/index.xml" rel="self" type="application/rss+xml"/><item><title>Zazen</title><description> Zazen is a meditation timer for Android, and that is all it is. You pick a length, it gives you a few seconds to settle in, a bell starts the sit, a soft bed of noise plays underneath, and a bell ends it. There are no accounts, stats, streaks, or history, and it never nags you to sit.
Get the app Android APK: Download Zazen 1.0.0 (~41 MB, Android 7.0 or newer, 64-bit phones) Google Play: not published. This is a direct download. iOS: not planned Point your phone's camera at this to download the APK (~41&nbsp;MB). If you want to confirm the file you downloaded is the one I published, its SHA-256 is:</description><link>https://khtdr.com/zazen/</link><guid>https://khtdr.com/zazen/</guid><pubDate>Sun, 27 Sep 2026 00:00:00 -0600</pubDate><author>mazzarelli@gmail.com (Joey Mazzarelli)</author><category>Apps</category><content:encoded>
&lt;![CDATA[
&lt;p&gt;
&lt;strong&gt;Zazen&lt;/strong&gt; is a meditation timer for Android, and that is all it is. You pick a length, it gives
you a few seconds to settle in, a bell starts the sit, a soft bed of noise plays underneath, and
a bell ends it. There are no accounts, stats, streaks, or history, and it never nags you to sit.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Get the app
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;Android APK: &lt;a href="https://khtdr.com/zazen/zazen-1.0.0.apk"&gt;Download Zazen 1.0.0&lt;/a&gt; &lt;em&gt;(~41 MB, Android 7.0 or newer, 64-bit phones)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Google Play: &lt;em&gt;not published. This is a direct download.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;iOS: &lt;em&gt;not planned&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure style="margin:1.5rem 0;text-align:center"&gt;
&lt;a href="https://khtdr.com/zazen/zazen-1.0.0.apk"&gt;
&lt;img src="https://khtdr.com/zazen/download-qr.svg" alt="QR code linking to the Zazen APK download"
width="200" height="200"
style="width:200px;height:200px;background:#fff;padding:10px;border-radius:8px;display:inline-block" /&gt;
&lt;/a&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75;margin-top:0.5rem"&gt;
Point your phone's camera at this to download the APK (~41&amp;nbsp;MB).
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
If you want to confirm the file you downloaded is the one I published, its SHA-256 is:&lt;/p&gt;
&lt;pre class="example"&gt;
7dab571f7849620cac3079797371bc3d60fd4ad7416774b9b054f8b854fc499d
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
Install
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;p&gt;
Android only installs apps from the Play Store until you give permission, and you give it one
app at a time.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the download link above on your phone.&lt;/li&gt;
&lt;li&gt;When it finishes, tap the downloaded file. Android will say your browser (or file manager)
isn&amp;#39;t allowed to install unknown apps. Tap &lt;strong&gt;Settings&lt;/strong&gt;, turn on &lt;strong&gt;Allow from this source&lt;/strong&gt;, then
go back.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Play Protect may warn you that it doesn&amp;#39;t recognize the developer. That&amp;#39;s expected, because
the app isn&amp;#39;t in the Play Store. Tap &lt;strong&gt;More details&lt;/strong&gt;, then &lt;strong&gt;Install anyway&lt;/strong&gt;, if you&amp;#39;re
comfortable with that.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can turn &lt;strong&gt;Allow from this source&lt;/strong&gt; back off afterward. It isn&amp;#39;t needed for updates.&lt;/p&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
Updates
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;p&gt;
Most updates arrive on their own. The app checks for one when it opens and downloads it in the
background. The update takes effect the next time you open the app, never in the middle of a
sit. You only need to download a new APK when the version number on this page changes. You can
also check for an update yourself under &lt;strong&gt;settings → Updates&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
How a sit goes
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pick a length.&lt;/strong&gt; 5, 10, 20, or 30 minutes, or your own length from 1 to 120.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Settle in.&lt;/strong&gt; The screen counts down a short pause (10 seconds unless you change it). Toward
the end, a bowl sings as it&amp;#39;s rubbed around its rim, so you already know the bell&amp;#39;s pitch
when it&amp;#39;s struck.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The start bell.&lt;/strong&gt; Once it has rung out, the bed of noise fades in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sit.&lt;/strong&gt; If you like, a soft bell marks the halfway point, or every 5 or 10 minutes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The end bell.&lt;/strong&gt; The noise either settles down under the bell or fades out before it, so the
bell rings alone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can cancel at any point, and the sounds fade out rather than cut off. The sit keeps time by
the clock, not by counting seconds, so locking the phone or switching apps doesn&amp;#39;t throw it
off. The whole sit is scheduled the moment you tap, so you still hear the bells with the screen
locked.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-2"&gt;
&lt;h2 id="headline-5"&gt;
The sounds
&lt;/h2&gt;
&lt;div id="outline-text-headline-5" class="outline-text-2"&gt;
&lt;p&gt;
I really built this to have a clean place to play with sound, and there are no recordings in
it. Every sound is synthesized on the phone as it plays, using the Web Audio API
(through &lt;a href="https://docs.swmansion.com/react-native-audio-api/"&gt;react-native-audio-api&lt;/a&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The bells&lt;/strong&gt; are built from a handful of sine waves, one for each ringing tone of a real bell,
each fading at its own rate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The rim&lt;/strong&gt; is the same tones, plus a band of noise for the friction of the mallet going around
the bowl.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The bed&lt;/strong&gt; comes in three characters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;drift&lt;/em&gt;: pink, green, and brown noise slowly moving around each other and across the
stereo field, so it is never quite still. Underneath is an optional binaural beat, which you
only hear with headphones.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;pink&lt;/em&gt;: plain pink noise, like steady rain.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;brown&lt;/em&gt;: plain brown noise, darker, closer to surf.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nothing ever starts or stops at full volume. Every sound ramps in and out, because a click is
the last thing you want to hear ten minutes into a sit.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-6" class="outline-2"&gt;
&lt;h2 id="headline-6"&gt;
Settings
&lt;/h2&gt;
&lt;div id="outline-text-headline-6" class="outline-text-2"&gt;
&lt;p&gt;
A small settings dialog holds everything you can change:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the bells on or off, their volume, and the interval bells&lt;/li&gt;
&lt;li&gt;the background noise on or off, its character, its volume, and the binaural beat&lt;/li&gt;
&lt;li&gt;how the noise ends: settling under the end bell, or fading out before it&lt;/li&gt;
&lt;li&gt;the settling-in pause: 5, 10, or 30 seconds&lt;/li&gt;
&lt;li&gt;your own sit length&lt;/li&gt;
&lt;li&gt;whether the app closes itself once the last sound fades&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-7" class="outline-2"&gt;
&lt;h2 id="headline-7"&gt;
Privacy
&lt;/h2&gt;
&lt;div id="outline-text-headline-7" class="outline-text-2"&gt;
&lt;p&gt;
Zazen doesn&amp;#39;t know who you are and doesn&amp;#39;t keep track of your sits. The only thing it saves is
your settings, in a small file on your phone. There are no ads, no analytics, no crash
reporting, and no notifications. The only thing it ever sends over the internet is the check
for app updates.&lt;/p&gt;
&lt;p&gt;
The app is free. It has no paid features, and I have no plans to add any.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
]]&gt;</content:encoded></item></channel></rss>