SnoTunes

From Matt Bilsky

SnoTunes

Introductory Video

Overview

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.

Philips fidelio ds8550 portable speaker dock.jpg

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.

$ 12 (1).JPG $ 57.JPG $ 57 (2).JPG $ 57 (6).JPG

After some hand sewing I had repaired the tears and added side zippers so the speakers could be exposed...

2014-12-23 23.13.27.jpg

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 I 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!

Bag closed.jpg

Specifications

  • 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!

Pictures

Electronics box with straps to attach to frame

Box attached.jpg


7" LCD screen for interfacing with Raspberry Pi

2015-01-23 16.23.55.jpg


Speaker tree and amplifier

Tree front.jpg Tree back.jpg


Power regulation circuitry, batteries, and charger

Power circuitry.jpg


LTC4370 load balancing circuit

Balancer completed.jpg Balancer circuit base.jpg


Action Shot

Action shot.jpg

Hardware Description

Hardware Overview Video

Power Regulation Flowchart

Electrical diagram.jpg

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.

Bom pic.jpg

Digi-Key BOM

Digikey list.jpg

Amazon Parts Store

Software Description

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

Software flowchart.jpg

Server Scripts

SnoTunes Client Scripts

MySql Database

There are 4 tables used for the system as shown in the chart below

Mysql chart.png

Next Steps

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!