fluffy

@bsky.sockpuppet.band

Symphonic followup

Over on Reddit, someone asked about TooLost, and I mentioned that I used to use them and to avoid them like the plague and I said that I’ve been using Symphonic. They had some followup questions for me and I felt that my answer was detailed enough that I should also post it as a blog post here for future reference. This is sort of a followup to my previous review about them; nothing has really changed but I’ve had more encounters with their support side of things that I have a more detailed picture on what it’s like to work with them day-to-day. Note: I may earn a commission on affiliated product links in this article. Anyway, here is my comment, verbatim: > I’ve been with Symphonic since March of this year, and I currently have 19 releases managed by them (and one release each on Soundrop and CDBaby). > > I’ve had plenty of support tickets with Symphonic and they usually get back to me quickly, although often the response is clearly AI-written. When that’s been insufficient I’ve been able to escalate to an actual human, though, and the answer I get is honest and straightforward, like either “thanks for the feedback” or “that’s on the roadmap” or “that’s not something we want to support” or the like. > > My big complaint with Symphonic is that their metadata interface is very annoying to work with, and requires a lot of scrolling and clicking to set things like genres and individual credits. They don’t have any way of just setting the same credits for all songs on an album, and the genre selector is super annoying. I’ve given them some feedback on how it can be improved but I think it’ll be a while before any changes happen there. > > I’ve also had them reject releases based on genre or title-related things (for example, they would not accept my release’s original title of “Lo-Fi Beats to Grind Coffee To” because apparently “lo-fi” and “beats” are both blacklisted due to AI slop) but they’ve been straightforward in communicating about issues like that. > > They’re also a lot more strict about the cover art text requirements and, in particular, detecting text that isn’t in the release or artist name. > > I’m not thrilled with their reliance on AI for customer support, and reading between the lines a bit I suspect they also use AI for developing the site itself. They’ve also raised prices and tried to justify it based on providing AI marketing tools that nobody actually wants, but I think that’s just misplaced marketing efforts to try to justify them not operating at a loss. > > My main complaint is just that the UI/UX on the uploader and tagger _really_ sucks to use with my particular set of physical disabilities and I can’t imagine it being a good experience even for people who don’t have chronic pain issues, and I wish they’d provide some sort of API-level access so that I can just script my uploads with the metadata I already have on my own end. But I can also see why they wouldn’t want to do that, since it’d make it way too easy for people to automate AI slop uploads, which they are firmly against, at least for the music and art. > > They have a more detailed explanation of their stance regarding AI. I would say that as far as mainstream distributors go, Symphonic is the least-bad of a lot of bad choices. If I had my choices I’d not be on major streaming at all, but that’s where people want to listen to me. Hopefully Fairplayer and other distributed/indie streaming options take better hold. (I’m certainly trying to do my part to make it happen!) But anyway, in the meantime, if you do want distribution on the major DSPs, Symphonic has been pretty okay for me.

sockpuppet.band

Bandcamp alternatives

Just when I was starting to think that Songtradr’s acquisition of Bandcamp was turning out to not be the big problem everyone predicted, they’ve gone and shaken everything back up by laying off the remaining Bandcamp engineering team. This, uh, is not a good sign. So, anyway, while I’m not planning on dropping Bandcamp entirely just yet (and will still be uploading my new releases there for the foreseeable future), here’s some of the other places I sell my music. ### Mirlo Mirlo has been around for a while, but they made some pretty great strides when the original issues with Bandcamp had started to happen. They are, currently, my favorite of the Bandcamp alternatives, for the following reasons: * They actually care about artists and trying to make a better ecosystem for everyone * Their principles are based on socialist collectivism * Their long-term goal is to provide interoperability and a federated world so that they don’t _have_ to be a single point of failure, business-wise, and are being developed as open source * Their uploader is great (especially when paired with Bandcrash) * They give artists a choice of how much of a cut they take * They provide integrated merch sales (albeit with fairly clunky shipping setup), a fully-fledged artist blog (for those who need it), and monthly support options as well * They support pay-what-you-want with both an absolute minimum and a suggested default Things are still a bit rough with them in some places; for example, I don’t like how their frontend is currently a ReactJS app without any server-side rendering (which is bad for SEO and some forms of interop), and they still don’t currently have the ability to generate discount codes or do per-track artwork, but they’re constantly making progress, and ethically and politically they are about as far left as is possible in the space. I really want to see them do well. ### itch.io itch.io is an independent games, assets, and content store. I actually first learned about them as a place to sell my comics, although they’re primarily used for games and tools. They aren’t designed specifically to be a music store and leave a lot to be desired in the music sales department, but with Bandcrash it isn’t too difficult to manage your albums there. Like Mirlo, they allow you to set whatever platform cut you like, and they also have flexible bundles and discount codes, which puts them a bit above Mirlo. They also let you organize your catalog into categories/sections. They also give you an incredible amount of control over your page layout, with the ability to provide custom CSS on request. And they even provide the ability to sell merch, although it’s pretty clunky to set up. They also support pay-what-you-want with both absolute minimum and suggested default prices. However, there are a few reasons why they don’t earn my top choice; for example: * The company is very small and centralized, and has a very high bus factor * Their interoperability is quite minimal and lacks a robust API for doing things that would be very helpful to do * As they do not have a music focus, there are a lot of places where things could be better, especially with sales reporting and discovery Still, as an independent digital asset shop (with potential merch sales), you could certainly do worse. ### ko-fi Ko-Fi started out as a Patreon alternative with a tip jar and monthly support options, but they also have a commissions platform and sales for both digital and physical items. It’s pretty okay as a shopping cart, although handling physical and digital versions of things is a bit clunky as they have to be separate items (which means uploading the digital version twice, once for each version). Also, the only way to provide an audio preview on the shop itself is via a YouTube embed. To that end it works as a supplement for having your own website, but it’s not a great shopping experience. Also it offers absolutely no discoverability at all. They don’t offer a flexible sales cut option, but the standard cut they take is a mere 5%, and you can choose to pay a small monthly fee to waive that. They also do have discount codes, but they don’t have easily-managed discography bundles. Also, they support pay-what-you-want with absolute minimum prices, although there’s no way of doing a suggested price. Personally I focus on Ko-Fi for selling physical goods that aren’t music-related, but I do have all of my albums available there in digital form. ### Subvert This is a newcomer to the indie sales space. I’ve written a bit about them already. They have some interesting ideas, namely instead of taking a cut they ask for customers to pay a tip to the platform to keep it running (similar to Gofundme), but I personally feel like they are prioritizing style over substance, and the actual upload and metadata editing process is a bit onerous. There’s nothing about them that stands out in particular aside from the co-op business model and the customer-driven cut. Like many other sites, they support pay-what-you-want with an absolute minimum; they also let you offer discounts to other co-op members, which is nice. One notable missing feature is the ability to have hidden tracks on albums. There’s also no means of doing per-track artwork that I can find, which is something supported by both Bandcamp and Bandcrash. I’m not focusing too heavily on Subvert, although I will probably continue to upload new releases there for now. I’m not super confident in their future but hopefully they’ll surprise me. ### Places I am not interested in and why I used to use Gumroad, but its founder, Sahil Lavingia, has a long history of problematic behavior. Additionally, Gumroad is now primarily AI-coded and supported. I have also been receiving spam from various up-and-coming wannabe services that are being vibe-coded on platforms like zilla.so and so on. My thought on things like that is: if the promise is that you can start up a company based on just a notion that you don’t have to think about, why wouldn’t anyone else just do it themselves and cut out the middleman? ### A note about web presence Personally I think that any musician should have their own website that they run on their own terms, with whatever features make sense to them and with their own web domain and so on. I don’t believe in putting all your eggs in someone else’s basket. I run this site using Publ (and I will someday get around to releasing my site templates to make it easier for someone else to do so). A lot of folks use Faircamp which has a lot going for it. You can also build a site with any number of site generators like 11ty, Hugo, or any number of static site generators. Heck, you could also hand-code it the old-fashioned way. Even if you don’t want to build your own site, I highly recommend getting your own web domain and at least forwarding it to your favorite sales channel, or setting up a Linktree or Carrd to direct people to your preferred sites.

sockpuppet.band

[Audio] [Original post on sockpuppet.band]

Sunny Again

Back in 2003, when this song was originally written, it was considered “okay” and “funny” to dox and harass trans people. And if it happened to someone, clearly it was their fault for being trans and not being 100% perfect at keeping their private information private. **_Ask me how I know._** In the midst of getting dozens of harassing phone calls, random evangelists being sent to my door hearing I’d “found Jesus,” and being added to dozens of religious mailing lists, I was, as you might expect, pretty tired and grumpy. And the people around me thought it was just a joke, or my fault for being trans. What could I expect from society, because of this “choice” I “made?” And meanwhile, being largely in the closet in person, I couldn’t even share that this was going on with most people around me. They could see that I was stressed, but as usual, leaned _hard_ on toxic positivity nonsense, telling me that I needed to cheer up and that things weren’t so bad. Sometimes you just need to wallow and hide, and sometimes it’s okay to tell people to fuck right off, especially when they refuse to get it. The original version of this song was a lot angrier, and also only had three chords. It was one of the first songs to be selected for remixing on Remix Fight (a long-gone side project from a bunch of Song Fight! people), and I was fortunate enough to have the song be remixed by Victor “fourstones” Stone, who would later go on to found ccMixter. I had actually forgotten all about that until a few days before I started on this track (and had no idea how I was going to handle this song) and his remix came up in my playlist, and one of the changes he made to the chord progression gave me the inspiration I needed to complete my new arrangement. So, thank you, Victor, wherever you are.

sockpuppet.band

Deadnames, Ko-Fi and itch updates

When I first released Deadnames I mostly only included the various in-progress forms of what would eventually end up on Transitions, but I also included the original and Plus 5 versions of 120 MPH, which I’d updated for Love and Monsters. I think I had also meant to include Safety in Numbers for the same reasons, but it ended up slipping my mind. Maybe I thought it would get its own separate release somewhere? But I have no idea when or where that might be. So, last night I finally got around to remastering the original version and adding it to Deadnames, so if you already bought that album digitally, you should now be able to redownload it and get the updated audio. The CD version was already at pretty close to the maximum length of a CD, and adding Safety in Numbers to that pushed it way over, so the CD version that’s available now is missing the two hidden tracks in favor of Safety in Numbers. I only know of one person who actually has a physical copy of Deadnames other than myself, so I don’t think that impacts anyone. But anyway, updating the files on my Ko-Fi shop made me also realize that Bandcrash had a stupid bug that was preventing the MP3 files from getting the cover art tags (which is something I really should have had a proper automated test for, but the state of that code’s tests is kinda abysmal). So I’ve now reuploaded all of the MP3 versions to Ko-Fi and itch.io, so in case anyone’s actually bought any of my albums there, you’ll want to redownload the MP3 version from the respective library. This also wreaks havoc with the Musicbrainz metadata! I’ve submitted some updates there although who knows how long it’ll take to get accepted. Anyway. This whole thing affects, like, ten people. But I figured I’d post about it so people would know.

sockpuppet.band

[Audio] [Original post on sockpuppet.band]

Five Minutes

It was August 2004. I had just moved to New York City in July, and I had dreams of establishing myself as a musician and also finally transitioning and being able to be myself. Turns out that “myself” is still just super introverted and socially anxious, and places like New York wear me down faster than they build me up. Anyway the bit about “start a new family” was inspired by a stupid cishet-normative ad for life insurance that was plastered all over the subway at the time, about a mediocre man wanting to start a family and have two kids. In my take on it in the lyrics I never actually specify which part of the family I’d be taking, and I like to think that I’m just some sort of random factor that leads to a family being started without any continuing involvement of my own. Or maybe I’m the family pet. Who knows. This song is about random nerve firings that were going through my brain while sitting lonely on the subway and feeling isolated, and not about my actual aspirations. This song always sort of felt like it would be the pivotal moment in a semi-fictional musical about my life, and I guess that in the end, that’s kind of what this album as a whole is. This song would also be the second-to-last Song Fight! song I entered under the “band” name “fluffy porcupine.” New York was, also, not the place for me, and a few months after first recording Run Faster (which was about my job situation in New York), I would end up moving to Seattle, and it was time to reinvent myself again. I experimented with a few different band names before finally settling on “Sockpuppet,” a reference to how many other names I’d been operating under, and how I am one person presenting myself as an entire ensemble. In effect, this song marked the ending of one chapter in my life, and the beginning of the next. But my story is still being written, at least for now.

sockpuppet.band

Furality Ultra booth video: behind the scenes

The video I made for my Furality Ultra booth was a lot of work, and I’d love to walk folks through the process! 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 DaVinci Resolve, each one acted by me personally. I had learned a lot of lessons from the video I produced for Furality Somna; 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’s video being _much_ more ambitious I knew I needed to do way more planning for it to come out well. (The music in last year’s video, incidentally, is a lo-fi version of Material Change.) Here is a video showing some of the stuff that I’ll be describing in further detail: ### Music production 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 Logic Pro, 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. 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. 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’t have to overthink it. ### Locations 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: * It needs to have decent performance (so I could record at a steady framerate) * It needs to be possible to turn off post-processing (so that it doesn’t interfere with VRChat’s stream camera green screen) * It needs to be somewhere that’s recognizable to folks who are in my orbit The locations I ended up choosing were: * Community Open Mic (pop) * Piano Lounge Freude (jazz) * Trans Academy (choral) The first two are venues I’ve performed at many times, and Trans Academy is an organization I volunteer for so it’s special to me. Originally I was going to record the first segment in Transitions Club, where I’ve also performed many times, but unfortunately there’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. ### Avatars All of the avatars I used were my own; in particular, I made several versions of my standard critter base with different instrument setups, and also a specific drummer version of the Critter Junction resident base. 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): * Instruments: Violin / Piano / Double Bass by Tom Zimmermann (for the violin, viola, and double bass) * Cello by VM-Models * Drum Set by zaurian868 * Violin bow by CharlotteMeehan All of these were extensively modified for my purposes (particularly to make them VRChat-compatible). I also created a simple green screen avatar for part of the compositing workflow. ### Recording layers VRChat has a camera dolly system which allows you to set up and replay a camera path, but it doesn’t provide any real built-in synchronization mechanism. To keep things in sync, I did the following: 1. Created a basic lead-in click track (I used Audacity for this, but any music software will do) 2. Split the music into sections for filming 3. Downloaded sendosc to trigger the dolly camera 4. Wrote a basic Powershell script to synchronize everything up play.ps1 $click = New-Object System.Media.SoundPlayer 'click.wav' $player = New-Object System.Media.SoundPlayer $args[0] .\sendosc.exe localhost 9000 /dolly/Play b false echo "Playing click" $click.Play() Start-Sleep -Milliseconds 5000 echo "starting dollycam" .\sendosc.exe localhost 9000 /dolly/Play b true Start-Sleep -Milliseconds 1000 echo "Playing song" $player.Play() Start-Sleep -Milliseconds 16000 In order to film a pass, I would then invoke the script with a command like: powershell -ExecutionPolicy Bypass -File play.ps1 ".\1 pop.wav" 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. 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. 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’s dolly system is a bit limited when it comes to synchronization. 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. ### Dolly management I made heavy use of DollyManager 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 _does_ store a bunch of settings that you don’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. Basically, the camera dolly as it stands right now is kinda half-baked. Hopefully VRChat improves it over time. ### Dealing with in-world props 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. ### The rock/pop scene 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. There are “only” seven layers in this composite: * Background * Drummer * Drum kit (world prop) * Backup vocalist * Bass player * Lead critter * Microphone (world prop) I recorded this in three separate shots each with their own camera path; I ended up only using two of the shots. 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: 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. ### The studio scene For the scene where I’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. Incidentally, I am _not_ singing along with the lyrics there, and instead am saying “Why isn’t this working?!” which is a common utterance from me whenever Logic is misbehaving. ### The pixel art scene This was another super-complicated composite. DaVinci doesn’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 ImageMagick) and then did the composite in DaVinci. 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. 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. 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 “step” interpolation) and so on. The falling sprites were done separately, of course. 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). The main composite is around 20 layers, and many of those layers are also compound clips with 3-4 layers of their own. There’s a _lot_ going on. Watch it a bunch of times! ### The cartoon critter head 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’d definitely want to use something else though. The best thing that came out of this was when I was drawing the base layer and doing a symmetry check: ### The big grid of games and videos and such The Undertale-style critter sprite was a modified version of the one I drew for the Undertale memories microsite that went up for the 10th anniversary of Undertale’s release. The footage all came from things I’ve worked on. Most of it was games I composed for: * Ass Without a Trace 2 by HoggTied (NSFW) * Psycho Burst and Airship Chef by Yamatsu (both NSFW) * Snack Stacker by Mitha * Pawmune by SundewBry * Treestoration by rtwfroody * Currying Flavors by chinniedraws * Magnolia’s Early Morning Walk by Definitely a Fox (NSFW-ish) * The Balance of Sappho by The Firecrackers * Hallowed Grounds by Paxton * The Herbal Spice Problem by Glass Dragon Studios * Admiralo Island Witches Club by cloverfirefly * Brickris Tetout by Bamboy * Elevate by Kamil Bazydlo * Haggle Waggle: Duck & Doge by z0lly * Spooky Sushi by Spectronaut * Refactor, Colorful Critter1, and CATcher by fluffy (that’s me!) But I also included two of the sillier videos from my random crap channel: * jukka wins it all * critter dance (a test of my customized Winterpaw rodent avatar) 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. ### The jazz club scene There wasn’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’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 “despill” function built-in to 3D Keyer. Oddly enough, the stage mic in Piano Lounge Freude _does_ appear on the VRC stream camera’s green screen, somehow. I assume there’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’s color grading to make the avatars look appropriately-lit in the composite. 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’s video more traditionally. ### The choral scene The choral scene was a _nightmare_ to record and composite; in my Resolve project this clip eventually got the name “the shot from hell.” The final composite had around 35 layers! These are due to the following: * There are 16 critters (11 in the choir, 4 in the string quartet, and the conductor) * 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 * Because the critters are partially obscured by the fountain I needed to make a greenscreened traveling matte of it * And of course the website that appears in the background is another layer If you step through that scene frame-by-frame you will possibly notice some things sliding around a little weirdly, because VRChat’s framerate is also not in sync with OBS’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’s Good Enough. In future projects I will definitely try running my headset at 90 FPS to see if that helps any. 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’t get them all. There’s also a visual quirk in how the cellist’s tail hangs through the floor but remains visible. Ideally I’d have added a floor collider to the avatar to prevent this, but perfect is the enemy of done, and you probably didn’t notice those issues until you read this text. ### Some chromakey tips Most of the chromakeying was just using DaVinci’s basic “3D Keyer” 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’s colorcycling-rainbow material, as well as my collar which is green in most forms.) In a couple of spots I did find it useful to use “magic mask” 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. 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’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 “tight,” although some of the mask refinements will still require extra work. ### That halftone wipe transition DaVinci doesn’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 ordered pattern dither, where the threshold pattern is given by: \\[ u = k(x\cos\theta - y\sin\theta) \\\ v = k(x\sin\theta + y\cos\theta) \\\ t = (\sin u + \sin v + 2)/4 \\] 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’s start and end points to sweep across the frame generated the wipe transition. Easy. (Someday I will release this as a template for others to use, because it’s a really cool effect!) ### Some basic statistics * Amount of raw footage recorded: 5 hours, 36 minutes and 25 seconds * Amount of time spent working on the music: around 14 hours, apparently (it sure didn’t feel like that long though) * Amount of time spent editing video: I have no idea because it turns out Time Sink wasn’t running on my editing computer this whole time, _oops_ , but I’d estimate probably 40-60 hours? 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. (Mirlo and Bandcamp are probably the best choices for that.) 1. Technically Colorful Critter doesn’t have music, but it does have (minimal) sound design, and it’s one of my favorite little game-toy things so I don’t regret including it here. ↩

sockpuppet.band

Welcome Furality attendees!

Hello there! If you’re reading this in or before June of 2026, it’s quite likely that you have found me through the Furality dealer’s den. Thank you for visiting, and for being interested in my music and other creative services. I’ll try to answer the most frequently-asked questions you may have here. ### Why aren’t you on… #### Spotify? All I can find is The War Machine All of my reasons for not being on Spotify aside from The War Machine are explained in The War Machine. If you want a bit more detail, read this older blog post. #### Tidal? I actually am on Tidal, but their artist management is currently broken in such a way that most of my releases don’t appear on my actual artist page. Hopefully this gets fixed at some point, but in the meantime you can check this dumping ground where most of my stuff seems to end up (along with a few other artists who also release as “Sockpuppet”). #### [insert other streaming provider] I try to keep my stuff on as many streaming providers as possible (except Spotify, for the reasons explained above), but not all of them accept my music for various reasons. If there’s a specific one that you’d like to see it on, please let me know and I’ll see what I can do! #### One of your releases isn’t on streaming I’ve been slowly rebuilding my streaming catalog after having an issue with a previous distributor. I’m focusing just on making releases available that I think people will actually listen to; if there’s something I’ve released that you want to hear on your streaming provider of choice and which isn’t there, please let me know! ### What the heck is your avatar? I’m a critter! #### What’s that? It’s an anthropomorphic human. #### Oh. … Wait, what? Don’t worry about it. ### There’s a lot of music here. Did you make all of it? Unless otherwise specified, yep! Most of my music is my own original work, with a small handful of covers and collaborations. #### Where do I even begin listening? Over on the releases page you can filter by genre, instrument, and topic, which might help. ### What software do you use? For music I mostly use Logic Pro, which I started using in 2004 and has been my main DAW since 2005. I also make somewhat heavy use of Native Instruments instruments. For video editing I mostly use DaVinci Resolve although for some things I still use Final Cut Pro. For artwork I generally use Affinity Studio although I’m not super thrilled with the direction it’s going in so I’m likely to switch back to Krita, especially now that 6.0 is out. ### What instruments do you play? Piano, cello, violin, viola, drums, guitar, bass, hand percussion, and a few other things to varying levels of proficiency. ### What’s your live VR performance setup like? I have a whole article on that. ### When/where can I see you perform live? I try to keep my live performance calendar up-to-date (and there’s also a calendar you can subscribe to via Google Calendar/iCloud/etc. if you’re so inclined), and also try to remember to post upcoming shows to my VRChat group. Past recordings usually show up on my YouTube channel. I’m also sometimes found doing karaoke or open mics with VRelium and Moonlit with Trans Academy. ### How else can I keep up with you? You could always join my Discord community. This site also has feeds you can subscribe to via your favorite feed reader, via Mastodon/Fediverse/etc. at `@sockpuppet.band@sockpuppet.band` or at @fluffy@plush.city, and via Bluesky at @bsky.sockpuppet.band.

sockpuppet.band

Subvert launched, yet another music sale platform

Hey y'all! Subvert officially launched today, and of course I have some of my music up on it. Having more options for independent-friendly music shops is generally a good thing, but I do have some thoughts about where things are going and how things could be a lot better. Subvert is getting a lot of hype because it’s new but I don’t see it as my long-term solution for music sales. I’m not sure what I’d consider to be my primary platform right now (probably Mirlo), but in the long term I think the future is self-hosting and self-distributing. ### The current state of things So, right now there are a whole bunch of indie music stores. The ones I currently have a presence on include: * Bandcamp * itch.io * Mirlo * Subvert And additionally when I want to put stuff into streaming I have to also upload it to * Symphonic (for the mainstream platforms) * Bandwagon (to get it on TheIndieBeat and other things) * KVRR That’s a _lot_ of things to have to upload my stuff to, each one requiring separate metadata setups and agreements and so on, and frankly, it’s super tiring. ### Canimus What I really want is a future where people can self-host their stuff with their publishing engine of choice (Faircamp or Publ or whatever), trivially sell their downloads, and from their own site also get their stuff circulated in the various discovery feeds out there. This idea was the impetus behind Canimus, a protocol for sharing collection metadata in a lightweight, platform-agnostic manner. Basically, the idea of Canimus is the following: * Music publishers can provide a collection (also known as a “feed”) as a simple JSON format that includes albums, tracks, titles, purchase links, and streaming preview links * Music collectors can provide an access-controlled collection * Listeners can link their player application (web-based or otherwise) to multiple collections * The player application can also provide feeds of peoples' listening activities and use that to build federated discovery and recommendations (by people following each other there as well) And all of this just lives natively on the web. Right now, Fairplayer is a thing that’s in development that shares many of the same goals as me. They’re working on specifically supporting Faircamp websites as a streaming music source, but I’ve also been in communication with them regarding Canimus, and similarly the folks behind Mirlo also share these goals. We’ve been talking a lot about some of the ways that things can move forward. This website already has a Canimus feed. I also added one to Song Fight!. At some point I want to make a plugin thingy so that FairCamp users can easily add a Canimus feed to their sites (although maybe the Fairplayer folks are already working on that? I need to touch base with them). ### Funkwhale and ActivityPub and such Whenever I talk about this stuff I always get people insisting that I should really be looking into ActivityPub and specifically Funkwhale. The promise is always that ActivityPub is somehow a magical protocol that solves all these issues, but only with a lot of hand-waving. The thing is that ActivityPub doesn’t actually solve any issues; it just pushes them down the stack, in ways that are even less approachable for everyday people. ActivityPub things don’t just naturally interoperate. Heck, Funkwhale 2.0 won’t even talk to Funkwhale 1.0! In order to actually build interoperability between things, the process involves building a FEP, a process that is arduous and results in a specification at the end that is very difficult to navigate or even find. Supposedly there are existing FEPs for music sharing and discovery, but damned if I can find any of them myself! They’re all just opaque numbers. And everything ActivityPub seems to _really_ want to use push-based notifications for all data exchange. Forget about backfilling, as well. It turns everything into a stream of ephemera, and requires two-way handshakes and peering relationships and, in many cases, PGP key exchanges. It’s a mess and trying to support anything in ActivityPub on a static website is pretty much a lost cause. Also the idea of being able to move to a new domain, or host the same site on multiple domains, is a lost cause. And every single means of interacting with ActivityPub stuff requires building yet another identity on whatever single-purpose service consumes it. Like, it’s not like it makes any sense to follow a Funkwhale user from a PeerTube user. You _can_ do it but what information gets exchanged? Basically, ActivityPub is full of a bunch of empty promises, and in order to fulfill the promise you have to write another protocol on top of it, get everyone to agree to that protocol, and fit it into a shape that might not work for things to begin with. I just really don’t see what it brings to the table, in any practical terms. ### The future is indie and distributed Right now things are such a mess. Fragmentation of streaming services, the downplaying and outright dismissal of the idea of owning music, myriad platforms that want to be the _only_ platform that anyone uses for all the things, and everything being funded by the endless churn of venture capital and rent-seeking. And musicians end up needing to spend so much time trying to feed these platforms. We all only have so much time in this life, and personally I’d rather not be spending it on repetitive tedium like having to re-upload and re-format my music based on the historical artifacts of a dying industry. My vision for the future of how people publish music: 1. The musician posts the music on their website using whatever tools work best for them (Faircamp, Bandcrash, etc.) 2. The music goes out in their own sharing feed 3. Their fans listen to it, buy it (or otherwise send payments to the musicians they want to support), add it to their collections, populate it into whatever distributed discovery mechanisms emerge, use whatever compatible player/receiver/streaming service makes the most sense for them There is no need in this world for investors or rent-seeking platforms that exist to be The One And Only Thing. Protocols emerge and evolve and change and adapt based on the actual needs as they shift. People can focus on being creative and finding things they love, and not have to worry about where they’re doing it. The web itself can be a perfectly good platform for all this stuff. Let’s try to make it happen.

sockpuppet.band

Symphonic’s genre listing

As part of reuploading my catalog to streaming, I’ve had to deal with Symphonic’s… less-than-ideal user interface, and one of the biggest pain points is how they present their genre listing, with a hard-to-search and super-inconsistent two-pane interface that makes it hard to find a specific genre unless you know which particular category they decided to put it in. Fortunately, it’s all just data, so I was able to scrape the interface in order to get their current (as of March 19, 2026) genre and subgenre list. This is subject to change, of course. I am not interested in discussing the merits of these genres (or anything missing from the list) or how they’ve opted to categorize them; I’m just the messenger. * Alternative * Alternative (1) * Chinese Alt (118) * College Rock (119) * EMO (120) * Goth Rock (121) * Grunge (122) * Indie Egyptian (499) * Indie Levant (500) * Indie Maghreb (501) * Indie Pop (123) * Indie Rock (124) * Korean Indie (125) * New Wave (126) * Pop Punk (127) * Punk (128) * Turkish Alternative (502) * Anime * Anime (129) * Arabic * Arabic (130) * Arabic Pop (131) * Dabke (507) * Islamic (132) * Khaleeji (133) * Khaleeji Jalsat (504) * Khaleeji Shailat (505) * Levant (506) * Maghreb Rai (508) * North African (134) * Audiobooks * Arabic (130) * Arabic Pop (131) * Dabke (507) * Islamic (132) * Khaleeji (133) * Khaleeji Jalsat (504) * Khaleeji Shailat (505) * Levant (506) * Maghreb Rai (508) * North African (134) * Blues * Acoustic Blues (135) * Blues (2) * Chicago Blues (136) * Classic Blues (137) * Contemporary Blues (138) * Country Blues (139) * Delta Blues (140) * Electric Blues (141) * Traditional Blues (4) * Brazilian * Axé (143) * Baile Funk (144) * BH Funk (525) * Bossa Nova (145) * Brazilian (142) * Carioca Funk (523) * Choro (146) * Forró (147) * Frevo (148) * Mandelao Funk (524) * Melodic Funk (526) * MPB (149) * Pagode (150) * Samba (151) * Sertanejo (152) * Children’s Music * Children’s Music (5) * Lullabies (153) * Sing-Along (154) * Stories (155) * Chinese * Chinese (156) * Chinese Classical (157) * Chinese Flute (158) * Chinese Opera (159) * Chinese Orchestral (160) * Chinese Regional Folk (161) * Chinese Strings (162) * Taiwanese Folk (163) * Tibetan Native Music (164) * Christian & Gospel * CCM (166) * Christian & Gospel (165) * Christian Metal (167) * Christian Pop (168) * Christian Rap (169) * Christian Rock (170) * Classic Christian (171) * Contemporary Gospel (172) * Gospel (173) * Praise & Worship (174) * Southern Gospel (175) * Traditional Gospel (176) * Classical * Art Song (177) * Avant-Garde (178) * Baroque Era (179) * Brass & Woodwinds (180) * Cantata (181) * Cello (182) * Chamber Music (183) * Chant (184) * Choral (185) * Classical (85) * Classical Crossover (186) * Classical Era (187) * Contemporary Era (188) * Electronic (189) * Guitar (190) * Impressionist (191) * Medieval Era (192) * Minimalism (193) * Modern Era (194) * Opera (195) * Oratorio (196) * Orchestral (197) * Percussion (198) * Piano (199) * Renaissance (200) * Romantic Era (201) * Sacred (202) * Solo Instrumental (203) * Violin (204) * Comedy * Comedy (205) * Novelty (206) * Standup Comedy (207) * Country * Alternative Country (208) * Americana (209) * Bluegrass (210) * Contemporary Bluegrass (211) * Contemporary Country (212) * Country (6) * Country Gospel (213) * Country Hip-Hop/Rap (503) * Honky Tonk (214) * Outlaw Country (215) * Thai Country (216) * Traditional Bluegrass (217) * Traditional Country (8) * Urban Cowboy (218) * Dance * Afro House (419) * Amapiano (435) * Bass House (428) * Big Room (416) * Breakbeat (220) * Breaks (9) * Chill Out (10) * Classic House (426) * Dance (219) * Deep House (11) * DJ Tools (12) * Drum & Bass (13) * Dubstep (14) * Electro House (15) * Electronica (16) * Funky House (433) * Future House (415) * Glitch Hop (114) * Hard Dance (17) * Hard Techno (18) * Hardcore (222) * House (19) * Indie Dance (20) * Jackin' House (422) * Jungle (223) * Maghreb Dance (509) * Minimal (21) * Nu Disco / Disco (429) * Progressive House (22) * Psy-Trance (115) * Soulful House (427) * Tech House (23) * Techno (24) * Trance (25) * UK Garage (221) * Disney * Disney (224) * Easy Listening * Easy Listening (225) * Lounge (226) * Swing (227) * Electronic * 140 / Deep Dubstep (437) * 3Step (497) * Acapellas (448) * Acid House (463) * Afro / Latin (439) * Afro House (496) * Afro Melodic (498) * Afro Pop (443) * Ambient (229) * Baile Funk (495) * Bass (230) * Bassline (494) * Battle Tools (449) * Bounce (468) * Breaks (99) * Broken Beat (29) * Broken Techno (481) * Chill Out (30) * Dark & Forest (475) * Dark Disco (464) * Deep / Hypnotic Techno (482) * Deep Drum & Bass (452) * Deep House (100) * Deep Tech (469) * Deep Trance (490) * DJ Tools (101) * Downtempo (231) * Driving Techno (479) * Drum & Bass (102) * Dub Techno (483) * Dubstep (103) * EBM Techno (484) * Electro (434) * Electro House (104) * Electro Pop (442) * Electro-Cha'abi (510) * Electronic (228) * Electronica (33) * Frenchcore (460) * Full-On (472) * Funk / Soul (470) * Future Bass (446) * Future Rave (467) * Glitch Hop (116) * Goa Trance (476) * Gqom (440) * Grime (438) * Halftime (453) * Happy Hardcore (462) * Hard Dance (105) * Hard House (457) * Hard Techno (106) * Hard Trance (489) * Hardstyle (456) * House (107) * Hypnotic Trance (491) * IDM/Experimental (232) * Indie Dance (108) * Industrial (233) * Italo (471) * Jump Up (451) * Latin Tech (478) * Levant Electronic (511) * Liquid (450) * Loops (447) * Maghreb Electronic (512) * Mainstage (465) * Melodic Dubstep (454) * Melodic House (423) * Melodic Techno (424) * Midtempo (455) * Minimal (109) * Neo Rave (461) * Organic House (430) * Peak Time Techno (480) * Phonk (492) * Pop (444) * Progressive House (110) * Progressive Psy (473) * Progressive Trance (485) * Psy-Trance (117) * Psychedelic (474) * Psycore & Hi-Tech (477) * Raw Techno (431) * Raw Trance (436) * Speed House (466) * Tech House (111) * Tech Trance (486) * Techno (112) * Terror (459) * Trance (113) * Trap (425) * Tropical House (445) * UK Bass (441) * Uplifting Trance (487) * Uptempo (458) * Vocal Trance (488) * Wave (493) * Enka * Enka (234) * Fitness & Workout * Fitness & Workout (87) * Folk * Contemporary Folk (35) * Folk (34) * Iraqi Folk (513) * Khaleeji Folk (514) * Traditional Folk (36) * French Pop * French Pop (235) * Funk * Funk (37) * German Folk * German Folk (236) * German Pop * German Pop (237) * Heavy Metal * Heavy Metal (91) * Hip Hop/Rap * Alternative Rap (239) * Chinese Hip-Hop (240) * Dirty South (241) * East Coast Rap (242) * Egyptian Hip-Hop (515) * Gangsta Rap (243) * Ghanaian Drill (516) * Hardcore Rap (244) * Hip Hop/Rap (238) * Hip-Hop (38) * Khaleeji Hip-Hop (517) * Korean Hip-Hop (245) * Latin Rap (246) * Levant Hip-Hop (518) * Maghreb Hip-Hop (519) * Old School Rap (247) * Rap (39) * Russian Hip-Hop (520) * South African Hip-Hop (521) * Turkish Hip-Hop/Rap (522) * UK Hip Hop (248) * Underground Rap (249) * West Coast Rap (250) * Holiday * Chanukah (251) * Christmas (252) * Christmas: Children’s (253) * Christmas: Classic (254) * Christmas: Classical (255) * Christmas: Jazz (256) * Christmas: Modern (257) * Christmas: Pop (258) * Christmas: R&B (259) * Christmas: Religious (260) * Christmas: Rock (261) * Easter (262) * Halloween (263) * Holiday (92) * Thanksgiving (264) * Indian * Bollywood (266) * Devotional & Spiritual (267) * Ghazals (268) * Indian (265) * Indian Classical (269) * Indian Folk (270) * Indian Pop (271) * Regional Indian (272) * Sufi (273) * Tamil (274) * Telugu (275) * Inspirational * Inspirational (276) * Instrumental * Instrumental (277) * J-Pop * J-Pop (278) * Jazz * Acid Jazz (41) * Avant-Garde Jazz (279) * Bebop (280) * Big Band (281) * Contemporary Jazz (43) * Cool (282) * Crossover Jazz (283) * Dixieland (284) * Fusion (285) * Hard Bop (286) * Jazz (40) * Latin Jazz (287) * Mainstream Jazz (288) * Ragtime (289) * Smooth Jazz (290) * Traditional Jazz (46) * Vocal Jazz (292) * Karaoke * Instrumental (94) * Karaoke (96) * Kayokyoku * Kayokyoku (293) * Korean * Korean (294) * Korean Traditional (295) * Latin * Alternativo & Rock Latino (297) * Baladas y Boleros (298) * Contemporary Latin (299) * Latin (296) * Latin Jazz (300) * Pop Latino (302) * Raices (303) * Reggaeton (421) * Regional Mexicano (304) * Salsa y Tropical (305) * Urbano Latino (301) * Marching Bands * Marching Bands (306) * New Age * Healing (307) * Meditation (308) * Nature (309) * New age (49) * Relaxation (310) * Travel (311) * Yoga (312) * Other * Spoken Word (51) * Pop * Adult Contemporary (313) * Alternative Pop (54) * Britpop (314) * Cantopop (315) * Dance Pop (55) * Disco (56) * French Pop (88) * German Pop (90) * Indo Pop (316) * K-Pop (317) * Korean Folk-Pop (318) * Malaysian Pop (319) * Mandopop (320) * Manilla Sound (321) * New Wave (57) * Oldies (322) * Original Pilipino Music (323) * Pinoy Pop (324) * Pop (52) * Pop/Rock (325) * Soft Rock (326) * Tai-Pop (327) * Teen Pop (328) * Thai Pop (329) * Punk * Punk (59) * R&B/Soul * Contemporary R&B (331) * Disco (332) * Doo Wop (333) * Funk (334) * Motown (335) * Neo-Soul (336) * R&B/Soul (330) * Soul (61) * Soul/R&B (60) * Reggae * Dancehall/Reggae (63) * Dub (64) * Lovers Rock (337) * Modern Dancehall (338) * Pop-Reggae (65) * Ragga (66) * Reggae (62) * Roots Reggae (67) * Ska (68) * Rock * Adult Alternative (339) * American Trad Rock (340) * Arena Rock (341) * Blues-Rock (342) * British Invasion (343) * Chinese Rock (344) * Classic Rock (71) * Death Metal/Black Metal (345) * Glam Rock (346) * Hair Metal (347) * Hard Rock (73) * Heavy Metal (348) * Jam Bands (349) * Korean Rock (350) * Metal (74) * Prog-Rock/Art Rock (351) * Psychedelic (352) * Psychedelic Rock (75) * Rock (69) * Rock & Roll (353) * Rockabilly (354) * Roots Rock (355) * Singer/Songwriter (356) * Southern Rock (357) * Surf (358) * Tex-Mex (359) * Singer/Songwriter * Alternative Folk (360) * Contemporary Folk (361) * Contemporary Singer/Songwriter (362) * Folk-Rock (363) * New Acoustic (364) * Singer/Songwriter (98) * Traditional Folk (365) * Soundtrack * Foreign Cinema (366) * Musicals (367) * Original Score (368) * Sound Effects (369) * Soundtrack (78) * TV Soundtrack (370) * Video Game (432) * Spoken Word * Spoken Word (371) * Vocal * Standards (372) * Traditional Pop (373) * Trot (374) * Vocal (79) * Vocal Pop (375) * World * Africa (81) * Afrikaans (376) * Afro-Beat (377) * Afro-Pop (378) * Arabesque (379) * Asia (380) * Australia (381) * Cajun (382) * Calypso (383) * Caribbean (384) * Celtic (385) * Celtic Folk (386) * Contemporary Celtic (387) * Dangdut (388) * Dini (389) * Europe (390) * Fado (391) * Farsi (392) * Flamenco (393) * France (394) * Halk (395) * Hawaii (396) * Iberia (397) * Indonesian Religious (398) * Inspirational (93) * Israeli (399) * Japan (400) * Klezmer (401) * North America (402) * Polka (403) * Russian (404) * Russian Chanson (405) * Sanat (406) * Soca (407) * South Africa (408) * South America (409) * Tango (410) * Traditional Celtic (411) * Turkish (412) * World (80) * Worldbeat (413) * Zydeco (414)

sockpuppet.band