the music box

An elegant solution for streaming media to old stereos via bluetooth

running sq.jpg

the problem

My Sony stereo receiver from the 70s has a single AUX input. As a result, there is no easy way to play music through the stereo without attaching an RCA to 3.5mm audio cable, plugging in a phone directly, and leaving it next to the receiver. This is impractical for sharing music when friends are over.

my solution

Design and fabricate an intermediary bluetooth streaming device that outputs via RCA to the receiver. Several of these already exist on the market, but most are ugly and lack the ability to be customized. I wanted something that would match the hardwood and polished metal look of my stereo receiver.

Physical Design & Fabrication

The music box is made of a single piece of cherry wood, milled on a Roland 4 Axis CNC Mill. The front and back faceplates were machined from a sheet of 6061 aluminum on a OtherMill Desktop CNC. All 2D & 3D CAD was done in Vectorworks, 3D CAM was done in Roland’s proprietary SRP Player. Initial prototyping of the music box was done in cork and acrylic.

After milling, the wood shell was sanded, and polished via a 3 stage lathe buffing mandrel. Threaded brass inserts were added to the front and back of the shell to allow faceplates to be screwed in. The screw holes on the aluminum faceplates were countersunk on a drill press to allow for a clean, flush finish.


The guts of the music box are a Raspberry Pi Zero W, Pimoroni pHAT DAC, 3 to 5v logic converter, rotary encoder, RCA plugs, and DC barrel jack. The Pi runs raspbian lite with a startup instance of shairport-sync providing AirPlay audio player functionality.

The rotary encoder panel mounted to the front of the music box is connected to the GPIO header of the Pi via the logic converter. A custom python script running in the background modifies the system volume programmatically via the ALSA mixer when a user turns the knob. The volume level is displayed on the LCD as it is changed.

A second python script scrapes the shairport metadata, parses it, and outputs the artist and song title to the LCD when a song is being streamed to the music box.


  • Raspbian / Linux

  • Python

  • Vectorworks

  • Roland CAM & 4-axis mill

  • OtherMill desktop CNC


  • Raspberry Pi Zero W

  • pHat DAC

  • Rotary encoder

  • Cherry wood

  • 6016 aluminum


  • Physical computing

  • Industrial design

  • Software development

  • Fabrication

  • Milling