I have limited space, like everyone in HK. So your most likely wondering where I placed a huge headphone amp...
Given I had a few RU spare in my rack I ended up putting the amp and dac on rack shelfs.
This raises two immediate issues.
- How to control the dac and what to connect it to
- How to control the physical amp buttons (vol, input etc)
The first issue is easy to solve. I use MPD. MPD is a client/server music playback solution. You run an MPD server on a machine with a sound card and access to your music, then you run a client on any device on the same LAN. A client can be an android device, command line app or a GUI on any desktop.
This gives you the ability to control a remote dac and playback device from anywhere on your LAN. As you can see now I also need to have a server/pc located next to the dac. To fix this issue I brought an INTEL NUC, Low end first gen Intel Celeron 847 version. Loaded with a 64gb SSD and 8gb of ram more then enough.
Its nice and small and low power, hear is a image of it in the original box :
Remote device control
This issue was a little harder to solve. I set myself a few requirements for this section.
- Client/Server operating mode
- Command line interface
- Desktop GUI interface
- Be able to send IR codes to remote devices
If you recall from the previous blog post, when I brought my Audio-GD devices I made sure they could be operated via IR remote control. Aside from the power, but I can deal with that another way.
I started a little project called IR-Blower. This project has three main parts A client, A server and a hardware sending device(arduino based). All code is written in Ruby and GTK for the UI, aside from the Arduino. All of my code is released under the BSD 3-Clause License. Other parts/library's may be released under other licences.
Lets start with the clients.
I wrote two clients for this project. The first and main one is the desktop GUI application. Its written in Ruby and GTK. Its main function is to translate GUI button presses into messages that can be sent over the LAN to the IR-Blower server. You can find a screen shot of the current interface below(It may change) :
Button and device configuration is stored in YAML config files and read into the client on start up.
The next client I wrote was a simple command line client that talks to the IR-Blower server. This client is designed for use in CRON or scrips. It expects a single command line option and gives very little feedback. You can run this on the same system as the IR-Blower server or over the network.
The server is designed to be run as a background daemon and accept connections from clients then process this into a message to send to the IR-Blower hardware sender. The server also reads its config in from a YAML file on start up. The server is multi threaded to accept more then one client connection if needed.
This is where the arduino comes in. Since the Audio-GD kit uses a standard IR format(NEC) I made use of Ken Shirriff's IRremote Arduino library this made sending the IR codes very simple. I would also like to thank Kingwa from Audio-GD again, he was very helpful in giving me the raw IR codes for the devices I was interested, amazing service!
The Arduino code is quite simple, its just listing on the serial port for commands send from the IR-Blower server, than converts that to an IR signal. The hardware is also quite basic. One resistor for the IR LED's.
What about the power control?? The Audio-GD remotes don't support power on/off sadly. I have used a cheep remote controlled power socket, replaced the remote with a relay and that is how I turn the Master 9 on and off. Take a look at the following image to see just how dead simple the hardware side is :
Hear is the control cables. Two IR senders and the socket connects to my remote controlled power switch, the DIN plug connects to the IR blower unit :
Case closed :
With the combination of my IR-Blower and MPD I have a configuration that can be remotely controlled from power on to playback. I can cron the power on of my amp to start before I get home! You can see below an image of the entire thing rack mounted.