<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"
    xmlns:fh="http://purl.org/syndication/history/1.0"
    xmlns:at="http://purl.org/atompub/tombstones/1.0">

    <title>Sockpuppet: Blog</title>
    
    <subtitle><![CDATA[Updates, articles, and behind-the-scenes content.]]></subtitle>
    
    <link href="https://sockpuppet.band/blog/feed?id=2206&amp;tag=video" rel="self" />
    
    <link href="https://sockpuppet.band/blog/feed?tag=video" rel="current" />
    <fh:archive/>
    

    <link href="https://busybee.superfeedr.com" rel="hub" />
    
    
    <link href="https://sockpuppet.band/blog/" />
    <id>tag:sockpuppet.band,2026-05-14:blog</id>
    <updated>2026-06-04T00:00:00+00:00</updated>

    

    <entry>
        
        <title>Furality Ultra booth video: behind the scenes</title>
        <link href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes" rel="alternate" type="text/html" />
        <published>2026-06-04T00:00:00+00:00</published>
        <updated>2026-06-04T00:00:00+00:00</updated>
        <id>urn:uuid:325373e9-41af-40e9-aeec-509a38af3658</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>The <a href="https://youtu.be/J2pnu04Y_TI">video I made for my Furality Ultra booth</a> was a lot of work, and I&rsquo;d love to walk folks through the process!</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>The <a href="https://youtu.be/J2pnu04Y_TI">video I made for my Furality Ultra booth</a> was a lot of work, and I&rsquo;d love to walk folks through the process!</p>
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/J2pnu04Y_TI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<p>The assumption some people have is that I got a whole bunch of people together to perform in sync, but that is absolutely not the case. Instead, every single critter, and many of the visual props you see, are on their own separate chromakeyed layer, composited using <a href="https://www.blackmagicdesign.com/products/davinciresolve">DaVinci Resolve</a>, each one acted by me personally.</p>

        
            <p>I had learned a lot of lessons from the <a href="https://youtu.be/5oIwosuZW9s">video I produced for Furality Somna</a>; for that one I just recorded a simple looping scene with a fixed camera, and played every single character in it, and again composited everything in DaVinci. I ended up making it all up as I went along, which was fun but also added about 3x as much work as it normally would have taken, and this year&rsquo;s video being <em>much</em> more ambitious I knew I needed to do way more planning for it to come out well.</p><p>(The music in last year&rsquo;s video, incidentally, is a lo-fi version of <a href="https://sockpuppet.band/track/material-change">Material Change</a>.)</p><p>Here is a video showing some of the stuff that I&rsquo;ll be describing in further detail:</p>
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/K5jnrj0LUQI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<h3 id="2206_h3_1_Music-production">Music production<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_1_Music-production" class="toc_link"></a></h3>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/11/692f/ultra-music-timeline_295bfd1645_640x345_q50.webp" width="640" height="345" srcset="https://sockpuppet.band/static/_img/11/692f/ultra-music-timeline_295bfd1645_640x345_q50.webp 1x, https://sockpuppet.band/static/_img/11/692f/ultra-music-timeline_295bfd1645_1280x690_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra music timeline.jpg" title="The music production session"></a></figure>
<p>I wrote and recorded the song up-front, and used that to plan the visuals as I figured out which musical genres to use. Some of it I had planned out ahead of time but some of it I figured out what made the most sense while I was recording the music. As usual I produced the music in <a href="https://www.apple.com/logic-pro/">Logic Pro</a>, and I made heavy use of the folder stack functionality to keep my project organized. Each genre was recorded on its own separate set of tracks contained within a folder stack.</p><p>I did end up making some changes to the music during production. The jazz segment in particular changed a few times, both to improve the lyrics and the vocal delivery.</p><p>I went with a tempo of 128BPM, because the video is one minute long and there were exactly 128 beats in it. Sometimes you don&rsquo;t have to overthink it.</p><h3 id="2206_h3_2_Locations">Locations<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_2_Locations" class="toc_link"></a></h3><p>After getting the music arranged, I wrote up a simple shooting script to plan out the scenes, and did a lot of location scouting to find places that would work well. My main criteria were:</p>
<ul>
<li>It needs to have decent performance (so I could record at a steady framerate)</li>
<li>It needs to be possible to turn off post-processing (so that it doesn&rsquo;t interfere with VRChat&rsquo;s stream camera green screen)</li>
<li>It needs to be somewhere that&rsquo;s recognizable to folks who are in my orbit</li>
</ul>
<p>The locations I ended up choosing were:</p>
<ul>
<li><a href="https://vrchat.com/home/world/wrld_898dcf4f-cdbe-4d75-a55d-f80b0213ab9c/info">Community Open Mic</a> (pop)</li>
<li><a href="https://vrchat.com/home/world/wrld_71ff0336-d86c-4095-b0f7-e628f1da3a02/info">Piano Lounge Freude</a> (jazz)</li>
<li><a href="https://vrchat.com/home/world/wrld_976e4d46-ba35-4c6d-a7f6-38714ee38fbf/info">Trans Academy</a> (choral)</li>
</ul>
<p>The first two are venues I&rsquo;ve performed at many times, and Trans Academy is an organization I <a href="https://sockpuppet.band/clients/1270-Trans-Academy">volunteer for</a> so it&rsquo;s special to me.</p><p>Originally I was going to record the first segment in <a href="https://vrchat.com/home/world/wrld_31ff6bb7-b2f5-4d2a-aa38-1dc93926bb53/info">Transitions Club</a>, where I&rsquo;ve also performed many times, but unfortunately there&rsquo;s no way to turn off the camera postprocessing there, which I only realized after doing a test recording and discovering that it affects the green screen.</p><h3 id="2206_h3_3_Avatars">Avatars<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_3_Avatars" class="toc_link"></a></h3><p>All of the avatars I used were my own; in particular, I made several versions of my <a href="https://fluffy.itch.io/critter-avatar">standard critter base</a> with different instrument setups, and also a specific drummer version of the <a href="https://fluffy.itch.io/critter-junction-avatar">Critter Junction resident base</a>.</p><p>The guitar, electric bass, keyboard, and drum sticks were my own models. I also modified the following meshes (all of which are free to use in this way):</p>
<ul>
<li><a href="https://sketchfab.com/3d-models/instruments-violin-piano-double-bass-3abd06dc681144adaea89b295246be55">Instruments: Violin / Piano / Double Bass</a> by Tom Zimmermann (for the violin, viola, and double bass)</li>
<li><a href="https://sketchfab.com/3d-models/cello-ece053225f3a42f1939528b9c9014775">Cello</a> by VM-Models</li>
<li><a href="https://free3d.com/3d-model/drum-set-99664.html?dd_referrer=">Drum Set</a> by zaurian868</li>
<li><a href="https://sketchfab.com/3d-models/violin-bow-af332828a42f4f8cbbe81bea3de0b00d">Violin bow</a> by CharlotteMeehan</li>
</ul>
<p>All of these were extensively modified for my purposes (particularly to make them VRChat-compatible).</p><p>I also created a <a href="https://vrchat.com/home/avatar/avtr_6a332961-0201-42ca-a4bd-ce6e8fd1f3e9">simple green screen avatar</a> for part of the compositing workflow.</p><h3 id="2206_h3_4_Recording-layers">Recording layers<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_4_Recording-layers" class="toc_link"></a></h3><p>VRChat has a <a href="https://wiki.vrchat.com/wiki/Camera_Dolly">camera dolly</a> system which allows you to set up and replay a camera path, but it doesn&rsquo;t provide any real built-in synchronization mechanism. To keep things in sync, I did the following:</p>
<ol>
<li>Created a basic lead-in click track (I used <a href="https://www.audacityteam.org/">Audacity</a> for this, but any music software will do)</li>
<li>Split the music into sections for filming</li>
<li>Downloaded <a href="https://github.com/yoggy/sendosc">sendosc</a> to trigger the dolly camera</li>
<li>Wrote a basic <a href="https://learn.microsoft.com/en-us/powershell/">Powershell</a> script to synchronize everything up</li>
</ol>
<figure class="blockcode"><figcaption>play.ps1</figcaption><pre class="highlight" data-language="ps1" data-line-numbers><span class="line" id="e2206cb1L1"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L1"></a><span class="line-content"><span class="nv">$click</span> <span class="p">=</span> <span class="nb">New-Object</span> <span class="n">System</span><span class="p">.</span><span class="n">Media</span><span class="p">.</span><span class="n">SoundPlayer</span> <span class="s1">&#39;click.wav&#39;</span></span></span>
<span class="line" id="e2206cb1L2"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L2"></a><span class="line-content"><span class="nv">$player</span> <span class="p">=</span> <span class="nb">New-Object</span> <span class="n">System</span><span class="p">.</span><span class="n">Media</span><span class="p">.</span><span class="n">SoundPlayer</span> <span class="nv">$args</span><span class="p">[</span><span class="n">0</span><span class="p">]</span></span></span>
<span class="line" id="e2206cb1L3"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L3"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L4"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L4"></a><span class="line-content"><span class="p">.\</span><span class="n">sendosc</span><span class="p">.</span><span class="n">exe</span> <span class="n">localhost</span> <span class="n">9000</span> <span class="p">/</span><span class="n">dolly</span><span class="p">/</span><span class="n">Play</span> <span class="n">b</span> <span class="n">false</span></span></span>
<span class="line" id="e2206cb1L5"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L5"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L6"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L6"></a><span class="line-content"><span class="nb">echo </span><span class="s2">&quot;Playing click&quot;</span></span></span>
<span class="line" id="e2206cb1L7"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L7"></a><span class="line-content"><span class="nv">$click</span><span class="p">.</span><span class="n">Play</span><span class="p">()</span></span></span>
<span class="line" id="e2206cb1L8"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L8"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L9"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L9"></a><span class="line-content"><span class="nb">Start-Sleep</span> <span class="n">-Milliseconds</span> <span class="n">5000</span></span></span>
<span class="line" id="e2206cb1L10"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L10"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L11"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L11"></a><span class="line-content"><span class="nb">echo </span><span class="s2">&quot;starting dollycam&quot;</span></span></span>
<span class="line" id="e2206cb1L12"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L12"></a><span class="line-content"><span class="p">.\</span><span class="n">sendosc</span><span class="p">.</span><span class="n">exe</span> <span class="n">localhost</span> <span class="n">9000</span> <span class="p">/</span><span class="n">dolly</span><span class="p">/</span><span class="n">Play</span> <span class="n">b</span> <span class="n">true</span></span></span>
<span class="line" id="e2206cb1L13"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L13"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L14"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L14"></a><span class="line-content"><span class="nb">Start-Sleep</span> <span class="n">-Milliseconds</span> <span class="n">1000</span></span></span>
<span class="line" id="e2206cb1L15"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L15"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L16"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L16"></a><span class="line-content"><span class="nb">echo </span><span class="s2">&quot;Playing song&quot;</span></span></span>
<span class="line" id="e2206cb1L17"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L17"></a><span class="line-content"><span class="nv">$player</span><span class="p">.</span><span class="n">Play</span><span class="p">()</span></span></span>
<span class="line" id="e2206cb1L18"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L18"></a><span class="line-content"></span></span>
<span class="line" id="e2206cb1L19"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb1L19"></a><span class="line-content"><span class="nb">Start-Sleep</span> <span class="n">-Milliseconds</span> <span class="n">16000</span></span></span>
</pre></figure><p>In order to film a pass, I would then invoke the script with a command like:</p><figure class="blockcode"><pre class="highlight" data-language="cmd" data-line-numbers><span class="line" id="e2206cb2L1"><a class="line-number" href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#e2206cb2L1"></a><span class="line-content">powershell -ExecutionPolicy Bypass -File play.ps1 &quot;.\1 pop.wav&quot;</span></span>
</pre></figure><p>I kept a single powershell instance open in the foreground so I could just press up and enter every time I wanted to film a take, which was quite often.</p><p>Anyway. This script will play the click track for five seconds, then starts the camera dolly path, then one second later starts the music playing, so that I could then perform my choreography in sync with the audio track.</p><p>I did several takes of each layer, and also kept an eye out for obvious rendering hitches during it, since those often cause the camera path to fall out of sync and cause other visual artifacts in the composite. Unfortunately, VRChat&rsquo;s dolly system is a bit limited when it comes to synchronization.</p><p>As far as synchronizing things in the timeline go, I found that there were 21 frames of latency between the display capture and the audio output capture from my headphones, and I used the click track to line the clips up in the composite.</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/df/a3a5/ultra-clicktrack-alignments_82cfcfa023_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/df/a3a5/ultra-clicktrack-alignments_82cfcfa023_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/df/a3a5/ultra-clicktrack-alignments_82cfcfa023_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra clicktrack alignments.jpg"></a></figure>
<h3 id="2206_h3_5_Dolly-management">Dolly management<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_5_Dolly-management" class="toc_link"></a></h3><p>I made heavy use of <a href="https://github.com/Duinrahaic/VRCDollyManager">DollyManager</a> to manage my camera paths, which was super useful whenever I had to do reshoots (which was often). Unfortunately, Camera Dolly does not store a bunch of settings when you export so I still had to make notes of a lot of things. And also it <em>does</em> store a bunch of settings that you don&rsquo;t actually want it to store, such as the green screen color. And the in-game editor is kind of a nightmare to actually use, especially for keyframes that are out of reach.</p><p>Basically, the camera dolly as it stands right now is kinda half-baked. Hopefully VRChat improves it over time.</p><h3 id="2206_h3_6_Dealing-with-in-world-props">Dealing with in-world props<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_6_Dealing-with-in-world-props" class="toc_link"></a></h3><p>Most in-world props do not appear on the green screen, which is why I created the green screen avatar to mask those out. For those render passes I disabled the camera green screen, and stood behind the prop while recording another pass. This usually required a lot of extra work to make a clean plate in DaVinci, but it was worth it.</p><h3 id="2206_h3_7_The-rock-pop-scene">The rock/pop scene<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_7_The-rock-pop-scene" class="toc_link"></a></h3><p>This scene I ended up redoing multiple times while I figured out the workflow. Fortunately it was the simplest of the composited scenes, so it was well worth the time spent experimenting so I could make the later scenes go more smoothly.</p><p>There are &ldquo;only&rdquo; seven layers in this composite:</p>
<ul>
<li>Background</li>
<li>Drummer</li>
<li>Drum kit (world prop)</li>
<li>Backup vocalist</li>
<li>Bass player</li>
<li>Lead critter</li>
<li>Microphone (world prop)</li>
</ul>
<p>I recorded this in three separate shots each with their own camera path; I ended up only using two of the shots.</p><p>During the first shot with the sweeping camera pan I had to do multiple cuts within the layers to change their ordering, which you can kind of see in the timeline:</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/12/3ad9/ultra-scene-1-cut-1_9dfc89d5be_640x168_q50.webp" width="640" height="168" srcset="https://sockpuppet.band/static/_img/12/3ad9/ultra-scene-1-cut-1_9dfc89d5be_640x168_q50.webp 1x, https://sockpuppet.band/static/_img/12/3ad9/ultra-scene-1-cut-1_9dfc89d5be_1280x335_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra scene 1 cut 1.jpg" title="Furality Ultra scene 1 timeline view"></a></figure>
<p>I added a bit of blur to the background layer, mostly to hide some annoying aliasing artifacts from the render since I had antialiasing disabled in VRChat to get the maximum possible framerate. Lens blur hides many sins.</p><h3 id="2206_h3_8_The-studio-scene">The studio scene<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_8_The-studio-scene" class="toc_link"></a></h3><p>For the scene where I&rsquo;m in the studio I just found a world where there was a chair I could sit on, disabled fullbody tracking (so that the chair would work right), and lined myself up over a photo of my actual messy studio. Pretty straightforward. In the composite I added some extra thick cartoon outline and some film grain to make things match a bit better. I also spent way too much time figuring out how to post-process a shadow onto the seat cushion, which mostly got covered up by the speech bubble. Oh well, it was a good learning experience.</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/0d/ff7e/ultra-scene-2-seatmask_113efc18f7_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/0d/ff7e/ultra-scene-2-seatmask_113efc18f7_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/0d/ff7e/ultra-scene-2-seatmask_113efc18f7_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra scene 2 seatmask.jpg" title="The Fusion composition for the shadow on the seat"></a><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/2e/76ae/ultra-scene-2-composite_594245817f_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/2e/76ae/ultra-scene-2-composite_594245817f_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/2e/76ae/ultra-scene-2-composite_594245817f_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra scene 2 composite.jpg" title="The fully-composited scene"></a></figure>
<p>Incidentally, I am <em>not</em> singing along with the lyrics there, and instead am saying &ldquo;Why isn&rsquo;t this working?!&rdquo; which is a common utterance from me whenever Logic is misbehaving.</p><h3 id="2206_h3_9_The-pixel-art-scene">The pixel art scene<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_9_The-pixel-art-scene" class="toc_link"></a></h3><p>This was another super-complicated composite. DaVinci doesn&rsquo;t really have any good way of doing pixel-precise positioning or scaling, so what I ended up doing here was to draw every layer at 320x180 with things lined up how I wanted them in the frame, then scaled those layers up 6x with nearest-neighbor filtering (using <a href="https://imagemagick.org">ImageMagick</a>) and then did the composite in DaVinci.</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/7f/5ca2/ultra-pixel-stage_432b2906d5_640x335_q50.webp" width="640" height="335" srcset="https://sockpuppet.band/static/_img/7f/5ca2/ultra-pixel-stage_432b2906d5_640x335_q50.webp 1x, https://sockpuppet.band/static/_img/7f/5ca2/ultra-pixel-stage_432b2906d5_1280x671_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra pixel stage.jpg" title="A screenshot of the sprite setup work in Affinity Photo"></a><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/e6/6c80/ultra-pixel-composite_bbef7ba2c4_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/e6/6c80/ultra-pixel-composite_bbef7ba2c4_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/e6/6c80/ultra-pixel-composite_bbef7ba2c4_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra pixel composite.jpg" title="The pixel stage final composite"></a></figure>
<p>The note lanes for the rhythm game in the background were just drawn as sprite layers which I moved in sync to the music, and I did a Fusion composition to extract the few rows of pixels where those notes hit the bottom edge of the controller sprites and then applied a ridiculous glow with a directional blur to them.</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/9f/d46e/ultra-pixel-noteline-effect_76d978ec4c_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/9f/d46e/ultra-pixel-noteline-effect_76d978ec4c_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/9f/d46e/ultra-pixel-noteline-effect_76d978ec4c_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra pixel noteline effect.jpg" title="A glimpse into how the noteline effect works"></a></figure>
<p>The bouncing coin is something I quickly modeled and rendered in Blender as a 6-frame sequence. I looped that sequence in DaVinci and then gave it a simple motion path, synchronized with the beat.</p>
<div class="images"><video src="https://sockpuppet.band/_file/4d6fb/f/ultra%20coin.mp4" playsinline autoplay loop muted controls></div>
<p>Each of the performers was multiple layers, typically a base sprite, a sprite for the instrument, and any additional sprites for hand positions (which I moved in 6-pixel increments using &ldquo;step&rdquo; interpolation) and so on. The falling sprites were done separately, of course.</p><p>When the entire stage falls apart, I just applied some simple motion paths to them and went with what felt right, rather than anything physically accurate (but it was fun to make the trellis bounce off the floor, a decision I came up with on the spot).</p><p>The main composite is around 20 layers, and many of those layers are also compound clips with 3-4 layers of their own. There&rsquo;s a <em>lot</em> going on. Watch it a bunch of times!</p><h3 id="2206_h3_10_The-cartoon-critter-head">The cartoon critter head<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_10_The-cartoon-critter-head" class="toc_link"></a></h3><p>That was all just traditional hand animation! I made a layer for the head, the blinking eyes, and a bunch of mouth shapes, and then I did the usual thing one does. Resolve, incidentally, is not particularly great for animating this way, but it worked well enough. For a longer animation I&rsquo;d definitely want to use something else though.</p><p>The best thing that came out of this was when I was drawing the base layer and doing a symmetry check:</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/_" class="u-photo" width="320" height="320" loading="lazy" style="background-image:url('https://sockpuppet.band/static/ultra%20critter.gif');background-size:contain;background-position:50.00% 50.00%;background-repeat:no-repeat;max-width:640px;max-height:640px" alt="wiggle wiggle" title="wiggle wiggle"></a></figure>
<h3 id="2206_h3_11_The-big-grid-of-games-and-videos">The big grid of games and videos and such<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_11_The-big-grid-of-games-and-videos" class="toc_link"></a></h3>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/9b/77ee/ultra-gamegrid-composite_b6d382791a_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/9b/77ee/ultra-gamegrid-composite_b6d382791a_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/9b/77ee/ultra-gamegrid-composite_b6d382791a_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra gamegrid composite.jpg"></a></figure>
<p>The Undertale-style critter sprite was a modified version of <a href="https://bsky.app/profile/beesbuzz.biz/post/3luvax42wts26">the one I drew</a> for the <a href="https://memories.undertale.com/">Undertale memories</a> microsite that went up for the 10th anniversary of Undertale&rsquo;s release.</p><p>The footage all came from things I&rsquo;ve worked on. Most of it was <a href="https://itch.io/c/289717/games-with-my-music">games I composed for</a>:</p>
<ul>
<li><a href="https://hoggtied.itch.io/ass-without-a-trace-2">Ass Without a Trace 2</a> by HoggTied (NSFW)</li>
<li><a href="https://madebyyamatsu.itch.io/psycho-burst">Psycho Burst</a> and <a href="https://madebyyamatsu.itch.io/airship-chef">Airship Chef</a> by Yamatsu (both NSFW)</li>
<li><a href="https://mitha.itch.io/snack-stacker">Snack Stacker</a> by Mitha</li>
<li><a href="https://sundewbry.itch.io/pawmune">Pawmune</a> by SundewBry</li>
<li><a href="https://rtwfroody.itch.io/treestoration">Treestoration</a> by rtwfroody</li>
<li><a href="https://chinniedraws.itch.io/currying-flavors">Currying Flavors</a> by chinniedraws</li>
<li><a href="https://definitely-a-fox.itch.io/magnolia-goes-for-a-walk">Magnolia&rsquo;s Early Morning Walk</a> by Definitely a Fox (NSFW-ish)</li>
<li><a href="https://the-firecrackers.itch.io/firecracker">The Balance of Sappho</a> by The Firecrackers</li>
<li><a href="https://sethpaxton.itch.io/hallowed-grounds">Hallowed Grounds</a> by Paxton</li>
<li><a href="https://glass-dragon.itch.io/hsp">The Herbal Spice Problem</a> by Glass Dragon Studios</li>
<li><a href="https://cloverfirefly.itch.io/admiralo-island-witches-club-demo">Admiralo Island Witches Club</a> by cloverfirefly</li>
<li><a href="https://fluffy.itch.io/brickris-tetout">Brickris Tetout</a> by Bamboy</li>
<li><a href="https://bzlsk.itch.io/elevate">Elevate</a> by Kamil Bazydlo</li>
<li><a href="https://z0lly.itch.io/hagglewaggleduckdoge">Haggle Waggle: Duck &amp; Doge</a> by z0lly</li>
<li><a href="https://spectrohaus.itch.io/spoooky-sushi">Spooky Sushi</a> by Spectronaut</li>
<li><a href="https://fluffy.itch.io/refactor">Refactor</a>, <a href="https://fluffy.itch.io/colorful-critter">Colorful Critter</a><sup id="r_e2206_fn1"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#d_e2206_fn1" rel="footnote">1</a></sup>, and <a href="https://fluffy.itch.io/cat-catcher">CATcher</a> by fluffy (that&rsquo;s me!)</li>
</ul>
<p>But I also included two of the sillier videos from my <a href="https://youtube.com/@fluffycritter">random crap channel</a>:</p>
<ul>
<li><a href="https://youtu.be/fY_t3z7oqXc">jukka wins it all</a></li>
<li><a href="https://youtu.be/9ktAV95mxtg">critter dance</a> (a test of my customized <a href="https://juliawinterpaw.gumroad.com/l/vrchatmouse">Winterpaw rodent</a> avatar)</li>
</ul>
<p>To actually animate the grid I just made two compound clips, each with its own 5x3 grid of cropped videos, and then scrolled each one across the screen. For most of the videos (which were 16:9) I could size and position them consistently by zooming them to 0.3333 and giving them a left/right crop of 384 (to make their effective resolution 1152×1080, the horizontal resolution being 1920×3/5, trust me this all makes sense mathematically). Horizontal positioning was in multiples of 384 (1920/5), and vertical was in 360 (1080/3). There were a couple of non-16:9 videos which I also had to deal with separately, but it was basically the same process, just with different numbers.</p><h3 id="2206_h3_12_The-jazz-club-scene">The jazz club scene<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_12_The-jazz-club-scene" class="toc_link"></a></h3><p>There wasn&rsquo;t anything particularly different from this vs. the rock/pop scene, but in this case I recorded the background and microphone plates with postprocessing enabled, since Piano Lounge Freude&rsquo;s lighting is all done in the postprocessing step. For the microphone I was able to clean up the postprocessing glow well enough, mostly using the &ldquo;despill&rdquo; function built-in to 3D Keyer.</p><p>Oddly enough, the stage mic in Piano Lounge Freude <em>does</em> appear on the VRC stream camera&rsquo;s green screen, somehow. I assume there&rsquo;s some specific render tag set on the object. As a result it appeared in my avatar video layer. However, it was still good to have the properly-lit microphone to composite on top to improve the look. To account for the postprocessing-based lighting I used DaVinci&rsquo;s color grading to make the avatars look appropriately-lit in the composite.</p><p>On the background I was originally thinking of using a green screen and then tracking it to put some of my other random videos in the space, but I decided that would have been too much work and also too visually-busy, so instead I made a quick-and-dirty plaid background video to run in a loop and then composited in the one shot from last year&rsquo;s video more traditionally.</p><h3 id="2206_h3_13_The-choral-scene">The choral scene<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_13_The-choral-scene" class="toc_link"></a></h3>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/a2/1a37/ultra-choir-shot-from-hell_f12d31d0b1_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/a2/1a37/ultra-choir-shot-from-hell_f12d31d0b1_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/a2/1a37/ultra-choir-shot-from-hell_f12d31d0b1_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra choir shot from hell.jpg" title="The shot from hell"></a></figure>
<p>The choral scene was a <em>nightmare</em> to record and composite; in my Resolve project this clip eventually got the name &ldquo;the shot from hell.&rdquo; The final composite had around 35 layers! These are due to the following:</p>
<ul>
<li>There are 16 critters (11 in the choir, 4 in the string quartet, and the conductor)</li>
<li>Because of the sweeping camera motion I needed to change the composite order of many of the critters in places and it was easier to do that in additional layers</li>
<li>Because the critters are partially obscured by the fountain I needed to make a greenscreened <a href="https://muppet.fandom.com/wiki/Uncle_Traveling_Matt">traveling matte</a> of it</li>
<li>And of course the website that appears in the background is another layer</li>
</ul>

<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/45/c297/ultra-choir-traveling-matte_766bdf2251_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/45/c297/ultra-choir-traveling-matte_766bdf2251_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/45/c297/ultra-choir-traveling-matte_766bdf2251_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra choir traveling matte.jpg" title="Dance your cares away"></a></figure>
<p>If you step through that scene frame-by-frame you will possibly notice some things sliding around a little weirdly, because VRChat&rsquo;s framerate is also not in sync with OBS&rsquo;s. I had OBS recording at 60 FPS, and VRChat generally renders at 75 FPS on my system, so it was the luck of the draw as to whether the frame timing would perfectly line up. Fortunately it&rsquo;s Good Enough. In future projects I will definitely try running my headset at 90 FPS to see if that helps any.</p><p>There were also some movements that fell out of sync due to render hitches, and for those I mostly fixed them in post by adding additional motion pathing to the layers. I didn&rsquo;t get them all. There&rsquo;s also a visual quirk in how the cellist&rsquo;s tail hangs through the floor but remains visible. Ideally I&rsquo;d have added a floor collider to the avatar to prevent this, but perfect is the enemy of done, and you probably didn&rsquo;t notice those issues until you read this text.</p><h3 id="2206_h3_14_Some-chromakey-tips">Some chromakey tips<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_14_Some-chromakey-tips" class="toc_link"></a></h3><p>Most of the chromakeying was just using DaVinci&rsquo;s basic &ldquo;3D Keyer&rdquo; chromakey. In some spots I had to mask some things in separately from how I masked them out, because of color clashes between avatar parts and the key color. (This was especially problematic for my main critter&rsquo;s colorcycling-rainbow material, as well as my collar which is green in most forms.)</p><p>In a couple of spots I did find it useful to use &ldquo;magic mask&rdquo; as a pre-filter for 3D Keyer, but most of the time it was much easier to just do combinations of 3D Keyer and use its built-in garbage matte.</p><p>Also, while you can change the green screen color in the VRChat camera, you have to remember to set it up before you set up a camera path, or edit the saved path JSON. Fortunately, VRChat&rsquo;s green screen is a single solid color with precise values so you can generally get away with having a green object on a green background as long as you set the key mode to &ldquo;tight,&rdquo; although some of the mask refinements will still require extra work.</p><h3 id="2206_h3_15_That-halftone-wipe-transition">That halftone wipe transition<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_15_That-halftone-wipe-transition" class="toc_link"></a></h3><p>DaVinci doesn&rsquo;t have a built-in halftone wipe or any sort of built-in halftone functionality at all, so I had to roll it myself. I approached it from a graphics programming perspective. You can think of a halftone as being similar to an <a href="https://en.wikipedia.org/wiki/Ordered_dithering">ordered pattern dither</a>, where the threshold pattern is given by:</p><p>\[
u = k(x\cos\theta - y\sin\theta) \\
v = k(x\sin\theta + y\cos\theta) \\
t = (\sin u + \sin v + 2)/4
\]</p><p>So, what I did for this was to generate a halftone screen function (I used a procedural texture in Affinity Photo for this but I could have probably figured out a way to do it all in DaVinci) and then merged it with a gradient with an additive blend, then applied a threshold filter to that, then used the resulting image as the blend mask to overlay the incoming clip over the outgoing clip. Animating the gradient&rsquo;s start and end points to sweep across the frame generated the wipe transition. Easy.</p>
<figure class="images"><a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes"><img src="https://sockpuppet.band/static/_img/84/7d1c/ultra-halftone-wipe_ad380d97e4_640x343_q50.webp" width="640" height="343" srcset="https://sockpuppet.band/static/_img/84/7d1c/ultra-halftone-wipe_ad380d97e4_640x343_q50.webp 1x, https://sockpuppet.band/static/_img/84/7d1c/ultra-halftone-wipe_ad380d97e4_1280x686_q50.webp 2x" loading="lazy" class="u-photo" alt="ultra halftone wipe.jpg"></a></figure>
<p>(Someday I will release this as a template for others to use, because it&rsquo;s a really cool effect!)</p><h3 id="2206_h3_16_Some-basic-statistics">Some basic statistics<a href="https://sockpuppet.band/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#2206_h3_16_Some-basic-statistics" class="toc_link"></a></h3>
<ul>
<li>Amount of raw footage recorded: 5 hours, 36 minutes and 25 seconds</li>
<li>Amount of time spent working on the music: around 14 hours, apparently (it sure didn&rsquo;t feel like that long though)</li>
<li>Amount of time spent editing video: I have no idea because it turns out <a href="https://manytricks.com/timesink/">Time Sink</a> wasn&rsquo;t running on my editing computer this whole time, <em>oops</em>, but I&rsquo;d estimate probably 40-60 hours?</li>
</ul>
<p>So this video took around 70-80 hours of work altogether. If someone wanted to hire me to make something like this it would probably cost around $5000 at a highly-discounted rate, or $8000 if I actually valued my time, which I clearly do not. Hopefully I get at least $5000 in music sales out of this. (<a href="https://sockpuppet.band/mirlo">Mirlo</a> and <a href="https://sockpuppet.band/bandcamp">Bandcamp</a> are probably the best choices for that.)</p>
            
                <hr/><ol><li id="d_e2206_fn1"><p>Technically Colorful Critter doesn&rsquo;t have music, but it does have (minimal) sound design, and it&rsquo;s one of my favorite little game-toy things so I don&rsquo;t regret including it here.&nbsp;<a href="/blog/2206-Furality-Ultra-booth-video-behind-the-scenes#r_e2206_fn1" rev="footnote">↩</a></p></li></ol>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=behind+the+scenes">#BehindTheScenes</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=video">#Video</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=Furality">#Furality</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="BehindTheScenes" label="behind the scenes" />
        
        <category term="Video" label="video" />
        
        <category term="Furality" label="Furality" />
        

        

    </entry>
    <entry>
        
        <title>Oops, All YouTube!</title>
        <link href="https://sockpuppet.band/blog/3472-Oops-All-YouTube" rel="alternate" type="text/html" />
        <published>2025-11-07T22:46:56-08:00</published>
        <updated>2025-11-07T22:46:56-08:00</updated>
        <id>urn:uuid:5c04f626-4172-579b-88e7-ef901e8db11a</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>After going through the rigmarole of making nice visualizer videos for Refactor, I noticed that I&rsquo;d already done that a year ago! In fact I&rsquo;d done it for a few albums and I&rsquo;d forgotten about that.</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>After going through the rigmarole of making nice visualizer videos for Refactor, I noticed that I&rsquo;d already done that a year ago! In fact I&rsquo;d done it for a few albums and I&rsquo;d forgotten about that.</p>

        
            <p>I&rsquo;ll replace the Refactor videos with the new ones on Monday because they new ones are way better and that album is pretty special to me (and I&rsquo;ll just delist the old videos rather than delete them outright), but I think I&rsquo;ll leave Radio Ready and Instrumental alone.</p><p>In any case here&rsquo;s my current tentative YouTube album rerelease schedule:</p>
<table>
<thead>
<tr>
<th>Week</th>
<th>Monday release</th>
<th>Thursday release</th>
</tr>
</thead>

<tbody>
<tr>
<td>11/10/2025</td>
<td><a href="https://sockpuppet.band/album/refactor">Refactor</a></td>
<td><a href="https://sockpuppet.band/album/strawberry-jelly-9">strawberry jelly :9</a></td>
</tr>
<tr>
<td>11/17/2025</td>
<td><a href="https://sockpuppet.band/album/foodsexsleep">foodsexsleep</a></td>
<td><a href="https://sockpuppet.band/album/or-die-trying-ost">&hellip;Or Die Trying OST</a></td>
</tr>
<tr>
<td>11/24/2025</td>
<td><a href="https://sockpuppet.band/album/love-and-monsters">Love and Monsters</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2017">Novembeat 2017</a></td>
</tr>
<tr>
<td>12/01/2025</td>
<td><a href="https://sockpuppet.band/album/songs-of-substance">Songs of Substance</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2023-pawmune-and-friends">Novembeat 2023: Pawmune and Friends</a></td>
</tr>
<tr>
<td>12/08/2025</td>
<td><a href="https://sockpuppet.band/album/s7rawberry">s7rawberry</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2019">Novembeat 2019</a></td>
</tr>
<tr>
<td>12/15/2025</td>
<td><a href="https://sockpuppet.band/album/novembeat-2016">Novembeat 2016</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2018">Novembeat 2018</a></td>
</tr>
<tr>
<td>12/22/2025</td>
<td><a href="https://sockpuppet.band/album/transformative-instrumentals-vol-1">Transformative Instrumentals, vol. 1</a></td>
<td><a href="https://sockpuppet.band/album/the-balance-of-sappho-ost">The Balance of Sappho OST</a></td>
</tr>
<tr>
<td>12/29/2025</td>
<td><a href="https://sockpuppet.band/album/admiralo-island">Admiralo Island Witches Club</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2021-lo-fi-beats-to-grind-coffee-to">Novembeat 2021</a></td>
</tr>
<tr>
<td>01/05/2026</td>
<td><a href="https://sockpuppet.band/album/treestoration-ost">Treestoration</a></td>
<td><a href="https://sockpuppet.band/album/herbal-spice-problem-ost">Herbal Spice Problem</a> + <a href="https://sockpuppet.band/album/brickris-tetout-ost">Brickris Tetout</a></td>
</tr>
<tr>
<td>01/12/2026</td>
<td><a href="https://sockpuppet.band/album/deadnames">Deadnames</a></td>
<td></td>
</tr>
</tbody>
</table>
<p>which would actually cover my entire back-catalog, aside from <a href="https://sockpuppet.band/track/wiener-dog-on-a-motorcycle">Wiener Dog on a Motorcycle</a> (which I still want to do a full music video for instead of a visualizer release) and <a href="https://sockpuppet.band/album/pointed-little-quill">pointed little quill</a> which is still available on YouTube Music.</p><p>Of course this is subject to change due to any number of factors, especially if I actually manage to get one of my backburnered albums out in the interim.</p>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=YouTube">#YouTube</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=video">#Video</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="YouTube" label="YouTube" />
        
        <category term="Video" label="video" />
        

        

    </entry>
    <entry>
        
        <title>YouTube self-management update</title>
        <link href="https://sockpuppet.band/blog/2069-YouTube-self-management-update" rel="alternate" type="text/html" />
        <published>2025-11-06T16:03:08-08:00</published>
        <updated>2025-11-06T16:03:08-08:00</updated>
        <id>urn:uuid:8f1a480b-ddf0-56ec-ab25-dfe187e6b2a1</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>If you follow <a href="https://sockpuppet.band/youtube">my YouTube channel</a> you&rsquo;ve probably been at least somewhat inundated with a bunch of videos on your feed with my music reposts. I&rsquo;ve finally figured out a process I&rsquo;m more or less happy with, and am figuring out the best cadence for doing things.</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>If you follow <a href="https://sockpuppet.band/youtube">my YouTube channel</a> you&rsquo;ve probably been at least somewhat inundated with a bunch of videos on your feed with my music reposts. I&rsquo;ve finally figured out a process I&rsquo;m more or less happy with, and am figuring out the best cadence for doing things.</p><p>My current plan is to do two releases per week; on Mondays will be what I consider my &ldquo;real&rdquo; or &ldquo;authored&rdquo; albums, and Thursdays will be what I consider &ldquo;jam&rdquo; albums. The categorization of these is a little wishy-washy, but for example, things I&rsquo;ve done for <a href="https://sockpuppet.band/releases/?tag=collection:novembeat">Novembeat</a> and <a href="https://sockpuppet.band/releases/?tag=collection:game-jams">Strawberry Jam</a> are &ldquo;jam&rdquo; albums, while things like <a href="https://sockpuppet.band/album/refactor">Refactor</a> and <a href="https://sockpuppet.band/album/songs-of-substance">Songs of Substance</a> are &ldquo;authored&rdquo; albums.</p>

        
            <h3 id="2069_h3_1_Release-schedule-intended">Release schedule (intended)<a href="https://sockpuppet.band/blog/2069-YouTube-self-management-update#2069_h3_1_Release-schedule-intended" class="toc_link"></a></h3><p>This is my current release schedule plan:</p>
<table>
<thead>
<tr>
<th>Week</th>
<th>Monday release</th>
<th>Thursday release</th>
</tr>
</thead>

<tbody>
<tr>
<td>11/10/2025</td>
<td><a href="https://sockpuppet.band/album/refactor">Refactor</a></td>
<td><a href="https://sockpuppet.band/album/strawberry-jelly-9">strawberry jelly :9</a></td>
</tr>
<tr>
<td>11/17/2025</td>
<td><a href="https://sockpuppet.band/album/foodsexsleep">foodsexsleep</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2021-lo-fi-beats-to-grind-coffee-to">Novembeat 2021</a><sup id="r_e2069_fn1"><a href="https://sockpuppet.band/blog/2069-YouTube-self-management-update#d_e2069_fn1" rel="footnote">1</a></sup></td>
</tr>
<tr>
<td>11/24/2025</td>
<td><a href="https://sockpuppet.band/album/love-and-monsters">Love and Monsters</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2017">Novembeat 2017</a></td>
</tr>
<tr>
<td>12/01/2025</td>
<td><a href="https://sockpuppet.band/album/radio-ready">Radio Ready</a></td>
<td><a href="https://sockpuppet.band/album/or-die-trying-ost">&hellip;Or Die Trying OST</a><sup id="r_e2069_fn2"><a href="https://sockpuppet.band/blog/2069-YouTube-self-management-update#d_e2069_fn2" rel="footnote">2</a></sup></td>
</tr>
<tr>
<td>12/08/2025</td>
<td><a href="https://sockpuppet.band/album/instrumental">Instrumental</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2019">Novembeat 2019</a></td>
</tr>
<tr>
<td>12/15/2025</td>
<td><a href="https://sockpuppet.band/album/songs-of-substance">Songs of Substance</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2023-pawmune-and-friends">Novembeat 2023: Pawmune and Friends</a></td>
</tr>
<tr>
<td>12/22/2025</td>
<td><a href="https://sockpuppet.band/album/transformative-instrumentals-vol-1">Transformative Instrumentals, vol. 1</a></td>
<td><a href="https://sockpuppet.band/album/novembeat-2018">Novembeat 2018</a></td>
</tr>
<tr>
<td>12/29/2025</td>
<td></td>
<td><a href="https://sockpuppet.band/album/novembeat-2016">Novembeat 2016</a></td>
</tr>
<tr>
<td>01/05/2026</td>
<td></td>
<td><a href="https://sockpuppet.band/album/s7rawberry">s7rawberry</a></td>
</tr>
</tbody>
</table>
<p>There&rsquo;s a bunch of albums not yet on that list and I&rsquo;m not sure if I want them to have YouTube rereleases just yet. I&rsquo;ll probably use the empty Mondays to release them, possibly in groups (for example, several of the game jam OSTs are quite short).</p><h3 id="2069_h3_2_Some-technical-details">Some technical details<a href="https://sockpuppet.band/blog/2069-YouTube-self-management-update#2069_h3_2_Some-technical-details" class="toc_link"></a></h3><p>To actually make the videos I&rsquo;ve finally wrapped my head around how FFmpeg filter graphs work, and I&rsquo;m building up a little repertoire of visual hacks that let me make the various things look nice.</p><p>For example, here&rsquo;s the <a href="https://sockpuppet.band/_file/bc077/8/novembeat%202020%20video%20setup.zip">Novembeat 2020 video setup files</a>, for those who are interested. FFmpeg scripts aren&rsquo;t super easy to comment, but probably the trickiest thing is the way the <code>remap</code> filter works; basically, the X and Y channels must be in 16-bit grayscale mode, and directly reference pixel coordinates, but it&rsquo;s not super easy to set up colors like that in Affinity Studio (my graphics editor of choice) so instead I draw things as a grayscale ramp (which end up with values 0-65535 in the 16-bit mapping) and then scale it down to try to map them to 0-255. Buuuuut Affinity also ends up dithering gradients regardless of colorspace or settings, so there needs to be a bit of fudging there too. (In retrospect this is something that would have probably worked better with <a href="https://gimp.org">GNU IMP</a>, which has native support for 16-bit grayscale images.)</p><p><mark>Update:</mark> Nope GNU IMP&rsquo;s UI is still complete garbage for this and wouldn&rsquo;t have improved things. I guess in the future I&rsquo;ll just want to, like, write code.</p><p>As far as uploaading the videos goes, I wrote a <a href="https://github.com/fluffy-critter/yt-uploader">Python script</a> which is rather involved in its setup (since it requires setting up a Google developer account and a &ldquo;cloud application&rdquo;) and which I can only run a few times a day due to the somewhat annoying way that YouTube&rsquo;s API limits work. But my process is basically:</p>
<ol>
<li>Encode all my videos (using the Bandcrash FLAC files as the input source)</li>
<li>Drag them (15 at a time) to the YouTube uploader</li>
<li>Add them all to a new playlist</li>
<li>Download the playlist metadata</li>
<li>Reconcile the playlist metadata with my <a href="https://fluffy.itch.io/bandcrash">Bandcrash</a> album data to automatically generate titles and descriptions</li>
<li>Apply that new data to the YouTube videos and simultaneously schedule them for publication on release day</li>
</ol>
<p>It&rsquo;s a bit annoying but not <em>nearly</em> as annoying as having to hand-edit the descriptions and post schedule.</p><h3 id="2069_h3_3_Some-future-things">Some future things<a href="https://sockpuppet.band/blog/2069-YouTube-self-management-update#2069_h3_3_Some-future-things" class="toc_link"></a></h3><p>I really want to do a proper music video for <a href="https://sockpuppet.band/track/wiener-dog-on-a-motorcycle">Wiener Dog on a Motorcycle</a>. I&rsquo;ve had a very strong image in my head for how it should look. If any animators are interested in taking it on as a gig, let me know. I need to at least do a storyboard and possibly an animatic myself, I think.</p><p>On top of all this I still have <a href="https://sockpuppet.band/blog/2959-Goings-on-in-the-Sockiverse">so many backburnered album projects</a>, and of course I still have 25 days of <a href="https://novembeat.com/">Novembeat</a> left to do&hellip;</p>
            
                <hr/><ol><li id="d_e2069_fn1"><p>This would be a music-only release, rather than the existing <a href="https://www.youtube.com/playlist?list=PLNRLpYEdwBNhD7WQYFrqckvaweUj9kKls">music videos playlist</a> which has a bunch of non-music stuff in it and is missing the last track, which currently only appears in the <a href="https://www.youtube.com/watch?v=cAdd8tF-WVs">full video</a>.&nbsp;<a href="/blog/2069-YouTube-self-management-update#r_e2069_fn1" rev="footnote">↩</a></p></li><li id="d_e2069_fn2"><p>This will also coincidentally be the same intended day as the album release of Novembeat 2025, but that will already have been on YouTube since I&rsquo;m using that as my primary incremental release mechanism.&nbsp;<a href="/blog/2069-YouTube-self-management-update#r_e2069_fn2" rev="footnote">↩</a></p></li></ol>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=YouTube">#YouTube</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=video">#Video</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=FFmpeg">#FFmpeg</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="YouTube" label="YouTube" />
        
        <category term="Video" label="video" />
        
        <category term="FFmpeg" label="FFmpeg" />
        

        

    </entry>
    

    
</feed>