<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Zero to Hero - volkan-uses</title>
    <link rel="self" type="application/atom+xml" href="https://zerotohero.dev/tags/volkan-uses/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://zerotohero.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-01-09T00:00:00+00:00</updated>
    <id>https://zerotohero.dev/tags/volkan-uses/atom.xml</id>
    <entry xml:lang="en">
        <title>A Fresh Start: My New Streaming and Development Setup</title>
        <published>2026-01-09T00:00:00+00:00</published>
        <updated>2026-01-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Volkan Özçelik
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://zerotohero.dev/content-creation/new-setup-bom/"/>
        <id>https://zerotohero.dev/content-creation/new-setup-bom/</id>
        
        <content type="html" xml:base="https://zerotohero.dev/content-creation/new-setup-bom/">&lt;p&gt;Recently, my Mac Studio started acting weirdly, so I decided to wipe the
hard drive clean and reinstall my system. This post details the tools
and applications I installed to this new system.&lt;&#x2F;p&gt;
&lt;p&gt;My goal for this new system is to keep it lean and minimal, so that it&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;starts up quickly,&lt;&#x2F;li&gt;
&lt;li&gt;remains stable, and&lt;&#x2F;li&gt;
&lt;li&gt;remains easy-to-maintain.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;With that in mind, let’s start with the foundation of any good setup: typography.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;core-system-essentials&quot;&gt;Core System Essentials&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;fonts&quot;&gt;Fonts&lt;&#x2F;h3&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;berkeley-mono.png&quot; alt=&quot;Berkeley Mono font.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Berkeley Mono font.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;I like to use a few monospace fonts depending on my mood and the use case,
here are the ones I added to my system:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.monolisa.dev&#x2F;&quot;&gt;MonoLisa&lt;&#x2F;a&gt;: My go-to font for coding.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;usgraphics.com&#x2F;products&#x2F;berkeley-mono&quot;&gt;Berkeley Mono&lt;&#x2F;a&gt;: There is no
other font that says “Unix” better than this one. That’s another favorite
font of mine that I switch and use frequently.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fsd.it&#x2F;shop&#x2F;fonts&#x2F;pragmatapro-variable&#x2F;&quot;&gt;Pragmata Pro&lt;&#x2F;a&gt;: This is
more of an acquired taste: Not everyone’s cup of tea; but if you spend some
time and get used to it, you’ll love it. It’s especially great when
horizontal space is premium; like checking 20 logs at once.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.typography.com&#x2F;fonts&#x2F;operator&#x2F;overview&quot;&gt;Operator Mono&lt;&#x2F;a&gt;: Beautiful
font, but (&lt;em&gt;to me&lt;&#x2F;em&gt;) a bit overhyped. Still, I like it and use it occasionally.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Beyond fonts, the way I manage windows and automate file operations forms the
backbone of my daily workflow.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;window-manager&quot;&gt;Window Manager&lt;&#x2F;h3&gt;
&lt;p&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thelasso.app&#x2F;&quot;&gt;Lasso&lt;&#x2F;a&gt; for window management. Granted, it
requires its own post too, I can say that it is one of the things you don’t
know you needed until you start using it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;file-automation&quot;&gt;File Automation&lt;&#x2F;h3&gt;
&lt;p&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.noodlesoft.com&#x2F;&quot;&gt;Hazel&lt;&#x2F;a&gt; to automate file management.
It’s yet another app that you don’t know how badly you need until you start
using it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;storage-and-backups&quot;&gt;Storage and Backups&lt;&#x2F;h2&gt;
&lt;p&gt;With the core system essentials in place, let’s talk about something equally
critical: keeping your data safe.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;nas-setup&quot;&gt;NAS Setup&lt;&#x2F;h3&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;synology-admin-ui.png&quot; alt=&quot;Synology Admin UI.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Synology Admin UI.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;I got a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.synology.com&#x2F;en-us&quot;&gt;Synology DS1522+&lt;&#x2F;a&gt; and five
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.seagate.com&#x2F;products&#x2F;nas-drives&#x2F;ironwolf-hard-drive&#x2F;&quot;&gt;8TB Seagate IronWolf&lt;&#x2F;a&gt;
hard drives. Using them together with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kb.synology.com&#x2F;en-us&#x2F;DSM&#x2F;tutorial&#x2F;What_is_Synology_Hybrid_RAID_SHR&quot;&gt;SHR-2 RAID&lt;&#x2F;a&gt;
which gives me slightly more than 20TB of storage, while allowing failure of
two drives without losing data.&lt;&#x2F;p&gt;
&lt;p&gt;That gives me more than enough space to store my data, including stream VODs,
virtual machine images, and any other stuff that can consume a lot of space.&lt;&#x2F;p&gt;
&lt;p&gt;Though, while &lt;strong&gt;RAID&lt;&#x2F;strong&gt; is great and gives you redundancy, it’s not a
replacement for &lt;strong&gt;backup&lt;&#x2F;strong&gt;. So I use, &lt;strong&gt;HyperBackup&lt;&#x2F;strong&gt; (&lt;em&gt;from within the Synology
Admin UI&lt;&#x2F;em&gt;), to back up my important data to a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.backblaze.com&#x2F;cloud-storage&quot;&gt;Backblaze B2&lt;&#x2F;a&gt;
bucket.&lt;&#x2F;p&gt;
&lt;p&gt;After scheduling the backups and verifying that they work, and also setting
up &lt;strong&gt;email notifications&lt;&#x2F;strong&gt;, so that when a backup fails, or when a drive has
a problem, or any other problem occurs in the system, I can confidently
forget about backups once and for all: It will just work behind the scenes.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Synology&lt;&#x2F;strong&gt; is one of the best NAS solutions I’ve ever used. It deserves a
post of its own; maybe I’ll write one in the future.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;streaming-and-media-production&quot;&gt;Streaming and Media Production&lt;&#x2F;h2&gt;
&lt;p&gt;Now that we’ve covered the essentials and storage, let’s dive into what takes
up most of my time: streaming and content creation.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;audio-hardware&quot;&gt;Audio Hardware&lt;&#x2F;h3&gt;
&lt;p&gt;My streaming gear consists of:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.shure.com&#x2F;en-US&#x2F;products&#x2F;microphones&#x2F;sm7b?variant=SM7B&quot;&gt;Shure SM7B XLR Mic&lt;&#x2F;a&gt;
(&lt;em&gt;MV7 users might disagree, but I do believe that “SM7B kicks the llama’s
ass”&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cloudmicrophones.com&#x2F;product-page&#x2F;cloudlifter-cl-x&quot;&gt;CloudLifter CL-X&lt;&#x2F;a&gt;
because &lt;strong&gt;SM 7B&lt;&#x2F;strong&gt; is gain-hungry.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;babyface-pro-fs.html&quot;&gt;Babyface Pro FS&lt;&#x2F;a&gt; because it’s one
of the best audio interfaces that pairs &lt;strong&gt;really well&lt;&#x2F;strong&gt; with &lt;strong&gt;SM 7B&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;totalmix.png&quot; alt=&quot;RME TotalMix.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;RME TotalMix.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;After installing the drivers for &lt;strong&gt;Babyface Pro FS&lt;&#x2F;strong&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.rme-audio.com&#x2F;aoxd&#x2F;800-1c_totalmix&#x2F;&quot;&gt;&lt;strong&gt;RME TotalMix
FX&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;
(&lt;em&gt;the software interface for Babyface Pro FS&lt;&#x2F;em&gt;) comes pre-installed on my Mac.&lt;&#x2F;p&gt;
&lt;p&gt;Along with &lt;strong&gt;RME TotalMix&lt;&#x2F;strong&gt;, I also installed
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;digicheck-ng.html&quot;&gt;DigiCheck NG&lt;&#x2F;a&gt;, which is excellent
for monitoring my vocals and overall stream output gain.&lt;&#x2F;p&gt;
&lt;p&gt;Again, setting up &lt;strong&gt;TotalMix&lt;&#x2F;strong&gt;, and &lt;strong&gt;DigiCheck NG&lt;&#x2F;strong&gt; deserve its own post.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;camera-and-video&quot;&gt;Camera and Video&lt;&#x2F;h3&gt;
&lt;p&gt;For camera, I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.obsbot.com&#x2F;obsbot-tiny-2-4k-webcam&quot;&gt;OBS Tiny 2&lt;&#x2F;a&gt;,
I can confidently say that there is no better webcam for streaming. It can
compete with beefier cameras like &lt;em&gt;Canon EOS&lt;&#x2F;em&gt; and &lt;em&gt;Nikon D850&lt;&#x2F;em&gt;. Honestly, I
am still surprised a USB webcam can stream at 4K with crisp, crystal-clear
video.&lt;&#x2F;p&gt;
&lt;p&gt;After installing &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.obsbot.com&#x2F;download&quot;&gt;&lt;strong&gt;OBSBot Center&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; and its
drivers, I’m good to go.&lt;&#x2F;p&gt;
&lt;p&gt;One thing I did, though, was to &lt;strong&gt;disable&lt;&#x2F;strong&gt; any &lt;strong&gt;AI&lt;&#x2F;strong&gt; feature, because at times
it can interpret my voice as a command, or my gesture to zoom and pan the
camera. I don’t want that. I prefer to control the camera manually and want
its focus to remain where I want it to be.&lt;&#x2F;p&gt;
&lt;p&gt;One additional software I had to install in my particular case was
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cameragraph.app&#x2F;&quot;&gt;CameraGraph&lt;&#x2F;a&gt; because for some reason the
streaming software I use (&lt;em&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;Wirecast&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;) was not
happy with the camera feed output, so I had to create a virtual camera feed
from the webcam.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;streaming-software&quot;&gt;Streaming Software&lt;&#x2F;h3&gt;
&lt;p&gt;For streaming, I use:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;Wirecast&lt;&#x2F;a&gt; for streaming.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;obsproject.com&#x2F;&quot;&gt;OBS Studio&lt;&#x2F;a&gt; for recording.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This way, I can send different audio background music tracks to the live
stream and the recorded VODs. This is especially useful when I publish the VODs
because I may get copyright strikes otherwise.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;audio-pipeline&quot;&gt;Audio Pipeline&lt;&#x2F;h3&gt;
&lt;p&gt;For audio pipeline setup, along with &lt;strong&gt;TotalMix&lt;&#x2F;strong&gt;, I use
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;audiohijack&#x2F;&quot;&gt;Audio Hijack&lt;&#x2F;a&gt; and
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;loopback&#x2F;&quot;&gt;Loopback&lt;&#x2F;a&gt;. Again, these two require a
dedicated post of their own. But here are some screenshots to give you an idea:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;ah-001.png&quot; alt=&quot;Music streaming AudioHijack session.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Music streaming AudioHijack session.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;ah-001.png&quot; alt=&quot;Stream processing AudioHijack session.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Stream processing AudioHijack session.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;I also use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.izotope.com&#x2F;en&#x2F;shop&#x2F;ozone-12-advanced&#x2F;&quot;&gt;Native Instruments Ozone
Advanced&lt;&#x2F;a&gt; for real-time
audio processing such as compression and equalization.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;ozone-compressor.png&quot; alt=&quot;Ozone Compressor in action.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Ozone Compressor in action.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h3 id=&quot;post-production&quot;&gt;Post-Production&lt;&#x2F;h3&gt;
&lt;p&gt;For post-production and VOD creation I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.telestream.net&#x2F;screenflow&#x2F;overview.htm&quot;&gt;ScreenFlow&lt;&#x2F;a&gt;
and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.adobe.com&#x2F;products&#x2F;audition.html&quot;&gt;Adobe Audition&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I also use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.izotope.com&#x2F;en&#x2F;products&#x2F;rx.html&quot;&gt;Izotope RX&lt;&#x2F;a&gt;
toolset (&lt;em&gt;from the same company as Ozone&lt;&#x2F;em&gt;) for various audio post-production
work.&lt;&#x2F;p&gt;
&lt;p&gt;Ah, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.elgato.com&#x2F;us&#x2F;en&#x2F;p&#x2F;stream-deck&quot;&gt;Stream Deck&lt;&#x2F;a&gt;—no streaming
setup is complete without it. Again, it requires its own post.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;streamdeck-001.png&quot; alt=&quot;Stream Deck.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Stream Deck.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;streamdeck-002.png&quot; alt=&quot;Stream Deck.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Stream Deck.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;That covers the streaming part for now, I guess.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hardware-and-peripherals&quot;&gt;Hardware and Peripherals&lt;&#x2F;h2&gt;
&lt;p&gt;Switching gears from software to hardware, let’s look at the physical tools
that make daily work more comfortable and efficient.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;mouse-and-keyboard&quot;&gt;Mouse and Keyboard&lt;&#x2F;h3&gt;
&lt;p&gt;I use a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.logitech.com&#x2F;en-eu&#x2F;shop&#x2F;p&#x2F;mx-master-4&quot;&gt;Logi MX Master 4&lt;&#x2F;a&gt;
for the mouse and cannot recommend it enough. Especially the &lt;strong&gt;action ring&lt;&#x2F;strong&gt;
and the &lt;strong&gt;haptic feedback&lt;&#x2F;strong&gt;, and needless to say, the lightning-fast scrolling
makes it a productivity booster.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;mx-action-ring.png&quot; alt=&quot;Logi MX Master 4 action ring.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Logi MX Master 4 action ring.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;For keyboard, I opted for a compact form-factor: a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nuphy.com&#x2F;collections&#x2F;keyboards&#x2F;products&#x2F;halo75-v2-qmk-via-wireless-custom-mechanical-keyboard&quot;&gt;NuPhy Halo 75
V2&lt;&#x2F;a&gt;
with &lt;strong&gt;Brown Max&lt;&#x2F;strong&gt; switches, which gives a good level of tactile feedback while
still keeping it quieter than &lt;strong&gt;Cherry MX Blue&lt;&#x2F;strong&gt; or similar switches.&lt;&#x2F;p&gt;
&lt;p&gt;The keyboard is programmable with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;qmk.fm&#x2F;&quot;&gt;QMK&lt;&#x2F;a&gt;; maybe a dedicated
post for that will come later on, too.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;productivity-and-daily-tools&quot;&gt;Productivity and Daily Tools&lt;&#x2F;h2&gt;
&lt;p&gt;With hardware covered, let’s explore the software that helps me stay organized
and productive throughout the day.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;visual-design-and-diagramming&quot;&gt;Visual Design and Diagramming&lt;&#x2F;h3&gt;
&lt;p&gt;For graphic work, I use the following:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sketch.com&#x2F;&quot;&gt;Sketch&lt;&#x2F;a&gt;—I still believe it’s better than Figma.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.edrawsoft.com&#x2F;ad&#x2F;edraw-max&#x2F;&quot;&gt;Wondershare Edraw Max&lt;&#x2F;a&gt; which is
a great tool for technical diagrams.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;music&quot;&gt;Music&lt;&#x2F;h3&gt;
&lt;p&gt;I have two apps that I use to listen to music:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;app.endel.io&#x2F;&quot;&gt;Endel&lt;&#x2F;a&gt;: I use &lt;strong&gt;Endel&lt;&#x2F;strong&gt; for both background music
for my stream VODs (&lt;em&gt;to avoid copyright strike&lt;&#x2F;em&gt;) and also for listening to
it while I’m working to calm my brain and focus.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.spotify.com&#x2F;us&#x2F;&quot;&gt;Spotify&lt;&#x2F;a&gt;: &lt;strong&gt;Spotify&lt;&#x2F;strong&gt; is my main music app.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;video-conferencing&quot;&gt;Video Conferencing&lt;&#x2F;h3&gt;
&lt;p&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zoom.us&#x2F;&quot;&gt;Zoom&lt;&#x2F;a&gt; for video conferencing. I also use &lt;strong&gt;Zoom&lt;&#x2F;strong&gt; as
the video feed when I accept guests to my stream. I’ve found that it works
more reliably than any other solution (&lt;em&gt;including Twitch’s “Guest Star”
feature&lt;&#x2F;em&gt;) that I’ve tried.&lt;&#x2F;p&gt;
&lt;p&gt;I don’t install any other video conferencing solution until I have to, but
sometimes a peculiar friend might ask “&lt;em&gt;I use Jitsi, and Jitsi only; damn
capitalism!&lt;&#x2F;em&gt;” and I may end up installing it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;timezone-management&quot;&gt;Timezone Management&lt;&#x2F;h3&gt;
&lt;p&gt;I work with several timezones from the Pacific Timezone, to London, to Italy,
to India and Australia. I find &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;worldclock.pro&#x2F;mac&quot;&gt;World Clock Pro&lt;&#x2F;a&gt;
a great tool for managing multiple timezones. It has a nice interface where
you can drag a slider to see, for example, what 9pm in your timezone
will look like in London and Tokyo. It helps me a lot when I need to
plan meetings and other events.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;world-clock-pro.png&quot; alt=&quot;World Clock Pro.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;World Clock Pro.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h3 id=&quot;general-productivity&quot;&gt;General Productivity&lt;&#x2F;h3&gt;
&lt;p&gt;While Spotlight is a great search tool, if you need more powerful search
functionality over everything on your Mac, then
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.houdah.com&#x2F;houdahSpot&#x2F;&quot;&gt;HoudahSpot&lt;&#x2F;a&gt; is one of the best options
that give you a lot of flexibility and customization options.&lt;&#x2F;p&gt;
&lt;p&gt;To manage distractions and keep track of tasks, I use:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stayinsession.com&#x2F;&quot;&gt;Sessions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.inyourface.app&#x2F;&quot;&gt;InYourFace&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For spelling, document editing, tone correction, and other editorial tasks
I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.grammarly.com&#x2F;&quot;&gt;Grammarly (*rebranded as “SuperHuman”)&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;To annotate my desktop in meetings and streaming sessions, I use
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;presentify.app&#x2F;&quot;&gt;Presentify&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;As my main browser, I’m using &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vivaldi.com&#x2F;&quot;&gt;Vivaldi&lt;&#x2F;a&gt;. It needs some
exploration and getting-used-to, but especially, being able to group your
browsing sessions into “&lt;em&gt;workspaces&lt;&#x2F;em&gt;” is a huge productivity booster.&lt;&#x2F;p&gt;
&lt;p&gt;For file transfer needs, I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;panic.com&#x2F;transmit&#x2F;&quot;&gt;Transmit&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;system-maintenance&quot;&gt;System Maintenance&lt;&#x2F;h2&gt;
&lt;p&gt;Keeping a system healthy requires some attention. Here are the tools that
help me monitor and maintain my setup.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;command-line-tools&quot;&gt;Command Line Tools&lt;&#x2F;h3&gt;
&lt;p&gt;I spend part of my day in the terminal, so having additional tools that make
my life easier helps a lot. Here are some of the command line tools that I
have installed to my system:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;brew.sh&#x2F;&quot;&gt;HomeBrew&lt;&#x2F;a&gt; is the first thing to install for any Mac user.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;cantino&#x2F;mcfly&quot;&gt;Mcfly&lt;&#x2F;a&gt; is a fuzzy search tool for the
command-line. It’s not strictly necessary, but I like its user experience.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;starship.rs&#x2F;&quot;&gt;Starship&lt;&#x2F;a&gt; is a cross-shell prompt tool that is
highly-customizable.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;XAMPPRocky&#x2F;tokei&quot;&gt;Tokei&lt;&#x2F;a&gt; is a code counter tool.
I use it to see how many lines of code various parts of my projects contain.
It’s useful to see things like how much code comment is in a project as
opposed to actual code (&lt;em&gt;to me, the more commented a project, the better&lt;&#x2F;em&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bootandy&#x2F;dust&quot;&gt;Dust&lt;&#x2F;a&gt; is a disk usage analyzer tool.
I typically use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;daisydiskapp.com&#x2F;&quot;&gt;DaisyDisk&lt;&#x2F;a&gt; because it gives
more options to handle the files, and it provides a better and more
interactive visualization; however, sometimes being able to see the disk usage
in a terminal is useful too.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;daisydiskapp.com&#x2F;&quot;&gt;Bat&lt;&#x2F;a&gt; is a &lt;strong&gt;galactically better&lt;&#x2F;strong&gt; version of &lt;code&gt;cat&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dalance&#x2F;procs&quot;&gt;Procs&lt;&#x2F;a&gt; is a process viewer tool. You
can think of it as a modern replacement for &lt;code&gt;ps&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;eza-community&#x2F;eza&quot;&gt;Eza&lt;&#x2F;a&gt; is a modern &lt;code&gt;ls&lt;&#x2F;code&gt; replacement.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tw93&#x2F;Mole&quot;&gt;Mole&lt;&#x2F;a&gt; is a tool that keeps your Mac clean. It
can purge unnecessary files, uninstall unwanted apps in a batch, analyze
your Mac, and do various other optimizations. I &lt;strong&gt;strongly recommend&lt;&#x2F;strong&gt; it
instead of using a bloated tool like &lt;em&gt;CleanMyMac&lt;&#x2F;em&gt; or &lt;em&gt;MacCleaner&lt;&#x2F;em&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;drive-health&quot;&gt;Drive Health&lt;&#x2F;h3&gt;
&lt;p&gt;My &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.synology.com&#x2F;en-us&quot;&gt;NAS&lt;&#x2F;a&gt; can take care of its own health and
notify me when there are failures or degradation. Yet that’s not true for
my system disk and other external drives.&lt;&#x2F;p&gt;
&lt;p&gt;To monitor these drives, I have &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;binaryfruit.com&#x2F;drivedx&quot;&gt;Drivedx&lt;&#x2F;a&gt;
installed.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;drivedx.png&quot; alt=&quot;Drive DX.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Drive DX.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;I also use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.backblaze.com&#x2F;&quot;&gt;Backblaze&lt;&#x2F;a&gt; to back up my system disk
and external drives to recover them in case of a hardware failure.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;network-monitoring&quot;&gt;Network Monitoring&lt;&#x2F;h3&gt;
&lt;p&gt;Occasionally, I need to figure out what’s what in my local home network.
Although that can be done with simple CLI commands, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apps.apple.com&#x2F;us&#x2F;app&#x2F;ip-scanner-ultra&#x2F;id404167677&quot;&gt;IP Scanner
Ultra&lt;&#x2F;a&gt; gives
a better and more intuitive overview of the network topology.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2026&amp;#x2F;09&amp;#x2F;ip-scanner.png&quot; alt=&quot;IP Scanner Ultra.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;IP Scanner Ultra.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;security&quot;&gt;Security&lt;&#x2F;h2&gt;
&lt;p&gt;Security is non-negotiable, especially when you have sensitive data and credentials
scattered across multiple systems.&lt;&#x2F;p&gt;
&lt;p&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.yubico.com&#x2F;&quot;&gt;Yubikey&lt;&#x2F;a&gt; as my hardware security key and
primary authentication method whenever I can. So, one of the first things I
install on my system is &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.yubico.com&#x2F;products&#x2F;services-software&#x2F;download&#x2F;yubikey-manager&#x2F;&quot;&gt;YubiKey
Manager&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Additionally, I have &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;1password.com&#x2F;&quot;&gt;1Password&lt;&#x2F;a&gt; to manage my passwords,
licenses, secrets, and other sensitive information.&lt;&#x2F;p&gt;
&lt;p&gt;Sometimes, I need to transfer sensitive data over relatively insecure channels.
For that, I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apps.apple.com&#x2F;us&#x2F;app&#x2F;encrypto-secure-your-files&#x2F;id935235287?mt=12&quot;&gt;Encrypto&lt;&#x2F;a&gt;
to encrypt them before sending over the wire.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;text-editing-and-note-taking&quot;&gt;Text Editing and Note-Taking&lt;&#x2F;h2&gt;
&lt;p&gt;When it comes to writing, I have a few specialized tools for different purposes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sublimetext.com&#x2F;&quot;&gt;Sublime Text&lt;&#x2F;a&gt; for quickly taking notes
and writing some lightweight code.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;monodraw.helftone.com&#x2F;&quot;&gt;Monodraw&lt;&#x2F;a&gt; for creating ASCII art diagrams.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ulysses.app&#x2F;&quot;&gt;Ulysses&lt;&#x2F;a&gt; because it’s far more than just a Markdown
editor.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apps.apple.com&#x2F;us&#x2F;app&#x2F;tot&#x2F;id1491071483?mt=12&quot;&gt;Tot&lt;&#x2F;a&gt; for synchronizing
notes across devices. This is another app that you don’t know how badly you
need until you start using it.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Other heavy-duty editors and IDEs exist exclusively in my
&lt;strong&gt;Development Machine&lt;&#x2F;strong&gt; (&lt;em&gt;see the next section&lt;&#x2F;em&gt;).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;software-development&quot;&gt;Software Development&lt;&#x2F;h2&gt;
&lt;p&gt;Now we get to the meat of my daily work: software development. I’ve made some
deliberate choices here to keep my streaming machine stable.&lt;&#x2F;p&gt;
&lt;p&gt;I do almost all my software development by remotely connecting to my
Windows Intel NUC via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;apps.apple.com&#x2F;us&#x2F;app&#x2F;windows-app&#x2F;id1295203466?mt=12&quot;&gt;Windows App&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I choose to use a separate machine for development because development environments
can become complex and unstable in time, and I’d rather keep my streaming
setup stable. Additionally, keeping “&lt;em&gt;development&lt;&#x2F;em&gt;” focused on a separate machine
allows me to focus: The machine is dedicated to development, and I don’t have
anything else to distract me from it.&lt;&#x2F;p&gt;
&lt;p&gt;Along with Windows, I also have &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.parallels.com&#x2F;products&#x2F;desktop&#x2F;pro&quot;&gt;Parallels
Desktop&lt;&#x2F;a&gt; for running dedicated
local Linux virtual machines, when &lt;em&gt;Windows Subsystem for Linux&lt;&#x2F;em&gt; doesn’t
fit for the use case.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;windows-development-environment&quot;&gt;Windows Development Environment&lt;&#x2F;h3&gt;
&lt;p&gt;Windows is my main development machine. Here are some of the tools I use on
Windows:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;windows&#x2F;wsl&#x2F;install&quot;&gt;Windows Subsystem for Linux&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;windows&#x2F;terminal&#x2F;install&quot;&gt;Windows Terminal&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;windows&#x2F;powertoys&#x2F;&quot;&gt;Microsoft PowerToys&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.jetbrains.com&#x2F;toolbox-app&#x2F;&quot;&gt;JetBrains Toolbox&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.jetbrains.com&#x2F;go&#x2F;&quot;&gt;GoLand&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.jetbrains.com&#x2F;webstorm&#x2F;&quot;&gt;WebStorm&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ubuntu.com&#x2F;server&quot;&gt;Ubuntu (&lt;em&gt;WSL&lt;&#x2F;em&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;obsidian.md&#x2F;&quot;&gt;Obsidian&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;standardnotes.com&#x2F;&quot;&gt;Standard Notes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That’s pretty much it for Windows too. I want to keep my development setup
lean and stable as well.&lt;&#x2F;p&gt;
&lt;p&gt;I also have &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;slack.com&#x2F;&quot;&gt;Slack&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;discord.com&quot;&gt;Discord&lt;&#x2F;a&gt;
installed on Windows because I want to
keep my Mac streaming setup stable, so I don’t want to introduce anything
unnecessary to the system if I don’t have to.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;Setting up a new system is always a good opportunity to reflect on what you
truly need versus what you’ve accumulated over time. By starting fresh, I was
able to be more intentional about every tool I installed.&lt;&#x2F;p&gt;
&lt;p&gt;The key takeaways from this setup are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Separation of concerns&lt;&#x2F;strong&gt;: Keeping my streaming machine stable by offloading
development work to a dedicated Windows machine has been a game-changer.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Automation first&lt;&#x2F;strong&gt;: Tools like &lt;em&gt;Hazel&lt;&#x2F;em&gt;, &lt;em&gt;HyperBackup&lt;&#x2F;em&gt;, and &lt;em&gt;Stream Deck&lt;&#x2F;em&gt;
reduce manual work and let me focus on what matters.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Quality over quantity&lt;&#x2F;strong&gt;: Investing in good hardware (&lt;em&gt;SM7B, Babyface Pro FS,
MX Master 4&lt;&#x2F;em&gt;) pays dividends in comfort and productivity.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This list will inevitably evolve as my needs change, but for now, this is
the foundation that keeps me productive and sane. If you’re setting up a new
system, I hope this gives you some ideas to consider.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>New Audio Pipeline with BabyFace Pro FS</title>
        <published>2025-12-13T00:00:00+00:00</published>
        <updated>2025-12-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Volkan Özçelik
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://zerotohero.dev/content-creation/new-stream-setup-with-babyface-pro-fs/"/>
        <id>https://zerotohero.dev/content-creation/new-stream-setup-with-babyface-pro-fs/</id>
        
        <content type="html" xml:base="https://zerotohero.dev/content-creation/new-stream-setup-with-babyface-pro-fs/">&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;2025&#x2F;12&#x2F;babyface.jpg&quot; alt=&quot;Babyface Pro FS&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;roadmap&quot;&gt;Roadmap&lt;&#x2F;h2&gt;
&lt;p&gt;This article covers:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Why I upgraded my audio interface and what I set out to achieve&lt;&#x2F;li&gt;
&lt;li&gt;The hardware signal chain (&lt;em&gt;including mic, Cloudlifter, and Babyface Pro FS&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;How software routing (&lt;em&gt;Audio Hijack, OBS, Wirecast, TotalMix FX&lt;&#x2F;em&gt;) ties it all
together&lt;&#x2F;li&gt;
&lt;li&gt;Managing streaming complexities—background music, copyright, and multi-output
scenarios&lt;&#x2F;li&gt;
&lt;li&gt;Dynamic control during streams and automation with Stream Deck&lt;&#x2F;li&gt;
&lt;li&gt;Monitoring and achieving clean, reliable audio in real-time&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Now, let’s break down the hardware foundations that make this setup possible.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;new-audio-interface-new-setup&quot;&gt;New Audio Interface, New Setup&lt;&#x2F;h2&gt;
&lt;p&gt;I recently bought a shiny &lt;a rel=&quot;external&quot; title=&quot;Babyface Pro FS&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;babyface-pro-fs.html&quot;&gt;&lt;strong&gt;Babyface Pro FS&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; audio interface.&lt;&#x2F;p&gt;
&lt;p&gt;With &lt;strong&gt;24 channels, 6 hardware outputs, 6 hardware inputs, and 6 software
playback virtual inputs&lt;&#x2F;strong&gt;, it is a powerhouse. Yes, it has “&lt;strong&gt;some&lt;&#x2F;strong&gt;”(&lt;strong&gt;?!&lt;&#x2F;strong&gt;)
&lt;em&gt;“learning curve”&lt;&#x2F;em&gt;, but when you get the hang of it, it provides endless
possibilities.&lt;&#x2F;p&gt;
&lt;p&gt;But most importantly, it has a &lt;strong&gt;very clean&lt;&#x2F;strong&gt; output with an almost zero noise
floor (&lt;em&gt;around -50 dB&lt;&#x2F;em&gt;). That is much better than comparatively lower-end
amplifiers like &lt;a rel=&quot;external&quot; title=&quot;Scarlett Solo&quot; href=&quot;https:&#x2F;&#x2F;us.focusrite.com&#x2F;products&#x2F;scarlett-solo&quot;&gt;Focusrite Scarlett Solo&lt;&#x2F;a&gt; or &lt;a rel=&quot;external&quot; title=&quot;Universal Audio: Volt 2&quot; href=&quot;https:&#x2F;&#x2F;www.uaudio.com&#x2F;products&#x2F;volt-2-usb&quot;&gt;Volt 2&lt;&#x2F;a&gt;.
This is especially important for my setup because I have a very-gain-hungry
microphone: &lt;a rel=&quot;external&quot; title=&quot;Shure SM7B Vocal Microphone&quot; href=&quot;https:&#x2F;&#x2F;www.shure.com&#x2F;en-US&#x2F;products&#x2F;microphones&#x2F;sm7b?variant=SM7B&quot;&gt;&lt;strong&gt;Shure SM7B&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;. With &lt;strong&gt;Shure&lt;&#x2F;strong&gt; hungry hippo, even the
smallest noise floor gets elevated when I increase the audio interface’s input
gain by 40–50 dB.&lt;&#x2F;p&gt;
&lt;p&gt;Moreover, the added noise becomes even more pronounced when you apply voice
compression and other additional filters to the output.&lt;&#x2F;p&gt;
&lt;p&gt;Thus, with the new &lt;strong&gt;Babyface Pro FS&lt;&#x2F;strong&gt;, I had two goals in mind:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Minimize digital audio processing to reduce residual background noise as
much as possible.&lt;&#x2F;li&gt;
&lt;li&gt;Have a “&lt;em&gt;good enough&lt;&#x2F;em&gt;” system that increases gain solely with hardware
so I don’t have to “&lt;em&gt;eat the microphone&lt;&#x2F;em&gt;” while debugging a
complicated codebase on live stream.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This article describes how I established these goals, and provides an overview
of &lt;a rel=&quot;external&quot; title=&quot;Audio Hijack&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;audiohijack&#x2F;&quot;&gt;&lt;strong&gt;Audio Hijack&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;’s and &lt;strong&gt;Babyface&lt;&#x2F;strong&gt;’s interfaces.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;lift-input-gain-with-cloudlifter&quot;&gt;Lift Input Gain with Cloudlifter.&lt;&#x2F;h2&gt;
&lt;p&gt;To increase the gain of the input signal a little bit more, so that I can
minimize software-based audio post-processing, I also have a
&lt;a rel=&quot;external&quot; title=&quot;Cloudlifter CL-X&quot; href=&quot;https:&#x2F;&#x2F;www.cloudmicrophones.com&#x2F;cloudlifter-cl-x&quot;&gt;&lt;strong&gt;CloudLifter X&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; in my audio pipeline.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;cloud-lifter.jpg&quot; alt=&quot;Cloudlifter X.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Cloudlifter X.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Here is how my audio input components are connected:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #1D2021;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;┌────────────────────┐&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;│ Mac Studio (USB-C) │&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;└────────────────────┘&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           │          &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           ▼          &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;┌────────────────────┐&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;│  BabyFace Pro FS   │&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;│  AN 1&#x2F;2 (XLR in)   │&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;└────────────────────┘&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           │          &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           ▼          &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;┌────────────────────┐&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;│   CloudLifter X    │&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;└────────────────────┘&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           │          &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           ▼          &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;┌────────────────────┐&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;│  SHURE SM7B (mic)  │&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;└────────────────────┘&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;With the physical connections in place, the next step is to configure the
software to get the most out of this hardware.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;less-processing-better-quality&quot;&gt;Less Processing, Better Quality&lt;&#x2F;h2&gt;
&lt;p&gt;In my &lt;a href=&quot;https:&#x2F;&#x2F;zerotohero.dev&#x2F;content-creation&#x2F;talkspiffe-stream-setup&#x2F;&quot;&gt;older streaming setup&lt;&#x2F;a&gt;, I heavily used &lt;em&gt;software
audio loopback interfaces and post-processing&lt;&#x2F;em&gt;. With &lt;strong&gt;Babyface&lt;&#x2F;strong&gt;, I was able
to move many of these operations directly to the hardware interface, offloading
them from the CPU and using a device designed for audio routing and mixing.&lt;&#x2F;p&gt;
&lt;p&gt;The result was much natural and smoother.&lt;&#x2F;p&gt;
&lt;p&gt;In addition, since &lt;strong&gt;Babyface&lt;&#x2F;strong&gt; was doing such a great job of reducing the noise
floor, I didn’t need many modifications to the input signal anyway. It was such
a relief, because whether you do it in hardware or software, &lt;strong&gt;the less you
touch a waveform, the better it sounds&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;streaming-pipeline-complexity&quot;&gt;Streaming Pipeline Complexity&lt;&#x2F;h2&gt;
&lt;p&gt;Of course, streaming isn’t just about clean audio—it’s about managing multiple
sources, outputs, and the occasional copyright headache. Here is how I tackled
those real-world challenges.&lt;&#x2F;p&gt;
&lt;p&gt;I typically do two types of live streams:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Either just myself, with some light background music from Spotify&lt;&#x2F;li&gt;
&lt;li&gt;or co-streaming with multiple guests, accepting their audio input from a
&lt;strong&gt;shared Zoom session&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;When I stream, I may stream to multiple places in parallel using
&lt;a rel=&quot;external&quot; title=&quot;Restram.io&quot; href=&quot;https:&#x2F;&#x2F;restream.io&quot;&gt;Restream.io&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Streaming Spotify on Twitch is fine, as long as you don’t publish the live
stream as a VOD and just play non-DRM-free music during the live stream;
however, streaming the same content to YouTube is problematic, since YouTube
does not allow copyrighted content even during the live streams.&lt;&#x2F;p&gt;
&lt;p&gt;That added some complexity to the setup, because I’ll have to send DRM-free
music to YouTube and other platforms, while sending really cool music that
the audience likes to Twitch.&lt;&#x2F;p&gt;
&lt;p&gt;For DRM-free music, I use &lt;a rel=&quot;external&quot; title=&quot;Endel: Focus, relax, and sleep&quot; href=&quot;https:&#x2F;&#x2F;endel.io&quot;&gt;&lt;strong&gt;Endel&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, which generates calming
AI-generated background sounds; it is totally copyright-free.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;to-duck-or-not-to-duck&quot;&gt;To Duck or not to Duck&lt;&#x2F;h2&gt;
&lt;p&gt;Another thing that I needed to configure is the background music’s
&lt;strong&gt;gain level&lt;&#x2F;strong&gt;: When I am talking, I want to keep it around &lt;strong&gt;5-10%&lt;&#x2F;strong&gt;,
and when I’m not speaking and doing a focused programming session, for example,
I prefer to elevate it around &lt;strong&gt;40%&lt;&#x2F;strong&gt;, so that the audience can enjoy the music,
while I can continue my focused work.&lt;&#x2F;p&gt;
&lt;p&gt;There are &lt;strong&gt;ducking&lt;&#x2F;strong&gt; plugins that achieve this effect automatically. Yet,
I personally don’t like them because they distort the beginning of the speech,
cutting off my initial words every once in a while. They can also activate
unnecessarily to other noise sources in the room, disrupting the stream.&lt;&#x2F;p&gt;
&lt;p&gt;Thankfully, I have &lt;a rel=&quot;external&quot; title=&quot;Elgato Stream Deck XL&quot; href=&quot;https:&#x2F;&#x2F;www.elgato.com&#x2F;us&#x2F;en&#x2F;p&#x2F;stream-deck-xl&quot;&gt;&lt;strong&gt;Stream Deck&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; to change these levels
instantly by simply pressing a button.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;audio-hijack-configuration&quot;&gt;Audio Hijack Configuration&lt;&#x2F;h2&gt;
&lt;p&gt;Let’s continue with &lt;a rel=&quot;external&quot; title=&quot;Audio Hijack&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;audiohijack&#x2F;&quot;&gt;&lt;strong&gt;Audio Hijack&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; configuration.&lt;&#x2F;p&gt;
&lt;p&gt;Overall, I have four audio input sources:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;My microphone&lt;&#x2F;li&gt;
&lt;li&gt;Zoom (&lt;em&gt;guest&lt;&#x2F;em&gt;) audio&lt;&#x2F;li&gt;
&lt;li&gt;Endel (&lt;em&gt;DRM-free audio&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Spotify (&lt;em&gt;Copyrighted music&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;And these sources need to change state depending on the &lt;strong&gt;kind&lt;&#x2F;strong&gt; of streaming
I am doing. And these changes can happen dynamically during a single streaming
session, too. So… &lt;strong&gt;automation ftw!&lt;&#x2F;strong&gt;, but we’ll come to that later.&lt;&#x2F;p&gt;
&lt;p&gt;For my unique streaming needs, I created the following pipeline:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hint&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;You can open these images in a new tab to view larger versions.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ah-pipeline.png&quot; alt=&quot;AudioHijack pipeline.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;AudioHijack pipeline.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Endel&lt;&#x2F;strong&gt; audio is split into two with different gain levels, then mixed
with my microphone audio after some post-processing. The resultant audio is
fed into “&lt;strong&gt;Endel Loopback&lt;&#x2F;strong&gt;”, which becomes the audio source for
&lt;a rel=&quot;external&quot; title=&quot;OBS Studio&quot; href=&quot;https:&#x2F;&#x2F;obsproject.com&quot;&gt;&lt;strong&gt;OBS Studio&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;. OBS Studio directly mirrors my main streaming app
&lt;a rel=&quot;external&quot; title=&quot;Wirecast&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;&lt;strong&gt;Wirecast&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, but it uses &lt;strong&gt;DRM-free&lt;&#x2F;strong&gt; background music from
&lt;strong&gt;Endel&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Similarly, &lt;strong&gt;Spotify music&lt;&#x2F;strong&gt; is split into two with different gain levels and
fed into Babyface Pro FS’s software playback (&lt;em&gt;PB 11&#x2F;12&lt;&#x2F;em&gt;) input, which
corresponds to &lt;em&gt;ADAT 7&#x2F;8&lt;&#x2F;em&gt; software input.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Zoom audio&lt;&#x2F;strong&gt; is also split-fed into both &lt;strong&gt;Endel Loopback&lt;&#x2F;strong&gt;, and &lt;strong&gt;Babyface
Pro FS&lt;&#x2F;strong&gt; software input channel. &lt;strong&gt;OBS Studio&lt;&#x2F;strong&gt; uses &lt;strong&gt;Endel Loopback&lt;&#x2F;strong&gt; as the
background audio source, whereas &lt;strong&gt;Babyface Pro FS&lt;&#x2F;strong&gt; software audio input is
“&lt;em&gt;looped back&lt;&#x2F;em&gt;” through hardware to &lt;a rel=&quot;external&quot; title=&quot;Wirecast&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;&lt;strong&gt;Wirecast&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Endel Loopback&lt;&#x2F;strong&gt; is the &lt;strong&gt;only&lt;&#x2F;strong&gt; software loopback interface I have had to
create. It is targeted for &lt;a rel=&quot;external&quot; title=&quot;OBS Studio&quot; href=&quot;https:&#x2F;&#x2F;obsproject.com&quot;&gt;&lt;strong&gt;OBS Studio&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;’s audio ingestion. This is not
because of Babyface’s limitations, but because OBS Studio does not properly
recognize Babyface’s output channels.&lt;&#x2F;p&gt;
&lt;p&gt;In this case, &lt;strong&gt;Endel Loopback&lt;&#x2F;strong&gt; is just a pass-through virtual interface that
does nothing other than act as a bridge.&lt;&#x2F;p&gt;
&lt;p&gt;Here’s &lt;strong&gt;OBS&lt;&#x2F;strong&gt;’s audio input configuration:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;obs-audio-config.png&quot; alt=&quot;OBS Studio audio configuration.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;OBS Studio audio configuration.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;And here is the &lt;a rel=&quot;external&quot; title=&quot;Loopback&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;loopback&#x2F;&quot;&gt;&lt;strong&gt;Loopback&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; “&lt;em&gt;Endel Loopback&lt;&#x2F;em&gt;” interface:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;endel-loopback.png&quot; alt=&quot;&amp;#x27;Endel Loopback&amp;#x27; Loopback interface.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;&amp;#x27;Endel Loopback&amp;#x27; Loopback interface.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;For the &lt;a rel=&quot;external&quot; title=&quot;Wirecast&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;&lt;strong&gt;Wirecast&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; input, here is how the audio input in
&lt;strong&gt;Wirecast&lt;&#x2F;strong&gt; is configured: It is listening to the channels &lt;strong&gt;11&#x2F;12&lt;&#x2F;strong&gt;, which
correspond to the &lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; software input Loopback in &lt;strong&gt;Babyface&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;wirecast-audio.png&quot; alt=&quot;Wirecast audio input.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Wirecast audio input.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Here’s how the &lt;strong&gt;Audio Hijack&lt;&#x2F;strong&gt; output is configured:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ah-babyface.png&quot; alt=&quot;AudioHijack audio output.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;AudioHijack audio output.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Note that &lt;strong&gt;Wirecast&lt;&#x2F;strong&gt; maps to the same input channels as &lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; (&lt;em&gt;which,
again, correspond to channels 11&#x2F;12 in Wirecast’s mapping&lt;&#x2F;em&gt;).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-goes-where&quot;&gt;What Goes Where&lt;&#x2F;h2&gt;
&lt;p&gt;And here is the overall information flow:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ah-info-flow.png&quot; alt=&quot;Audio Hijack information flow.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Audio Hijack information flow.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;mixer-setup&quot;&gt;Mixer Setup&lt;&#x2F;h2&gt;
&lt;p&gt;Then, in the mixer &lt;a rel=&quot;external&quot; title=&quot;TotalMix FX&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;totalmix-fx.html&quot;&gt;&lt;strong&gt;RME TotalMix FX&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, which comes prepackaged
with &lt;strong&gt;Babyface Pro FS&lt;&#x2F;strong&gt; audio drivers, I create a loopback interface from
&lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; software input channel to &lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; output:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;babyface-loopback.png&quot; alt=&quot;Babyface loopback interface.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Babyface loopback interface.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;This is what Wirecast consumes.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-is-the-matrix&quot;&gt;What is the Matrix?&lt;&#x2F;h2&gt;
&lt;p&gt;By the way, you can see all these internal channel mappings in &lt;strong&gt;Babyface Pro
FS&lt;&#x2F;strong&gt; in the mixer’s &lt;strong&gt;matrix view&lt;&#x2F;strong&gt;. It requires some “&lt;em&gt;getting used to&lt;&#x2F;em&gt;”, but
once you get the hang of how the rows and columns tie together, it is really
invaluable in debugging your audio flow.&lt;&#x2F;p&gt;
&lt;p&gt;This way, you can ensure every input is routed to the exact output channel
you want.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;babyface-matrix.png&quot; alt=&quot;RME Totalmix matrix view.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;RME Totalmix matrix view.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;And for some clarity of mind, so that you don’t have to memorize what
cryptic interface name maps to which one of your devices, you can give these
interfaces custom names.&lt;&#x2F;p&gt;
&lt;p&gt;Below, I have renamed “&lt;em&gt;AN 1&#x2F;2&lt;&#x2F;em&gt;” to “&lt;strong&gt;Shure SM7B&lt;&#x2F;strong&gt;” because
that’s the microphone I’m using; “&lt;em&gt;PH 3&#x2F;4&lt;&#x2F;em&gt;” to “&lt;strong&gt;Headphones&lt;&#x2F;strong&gt;”, and “ADAT 5&#x2F;6”
to “&lt;strong&gt;What I Hear&lt;&#x2F;strong&gt;”, which makes much more sense and eliminates the mental math
of remembering numbered interface names during the stream, in case you need to
do some real-time adjustment, need to recall which one is which.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;babyface-matrix-renamed.png&quot; alt=&quot;RME Totalmix matrix view with renamed channel names.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;RME Totalmix matrix view with renamed channel names.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;what-i-hear&quot;&gt;What I Hear&lt;&#x2F;h2&gt;
&lt;p&gt;So, what does the “&lt;strong&gt;What I Hear&lt;&#x2F;strong&gt;” interface receive, though?&lt;&#x2F;p&gt;
&lt;p&gt;One issue so far here is that I don’t listen to any of this background music.
All outputs we have defined are routed directly to the stream mix.&lt;&#x2F;p&gt;
&lt;p&gt;What’s the fun in streaming if I’m not listening to what I’m playing,
isn’t it?&lt;&#x2F;p&gt;
&lt;p&gt;For that, I have a separate &lt;strong&gt;Audio Hijack&lt;&#x2F;strong&gt; session:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;audio-to-me.png&quot; alt=&quot;Audio Hijack information flow.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Audio Hijack information flow.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;I redirect whatever I want to hear in the background to channels &lt;strong&gt;9&#x2F;10&lt;&#x2F;strong&gt; of
&lt;strong&gt;Babyface&lt;&#x2F;strong&gt;, which correspond to the ADAT 5&#x2F;6 software input interface.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;audio-input-pipeline-cleanup&quot;&gt;Audio Input Pipeline Cleanup&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; title=&quot;Shure SM7B Vocal Microphone&quot; href=&quot;https:&#x2F;&#x2F;www.shure.com&#x2F;en-US&#x2F;products&#x2F;microphones&#x2F;sm7b?variant=SM7B&quot;&gt;&lt;strong&gt;Shure SM7B&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; is a studio-grade microphone, and it requires
(&lt;strong&gt;ahem&lt;&#x2F;strong&gt;—“demands”) you to speak very close to it (&lt;em&gt;less than a handspan
distance from your mouth to the mic&lt;&#x2F;em&gt;). However, that’s not always practical
during a live coding session. Regardless, &lt;strong&gt;SM7B&lt;&#x2F;strong&gt; is &lt;strong&gt;very&lt;&#x2F;strong&gt; gain-hungry.&lt;&#x2F;p&gt;
&lt;p&gt;So, in my audio input pipeline, I had to compensate for:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Hungry gain requirements of &lt;strong&gt;SM7B&lt;&#x2F;strong&gt; (&lt;em&gt;especially when I’m using it at a
distance between one and two handspans&lt;&#x2F;em&gt;),&lt;&#x2F;li&gt;
&lt;li&gt;Cleaning up the noise floor that might result in such gain adjustments,&lt;&#x2F;li&gt;
&lt;li&gt;Dynamic adjustment of the audio signal if I move around or lean back, thus
moving away from the microphone,&lt;&#x2F;li&gt;
&lt;li&gt;And (&lt;em&gt;although it’s &lt;strong&gt;very&lt;&#x2F;strong&gt; difficult to intentionally make a
&lt;strong&gt;Shure SM7B&lt;&#x2F;strong&gt;’s output waveform overshoot and clip—these are truly
&lt;strong&gt;gain-hungry&lt;&#x2F;strong&gt; monsters&lt;&#x2F;em&gt;), handle any output overload and clipping issues
that may happen during the stream.&lt;&#x2F;li&gt;
&lt;li&gt;And to monitor all of this in real-time, with as minimal a distraction as
possible.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;hardware-gain-adjustment&quot;&gt;Hardware Gain Adjustment&lt;&#x2F;h2&gt;
&lt;p&gt;Let’s start with gain.&lt;&#x2F;p&gt;
&lt;p&gt;I found the sweet spot for my input gain increase on the audio interface
to be around &lt;strong&gt;39 dB to 42 dB&lt;&#x2F;strong&gt;; anything above that range began to overshoot.
Depending on how you use your mic, your levels may vary, of course.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;babyface-gain.png&quot; alt=&quot;RME Totalmix input gain.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;RME Totalmix input gain.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;This adjustment is done at the hardware level, and it is the &lt;strong&gt;cleanest&lt;&#x2F;strong&gt;
output you can get without introducing any additional software modulation.&lt;&#x2F;p&gt;
&lt;p&gt;However, since I might need to modify the gain in real time during the live
stream, I created &lt;strong&gt;8 snapshots&lt;&#x2F;strong&gt;, ranging from &lt;strong&gt;46 dB&lt;&#x2F;strong&gt; to &lt;strong&gt;39 dB&lt;&#x2F;strong&gt;: This is
much easier than trying to turn a virtual knob in real-time: Something
tough to manipulate with precision.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;babyface-snapshots.png&quot; alt=&quot;RME Totalmix snapshots.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;RME Totalmix snapshots.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;remove-that-hiss-our-preciousss&quot;&gt;Remove that “&lt;em&gt;Hiss&lt;&#x2F;em&gt;”, Our Preciousss&lt;&#x2F;h2&gt;
&lt;p&gt;Next, get rid of the noise floor. For that, In &lt;a rel=&quot;external&quot; title=&quot;Audio Hijack&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;audiohijack&#x2F;&quot;&gt;&lt;strong&gt;Audio Hijack&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;,
I added a&lt;strong&gt;Speech Denoise&lt;&#x2F;strong&gt; plugin immediately after the input, which worked
beautifully:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ah-speech-denoise.png&quot; alt=&quot;Audio Hijack speech denoise.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Audio Hijack speech denoise.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;It’s not visible on this screen, but I also &lt;strong&gt;enabled&lt;&#x2F;strong&gt;, &lt;strong&gt;mono signal
processing&lt;&#x2F;strong&gt; to preserve some CPU cycles. The microphone input is
already mono, so there is no need to process two channels.&lt;&#x2F;p&gt;
&lt;p&gt;Immediately after the speech denoise, I added a very light compression using the
&lt;a rel=&quot;external&quot; title=&quot;Ozone&quot; href=&quot;https:&#x2F;&#x2F;www.izotope.com&#x2F;en&#x2F;products&#x2F;ozone&quot;&gt;&lt;strong&gt;Ozone Advanced&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; toolkit with the following parameters:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ozone-compressor.png&quot; alt=&quot;Audio compression.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Audio compression.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;And finally, not that I’d likely need—but just to be safe—I added a limiter
that follows the compressor:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;au-peak-limiter.png&quot; alt=&quot;Peak limiter.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Peak limiter.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;And here is all of these put together:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ah-audio-in.png&quot; alt=&quot;Audio input pipeline.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Audio input pipeline.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Once the basics were running smoothly, I wanted to streamline my workflow and
make live adjustments effortless.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;wait-ozone-advanced-has-a-limiter-function&quot;&gt;Wait! Ozone Advanced Has a Limiter Function&lt;&#x2F;h2&gt;
&lt;p&gt;So why not use it, right?&lt;&#x2F;p&gt;
&lt;p&gt;I’m not using it, not “&lt;em&gt;because Ozone is bad&lt;&#x2F;em&gt;”, but because of how Ozone’s
limiter is designed versus what I need in a live chain.&lt;&#x2F;p&gt;
&lt;p&gt;Ozone’s limiter (&lt;em&gt;Maximizer &#x2F; Dynamics limiter&lt;&#x2F;em&gt;) is a &lt;strong&gt;mastering limiter&lt;&#x2F;strong&gt;,
not a live safety limiter. So, it is the wrong tool for real-time,
zero-latency, never-clip protection, which is what my final limiter is doing.&lt;&#x2F;p&gt;
&lt;p&gt;Ozone’s limiter is designed to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Increase perceived loudness&lt;&#x2F;li&gt;
&lt;li&gt;Shape transients musically&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Use lookahead&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Use psychoacoustic models&lt;&#x2F;li&gt;
&lt;li&gt;Trade transient accuracy for loudness&lt;&#x2F;li&gt;
&lt;li&gt;Work with offline or fixed-buffer DAWs&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;☝️ That is perfect for mastering and &lt;strong&gt;dangerous&lt;&#x2F;strong&gt; for live capture.&lt;&#x2F;p&gt;
&lt;p&gt;That clarified, now back to automation.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;operation-automation&quot;&gt;Operation Automation&lt;&#x2F;h2&gt;
&lt;p&gt;In the pipeline, you might have noticed these two input switch blocks, each
consisting of two input switches.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;ah-switches.png&quot; alt=&quot;Audio input switches.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Audio input switches.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;They effectively create an &lt;strong&gt;audio routing state machine&lt;&#x2F;strong&gt; for me. And the
best part of it: They are programmable.&lt;&#x2F;p&gt;
&lt;p&gt;For example, here is a script that lowers the background music and elevates my
vocals, using the &lt;code&gt;duck()&lt;&#x2F;code&gt; function I defined:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #1D2021;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt; =&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; sessionName&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Stream Session&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; modeSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt;  =&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Endel Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;, &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Spotify Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; routeSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Endel Route&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;, &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Spotify Route&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; voxSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Mic Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;, &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Guest Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;sessionWithName&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;sessionName&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;  if&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    console&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;error&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Session not found: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; sessionName&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; switchToA&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;    const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;blockWithName&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;b&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;      console&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;error&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;No block named &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;      return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; !==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;InputSwitchBlock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;      console&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;error&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;&amp;#39; is not a switch block &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;      return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;switchToA&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; switchToB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;    const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;blockWithName&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;b&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;      console&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;error&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;No block named &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;      return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; !==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;InputSwitchBlock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;      console&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;error&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;&amp;#39; is not a switch block &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FB4934;&quot;&gt;      return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;switchToB&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; justMusic&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    modeSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;forEach&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;switchToA&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    routeSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;forEach&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;switchToA&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    voxSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;forEach&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;switchToB&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; duck&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    modeSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;forEach&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;switchToB&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    routeSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;forEach&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;switchToA&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;    voxSwitches&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;forEach&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #83A598;&quot;&gt;switchToA&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; muteMyself&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;    switchToB&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Mic Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; unmuteMyself&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;    switchToA&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Mic Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;  function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; muteGuests&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;    switchToB&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Guest Mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;  duck&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span&gt;)()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;stream-deck-vox-controls&quot;&gt;Stream Deck Vox Controls&lt;&#x2F;h2&gt;
&lt;p&gt;When you save this file with the &lt;code&gt;.ahcommand&lt;&#x2F;code&gt; extension, then you can define
these transitions in &lt;a rel=&quot;external&quot; title=&quot;Elgato Stream Deck XL&quot; href=&quot;https:&#x2F;&#x2F;www.elgato.com&#x2F;us&#x2F;en&#x2F;p&#x2F;stream-deck-xl&quot;&gt;&lt;strong&gt;Stream Deck&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; too, and switch to one
another with the push of a button:&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;streamdeck-audio.png&quot; alt=&quot;Controlling audio with Audio Hijack commands in Stream Deck.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Controlling audio with Audio Hijack commands in Stream Deck.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Here is what these buttons do, from top to bottom:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Mute&#x2F;unmute my microphone only, without touching anything else;&lt;&#x2F;li&gt;
&lt;li&gt;Mute&#x2F;unmute guest audio;&lt;&#x2F;li&gt;
&lt;li&gt;Mute&#x2F;unmute background music, without touching anything else;&lt;&#x2F;li&gt;
&lt;li&gt;Duck background music for me to talk; mute everyone and just turn on the
music (&lt;em&gt;for things like “quick breaks” or before starting the stream while
waiting for people to join in the chatroom&lt;&#x2F;em&gt;).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;With core routing and controls set up, I needed a reliable way to monitor
everything in real time and catch issues before they reach the audience.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;audio-monitoring&quot;&gt;Audio Monitoring&lt;&#x2F;h2&gt;
&lt;p&gt;None of these would matter if my vocal output is too low or too high and
I don’t notice it immediately during a live stream. For this, I use
&lt;a rel=&quot;external&quot; title=&quot;Digicheck NG&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;digicheck-ng.html&quot;&gt;&lt;strong&gt;DigiCheck NG&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;In the image below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The top horizontal monitor is the actual stream mix.&lt;&#x2F;li&gt;
&lt;li&gt;The bottom horizontal monitor monitors the microphone output before any
processing (&lt;em&gt;if it clips, there is nothing you can do, so I try to keep it
around -20dB RMS as best as I can&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;The smaller horizontal monitor in the top-right shows all output channels on
the &lt;strong&gt;Babyface&lt;&#x2F;strong&gt;, so if I inadvertently enable something I don’t need, I will
see it immediately.&lt;&#x2F;li&gt;
&lt;li&gt;The bottom half is &lt;a rel=&quot;external&quot; title=&quot;Wirecast&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;&lt;strong&gt;Wirecast&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, which I &lt;strong&gt;don’t&lt;&#x2F;strong&gt; touch at all
because I manage the entire stream screen transitions using
&lt;a rel=&quot;external&quot; title=&quot;Elgato Stream Deck XL&quot; href=&quot;https:&#x2F;&#x2F;www.elgato.com&#x2F;us&#x2F;en&#x2F;p&#x2F;stream-deck-xl&quot;&gt;&lt;strong&gt;Stream Deck&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, so it merely acts as an unobtrusive visual
monitor of the live stream session.&lt;&#x2F;li&gt;
&lt;li&gt;To the right of the screen are &lt;strong&gt;YouTube&lt;&#x2F;strong&gt; and &lt;strong&gt;Twitch&lt;&#x2F;strong&gt; chats.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;These all sit in a small secondary display below my main display; always
in my peripheral vision, but never distracting me while I’m working with
my main monitor.&lt;&#x2F;p&gt;

&lt;div class=&quot;z2h-image&quot;&gt;
    &lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;&amp;#x2F;images&amp;#x2F;2025&amp;#x2F;12&amp;#x2F;stream-audio-monitoring.png&quot; alt=&quot;Stream audio monitoring.&quot;&#x2F;&gt;&lt;&#x2F;p&gt;
    &lt;p class=&quot;alt&quot; style=&quot;text-align: center; font-style: italic;
      margin-top: -1.125em;
      font-size: 1em;&quot;&gt;Stream audio monitoring.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;different-monitors-have-different-outcomes&quot;&gt;Different Monitors Have Different Outcomes&lt;&#x2F;h2&gt;
&lt;p&gt;Here is my stream signal path and where I put various RMS meters:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #1D2021;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Mic&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; → Babyface ADC&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   → TotalMix (input domain)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     → Audio Hijack&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       → AH Meter #1 (post-ADC, pre-processing)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;         → Processing chain (EQ &#x2F; Comp &#x2F; Limiter)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           → AH Meter #2 (post-processing)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;             → AH Output&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               → Babyface Loopback: ADAT 7&#x2F;8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                 → Wirecast input&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                   → Wirecast meter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                     → Encoder &#x2F; Stream&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; is my Stream master bus. That means:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Anything before &lt;strong&gt;AH Meter #2&lt;&#x2F;strong&gt; is not yet final&lt;&#x2F;li&gt;
&lt;li&gt;Anything after &lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; does not exist for the stream&lt;&#x2F;li&gt;
&lt;li&gt;AudioHijack is &lt;strong&gt;one&lt;&#x2F;strong&gt; contributor to what ends up on that bus
(&lt;em&gt;often the main one&lt;&#x2F;em&gt;), but the truth for the stream is:
whatever is on &lt;strong&gt;ADAT 7&#x2F;8 loopback&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That makes the meter for &lt;strong&gt;ADAT 7&#x2F;8 Loopback bus&lt;&#x2F;strong&gt; in &lt;strong&gt;DigiCheck&lt;&#x2F;strong&gt; the
most direct, single source of truth for the system.&lt;&#x2F;p&gt;
&lt;p&gt;Wirecast’s own meter is still useful but not authoritative for the final stream.&lt;&#x2F;p&gt;
&lt;p&gt;So if I see a &lt;strong&gt;red&lt;&#x2F;strong&gt; for &lt;strong&gt;ADAT 7&#x2F;8&lt;&#x2F;strong&gt; in &lt;strong&gt;DigiCheck&lt;&#x2F;strong&gt;, that is an immediate
&lt;strong&gt;fix now&lt;&#x2F;strong&gt;. And the likely fix would be adjusting the input gain of the
microphone.&lt;&#x2F;p&gt;
&lt;p&gt;A &lt;strong&gt;red&lt;&#x2F;strong&gt; on Wirecast (&lt;em&gt;while DigiCheck looks fine&lt;&#x2F;em&gt;) is merely a &lt;em&gt;conservative
warning&lt;&#x2F;em&gt; that implies I am flirting with the ceiling.&lt;&#x2F;p&gt;
&lt;p&gt;A &lt;strong&gt;red&lt;&#x2F;strong&gt; on &lt;strong&gt;Audio Hijack #1&lt;&#x2F;strong&gt; would mean input capture is getting hot.&lt;&#x2F;p&gt;
&lt;p&gt;A &lt;strong&gt;red&lt;&#x2F;strong&gt; on &lt;strong&gt;Audio Hijack #2&lt;&#x2F;strong&gt; would mean the process chain is getting hot.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rms-target-recommendations&quot;&gt;RMS Target Recommendations&lt;&#x2F;h2&gt;
&lt;p&gt;The industry standard for &lt;strong&gt;RMS&lt;&#x2F;strong&gt; is &lt;strong&gt;-18 to -14 dBFS&lt;&#x2F;strong&gt;. That will:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Sound present, and “&lt;em&gt;close&lt;&#x2F;em&gt;”;&lt;&#x2F;li&gt;
&lt;li&gt;Leave headroom for emphasis when needed;&lt;&#x2F;li&gt;
&lt;li&gt;Play nicely with background music;&lt;&#x2F;li&gt;
&lt;li&gt;Encode cleanly across platforms.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Anything below &lt;strong&gt;-20 dBFS&lt;&#x2F;strong&gt; will start to sound “&lt;em&gt;too quiet&lt;&#x2F;em&gt;”. When that
happens:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Viewers will tend to turn the volume up;&lt;&#x2F;li&gt;
&lt;li&gt;The noise floor (&lt;em&gt;if any&lt;&#x2F;em&gt;) becomes more noticeable;&lt;&#x2F;li&gt;
&lt;li&gt;Platform normalization will boost and residue badly later.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For &lt;strong&gt;background music&lt;&#x2F;strong&gt;, the recommended level is &lt;strong&gt;-28 to -24 dBFS&lt;&#x2F;strong&gt;.
Depending on the genre, it can be even higher.&lt;&#x2F;p&gt;
&lt;p&gt;But instead of memorizing all these numbers, &lt;strong&gt;practically&lt;&#x2F;strong&gt; you can aim to keep
your peaks at &lt;strong&gt;yellows&lt;&#x2F;strong&gt; at all times: That’s what most DJs do, and eventually
get natural at this in time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tools-and-technologies-mentioned&quot;&gt;Tools and Technologies Mentioned&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;services&quot;&gt;Services&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Restram.io&quot; href=&quot;https:&#x2F;&#x2F;restream.io&quot;&gt;Restram.io&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Endel: Focus, relax, and sleep&quot; href=&quot;https:&#x2F;&#x2F;endel.io&quot;&gt;Endel&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;hardware-and-devices&quot;&gt;Hardware and Devices&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Babyface Pro FS&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;babyface-pro-fs.html&quot;&gt;Babyface Pro FS&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Scarlett Solo&quot; href=&quot;https:&#x2F;&#x2F;us.focusrite.com&#x2F;products&#x2F;scarlett-solo&quot;&gt;Scarlett Solo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Universal Audio: Volt 2&quot; href=&quot;https:&#x2F;&#x2F;www.uaudio.com&#x2F;products&#x2F;volt-2-usb&quot;&gt;Universal Audio: Volt 2&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Cloudlifter CL-X&quot; href=&quot;https:&#x2F;&#x2F;www.cloudmicrophones.com&#x2F;cloudlifter-cl-x&quot;&gt;Cloudlifter CL-X&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Shure SM7B Vocal Microphone&quot; href=&quot;https:&#x2F;&#x2F;www.shure.com&#x2F;en-US&#x2F;products&#x2F;microphones&#x2F;sm7b?variant=SM7B&quot;&gt;Shure SM7B Vocal Microphone&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Elgato Stream Deck XL&quot; href=&quot;https:&#x2F;&#x2F;www.elgato.com&#x2F;us&#x2F;en&#x2F;p&#x2F;stream-deck-xl&quot;&gt;Elgato Stream Deck XL&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;apps&quot;&gt;Apps&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;TotalMix FX&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;totalmix-fx.html&quot;&gt;TotalMix FX&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Digicheck NG&quot; href=&quot;https:&#x2F;&#x2F;rme-audio.de&#x2F;digicheck-ng.html&quot;&gt;DigiCheck NG&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Ozone&quot; href=&quot;https:&#x2F;&#x2F;www.izotope.com&#x2F;en&#x2F;products&#x2F;ozone&quot;&gt;Ozone&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Audio Hijack&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;audiohijack&#x2F;&quot;&gt;Audio Hijack&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Loopback&quot; href=&quot;https:&#x2F;&#x2F;rogueamoeba.com&#x2F;loopback&#x2F;&quot;&gt;Loopback&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Wirecast&quot; href=&quot;https:&#x2F;&#x2F;www.wirecast.io&#x2F;en&#x2F;&quot;&gt;Wirecast&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;OBS Studio&quot; href=&quot;https:&#x2F;&#x2F;obsproject.com&quot;&gt;OBS Studio&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;With this new setup, it’s really straightforward to switch between audio
settings with the push of a button, which makes streaming more fun while
delivering the best audio quality I can to the audience.&lt;&#x2F;p&gt;
&lt;p&gt;This project also gave me a much deeper appreciation for how hardware and
software can work together to solve practical problems—whether that’s noise
management, platform-specific routing, or just the ability to quickly adapt
without interrupting a live session.&lt;&#x2F;p&gt;
&lt;p&gt;If you’re considering a similar upgrade or want to streamline your own
workflow, feel free to borrow any of these ideas or configurations. It’s been a
rewarding journey, and the flexibility I’ve gained makes it all worthwhile.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
