Difference between revisions of "ECE497 Project Music Server"

From eLinux.org
Jump to: navigation, search
(Highlights)
(Work Breakdown)
Line 55: Line 55:
 
== Work Breakdown ==
 
== Work Breakdown ==
  
Server Core: Done
+
Server Core-----------Eric------10hrs
  
Server Features: 85% complete.
+
Server Features-------Eric------30hrs (minimum)
* Playlist - done
+
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday, Saturday, and Sunday. Monday was spent swapping over to express.)
* Playlist viewing - done
+
: Playlist------------1hr
* Playlist editing - done
+
: Playlist viewing----20min
* Radio-Stream - TBF
+
: Playlist editing----20min
* GUI - done
+
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section
* Enhanced GUI - TBF
+
: Basic GUI-----------1hr
* Song uploads - done
+
: Enhanced GUI--------4hrs
* Song downloads - done
+
: Song uploads--------6hrs
* Tracklist - done
+
: Song downloads------1hr
* Effortless media swapping - done
+
: Tracklist-----------10min
  
 +
Express Test----------David-----1hr
  
Network access: Done
+
Network access--------Eric------1.5hr
 
 
Interface: 90% complete
 
 
 
Optional - Client streaming: TBF
 
  
 
== Future Work ==
 
== Future Work ==

Revision as of 04:06, 15 November 2013

thumb‎ Embedded Linux Class by Mark A. Yoder


Team members: Eric Ames, David Cooper


Executive Summary

This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which will be playable from the Beagle via either direct access or network access over ethernet/wireless. Currently (all from your web browser) you can upload and download songs, add to and subtract from the playlist, play your custom playlist over hdmi or headphone jack, adjust the output volume, load new media, etc.

We realize it's an odd choice to have a project that focuses solely on software, rather than a combination of that and hardware (ignoring the audio output). But when approaching the project, we wanted to build something that we would actually use afterwards, and not just relegate to the dust bin of history. I would happily say we succeeded.

Packaging

Just about everything needed is in the repo, including the needed node modules. You will need to install NPM and NODEJS on your own. May also need to install module dependencies.

Installation Instructions

1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the umbreon folder somewhere on your laptop. NOTE:Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, maybe Safari.

FOR USB-Audio and browser volume control 1a) If you want to use a USB-audio device, you need to set it to default. I used the guide here http://crunchbang.org/forums/viewtopic.php?id=9852 . Also make sure that you have alsamixer, as the sound controls in-browser use command-line arguments sent to amixer, a module of alsamixer. If you don't have alsamixer, you simply won't be able to adjust the volume.

2) You will need NodeJS, v.0.8.xx or higher, along with NPM. While I include the different node_modules in the git repo, installing them through NPM also installs their dependencies. If you run into issues with the distro not allowing module installation, use node-gyp here: https://github.com/TooTallNate/node-gyp .

User Instructions

See the README for further detail, but here's the basics.

Run

./startServer.sh

if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:0121. If you'd rather just start the server without auto-mounting, run

node umbreonServer.js

To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. To view the current playlist/remove songs from it, hit the '-' button on the right. To view the entire directory of mp3 files and possible add them to the playlist, hit the '+' button on the left.

To swap out flash drives, physically switch them and hit the 'Load Media' button below. To stop the current playlist from playing, hit the 'Stop Playlist' button.

To download the current track, hit the 'Download' button at the bottom of the page. To upload, choose a file at the bottom of the webpage and hit the 'Submit' button.

Highlights

Unable to shoot video, but here's the current (rough) GUI.

Again, it's rough.
Again, it's rough.

Theory of Operation

Using express framework in NodeJS. Enables user to upload songs for playing, download the currently playing song, view playlist, edit playlist, add songs from the directory, change media by swapping out usb drives, etc.


Everything was planned for maximum user convenience, as I plan on using this in my dorm room once I obtain a wireless router for the bone.

Work Breakdown

Server Core-----------Eric------10hrs

Server Features-------Eric------30hrs (minimum)

Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday, Saturday, and Sunday. Monday was spent swapping over to express.)
Playlist------------1hr
Playlist viewing----20min
Playlist editing----20min
Radio-Stream--------6 hrs - partially included in the 'Beginning' section
Basic GUI-----------1hr
Enhanced GUI--------4hrs
Song uploads--------6hrs
Song downloads------1hr
Tracklist-----------10min

Express Test----------David-----1hr

Network access--------Eric------1.5hr

Future Work

Add wireless router to the bone for easier access. Client-side streaming would be nice, but there's already so many available online, kind of pointless.

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.




thumb‎ Embedded Linux Class by Mark A. Yoder