I wanted a solution for getting digital music from my iPad to my stereo and/or speakers. The iPad doesn’t have a toslink or mini-toslink jack which is a bit of a shame, only offering an analog output (on the other hand, do you really want your iPad tethered to a stereo? no). So the solution is to go wireless and get the music out digitally via itunes.
I didn’t have a decent receiver (curse you, Onkyo, and your buggy TX-NR708). Thus, I decided I’d throw my own amplifier together from a few custom (and not-so-custom components). The design goals:
- Must get music from iPad to Amp digitally
- Remote power on/off from computer (i.e. via IP)
- Remote volume from computer
- Visualization (VU meters)
- Low power in standby and operational mode
So let’s take a look at what we got:
and, a view with some captions describing the components:
So, let’s describe the parts:
IN-13 driver boards. These came from Marc BAREILLE at http://m.bareille.free.fr/vu-in13/vumeter_in13.htm. Marc supplies the circuit boards, you supply all the components. The IN-13s themselves came from eBay, from some place in Russia or Ukraine. These board work pretty good and have the high voltage power supply integrated with them.
DC-DC Converter. Right above the IN-13 driver boards is a DC-DC converter. The op-amps on the boards needed +/0 15v to operate, and it was most convenient for me to use the converter to convert over the 24V supply that’s used for the amplifier.
MiniDSP Stack. This includes MiniDigi, MiniDSP, and MiniAMP. These boards come from minidsp.com. It’s a great little digital amplifier, accepting 2x toslink and 2x coaxial inputs. I’m only using 1 toslink at the moment, but future plans (and those unused buttons on the front) may go toward more inputs and a prop-based switching mechanism.
MotorPot. Regular potentiometers aren’t very interesting. Alps makes some nice motorpots, which are pots with motors attached. This one is a 2 channel linear pot. One channel goes to the MiniDSP to control volume. The the other channel is used as feedback to the microcontroller, so that we can see the motorpot to a known position (motorpot presets!)
24V Power Supply. I went with a small commercial switching supply. The idea was to keep power usage low and size compact. It supplies power for the DC-DC converter (IN-13s) and the MiniDSP stack. The 24V supply is switched via a relay controlled by the microcontroller. Power for the Microcontroller is supplied by a separate 5V switching supply, hidden below the Microcontroller board.
Propeller Microcontroller. This is one of my standard “clock” boards from the clock I never made, repurposed to yet another use. It features on-board ethernet via an ENC28J160 chip. The prop then provides built-in web server support allowing amplifier to be turned on/off and volume set remotely. A LTC1298 ADC is used for reading the position of the motorpot, and a L293D H-Bridge is used to operate the motor. Although the motor says it requires 5.5V for stable operation, it seems to operate pretty well from the 5V passed through the L293D (which drops it two diodes worth, to about 3.5V at the motor).
I’ll probably do more of a write-up of the code when I get some more spare time. The TCP Stack is PropTCP by Harrison Pham, with a bit of customization (it floats around from project to project, getting a bit more modified as time goes by). The PWM code for running the H-Bridge came from the Propeller Book, in the dancebot (Hanno) section. I wrote a custom controller to operate the motor to seek to specific places with feedback; it’d probably be better replaced with a PID controller.
Apple Airport Express. The Airport Express is the digital music receiver. It receives music from the iPad via AirPlay, converts it to toslink digital output, where it feeds into the MiniDSP stack. There just wasn’t a good way to get the music over ethernet without going with a commercial solution. Fortunately, the AE is small and easily hidden in the case.
Here’s a picture of the web page. It’s rather simple at the moment:
One goal was low power utilization. A kill-a-watt measured power-on at 15.7 watts and standby at 5.4 watts respectively. The lion share of the standby power is probably the airport express. I could eliminate that by adding another relay to switch the AE on and off. Problem is the AE has a significant boot time, and I don’t want to be waiting a minute or two every time I turn on my amplifier before the iPad can connect to it. Un-powering the AE also breaks the AirPlay connection requiring it to be re-established. Better to just leave it on and be done with it.
In addition to the Ipad, I can also listen to arbitrary sources via airfoil:
The above picture shows me connected via VNC to my Linux Server in the other room. It’s running VMWare and a Virtual Machine that’s running Windows XP SP2. On this VM is airfoil and XMicroplayer. XMicroplayer is one of my own programs (http://www.sb-software.com/xmplayer) that allows you to stream Sirius and XM. This gives me a great way to stream Sirius Internet Radio onto the amp. XMicroplayer is much more stable than the crappy Sirius iPad App, or I’d probably use the iPad for the task. Best of all, it’s all using spare cycles on hardware (my Linux VM server) that is already running for other purposes.
Future Plans –
- Input switching. There’s two coaxial digital and one toslink remaining on the miniDigi. I’d like to rig the prop to switch the miniDigi between inputs. Shouldn’t be too hard. Three buttons on the front are unused and could be used to switch sources (three buttons, four sources? I’ll have to get inventive…)
- Auto-on. The AE only outputs toslink optical when it’s receiving a signal. It should be possible to split off the toslink to a photodetector and allow the prop to turn the amp on and off automatically when a signal is detected.
- Composite TV output. My standard clock board has composite output already on it. Can’t think of a good reason why I’d want to watch the prop on the TV, but what the heck, might as well utilize it. I’ve got cogs to spare.
The youtube video (music used was Royalty Free songs from danosongs.com):