<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://octyl.net/feed.xml" rel="self" type="application/atom+xml" /><link href="https://octyl.net/" rel="alternate" type="text/html" /><updated>2026-03-13T18:09:12+00:00</updated><id>https://octyl.net/feed.xml</id><title type="html">@octylFractal</title><subtitle>The internet home of Octavia Togami / @octylFractal</subtitle><author><name>Octavia Togami</name></author><entry><title type="html">PipeWire has built-in VBAN support!</title><link href="https://octyl.net/2024/11/05/pipewire-built-in-vban/" rel="alternate" type="text/html" title="PipeWire has built-in VBAN support!" /><published>2024-11-05T23:30:19+00:00</published><updated>2024-11-05T23:30:19+00:00</updated><id>https://octyl.net/2024/11/05/pipewire-built-in-vban</id><content type="html" xml:base="https://octyl.net/2024/11/05/pipewire-built-in-vban/"><![CDATA[<p>Updated Feb 02 2025.</p>

<h3 id="rip-audio-bicycle-2022-2024">RIP <code class="language-plaintext highlighter-rouge">audio-bicycle</code>, 2022-2024</h3>

<p>I recently went to make some changes to my old project, audio-bicycle, but I found that it was no longer necessary!
PipeWire now has built-in VBAN support (<a href="https://docs.pipewire.org/page_module_vban_send.html">send</a>, <a href="https://docs.pipewire.org/page_module_vban_recv.html">recv</a>), and this works well enough for me that I no longer need
audio-bicycle. I’m kind of sad to see it go, but its name will live on in the configuration of my new setup.</p>

<p>However, there were a few gotchas I encountered while setting this up. For context, my configuration is designed to
take outgoing audio from my Linux desktop running PipeWire, and send it to my Windows machine running VoiceMeeter to
be output on the speakers. The Windows machine also sends microphone audio back to the Linux machine, for use in voice
calls. I like to listen to music while I work, so I need a completely clean signal with no noise.</p>

<h3 id="audio-rate-and-format">Audio Rate and Format</h3>

<p>The defaults for the VBAN modules are not very good, picking 44100 Hz rate and S16LE format. This requires remixing
from my 48000 Hz S24LE audio, which introduces some artifacts. I recommend checking what you’re using with <code class="language-plaintext highlighter-rouge">pw-top</code>
and setting the VBAN modules to match, or at least transferring S24LE audio. Here’s the settings I used on each module:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>audio.format = "S24LE"
audio.rate = 48000
</code></pre></div></div>
<p><del>You should also make sure that VoiceMeeter is configured to use the same settings on its sending side, as PipeWire will
not check or do any conversion for you :(.</del> [2025-17-02] I believe this is no longer the case as of
<a href="https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/1a5514e5cf406284f3f7e9466ac630eb64004af3">this commit</a>, but
I don’t think it’s released anywhere yet.</p>

<h3 id="latency">Latency</h3>

<p>PipeWire’s VBAN modules also pick very high latency numbers, presumably because they expect to be used over the 
internet. I adjusted these down for the very low latency I have on my local network:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># For send and recv, keeps a smaller buffer.
sess.latency.msec = 2

# For send only, minimizes the time between packets
sess.min-ptime = 1
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<p><del>I needed to increase the quantum in order to prevent certain applications from not having enough buffer, like <code class="language-plaintext highlighter-rouge">mpv</code>.
Putting <code class="language-plaintext highlighter-rouge">node.force-quantum = 512</code> on each module’s stream seemed to be enough, but this is likely
environment-dependent.</del></p>

<p><del>Finally, I had to set <code class="language-plaintext highlighter-rouge">node.always-process = true</code> on both modules to ensure that the audio was always being sent and
received. This is because the modules will stop processing audio if there is no stream connected otherwise, and this
can cause noise when starting a new stream. This made noticeable pops when starting music or skipping tracks, which
was very annoying. I assume the same could occur with the microphone, but I haven’t tested it. The cost of ~3% of one
CPU core is worth it to me to avoid this noise.</del></p>

<p>[2025-17-02] None of this is necessary now, due to many improvements in Pipewire. It’s working fine on 1.2.7.</p>

<p>For reference, here’s my final configuration file <code class="language-plaintext highlighter-rouge">01-audio-bicycle.conf</code>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>context.modules = [
    {
        name = libpipewire-module-vban-recv
        args = {
            source.ip = 10.190.229.127
            sess.latency.msec = 10
            sess.name = "audio-bicycle"
            audio.format = "S24LE" # [2025-17-02] This and `audio.rate` might not be necessary soon.
            audio.rate = 48000
            stream.props = {
                media.class = "Audio/Source"
                node.name = "VBAN Mic"
                node.description = "VBAN Mic"
            }
        }
    }
    {
        name = libpipewire-module-vban-send
        args = { 
            source.ip = 10.190.229.127
            destination.ip = 10.190.229.105
            sess.min-ptime = 1
            sess.latency.msec = 2
            sess.name = "audio-bicycle"
            audio.format = "S24LE"
            audio.rate = 48000
            stream.props = { 
                media.class = "Audio/Sink"
                node.name = "VBAN Speakers"
                node.description = "VBAN Speakers"
            }   
        }   
    }
]
</code></pre></div></div>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[Updated Feb 02 2025.]]></summary></entry><entry><title type="html">Minor Site Design Adjustments</title><link href="https://octyl.net/2024/11/05/site-design-adjustments/" rel="alternate" type="text/html" title="Minor Site Design Adjustments" /><published>2024-11-05T23:20:20+00:00</published><updated>2024-11-05T23:20:20+00:00</updated><id>https://octyl.net/2024/11/05/site-design-adjustments</id><content type="html" xml:base="https://octyl.net/2024/11/05/site-design-adjustments/"><![CDATA[<p>I’ve removed the monospace formatting of some parts of the site to make it easier to read, notably the navbar and post
text. I noticed while writing the next blog post that the monospace font was making the text difficult to read,
but I still prefer to have the other pages in monospace as I think it looks nice. I also changed the font from Lato
to Libre Baskerville which looks better at 16px.</p>

<p>There was also a ton of adjustments to improve mobile behavior.</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[I’ve removed the monospace formatting of some parts of the site to make it easier to read, notably the navbar and post text. I noticed while writing the next blog post that the monospace font was making the text difficult to read, but I still prefer to have the other pages in monospace as I think it looks nice. I also changed the font from Lato to Libre Baskerville which looks better at 16px.]]></summary></entry><entry><title type="html">Pretty Patterns and Soft Shadows</title><link href="https://octyl.net/2024/07/21/pretty-patterns-and-soft-shadows/" rel="alternate" type="text/html" title="Pretty Patterns and Soft Shadows" /><published>2024-07-21T03:42:08+00:00</published><updated>2024-07-21T03:42:08+00:00</updated><id>https://octyl.net/2024/07/21/pretty-patterns-and-soft-shadows</id><content type="html" xml:base="https://octyl.net/2024/07/21/pretty-patterns-and-soft-shadows/"><![CDATA[<p>On a whim, I felt like adding additional texture to the left and right sides of the site where no main content is
present. I originally was going to integrate something from <a href="https://css-doodle.com/">&lt;css-doodle/&gt;</a> but I
could not figure out how to make the patterns I wanted statically, as I don’t want to require JavaScript to view the
site as intended (<del>I’m aware that on small screens, it is required to use the navbar. If you have suggestions for this,
please let me know!</del> Edit Aug 08 2024: I’ve done a hacky fix for this). So instead, I searched around and found this
<a href="https://bg.siteorigin.com/">“Background Image Generator”</a> and selected a pattern that I thought looked nice.</p>

<p>In order to ensure it meshes with the existing page, the new patterns have shadows around the edges. I also added a
shadow around the navbar and footer to make them stand above the content. I’m quite happy with the results, and I hope
you enjoy them as well!</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[On a whim, I felt like adding additional texture to the left and right sides of the site where no main content is present. I originally was going to integrate something from &lt;css-doodle/&gt; but I could not figure out how to make the patterns I wanted statically, as I don’t want to require JavaScript to view the site as intended (I’m aware that on small screens, it is required to use the navbar. If you have suggestions for this, please let me know! Edit Aug 08 2024: I’ve done a hacky fix for this). So instead, I searched around and found this “Background Image Generator” and selected a pattern that I thought looked nice.]]></summary></entry><entry><title type="html">Projects Page</title><link href="https://octyl.net/2024/07/16/projects-page/" rel="alternate" type="text/html" title="Projects Page" /><published>2024-07-16T02:52:17+00:00</published><updated>2024-07-16T02:52:17+00:00</updated><id>https://octyl.net/2024/07/16/projects-page</id><content type="html" xml:base="https://octyl.net/2024/07/16/projects-page/"><![CDATA[<p>I’ve added a new <a href="/projects">Projects</a> page to the site. It showcases the projects I find the most valuable or
interesting, and that actually work well. I hope you find them useful!</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[I’ve added a new Projects page to the site. It showcases the projects I find the most valuable or interesting, and that actually work well. I hope you find them useful!]]></summary></entry><entry><title type="html">Yet Another Site Refresh</title><link href="https://octyl.net/2024/02/16/yet-another-site-refresh/" rel="alternate" type="text/html" title="Yet Another Site Refresh" /><published>2024-02-16T04:47:30+00:00</published><updated>2024-02-16T04:47:30+00:00</updated><id>https://octyl.net/2024/02/16/yet-another-site-refresh</id><content type="html" xml:base="https://octyl.net/2024/02/16/yet-another-site-refresh/"><![CDATA[<p>The content on this site has again been updated to reflect an approximation of my current self.
Mostly this is an update to Bootstrap (5.3.2) and a move away from any third-party sites, to entirely self-hosted
content. I’ve disliked relying on them due to the potential for them to disappear, and the fact that they can
affect my uptime (though this site is still primarily hosted on GitHub Pages, so it’s not entirely self-hosted).</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[The content on this site has again been updated to reflect an approximation of my current self. Mostly this is an update to Bootstrap (5.3.2) and a move away from any third-party sites, to entirely self-hosted content. I’ve disliked relying on them due to the potential for them to disappear, and the fact that they can affect my uptime (though this site is still primarily hosted on GitHub Pages, so it’s not entirely self-hosted).]]></summary></entry><entry><title type="html">Site Refresh</title><link href="https://octyl.net/2022/12/10/site-refresh/" rel="alternate" type="text/html" title="Site Refresh" /><published>2022-12-10T18:49:58+00:00</published><updated>2022-12-10T18:49:58+00:00</updated><id>https://octyl.net/2022/12/10/site-refresh</id><content type="html" xml:base="https://octyl.net/2022/12/10/site-refresh/"><![CDATA[<p>I’ve gone through and given the site a slightly different theme, to better fit how I want to represent myself. I’ve also
used <a href="https://wave.webaim.org/">WAVE</a> to improve the accessibility of the site, so it should be top-notch. Let me know if you find any improvements
I could make in this area. I really enjoy how WAVE works and recommend it for any accessibility work you do.</p>

<p>As usual, I’ve also updated some dependencies to the latest version as of writing: Bootstrap (5.2.3), Jekyll (4.3.1),
and Jekyll Feed (0.16.0).</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[I’ve gone through and given the site a slightly different theme, to better fit how I want to represent myself. I’ve also used WAVE to improve the accessibility of the site, so it should be top-notch. Let me know if you find any improvements I could make in this area. I really enjoy how WAVE works and recommend it for any accessibility work you do.]]></summary></entry><entry><title type="html">RSS Feed Added</title><link href="https://octyl.net/2022/09/05/rss-feed/" rel="alternate" type="text/html" title="RSS Feed Added" /><published>2022-09-05T19:18:54+00:00</published><updated>2022-09-05T19:18:54+00:00</updated><id>https://octyl.net/2022/09/05/rss-feed</id><content type="html" xml:base="https://octyl.net/2022/09/05/rss-feed/"><![CDATA[<p>At the request of an anonymous reader, I’ve added an RSS feed for my blog posts. It’s linked from the
<a href="/blog/">main blog index</a>, as well as each individual post. You can see it on this one in the bottom-right, it looks
like this: <a href="#" class="btn btn-primary"><span class="fa-solid fa-rss" title="Atom/RSS Feed"></span></a></p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[At the request of an anonymous reader, I’ve added an RSS feed for my blog posts. It’s linked from the main blog index, as well as each individual post. You can see it on this one in the bottom-right, it looks like this:]]></summary></entry><entry><title type="html">GitHub Pages + Jekyll 4 with Github Actions!</title><link href="https://octyl.net/2022/09/05/github-actions-jekyll/" rel="alternate" type="text/html" title="GitHub Pages + Jekyll 4 with Github Actions!" /><published>2022-09-05T17:20:26+00:00</published><updated>2022-09-05T17:20:26+00:00</updated><id>https://octyl.net/2022/09/05/github-actions-jekyll</id><content type="html" xml:base="https://octyl.net/2022/09/05/github-actions-jekyll/"><![CDATA[<p>I’ve been wondering for a while why the GitHub Pages gem hadn’t been updated to Jekyll 4, which contains many
changes that I’ve really wanted in the past. It turns out that GitHub has a new <a href="https://github.blog/2022-08-10-github-pages-now-uses-actions-by-default/">GitHub Actions workflow</a> that is
intended to replace the black-box pipeline that was the default, allowing for using other static site generators
or really any arbitrary code to produce a Pages site. I’m really excited for this change, and hope to experiement
with other ways of creating sites besides Jekyll in the future.</p>

<p>However, this site doesn’t have any good reason to switch to another generator right now, so I’ve simply updated it to
use the new Actions workflow and updated to Jekyll 4. A preliminary check of the site appears to show no issues, but
please let me know if you find any!</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[I’ve been wondering for a while why the GitHub Pages gem hadn’t been updated to Jekyll 4, which contains many changes that I’ve really wanted in the past. It turns out that GitHub has a new GitHub Actions workflow that is intended to replace the black-box pipeline that was the default, allowing for using other static site generators or really any arbitrary code to produce a Pages site. I’m really excited for this change, and hope to experiement with other ways of creating sites besides Jekyll in the future.]]></summary></entry><entry><title type="html">downloadanykey.com</title><link href="https://octyl.net/2021/11/13/downloadanykey/" rel="alternate" type="text/html" title="downloadanykey.com" /><published>2021-11-13T07:37:40+00:00</published><updated>2021-11-13T07:37:40+00:00</updated><id>https://octyl.net/2021/11/13/downloadanykey</id><content type="html" xml:base="https://octyl.net/2021/11/13/downloadanykey/"><![CDATA[<p>I’ve written a new site, a riff on <a href="https://downloadmoreram.com/">https://downloadmoreram.com/</a>, entitled <a href="https://downloadanykey.com/">“Download Any
Key!”</a>. This new site was a fun way for me to learn some new skills, like deploying a
<a href="http://dnslink.io/">DNSLink</a>-based site and Blender. As hinted, this site <em>is</em> IPFS-enabled, so it should theoretically
last until the failure of the IPFS network, though currently with a small reliance on the DNS system as well. I hope to
add more content to this in the future, and am open to PRs if you have some creative ideas!</p>

<p>The site’s source is available at <a href="https://github.com/octylFractal/downloadanykey.com">https://github.com/octylFractal/downloadanykey.com</a>.</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[I’ve written a new site, a riff on https://downloadmoreram.com/, entitled “Download Any Key!”. This new site was a fun way for me to learn some new skills, like deploying a DNSLink-based site and Blender. As hinted, this site is IPFS-enabled, so it should theoretically last until the failure of the IPFS network, though currently with a small reliance on the DNS system as well. I hope to add more content to this in the future, and am open to PRs if you have some creative ideas!]]></summary></entry><entry><title type="html">Bootstrap 5, et. al</title><link href="https://octyl.net/2021/07/21/bootstrap-5/" rel="alternate" type="text/html" title="Bootstrap 5, et. al" /><published>2021-07-21T07:12:36+00:00</published><updated>2021-07-21T07:12:36+00:00</updated><id>https://octyl.net/2021/07/21/bootstrap-5</id><content type="html" xml:base="https://octyl.net/2021/07/21/bootstrap-5/"><![CDATA[<p>I’ve updated the site to Bootstrap 5, as well as updating some other dependencies. Let me know if anything seems broken.</p>]]></content><author><name>Octavia Togami</name></author><summary type="html"><![CDATA[I’ve updated the site to Bootstrap 5, as well as updating some other dependencies. Let me know if anything seems broken.]]></summary></entry></feed>