<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[hoob.dev]]></title><description><![CDATA[Various projects related to code, music, games, and more]]></description><link>https://hoob.dev/</link><image><url>https://hoob.dev/favicon.png</url><title>hoob.dev</title><link>https://hoob.dev/</link></image><generator>Ghost 5.0</generator><lastBuildDate>Thu, 25 Dec 2025 21:00:50 GMT</lastBuildDate><atom:link href="https://hoob.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Windows Volume Control with NK2 Tray]]></title><description><![CDATA[A little over two years ago I found myself fighting with multiple soundcards, ground loop hum, software audio routing messes, and a tangle of cables. Why? I simply wanted the mixer on my desk to directly control game audio, music, and voice chat channels independently.]]></description><link>https://hoob.dev/windows-application-volume-control-with-nk2-tray/</link><guid isPermaLink="false">5c7ac6783086c60001ec00e1</guid><category><![CDATA[Code]]></category><category><![CDATA[Audio]]></category><dc:creator><![CDATA[Hoober]]></dc:creator><pubDate>Sat, 02 Mar 2019 20:26:08 GMT</pubDate><media:content url="https://hoob.dev/content/images/2019/03/nk2.png" medium="image"/><content:encoded><![CDATA[<img src="https://hoob.dev/content/images/2019/03/nk2.png" alt="Windows Volume Control with NK2 Tray"><p>A little over two years ago I found myself fighting with multiple soundcards, ground loop hum, software audio routing messes, and a tangle of cables. Why? I simply wanted the mixer on my desk to directly control game audio, music, and voice chat channels independently.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hoob.dev/content/images/2019/03/IMG_20170112_080843.jpg" class="kg-image" alt="Windows Volume Control with NK2 Tray" loading="lazy"><figcaption>A horrible quality shot of the original solution</figcaption></figure><p>After arriving on a solution that worked, I asked myself, &quot;How do normal humans solve this problem?&quot; The answer was pretty obvious, but not satisfying. &quot;They just alt-tab and use the windows volume mixer.&quot;</p><p>I wasn&apos;t happy with that solution, but also disliked the complexity of my &quot;working&quot; solution, so I turned to my usual windows software toolbox and started writing some AutoHotkey script. In pretty short order I was able to adjust individual application volumes using key bindings. This was an improvement over alt-tabbing to the Windows mixer, but still felt clumsy compared to analog faders.</p><p>So why not the best of both worlds? Analog faders controlling the Windows volume mixer! I got my hands on the cheapest USB midi control surface I could find, the Korg nanoKONTROL2.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hoob.dev/content/images/2019/03/lg_nano-1.png" class="kg-image" alt="Windows Volume Control with NK2 Tray" loading="lazy"><figcaption>I wonder if you can tell this is a product photo?</figcaption></figure><p>Using some existing midi and audio libraries for AHK I was able to hack together a working prototype in no time. I whipped up a quick video showing my project and promptly forgot about it.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/mxscBWjlrlc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p><a href="https://github.com/ho0ber/nk2-audio">This prototype</a> turned out to be stable enough that I used it for over two years with only minor modifications, and it turns out that a number of people who had watched my video decided to buy a nanoKONTROL2 <em>just</em> to use my software on it. As the emails and github issues started rolling for the prototype project, I started to realize that I was not easily going to be able to support further development on the project in its current state.</p><p>After months of dragging my feet on research and getting started on it, I dove back into the world of programming native Windows applications for the first time in over a decade. As a developer who does mostly back-end projects using open-source tech, this felt a lot like walking into the dragon&apos;s lair. As it turns out, a lot has improved in the space since I last wrote code built just for windows.</p><p>I landed on a C# Windows Forms application as the simplest path forward, and I stumbled across <a href="https://github.com/naudio/NAudio">NAudio</a>, a brilliantly written library that made a lot of the Core Audio and midi work a lot easier. After a few more weeks, I had a functioning alpha version of the project running and got it into the hands of a few loyal users of my prototype software.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/Ze23ua9O7Vk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>I also was able to add support for additional devices pretty easily. There&apos;s still a lot of work to do to make this truly stable and feature complete, but at least it&apos;s now something I feel confident that multiple developers could actually work together to support, rather than just the mess of copypasta that made up the original prototype.</p><p>I&apos;ve open-sourced the rewrite, and I&apos;m hoping that as adoption continues, we&apos;ll get more and more people interested enough to actually contribute. If that person is you, or if you&apos;d like to try out the software, please check it out on the <a href="https://github.com/ho0ber/NK2Tray">NK2 Tray project page on GitHub</a>.</p><p>Additionally, if you want to help test or just talk shop, I encourage you to <a href="https://discord.gg/BtVTYxpTh">join our discord server</a>!</p><p>The next major milestone for me on the project is to add support for a far more advanced controller, like the <a href="https://www.sweetwater.com/store/detail/XTouchEXT--behringer-by-touch-extender">Behringer X-Touch Extender</a>. The digital scribble strips, motorized faders, and per-channel volume meters really open up the possibilities of the project.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hoob.dev/content/images/2019/03/xte.jpg" class="kg-image" alt="Windows Volume Control with NK2 Tray" loading="lazy"><figcaption>This definitely belongs in a spaceship</figcaption></figure><p>For now, I&apos;m just excited to have a group of active users who are excited about something I built. That&apos;s a big part of what it means to write open source software, right?</p><!--kg-card-begin: markdown--><p><em>Here are the links collected, with a few bonuses:</em></p>
<ul>
<li><a href="https://github.com/ho0ber/NK2Tray">NK2 Tray GitHub Project</a></li>
<li><a href="https://discord.gg/BtVTYxpTh">Discord Invite</a></li>
<li><a href="https://github.com/ho0ber/nk2-audio">Original AutoHotkey Prototype Project</a></li>
<li><a href="https://github.com/naudio/NAudio">NAudio Library</a></li>
<li><a href="https://www.sweetwater.com/store/detail/XTouchEXT--behringer-by-touch-extender">X-Touch Extender</a></li>
<li><a href="https://www.sweetwater.com/store/detail/XTouchMini--behringer-by-touch-mini">X-Touch Mini</a></li>
<li><a href="https://www.sweetwater.com/store/detail/nanoKON2bk--korg-nanokontrol2-black">nanoKONTROL 2</a></li>
</ul>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><div id="coral_talk_stream"></div>
<script src="https://talk.hoob.dev/static/embed.js" async onload="
  Coral.Talk.render(document.getElementById(&apos;coral_talk_stream&apos;), {
    talk: &apos;https://talk.hoob.dev/&apos;
  });
"></script><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[OP-Z Fun]]></title><description><![CDATA[Recently I purchased a Teenage Engineering OP-Z. Many of you have probably seen the OP-1 videos all over the internet—it looks like a weird piece of medical equipment, but it makes sweet, sweet tunes. The OP-Z is their new flagship product, not trying to replace the OP-1...]]></description><link>https://hoob.dev/op-z-fun/</link><guid isPermaLink="false">5c7ab2f13086c60001ec00bf</guid><category><![CDATA[Music]]></category><category><![CDATA[OP-Z]]></category><dc:creator><![CDATA[Hoober]]></dc:creator><pubDate>Sat, 02 Mar 2019 17:24:43 GMT</pubDate><media:content url="https://hoob.dev/content/images/2019/03/IMG_20190302_112949.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://hoob.dev/content/images/2019/03/IMG_20190302_112949.jpg" alt="OP-Z Fun"><p>Recently I purchased a Teenage Engineering OP-Z. Many of you have probably seen the OP-1 videos all over the internet&#x2014;it looks like a weird piece of medical equipment, but it makes sweet, sweet tunes. The OP-Z is their new flagship product, not trying to replace the OP-1, but it is smaller and more powerful in some interesting ways.</p><p>Here&apos;s a track I made in the first couple of hours of owning the OP-Z.</p><figure class="kg-card kg-embed-card"><iframe width="100%" height="400" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?visual=true&amp;url=https%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F583890114&amp;show_artwork=true"></iframe></figure><!--kg-card-begin: markdown--><p>I&apos;ve been working on a few more since, and even using some in the Disney podcast I&apos;m making with my wife, <a href="https://boredandsassy.com">Bored &amp; Sassy</a>.</p>
<!--kg-card-end: markdown--><p>Because my first dabbling on the OP-Z isn&apos;t all that impressive, here&apos;s a set on the OP-Z from one of the best-known OP-1 youtubers who has been deep-diving on the OP-Z and making instructional videos for the community.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/RGUOXxQniKU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><!--kg-card-begin: markdown--><p>If you haven&apos;t checked out Jeremy&apos;s work before go check out his channel, <a href="https://www.youtube.com/user/jjbbllkk">Red Means Recording</a>.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><div id="coral_talk_stream"></div>
<script src="https://talk.hoob.dev/static/embed.js" async onload="
  Coral.Talk.render(document.getElementById(&apos;coral_talk_stream&apos;), {
    talk: &apos;https://talk.hoob.dev/&apos;
  });
"></script><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Ghost Default Theme (Casper) Dark-Mode]]></title><description><![CDATA[So I really like the default theme that comes with Ghost, but I really dislike light backgrounds. I don't want to go through the trouble of maintaining my own fork of the theme, and while there are dark themes out there, many of them are quite ugly and lack the features of Casper.]]></description><link>https://hoob.dev/ghost-default-theme-casper-dark-mode/</link><guid isPermaLink="false">5c76ff823086c60001ec0067</guid><category><![CDATA[Code]]></category><dc:creator><![CDATA[Hoober]]></dc:creator><pubDate>Wed, 27 Feb 2019 21:27:41 GMT</pubDate><media:content url="https://hoob.dev/content/images/2019/02/Screen-Shot-2019-02-27-at-4.28.11-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://hoob.dev/content/images/2019/02/Screen-Shot-2019-02-27-at-4.28.11-PM.png" alt="Ghost Default Theme (Casper) Dark-Mode"><p>So I really like the default theme that comes with Ghost, but I really dislike light backgrounds. I don&apos;t want to go through the trouble of maintaining my own fork of the theme, and while there are dark themes out there, many of them are quite ugly and lack the features of Casper.</p><p>My solution? Cheat! Using Ghost&apos;s code injection features, I&apos;m able to apply some quick and dirty CSS to update the theme to be more to my liking. I had trouble finding any useful examples of this for Casper, so I thought it might be nice to share mine here. I&apos;ll update this post as I continue to tweak this site to my liking.</p><!--kg-card-begin: markdown--><pre><code class="language-css">    /* Homepage background color */
    body {
        background-color: #000;
    }
    
    /* Article page background color */
    #site-main {
        background-color: #222;    
    }
    
    /* Article title and author name color */
    .post-full-title, .author-card-name a {
        color: #EEE;
    }
    
    /* Article content background/text color */
    .post-content, .post-full-content {
        color: #DDD;
        background-color: #000;  
    }
    
    /* Article links */
    .post-full-content a {
     	color: #8cccf0;   
    }
    
    /* Emphasis */
    .post-full-content em, .post-full-content strong {
        color: #fff;
    }
    
    /* Floating header on articles */
    .floating-header {
        background-color: #000;
        color: #DDD;
    }
    .floating-header-title, .floating-header-share-label {
        color: #DDD;
    }
    
    /* Inline code (backticks) */
    .post-full-content code {
        background-color: #333;
    }
    
    /* Code blocks */
	.post-full-content pre {
     	background-color: #333;   
    }
</code></pre>
<!--kg-card-end: markdown--><p>Just drop the above inside some <code>&lt;style&gt;&lt;/style&gt;</code> tags in your header code-injection, and your Ghost site should look like this one! If you want to theme coral talk for comments like I have below, <a href="https://hoob.io/talk.css">you can steal that CSS too</a>.</p><p>UPDATE: This appears to have broken over time. I&apos;m looking into trying out this instead: <a href="https://forum.ghost.org/t/casper-the-dark-mode-enabled-version-free/6634">https://forum.ghost.org/t/casper-the-dark-mode-enabled-version-free/6634</a></p><!--kg-card-begin: html--><div id="coral_talk_stream"></div>
<script src="https://talk.hoob.dev/static/embed.js" async onload="
  Coral.Talk.render(document.getElementById(&apos;coral_talk_stream&apos;), {
    talk: &apos;https://talk.hoob.dev/&apos;
  });
"></script><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Hello]]></title><description><![CDATA[So this is a blog, or something like a blog. Mostly this is a placeholder while I find some content to drop here.

I have a variety of interests, many of which lend themselves to being shared in text rather than just video or audio.]]></description><link>https://hoob.dev/about/</link><guid isPermaLink="false">5c762bbc3086c60001ec001d</guid><dc:creator><![CDATA[Hoober]]></dc:creator><pubDate>Wed, 27 Feb 2019 06:35:36 GMT</pubDate><media:content url="https://hoob.dev/content/images/2019/02/lisa.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://hoob.dev/content/images/2019/02/lisa.jpg" alt="Hello"><p>So this is a blog, or something like a blog. Mostly this is a placeholder while I find some content to drop here.</p><!--kg-card-begin: markdown--><p>I have a variety of interests, many of which lend themselves to being shared in text rather than just video or audio:</p>
<ul>
<li>Software Development &amp; DevOps</li>
<li>Microcontrollers &amp; Electronics (Arduino, etc)</li>
<li>Ham Radio</li>
<li>Electronic Music Production</li>
<li>Live Audio &amp; Recording</li>
<li>Home Automation</li>
<li>Photography</li>
<li>Baking</li>
</ul>
<!--kg-card-end: markdown--><p>I&apos;m sure I&apos;ll touch on all of these in this blog eventually.</p><p>If you want to contact me, feel free to send me an email at <a href="mailto:ho0ber@gmail.com">ho0ber@gmail.com</a>.</p>]]></content:encoded></item></channel></rss>