A friend of mine at work has crafted a tiny HTTP web server in C to run on the Arduino Uno to provide an interface to manipulate external devices (imagine turning on lights, adjusting the thermostat or even opening the garage door).
Wouldn’t it be cool if you could control your MIDI equipped digital piano from your iPhone? Imagine a player piano capable of jukebox queuing up MIDI or Audio files and playing them in order. That was my goal! RPI to the rescue.
- Raspberry Pi – Model B, 512MB RAM, 16GB SD Card, Raspbian Linux, Apple 12W USB Power Adapter, USB WiFi Dongle
- USB MIDI Digital Device (e.g. Yamaha Clavinova CLP-440 with USB MIDI port and RCA L+R Audio Inputs)
- Software: Apache HTTP Server, PHP, MySQL, (Nice to have: Netatalk file server, Shairport AirPlay server)
My original thought was to turn the Yamaha speakers into a AirPlay device for our many iOS devices. It’s nice to pipe in background tunes without having to hook up a device. AirPlay is great way to do that but I didn’t want to spend $100+ to be able to do that. The Raspberry Pi is more than capable of doing this. I found an extremely helpful blog post here: http://www.raywenderlich.com/44918/raspberry-pi-airplay-tutorial
NOTE: Power is a big issue for the Raspberry Pi. If you are using a WiFi dongle or any other USB device, I recommend making sure your power supply has enough kick to keep the RPI going. I started out with a microUSB adapter that advertised 700mA but performance became very unstable, especially under load. I switched to a 12W Apple adapter that I had handy and the problems disappeared. The RPI FAQ recommends 1.2A (1200mA).
Setup for AirPiano – MIDI Control
The Project Code: https://github.com/jasonacox/raspberrypi
- MySQL: Database ‘piano’ – see piano.sql file
- Dequeue Service: Run the cron.sh script to have the RPI scan for new midi or wave files to play. Run it with:
bash -x cron.sh 0<&- 1>/dev/null 2>/dev/null &
- Apache: Install apache http with mod_php and mysql support
- Website Code: Install index.php, setup.php and the folder.png files into the document root of your webserver. Upload the MIDI (*.mid) and WAVE (*.wav) files to this location. Be sure to update $globalBase in setup.php to the folder where these files are located.
AirPlay via Raspberry Pi
Adam Burkepile has the best tutorial I’ve found on how to set up a RPI for AirPlay:
Apple Share (AFP) Server via Raspberry Pi
The RPI is great for a tiny file server! At the least, having it run an AFP server will allow quick drag and drop transfer from your Macs. A Samba service for Windows shares is easy to set up as well.
sudo apt-get install netatalk
Yes, it is that easy. Finder will now show your Raspberry Pi under “shared” along with any other local network shares: