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:
- Open Mixxx â Preferences â Sound Hardware
- Under Input Devices, look for your USB interface (e.g., USB Audio CODEC)
- Assign Deck 1 Input to that interface
- Assign Microphone 1 to your Blue Yeti
- 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:
- Plugged the turntable into my amp â USB interface â Mac.
- Launched Mixxx, mapped vinyl input to Deck A.
- Deck B runs digital fallback tracks (for overnight automation).
- Mic input is the trusty Blue Yetiâââmapped and toggleable.
- Broadcasting tab â dropped in caster.fm details â saved.
- 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 Live â https://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