May 19, 2026
First blog post! I figured a good way to start things off here would be to explain why I even made this thing. I've been running D&D games for almost 10 years now in a homebrew setting that I made. My group is composed of a handful of theater kids, so we tend to focus more on roleplay than combat and crunchy numbers. We usually do theater of the mind combat and we almost never use minis or maps unless we have a really complicated combat with a dozen or more characters to keep track of (which I'll usually try to avoid doing if I can).
Because we're so roleplay-focused, I take immersion really seriously. My NPCs all have a unique voice, I use smart lights to make the lighting of the room match the location the players are in, I make props often (usually papers dyed with tea to make them resemble parchment with paint flicked on them to make them look dirty or bloody), and there is ALWAYS ambiance or combat music playing.
Setting up ambiance and combat music is honestly my favorite part of DMing. I can sometimes spend an entire day just listening to different forest ambiances to pick one that sounds exactly the way I'm imagining my forest sounds. I want to make sure the wind sounds right, the trees sound right, the bugs and birds sound right, etc. I typically use YouTube for these tracks, and I'll paste a link to a YouTube video into a huge Google Doc called “AMBIANCE”. Then when the players get to that location, I'll go to the doc, click the link, and pause the currently playing video to replace it with the new track. I used this system for a pretty long time, not really considering that there might be an easier way to do this. Like I said it's been almost 10 years now, so as you can imagine, that “AMBIANCE” doc is now colossal. I put the name of the location next to the link so that I could quickly ctrl+F for the link I need, but even that was pretty complicated as I collected dozens of “cave” and “forest” tracks over the years and searching for one of those words would give me a ton of results. Eventually I started copying the links for tracks that I was pretty sure we'd use for the upcoming session into an “ACTIVE AMBIANCE” doc, reducing the amount of results from my search, but still not exactly solving the real problem.
This process was ok for a while, but recently I was given a fancy new soundbar as a present. I excitedly set it up in our game room, only to realize that the latency on the bluetooth was abysmal. We're talking almost 5 seconds between me hitting play and the music coming out of the soundbar. I really wanted to make it work because the sound quality is awesome, but the latency was driving me crazy. The biggest problem was the volume difference between my ambiance tracks and my combat music tracks. Every time I would switch from a quiet, peaceful ambiance track to some bombastic combat track from Monster Hunter or something, the flow would go like this:
So I was like “There HAS to be a better way to do this.” Something better than opening a dozen tabs in my browser and pre-setting the volume on every single video. Sure, I could do that, but then I'd have to remember the name of every video and where I wanted to use them. With trying to roleplay, managing combat, and keeping plot threads running in my head, memorizing video names too was simply too much to ask.
It was at this moment that I went “Wait, I'm a software developer with over 10 years of full-stack experience. Why don't I just build my own YouTube crossfader tool?” So I got to work making a DJ-style two-deck crossfader tool! The basic requirements were:
I had the main functionality built out in a matter of days, but a couple hundred lines of code quickly exploded into thousands as I added dozens and dozens more features. I was like “I could really use a playlist to queue up future tracks, I would love to be able to rename tracks to make it easier to remember when to use them, it'd be fun to have a custom soundboard feature for dragon roars and sword clangs, I want local file support too, I want to layer tracks, I want hotkeys, I want to scan through all the tracks and automatically set their volume based on their average decibel level, etc, etc, etc.
Coincidentally, my office is in the process of switching from AWS to GCP, so I figured this would be a great learning opportunity to explore GCP's product catalog. I determined that Firebase hosting made the most sense for my usecase, so I went ahead and built out my Firebase project, got the app hosted, bought a domain, and here we are!
If you're a game master, I hope you get as much use out of this tool as I have. Ever since building it, I haven't run a single session without Fantasy Fader and I have no idea how I lived without it. I know that tabletop gaming can sometimes be an expensive hobby, so I made sure that all the app's core functionality is free. Anything that's free now will never be behind a paywall in the future. The “pro features” are more targeted towards people who run several games and need the convenience of the autobalance feature or people who stream their games and need the production value of layered tracks and soundboards. As of right now the pro tier is $5 a month, but if you're like me and hate subscriptions, you can also pay $20 for a lifetime license. If you want to try it out on monthly mode and decide you like it and want to get a lifetime license, you'll get a 25% off discount. You already paid for the current month, it's only fair!
I've got lots more ideas for features that I plan to add to both the free and pro tiers, so stay tuned!
-Mitch