<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://dev1galaxy.org/extern.php?action=feed&amp;tid=7605&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Dev1 Galaxy Forum / The Absurdist Comedy]]></title>
		<link>https://dev1galaxy.org/viewtopic.php?id=7605</link>
		<description><![CDATA[The most recent posts in The Absurdist Comedy.]]></description>
		<lastBuildDate>Sun, 23 Nov 2025 20:40:31 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Re: The Absurdist Comedy]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=60007#p60007</link>
			<description><![CDATA[<p>To @tux_99<br />You&#039;re absolutely right — ALSA&#039;s documentation is notoriously opaque, and that confusion has fueled decades of misconceptions. The irony? The default configuration has quietly handled full-duplex and software mixing for years. Tools like fftrate are excellent enhancements — they improve resampling quality (defaults.pcm.rate_converter &quot;fftrate&quot;) — but they don’t fix broken audio; they refine an already working system. So while fftrate is a smart tweak for audiophiles, the real issue isn’t the tech — it’s that the documentation never told anyone it already worked.<br />_https://dev1galaxy.org/viewtopic.php?id=7142<br /><span class="bbc">arateconf</span><br />_https://dev1galaxy.org/viewtopic.php?id=6644<br />modified <span class="bbc">dmix</span> + <span class="bbc">dsnoop</span><br />_https://dev1galaxy.org/viewtopic.php?id=7587</p><p>To@Altoid<br />I know recompiling packages isn’t everyone’s idea of fun, but this one’s worth it. Rebuilding libasound2-plugins without PulseAudio isn’t just a technical tweak — it’s a small act of digital self-determination. No more phantom plugins trying to phone home to a server that isn’t there. No more audio routing chaos. Just clean, direct ALSA control.</p><p>And once it’s done, it stays done. No files sneaking back on update. It’s stable, silent, and free.</p><p>The process? A few commands, one .deb, and you’re set for life. Freedom isn’t always easy — but it is simple.<br />_https://dev1galaxy.org/viewtopic.php?id=7523</p><div class="codebox"><pre><code>$ ls -1 /usr/share/alsa/alsa.conf.d
10-rate-lav.conf
10-samplerate.conf
10-speexrate.conf
50-arcam-av-ctl.conf
50-jack.conf
50-oss.conf
60-a52-encoder.conf
60-speex.conf
60-upmix.conf
60-vdownmix.conf
98-usb-stream.conf</code></pre></div><div class="codebox"><pre><code>$ ls -l -1 /etc/alsa/conf.d
total 0
lrwxrwxrwx 1 root root 44 Jul  1  2024 10-rate-lav.conf -&gt; /usr/share/alsa/alsa.conf.d/10-rate-lav.conf
lrwxrwxrwx 1 root root 46 Jul  1  2024 10-samplerate.conf -&gt; /usr/share/alsa/alsa.conf.d/10-samplerate.conf
lrwxrwxrwx 1 root root 45 Jul  1  2024 10-speexrate.conf -&gt; /usr/share/alsa/alsa.conf.d/10-speexrate.conf
lrwxrwxrwx 1 root root 48 Jul  1  2024 50-arcam-av-ctl.conf -&gt; /usr/share/alsa/alsa.conf.d/50-arcam-av-ctl.conf
lrwxrwxrwx 1 root root 40 Jul  1  2024 50-jack.conf -&gt; /usr/share/alsa/alsa.conf.d/50-jack.conf
lrwxrwxrwx 1 root root 39 Jul  1  2024 50-oss.conf -&gt; /usr/share/alsa/alsa.conf.d/50-oss.conf
lrwxrwxrwx 1 root root 47 Jul  1  2024 60-a52-encoder.conf -&gt; /usr/share/alsa/alsa.conf.d/60-a52-encoder.conf
lrwxrwxrwx 1 root root 41 Jul  1  2024 60-speex.conf -&gt; /usr/share/alsa/alsa.conf.d/60-speex.conf
lrwxrwxrwx 1 root root 41 Jul  1  2024 60-upmix.conf -&gt; /usr/share/alsa/alsa.conf.d/60-upmix.conf
lrwxrwxrwx 1 root root 44 Jul  1  2024 60-vdownmix.conf -&gt; /usr/share/alsa/alsa.conf.d/60-vdownmix.conf
lrwxrwxrwx 1 root root 46 Jul  1  2024 98-usb-stream.conf -&gt; /usr/share/alsa/alsa.conf.d/98-usb-stream.conf</code></pre></div><div class="codebox"><pre><code>$ apt-file find 99-pulseaudio-default.conf.example
libasound2-plugins: /etc/alsa/conf.d/99-pulseaudio-default.conf.example</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Sun, 23 Nov 2025 20:40:31 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=60007#p60007</guid>
		</item>
		<item>
			<title><![CDATA[Re: The Absurdist Comedy]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=60004#p60004</link>
			<description><![CDATA[<div class="quotebox"><blockquote><div><p>But ALSA it not without blame, while it works well it has really awful/cryptic documentation which probably is the main reason why most people don&#039;t understand all of it&#039;s capabilities (myself included).</p></div></blockquote></div><p>The API documentation is an absolute nightmare. In fact, the only real &quot;documentation&quot; is the source comments. They get scraped by doxygen and posted to the ALSA site, but most of the links from the index page just go to <a href="https://www.alsa-project.org/alsa-doc/alsa-lib/mixer.html" rel="nofollow">blank pages</a>. It&#039;s been this way for years!</p><p>At least there&#039;s <em>some</em> online documentation for the C API, I guess. ALSA has an official set of Python bindings which wrap essentially the entire C API. The ALSA devs call it &quot;pyalsa,&quot; but if you search for that name, you will find only a completely unrelated, unfinished, decade-old hobbyist project. (in fact, I think there might be <em>two</em> of them!) There is absolutely no online documentation for the <em>real</em> Python ALSA bindings. In fact, the only way to read the documentation is from <em>within Python itself.</em></p><p>Unfortunately, the ALSA bindings also seem pretty buggy. <span class="bbc">get_volume</span> works, but <span class="bbc">get_volume_dB</span> always seems to return zero. Maybe I&#039;m using it wrong, but the sparse documentation certainly doesn&#039;t give any hints. Attempting to use the mixer callback facility invariably results in the Python interpreter crashing.</p><div class="quotebox"><blockquote><div><p>Rather than querying ALSA’s actual device topology using snd_device_name_hint(), they sidestepped proper enumeration entirely. The result? A single, fictional “default” device is reported — not discovered, but invented.</p></div></blockquote></div><p>I saw some confusing things when I was looking at other people&#039;s mixer code. There seemed to be this persistent belief that you had to open the <span class="bbc">snd_hctl</span> device before opening the <span class="bbc">snd_mixer</span> interface. I have no idea where they got this idea, but it&#039;s completely unnecessary.</p><p>Even the ALSA devs don&#039;t fully implement their own API. I have a card that shows the &quot;Mic Boost&quot; control twice in alsamixer. The element shows up during both capture and playback enumeration, but it&#039;s marked as &quot;common.&quot; The application should check for this attribute and only show the control once.</p>]]></description>
			<author><![CDATA[dummy@example.com (stultumanto)]]></author>
			<pubDate>Sun, 23 Nov 2025 20:07:42 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=60004#p60004</guid>
		</item>
		<item>
			<title><![CDATA[Re: The Absurdist Comedy]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=60003#p60003</link>
			<description><![CDATA[<p>Hello:</p><div class="quotebox"><cite>igorzwx wrote:</cite><blockquote><div><p>... points users to /etc/alsa/conf.d/, a directory that often doesn’t exist or isn’t used, while the real defaults live in /usr/share/alsa/.</p></div></blockquote></div><p>In my Daedalus install (originally Jesse ca. 2017 and dist-upgraded) <span class="bbc">/etc/alsa/conf.d</span> has 12 symlinks to the same number of [*.conf] files in <span class="bbc">/usr/share/alsa/alsa.conf.d</span> plus a file not linked to any other: <span class="bbc">99-pulseaudio-default.conf.example</span></p><div class="codebox"><pre><code>$ ls -1 /usr/share/alsa/alsa.conf.d
10-rate-lav.conf
10-samplerate.conf
10-speexrate.conf
50-arcam-av-ctl.conf
50-jack.conf
50-oss.conf
50-pulseaudio.conf
60-a52-encoder.conf
60-speex.conf
60-upmix.conf
60-vdownmix.conf
98-usb-stream.conf
$ </code></pre></div><div class="codebox"><pre><code>$ ls -1 /etc/alsa/conf.d
10-rate-lav.conf
10-samplerate.conf
10-speexrate.conf
50-arcam-av-ctl.conf
50-jack.conf
50-oss.conf
50-pulseaudio.conf
60-a52-encoder.conf
60-speex.conf
60-upmix.conf
60-vdownmix.conf
98-usb-stream.conf
99-pulseaudio-default.conf.example
$ </code></pre></div><div class="codebox"><pre><code>$ cat /etc/alsa/conf.d/99-pulseaudio-default.conf.example
# Default to PulseAudio

pcm.!default {
    type pulse
    hint {
        show on
        description &quot;Default ALSA Output (currently PulseAudio Sound Server)&quot;
    }
}

ctl.!default {
    type pulse
}
$ </code></pre></div><p>Best,</p><p>A.</p>]]></description>
			<author><![CDATA[dummy@example.com (Altoid)]]></author>
			<pubDate>Sun, 23 Nov 2025 19:56:56 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=60003#p60003</guid>
		</item>
		<item>
			<title><![CDATA[Re: The Absurdist Comedy]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=60002#p60002</link>
			<description><![CDATA[<p>Well said, since it&#039;s inception I have almost always only used ALSA directly, PA is one of those things I disable right after installation (except in VMs, as I can&#039;t be bothered) and I still haven&#039;t understood what the purpose of PA or Pipewire is, i.e. what do they offer that ALSA doesn&#039;t offer already.</p><p>But ALSA it not without blame, while it works well <strong>it has really awful/cryptic documentation</strong> which probably is the main reason why most people don&#039;t understand all of it&#039;s capabilities (myself included).</p>]]></description>
			<author><![CDATA[dummy@example.com (tux_99)]]></author>
			<pubDate>Sun, 23 Nov 2025 19:51:04 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=60002#p60002</guid>
		</item>
		<item>
			<title><![CDATA[The Absurdist Comedy]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=59999#p59999</link>
			<description><![CDATA[<p>The situation possesses all the hallmarks of a particularly British sitcom with a distinct whiff of the absurd: a comedy of errors where everything technically works, yet nothing functions as expected, all because no one is quite looking at the same page — though, ironically, the instructions were printed in bold type for over a decade.</p><p><strong>1. The Setup</strong>&#160; <br />&#160; For years, ALSA has quietly shipped with a fully functional software mixer — powered by <span class="bbc">dmix</span>, <span class="bbc">dsnoop</span>, and <span class="bbc">asym</span> — enabled by default in Debian, Devuan, and their derivatives. Full-duplex audio (simultaneous playback and recording) works out of the box. You can test it with a simple terminal command:</p><div class="codebox"><pre><code>arecord -f cd -V mono | aplay</code></pre></div><p>&#160; If you see a <strong>VU</strong> meter dancing merrily across your screen, congratulations — your system has been quietly and competently handling bidirectional audio without any fuss. No configuration required. It just works.<br />&#160; <br /><strong>2. The Misunderstanding</strong>&#160; <br />&#160; Enter the developers of <em>cubeb</em>, the audio backend used by Firefox and other web-centric applications. In their implementation (cubeb_alsa.c:1407–1455), they appear to have treated ALSA not as a mature, self-sufficient audio architecture, but as a bare-bones fallback — a last resort when PulseAudio isn’t available. Rather than querying ALSA’s actual device topology using <span class="bbc">snd_device_name_hint()</span>, they sidestepped proper enumeration entirely. The result? A single, fictional “default” device is reported — not discovered, but <em>invented</em>.<br />&#160; <br /><strong>3. The Irony</strong>&#160; <br />&#160; Here’s the punchline: cubeb <em>does</em> successfully open and use ALSA’s default PCM device (cubeb_alsa.c:76), which in turn leverages the very same <span class="bbc">asym</span> plugin that seamlessly routes playback through <span class="bbc">dmix</span> and capture through <span class="bbc">dsnoop</span>. The system works — it’s using the full power of ALSA’s default configuration.&#160; <br />&#160; Yet, when asked to <em>describe</em> what it’s using, cubeb confidently declares:<br />&#160; <br />- “This device supports <strong>10,000 channels.</strong>”<br />- “Latency? Oh, <strong>zero</strong> — perfectly instantaneous.”<br />- “Sample rate? A firm <strong>48,000 Hz</strong>, and no questions asked.”&#160; <br />&#160; It’s like a waiter who serves you a perfectly cooked meal from a five-star kitchen but insists the dish was microwaved and made for a hundred people.</p><p><strong>4. The Cascade</strong>&#160; <br />&#160; This small fiction snowballs into a full-blown mythos:</p><p>- <strong>Community wikis</strong> (Gentoo, Arch) propagate elaborate <span class="bbc">~/.asoundrc</span> configurations, as if the default setup were broken or incomplete — when in fact, most of these configs <em>downgrade</em> functionality, disabling <span class="bbc">dmix</span>, <span class="bbc">dsnoop</span>, or <strong>full-duplex</strong> support.<br />- <strong>Official documentation</strong> (e.g., Debian Wiki) points users to <span class="bbc">/etc/alsa/conf.d/</span>, a directory that often doesn’t exist or isn’t used, while the real defaults live in <span class="bbc">/usr/share/alsa/</span>.<br />- The <strong>ALSA Wiki</strong> itself offers examples that encourage users to reinvent the wheel — often poorly — reinforcing the idea that ALSA needs fixing.<br />- A widespread belief persists that <strong>ALSA cannot function without PulseAudio</strong> — despite decades of evidence to the contrary.</p><p><strong>5. The Punchline</strong>&#160; <br />&#160; And so, the final irony:</p><p>- <strong>YouTube videos play without issue</strong> — simple playback, no problem.<br />- <strong>Zoom’s standalone app works flawlessly</strong> — it speaks ALSA’s language directly, bypassing the fiction.<br />- But Zoom’s web client fails — not because the audio system is broken, but because <em>cubeb</em> lies about what it sees. It doesn’t expose the real capabilities of the <span class="bbc">default</span> device, leaving the web application blind.</p><p>It’s a classic farce: the hardware works, the kernel works, ALSA works, and even cubeb <em>sort of</em> works — yet the whole edifice collapses under the weight of misinformation.</p><h5>The Absurdity</h5><p>The true absurdity lies in the fact that <strong>everyone is correct — in their own little world.</strong></p><p>- <strong>ALSA</strong> functions perfectly — proven by <span class="bbc">aplay</span> and <span class="bbc">arecord</span> running in tandem.<br />- <strong>cubeb</strong> opens the audio device successfully — it’s not failing, it’s just lying about it.<br />- <strong>Zoom’s native app</strong> works because it doesn’t rely on this charade — it talks to ALSA like a grown-up.<br />- <strong>Users</strong> follow the documentation — only to be led down rabbit holes of unnecessary configuration.</p><p>It’s a Monty Python sketch in code form: a perfectly functional system rendered unusable not by bugs or limitations, but by a cascade of assumptions, omissions, and polite fictions. Everyone’s following the rules. The rules are wrong.</p><h5>Notes</h5><p>The “British sitcom with a touch of absurdity” comparison is apt. This isn’t a tragedy — it’s a comedy of errors. Well-meaning developers, decades of misleading documentation, and a “secret” that was never really hidden — just overlooked — have combined to create the illusion of brokenness.</p><p>The solution was there all along: <strong>the default ALSA configuration is sufficient.</strong> It enables full-duplex, software mixing, and robust device routing. No extra tools, no PulseAudio, no custom configs — just <span class="bbc">arecord | aplay</span> and a quiet sense of satisfaction.</p><p>The real joke? We spent fifteen years fixing something that wasn’t broken — because no one thought to just <em>ask</em> what was already working.</p>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Sun, 23 Nov 2025 18:43:35 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=59999#p59999</guid>
		</item>
	</channel>
</rss>
