'Broadcasting Like a Pirate: How I Built PYR8RDIO as DJ Wreckless Wes'

'Broadcasting Like a Pirate: How I Built PYR8RDIO as DJ Wreckless Wes'

author: Wesley Matlock read_time: 6 —

🎤 “Yo — this ain’t your usual SwiftUI deep dive. With WWDC right around the corner, I’m spinning something different today: no .backgroundPreferenceValue, no dependency injection, no Actor dance-offs. Just vinyl, caffeine, and one janky MacBook breathing new life as a pirate radio server.”

Lately, it’s been frameworks all day, every day. But sometimes? You just need to make something fun. Something weird. Something for the soul.

That’s what this post is about.

I finally did the thing I’ve joked about for years — launching a pirate-style internet radio station, complete with crusty vinyl, noisy transitions, and live mic rants. Welcome to pyr8rdio, broadcasting to the internet from my turntable and a dusty old Mac in the corner.

This is the full setup, story, and signal chain powering my analog-fueled rebellion.

⚙️ The Setup (a.k.a. The Gain Chain)

The best part? I didn’t buy anything new. This thing is built on what I had lying around — like any good hack.

  • Technics 1200 turntable — because digital-only is for cowards
  • Ortofon Concorde cartridge
  • Rockville BluTube SG tube amp
  • 1Mii USB Audio Interface — the unsung hero that converts RCA → USB cleanly
  • Blue Yeti USB mic
  • MacBook Air (Mid-2015) — sitting unused, running Monterrey like it’s 2019
  • Free DJ software: Mixxx
  • Stream host: caster.fm

That MacBook had been collecting dust. Too slow for dev work, too hot for daily use, too “vintage” for anything but Spotify. But for pushing out lo-fi punk sets at midnight? It’s perfect. Mixxx runs smooth, and the fan barely spins unless I’m also running Safari (which I’m not).

This signal chain is what makes it all go:

swift Vinyl Deck → Tube Amp → 1Mii USB Audio Interface → Mac running Mixxx → caster.fm → The World swift

🔌 How to Connect a Turntable to Mixxx (and Actually Hear It)

Let’s clear this up — turntables aren’t plug-and-play like USB mics. You need a few things to get the signal sounding right in Mixxx:

✅ Here’s what I used:

  • Turntable (Technics 1200) with RCA output
  • Phono preamp — in my case, built into the Rockville BluTube SG
  • RCA out from the amp → into the 1Mii USB Audio Interface
  • USB → into my MacBook running Mixxx

This gets you line-level audio, which is what Mixxx expects. Most turntables output phono-level, which is way too quiet unless preamped.

If you don’t have a receiver or amp with a built-in phono preamp, you’ll need a standalone unit or DJ mixer.

🛠 Mixxx Input Settings

Once your USB interface is plugged in:

  1. Open Mixxx → Preferences → Sound Hardware
  2. Under Input Devices, look for your USB interface (e.g., USB Audio CODEC)
  3. Assign Deck 1 Input to that interface
  4. Assign Microphone 1 to your Blue Yeti
  5. Save + restart Mixxx if needed

Then in Mixxx:

  • Load a dummy track or leave Deck 1 blank
  • Click the ⚙️ icon in Deck 1 → enable Live Input
  • You should now hear your vinyl signal

If not:

  • Double-check macOS system input settings
  • Verify amp output isn’t muted or using “tape out”
  • Boost gain in Mixxx if it’s too low

Once it’s working, it’s butter.

🖥️ 💡 Sidebar: Old Macs, New Beats

Don’t toss that old MacBook yet.

Seriously — these machines are gold for DIY audio work. Here’s why:

  • Quiet CPU footprint means no jet engine fans on stream
  • USB audio interfaces just work
  • Core Audio is rock-solid
  • Headless mode? No problem — SSH, screen sharing, or VNC it
  • Built-in battery = accidental UPS

All I did was make a new user account, nuke iCloud/Photos/Dropbox nonsense, and install Mixxx. Now it lives behind the amp, blinking softly like it’s holding the line.

🎚️ Configuring Mixxx to Stream Like a Lunatic

Mixxx is the brain of this whole thing. Here’s what I did:

  1. Plugged the turntable into my amp → USB interface → Mac.
  2. Launched Mixxx, mapped vinyl input to Deck A.
  3. Deck B runs digital fallback tracks (for overnight automation).
  4. Mic input is the trusty Blue Yeti — mapped and toggleable.
  5. Broadcasting tab → dropped in caster.fm details → saved.
  6. Rock that Enable Live Broadcast button.

I even mapped a few hotkeys:

  • M toggles the mic (cue DJ Wreckless Wes rants)
  • L connects the stream
  • Space = load next track

It’s simple, fast, and raw. No automation software, no fancy scenes, no OBS trickery. Just vinyl and vibes.

🧠 Shell Scripts Keep It Alive When I’m Not

When I’m asleep, pyr8rdio doesn’t die. I built a few quick scripts to keep it breathing:

  • Python script (non_dmca.py) scrapes public domain/CC music from the web
  • Shell script cleans filenames and metadata
  • Everything lands in the “radio” crate ready for Mixxx

Example:

swift #!/bin/bash python3 non_dmca.py for f in radio/*; do clean=$(echo "$f" | sed 's/_/ /g' | sed 's/-/ /g') mv "$f" "radio/$clean" done swift

📡 Going Live

When it’s time to go live, it takes about 30 seconds:

  • Spin up Mixxx
  • Load a vinyl track into Deck A
  • Load a digital loop into Deck B
  • Toggle mic, cue the set, yell something stupid into the Yeti
  • Hit broadcast

Boom. You’re now tuned into pyr8rdio.ismyradio.com, probably hearing me butcher a crossfade between Metallica and Butthole Surfers while ranting about old tour shirts.

This setup lets me blend analog grit with digital backup — because even I need bathroom breaks.

🔮 What’s Next for PYR8RDIO?

Glad you asked.

  • Twilio call-in line — listeners leave voicemails, I play them mid-set
  • Track log web app — SwiftUI + Firebase view of what’s playing
  • iOS remote app — start/stop the stream and adjust volume from my phone
  • Vinyl-only nights — zero digital fallback, just needle and noise
  • Themed sets — Metallica Mondays, Noise Floor Fridays, Dead Milkman Hour

There’s also been talk of merch. Stickers. Maybe even a zine-style show guide. If anyone out there actually listens, I might make it real.

📻 Tune In and Melt Your Brain

Want to hear what this sounds like?

🎧 Listen Livehttps://pyr8rdio.ismyradio.com

🎙️ On air: DJ Wreckless Wes

🎵 Genres: Punk. Metal. Loops. Weird midnight vinyl.

🛠️ Powered by: Mixxx, shell scripts, and a 13-year-old Mac

No sponsors. No ads. Just music and chaos.

Got an old Mac, some records, and a hot take on Fugazi’s best EP? Build your own station. This post wasn’t about code, but you know the feeling — wiring up weird stuff to bring something to life. That’s what pyr8rdio is. That’s what this is.

Stay wreckless,

DJ Wreckless Wes 🎤📼🔥

🎯 Bonus: More Real-World iOS Survival Stories

If you’re hungry for more tips, tricks, and a few battle-tested stories from the trenches of native mobile development, swing by my collection of articles:

👉 https://medium.com/@wesleymatlock

These posts are packed with real-world solutions, some laughs, and the kind of knowledge that’s saved me from more than a few late-night debugging sessions. Let’s keep building apps that rock — and if you’ve got questions or stories of your own, drop me a line. I’d love to hear from you.


Originally published on Medium