MusicMixer
HomeShaurya's penguin iconCreated byShaurya

A project that refused to disappear

The bot grew up.

MusicMixer started as a Discord bot, became a slightly chaotic Flask website, and is now a private audio studio that runs entirely in your browser. This is how a middle-school project managed to survive long enough to get a proper rewrite.

The original MusicMixer Discord bot artwork from 2020The original, circa 2020

01 · Before the mixer

It started with a taco.

Back in 2020, I made Taco Bot: a very silly Discord bot built around taco pictures, taco trivia, taco coins, and whatever other command sounded funny to a middle schooler stuck at home. Then people actually started using it. It reached more than 150 servers, created a small community, and became the first thing I built that belonged to people other than me.

That was exciting. It was also terrifying. Every bug now had an audience. Every new feature produced three more ideas. I learned APIs, asynchronous Python, hosting, and the extremely important lesson that an in-memory currency will disappear when Heroku restarts. Sorry again to everyone who lost their tacos.

Taco Bot taught me that the most fun projects are not necessarily the most serious ones. They are the ones that make somebody ask for one more feature.

02 · MusicMixer

So, naturally, I made another bot.

MusicMixer was the successor. The original pitch was simple: a Discord music bot that could play audio from YouTube, modify it, and let you download the result. It could change pitch and speed, boost the bass, and turn a normal song into something that sounded like it had been launched through several walls.

Play. Mix. Download. Three words, one enormous pile of FFmpeg commands.

The old website promised everything with complete confidence. It had giant screenshots, a square bot avatar, and the phrase “Oh my god” at the far end of the bass control—which is still a better unit of measurement than whatever I would have invented today.

Underneath all of that was the same instinct Taco Bot gave me: take a tool that normally lives in a terminal, put a friendlier face on it, and let people make something weird.

03 · The Flask years

Then the bot escaped Discord.

The idea eventually became a Flask site. You uploaded a file, Python launched FFmpeg or yt-dlp through a subprocess, the server did the work, and you downloaded whatever came out the other side. It worked. It was also exactly the kind of application that becomes more alarming the longer you stare at its upload directory.

The funny part is that the useful idea was never the server. It was the workflow: give MusicMixer a piece of media, make a few understandable choices, and get the version you actually wanted.

ThenUpload it and hope

Flask, subprocesses, temporary folders, and server-side media.

NowYour device does the work

Next.js, Web Workers, local storage, and FFmpeg compiled for the browser.

04 · This version

The useful part, rebuilt properly.

Today’s MusicMixer keeps the old promise without keeping the old architecture. Files stay on your device. FFmpeg runs locally in a worker. You can convert, trim, split, merge, change pitch or speed, clean up a voice recording, normalize loudness, add fades, and—because some ideas deserve to survive—push the bass all the way to “Oh my god.”

It is slower than native FFmpeg. Browsers have memory limits. Closing the tab still closes the workshop. But there is no upload server quietly holding your voice memo, no account to create, and no mystery copy of your media waiting in somebody else’s bucket.

YouTube importing is the one piece that does not belong in the hosted site. yt-dlp needs a native runtime and downloading media comes with real permission and platform-rule questions. If it returns, it will live in an optional desktop edition, run locally, and ask you to confirm that you are allowed to download the thing you gave it.

05 · Looking back

Some projects are worth keeping.

MusicMixer is not the most important thing I have ever built. It may, however, be one of the clearest records of how I learned to build: start with a joke, add far too many features, break several things, learn why they broke, and eventually come back with better tools.

Taco Bot gave me the spark. MusicMixer gave that spark a waveform and an unreasonable amount of bass.

I would absolutely build it again. Apparently, I just did.

Created by Shaurya

I like to build cool stuff.

See the rest of my projects, writing, and the newer things I am probably overcomplicating right now. ↗

Preview of Shaurya Verma's personal website