One of my jobs for USCSA (United States Collegiate Ski and Snowboard Association) is to bring music to the start of our races. Every day I would get request for racers to play specific songs when they were getting ready to start. This was a real pain. So I though wouldn't it be nice if listeners can text message in their song requests?
Previously I had a pair of Philips Fidelio Docking Speakers that had about 30 Watts of power and about 5 hours of battery life.
After 3 years of abuse on the mountain they finally called it quits.
The time was right to finally create SnoTunes for this season.
Aesthetics were extremely important. I knew that I wanted it to look as cool as it sounds. In the past I needed to carry the speakers around in a backpack so I thought why not build the system directly into the pack?
I first bought a really cool looking retro external backpack from Ebay that needed some tears sewed up and the leather restored.
After some hand sewing I had repaired the tears and added side zippers so the speakers could be exposed...
But it was a futile effort. The Each time I fixed a tear something else would rip. Restoring the leather was a fail too. The straps snapped and the clasps were on their last life. It was time to find a different pack. Searching online found a junior external frame backpack that seemed like it would work. And it did, perfectly.
After a couple weeks of work here it is at last...SnoTunes!
- 160 Watt Stereo
- Water Resistant
- 7-8 hours of battery life on the snow
- Raspberry Pi B+ running Kodi (formally XBMC) for media playback
- Software to automatically add song requests in the form of YouTube URLs to the playlist (it can fetch songs not already in the playlist)
- Users can vote to change song by texting the word Next
- AirPlay capabilities
- Looks awesome!
Electronics box with straps to attach to frame
7" LCD screen for interfacing with Raspberry Pi
Speaker tree and amplifier
Power regulation circuitry, batteries, and charger
LTC4370 load balancing circuit
Hardware Overview Video
Power Regulation Flowchart
Bill of Materials
Below is a BOM containing the majority of parts used. Many of the miscellaneous parts I had laying around including the speakers.
Amazon Parts Store
Source code is available on SnoTunes GitHub
The Raspberry Pi itself is running the RaspBMC distribution and uses the Kodi (formerly XBMC) for media playback.
To get the scripts to work on the Pi install (using the terminal and apt-get) php5-curl and using pip install pafy.
After enabling local script access in the Kodi setting menu (I used port 8888) and setting up a crontab for snotunes.php (sudo crontab -e -u root) you should be up and running. Be sure to chmod 755 all files!
Below is a flowchart depicting how texts are routed to the speakers
SnoTunes Client Scripts
There are 4 tables used for the system as shown in the chart below
I purchased a USB wireless microphone Sampson Wireless Mic. I see that it is detected in ALSA but Kodi doesn't seem to use conventional settings for audio that can be controlled from alsamixer. If anyone knows how to scrip microphone pass-through for Kodi running on RaspBMC and can help out it would be greatly appreciated!
Also there are numerous improvements that are possible to the code. Anyone who wants to contribute is welcome. It would be great to make a stand alone package that users can install on their laptops so anyone can use SnoTunes at their parties!