https://elinux.org/api.php?action=feedcontributions&user=Cooperdl&feedformat=atomeLinux.org - User contributions [en]2024-03-28T15:12:56ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303818ECE497 Project Music Server2013-11-18T22:01:20Z<p>Cooperdl: done with theory of operation</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <br />
beagle$ '''./startServer.sh'''<br />
<br />
If that does not work run the following command first<br />
beagle$ '''chmod +x startServer.sh'''<br />
<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>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.<br />
<br />
[[File:umbreonGUI.png|thumb|Umbreon Interface.]]<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
Video highlights can be found in the link below.<br />
<br />
[[File:HighlightsVideo.mp4|thumbnail|Video showing the highlights of the project]]<br />
<br />
Highlights include adding and removing songs from the playlist and changing the volume of the song being played. Not mentioned in the video the webpage can be accessed by any computer on the same network so it is easy to change the playlist from across the room.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
Express framework uses socket.io which has 2 major functions to communicate, socket.on and socket.emit. When socket.emit is used in mediaplayback.js it uses the socket.on equivalent in umbreonserver.js.<br />
<br />
example:<br />
socket.emit('addSong', songNum);<br />
socket.on('addSong', function(songNum){}<br />
<br />
This also works the other way. For uploading the file names to the webpage you use a socket.emit call within umbreonserver.js.<br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b><br />
: ---------Eric---------5hrs<br />
: ---------David--------2hrs<br />
<br />
<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303806ECE497 Project Music Server2013-11-18T21:42:09Z<p>Cooperdl: fixed formating</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <br />
beagle$ '''./startServer.sh'''<br />
<br />
If that does not work run the following command first<br />
beagle$ '''chmod +x startServer.sh'''<br />
<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>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.<br />
<br />
[[File:umbreonGUI.png|thumb|Umbreon Interface.]]<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
Video highlights can be found in the link below.<br />
<br />
[[File:HighlightsVideo.mp4|thumbnail|Video showing the highlights of the project]]<br />
<br />
Highlights include adding and removing songs from the playlist and changing the volume of the song being played. Not mentioned in the video the webpage can be accessed by any computer on the same network so it is easy to change the playlist from across the room.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b><br />
: ---------Eric---------5hrs<br />
: ---------David--------2hrs<br />
<br />
<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303800ECE497 Project Music Server2013-11-18T21:40:46Z<p>Cooperdl: edited the hours</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <br />
beagle$ '''./startServer.sh'''<br />
<br />
If that does not work run the following command first<br />
beagle$ '''chmod +x startServer.sh'''<br />
<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>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.<br />
<br />
[[File:umbreonGUI.png|thumb|Umbreon Interface.]]<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
Video highlights can be found in the link below.<br />
<br />
[[File:HighlightsVideo.mp4|thumbnail|Video showing the highlights of the project]]<br />
<br />
Highlights include adding and removing songs from the playlist and changing the volume of the song being played. Not mentioned in the video the webpage can be accessed by any computer on the same network so it is easy to change the playlist from across the room.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide<br />
</b>---------Eric---------5hrs<br />
</b>---------David--------2hrs<br />
<br />
<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303794ECE497 Project Music Server2013-11-18T21:39:18Z<p>Cooperdl: finished Highlights</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <br />
beagle$ '''./startServer.sh'''<br />
<br />
If that does not work run the following command first<br />
beagle$ '''chmod +x startServer.sh'''<br />
<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>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.<br />
<br />
[[File:umbreonGUI.png|thumb|Umbreon Interface.]]<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
Video highlights can be found in the link below.<br />
<br />
[[File:HighlightsVideo.mp4|thumbnail|Video showing the highlights of the project]]<br />
<br />
Highlights include adding and removing songs from the playlist and changing the volume of the song being played. Not mentioned in the video the webpage can be accessed by any computer on the same network so it is easy to change the playlist from across the room.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303788ECE497 Project Music Server2013-11-18T21:36:02Z<p>Cooperdl: added video</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <br />
beagle$ '''./startServer.sh'''<br />
<br />
If that does not work run the following command first<br />
beagle$ '''chmod +x startServer.sh'''<br />
<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>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.<br />
<br />
[[File:umbreonGUI.png|thumb|Umbreon Interface.]]<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
[[File:HighlightsVideo.mp4|thumbnail|Video showing the highlights of the project]]<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=File:HighlightsVideo.mp4&diff=303782File:HighlightsVideo.mp42013-11-18T21:34:18Z<p>Cooperdl: highlights video</p>
<hr />
<div>highlights video</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303728ECE497 Project Music Server2013-11-18T21:16:41Z<p>Cooperdl: fixed user instructions</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <br />
beagle$ '''./startServer.sh'''<br />
<br />
If that does not work run the following command first<br />
beagle$ '''chmod +x startServer.sh'''<br />
<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>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.<br />
<br />
[[File:umbreonGUI.png|thumb|Umbreon Interface.]]<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303710ECE497 Project Music Server2013-11-18T21:07:42Z<p>Cooperdl: </p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your beagle. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <span style="color:red">(I had to do a chmod +x startServer.sh to make this work.)</span><br />
beagle$ '''./startServer.sh'''<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. <span style="color:red">(Show a picture)</span>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.<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]][[File:umbreonGUIPlaying.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303698ECE497 Project Music Server2013-11-18T21:06:55Z<p>Cooperdl: Package section done</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
The beagle bone was fitted into a cardbored tube for protection. It had holes cut into it for the various ports. <br />
<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
[[File:usbhdmiside.jpg|thumbnail|usb and hdmi side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your laptop <span style="color:red">(Why not beagle?)</span>. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <span style="color:red">(I had to do a chmod +x startServer.sh to make this work.)</span><br />
beagle$ '''./startServer.sh'''<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. <span style="color:red">(Show a picture)</span>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.<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]][[File:umbreonGUIPlaying.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=File:Usbhdmiside.jpg&diff=303680File:Usbhdmiside.jpg2013-11-18T21:03:19Z<p>Cooperdl: Usb and hdmi side</p>
<hr />
<div>Usb and hdmi side</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303668ECE497 Project Music Server2013-11-18T21:02:09Z<p>Cooperdl: </p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
[[File:ethernetside.jpg|thumbnail|ethernet side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your laptop <span style="color:red">(Why not beagle?)</span>. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <span style="color:red">(I had to do a chmod +x startServer.sh to make this work.)</span><br />
beagle$ '''./startServer.sh'''<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. <span style="color:red">(Show a picture)</span>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.<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]][[File:umbreonGUIPlaying.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303662ECE497 Project Music Server2013-11-18T21:00:42Z<p>Cooperdl: /* Packaging */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
[[File:Ethernet.jpg|thumbnail|ethernet side of the package]]<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your laptop <span style="color:red">(Why not beagle?)</span>. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <span style="color:red">(I had to do a chmod +x startServer.sh to make this work.)</span><br />
beagle$ '''./startServer.sh'''<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. <span style="color:red">(Show a picture)</span>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.<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]][[File:umbreonGUIPlaying.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=File:Ethernetside.jpg&diff=303656File:Ethernetside.jpg2013-11-18T20:58:33Z<p>Cooperdl: Ethernet side of the package</p>
<hr />
<div>Ethernet side of the package</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303602ECE497 Project Music Server2013-11-18T20:47:12Z<p>Cooperdl: added photos</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
file:///home/cooperdl/Downloads/IMG_20131118_154147900.jpg<br />
file:///home/cooperdl/Downloads/IMG_20131118_154203425.jpg<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your laptop <span style="color:red">(Why not beagle?)</span>. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <span style="color:red">(I had to do a chmod +x startServer.sh to make this work.)</span><br />
beagle$ '''./startServer.sh'''<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. <span style="color:red">(Show a picture)</span>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.<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]][[File:umbreonGUIPlaying.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=ECE497_Project_Music_Server&diff=303314ECE497 Project Music Server2013-11-18T17:21:46Z<p>Cooperdl: changed executive Summary</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Amesen|Eric Ames]], [[user:Cooperdl|David Cooper]]<br />
<br />
<br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
09 Executive Summary - Watch the 'tense'. "which will be playable" vs. "which is playable". (See my "Cleaned up wording" edit.)<br />
05 Packaging - Wrong content. Show how your boxed up your Beagle. Include a picture (show off what you have done.)<br />
06 Installation Instructions - Show the npm commands that need to be run.<br />
10 User Instructions<br />
00 Highlights - Missing. Needs YouTube video.<br />
05 Theory of Operation<br />
05 Work Breakdown - Seems rather imbalanced. <br />
10 Future Work - Good suggestions<br />
10 Conclusions - Good<br />
10 Demo - It works!<br />
00 Late<br />
Comments: A lot of work went into this project. I'm having trouble making it work on my Bone, but I'm not running Ubuntu, so I won't hold it against you.<br />
<br />
Score: 65/100<br />
</pre><br />
There are a few things that need fixing up before I'll assign your final score. They are marked in <span style="color:red">red</span>. The comments in <span style="color:green">green</span> are just comments and don't need further action.<br />
<br />
== Executive Summary ==<br />
<br />
This project focused on creating a music server hosted on the BeagleBone. The server contains a number of MP3 files which can be played from the Beagle via either direct access or network access over ethernet/wireless. Currently 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, ''all from your web browser''.<br />
<br />
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.<br />
<br />
== Packaging ==<br />
<br />
<br />
<br />
== Installation Instructions ==<br />
<br />
<br />
1) Go to https://github.com/Guiltygate/beaglebone-classwork and clone the beaglebone-classwork folder somewhere on your laptop <span style="color:red">(Why not beagle?)</span>. <b>NOTE: </b>Does not work on Windows. Does not play nicely with IE. Should work with Firefox, Chrome, possibly Safari.<br />
<br />
<b>What's in the repo</b><br />
<br />
*Server files<br />
*node module files<br />
*Basically all files I created/used<br />
<br />
<b>What's NOT in the repo</b><br />
<br />
*Any node module <i>dependencies</i>. If you receive any errors regarding the node modules, you will want to download and install NPM (NodeJS Package Manager) and reinstall whichever module is throwing the errors. This will also grab any dependencies it requires that you do not already have. If, when trying to reinstall, it won't let you download the module, this is most likely due to a conflict between NPM and your distro. You'll need to download the files on another distro, port them over, and use node-gyp (https://github.com/TooTallNate/node-gyp) to compile them locally, and install their dependencies manually.<br />
<br />
beagle$ '''npm install lame'''<br />
<br />
*NPM. It's a separate program that you may or may not need, depending on the above.<br />
<br />
*NodeJS version 0.8.xx or higher. Again, you need to install this. May work with 0.6.12, hasn't been tested. I use the Express module, which supposedly required NodeJS 0.8 and higher, but who knows. I personally used the 0.9.9 (unstable) build for Debian. Ubuntu shouldn't have any issues.<br />
<br />
*For USB audio, you'll need to edit a config file. Those details are below.<br />
<br />
<b>FOR USB-Audio and browser volume control</b><br />
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 from the browser.<br />
<br />
<br />
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 .<br />
<br />
Use<br />
beagle$ '''sudo apt-get install npm'''<br />
<br />
or your distro equivalent to install npm. Again, some distro's don't directly support NPM, and you'll need to go to their site here (https://npmjs.org/) in order to manually download and install.<br />
<br />
<br />
3) Due to the whole 'unable-to-reflash-with-Angstrom' problem, I am unable to guarantee this will work on a standard BBB. However, I only use general Linux architecture features, so feasibly as long as you can install Express 3.xx on Angstrom, it should be perfectly fine.<br />
<br />
== User Instructions ==<br />
<br />
See the README for further detail, but here's the basics.<br />
<br />
Run this command <span style="color:red">(I had to do a chmod +x startServer.sh to make this work.)</span><br />
beagle$ '''./startServer.sh'''<br />
if you wish to automatically mount your current usb drive. Server will start at 192.168.7.2:8080. If you receive a permissions error, run<br />
beagle$ '''chmod +x startServer.sh'''<br />
to grant the proper permissions.<br />
<br />
If you'd rather just start the server without auto-mounting, run<br />
beagle$ '''node umbreonServer.js'''<br />
<br />
<span style="color:green">(I'm running v 0.8.22 of node, but I'm getting a "Module version mismatch" from the speaker module)</span>To play the current playlist (initializes to all .mp3 files in the top directory of your flash drive), hit the big arrow button. <span style="color:red">(Show a picture)</span>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.<br />
<br />
To swap out flash drives, press the 'Eject' button, physically switch them, and then hit the 'Load Media' button. To stop the current playlist from playing, hit the 'Stop Playlist' button. Warning: Stop button stops the playlist, but not the current track.<br />
<br />
To download the current track, hit the 'Download' button at the bottom of the page. To upload, simply drag-and-drop the desired file.<br />
<br />
===== Known/Previous Bugs =====<br />
<br />
*Previously, hitting the 'play' button while songs are already playing will cause a system crash. HOWEVER, this SHOULD be fixed. I haven't been able to replicate it since fixing it, at least.<br />
<br />
*Previously, the load button stopped working for some reason and kept new media from being loaded. It had to do with pulling out the USB before unmounting it, so now users should press the 'eject' button before removing the flash drive, then plugging in the new media and pressing the 'load' button.<br />
<br />
*Cannot skip songs backwards. The button is disabled, as I couldn't find a time-effective way of implementing this.<br />
<br />
*Stopping and forward skipping 'works', but only if pressed in the first three seconds of a song beginning playback. The entire playlist will still stop (if pressing the 'stop' button), but not the current track.<br />
<br />
*GUI font/style is ugly. Which is kind of a bug.<br />
<br />
[[File:umbreonGUI.png|thumb|Again, it's rough.]][[File:umbreonGUIPlaying.png|thumb|Again, it's rough.]]<br />
<br />
== Highlights ==<br />
<span style="color:red">(missing)</span><br />
<br />
The Highlights are an integral part to the project, such as learning a variety of new languages/formats in a very short amount of time, and I did not see a reason for a separate section devoted to such things.<br />
<br />
== Theory of Operation ==<br />
<br />
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.<br />
<br />
<span style="color:red">(Tell some about using Express. What messages are passed between the server and the browser, etc.? Need to details of the inner workings, but not alot.)</span><br />
<br />
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.<br />
<br />
== Work Breakdown ==<br />
<br />
<br />
I would like to point out this wouldn't have taken so long if I hadn't had to learn NodeJS, Express, NPM, alsa, CSS, html, and all the little quirks associated with them. On top of my Beagle dying Sunday and refusing to reflash to Angstrom. Spent all day trying to reflash it, had to switch to Debian Wheezy and re-dowload all the software.<br />
<br />
<br />
<b>Server Core</b>-----------Eric------10hrs<br />
<br />
<b>Server Features</b>-------Eric------30hrs (minimum)<br />
:Beginning with Express, NodeJS, NPM, als-arch, :: 18hrs (last Friday and Saturday. Sunday was spent praying and trying to fix the Beagle. Monday was spent swapping over to express.)<br />
: Playlist------------1hr<br />
: Playlist viewing----20min<br />
: Playlist editing----20min<br />
: Radio-Stream--------6 hrs - partially included in the 'Beginning' section<br />
: Basic GUI-----------1hr<br />
: Enhanced GUI--------4hrs<br />
: Song uploads--------6hrs<br />
: Song downloads------1hr<br />
: Tracklist-----------10min<br />
<br />
<b>Express Test</b>----------David-----1hr<br />
<br />
<b>Initial Planning and Discussion</b>----------Both---------2hrs<br />
<br />
<br />
<b>Editing the Wiki/Writing Installation Guide</b>---------Eric---------5hrs<br />
<br />
<b>Network access</b>--------Eric------1.5hr<br />
<br />
<span style="color:red">(I don't see many hours for David here. Unless I hear otherwise I'm inclined to assign two different grades.)</span><br />
<br />
== Future Work ==<br />
<br />
1) Add wireless router for easy streaming, no ethernet cord hassle.<br />
<br />
2) Fully implement the Stop and Skip buttons. Currently, they can't stop the audio stream currently outputting, only the rest of the playlist.<br />
<br />
3) Add a 'reboot server' button, in case of server failure. Tying into this, the server needs to be able to start on boot- I lost the config files when my board self-destructed on Monday.<br />
<br />
4) Due to not knowing CSS or html, the current GUI is a bit crap. I'd like to build a GUI I can actually be proud of, rather than the slap-a-dash affair I have now.<br />
<br />
5) Song playback bar, graphically lets you know time remaining.<br />
<br />
6) Button feedback. It's weird to select a song and having no feedback if it worked or not. Annoying.<br />
<br />
7) The audio modules I use only process .mp3 files, so adding additional modules to process .ogg and other popular audio files would be something nice to add. I myself only have/use .mp3s, so no guarantee I'll do this.<br />
<br />
== Conclusions ==<br />
<br />
Wish I could have done more with the hardware, like a lightshow tied to the audio or something. But it took a lot of time to learn the different languages/styles/formats I needed for the project. It was all high-level (mostly), but there's a bunch of little gotcha's that will trip you up if you're not careful. Probably would have helped to have someone double-check my work.<br />
<br />
<br />
As time-intensive as it was, what with other classes, I had a blast learning so much, and I'm looking forward to continuing to work on this over break and into the future. I also want to look into what other useful applications I could run on the bone with nodejs/express web-servers. Many, many possibilities...<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=286346EBC Contributions and Project Status2013-09-16T01:48:35Z<p>Cooperdl: added git repository for david cooper</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Parasby | Ben Paras]]<br />
# [[Special:Contributions/Parasby | Taylor Purviance]]<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Guiltygate/beaglebone-classwork classwork]<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/elswicwj/ECE497.git classwork]<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/mcdonamp/497Homework 497Homework]<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/houj/Homework.git Classwork]<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/FreeTymeKiyan FreeTymeKiyan]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/cooperdl/Classwork Classwork]<br />
|-<br />
| [[User:Alvareap | Alex Alvarez]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Alvareap | Zhen Wei]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
|-<br />
| [[User:Manuel | Manuel Stephan]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/manuelstephan/homework Homework]<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=User:Cooperdl&diff=285380User:Cooperdl2013-09-10T18:35:50Z<p>Cooperdl: fixed category</p>
<hr />
<div>[[Category:ECE497 |Uc]]<br />
<br />
Hi, I'm David Cooper. I am a senior computer engineering student at Rose-Hulman Institute of technology.</div>Cooperdlhttps://elinux.org/index.php?title=User:Cooperdl&diff=285044User:Cooperdl2013-09-09T18:07:31Z<p>Cooperdl: fixed category</p>
<hr />
<div>[[Category:ECE497]]<br />
<br />
Hi, I'm David Cooper. I am a senior computer engineering student at Rose-Hulman Institute of technology.</div>Cooperdlhttps://elinux.org/index.php?title=User:Cooperdl&diff=285038User:Cooperdl2013-09-09T18:06:37Z<p>Cooperdl: added category</p>
<hr />
<div>[[Category:ECE497Fall2012 |U]]<br />
<br />
<br />
Hi, I'm David Cooper. I am a senior computer engineering student at Rose-Hulman Institute of technology.</div>Cooperdlhttps://elinux.org/index.php?title=EBC_Editing_a_Wiki&diff=285032EBC Editing a Wiki2013-09-09T18:03:26Z<p>Cooperdl: Added Cooperdl</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Here is a wiki you can practice editing. Before you can edit it you will have to create an login. Pick something that will make it easy for me to identify you as part of my class. Then just add your name and date on the end of the table.<br />
<br />
You can get help here: [[Help:Contents]].<br />
<br />
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheatsheet].<br />
<br />
== Fall 2013 ==<br />
<br />
{|<br />
|-<br />
| [[user:amesen | Eric Ames]]<br />
| 13-June-2013<br />
|-<br />
| [[user:fendrirj | Robert Fendricks]]<br />
| 5-September-2013<br />
|-<br />
| [[user:elswicwj | Will Elswick]]<br />
| 5-September-2013<br />
|-<br />
| [[user:savrdada | David Savrda]]<br />
| 5-September-2013<br />
|-<br />
| [[user:skorinm | Matt Skorina]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Parasby | Ben Paras]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Yuxuan | Yuxuan Zeng]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Mcdonamp | Mike McDonald]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Kowalsif | Ian Kowalski]]<br />
| 5-September-2013<br />
|-<br />
| [[user:daniel.hou | Junxuan Hou]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Andrewca | Chris Andrews]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Rockybulwinkle | Chris Hopwood]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Tpurviance | Taylor Purviance]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Manuel | Manuel Stephan]]<br />
| 8-September-2013<br />
|-<br />
| [[user:FreeTymeKiyan | Yang Liu]]<br />
| 8-September-2013<br />
|-<br />
| [[user:Cooperdl | David Cooper]]<br />
| 9-September-2013<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 18-July-2012<br />
|-<br />
| [[user:atniptw | Tom Atnip]]<br />
| 20-July-2012<br />
|-<br />
| [[user:Xinyu1991 | Xinyu Cheng]]<br />
| 31-August-2012<br />
|-<br />
| [[user:bssachin45 | B S Sachin]]<br />
| 25-July-2012<br />
|-<br />
| [[user:ruff | Ruffin White]]<br />
| 16-August-2012<br />
|-<br />
| [[user:Popenhjc | James Popenhagen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:mmoravec | Matthew Moravec]]<br />
| 30-August-2012<br />
|-<br />
| [[user:ngop | Peter Ngo]]<br />
| 30-August-2012<br />
|-<br />
| [[user:duganje | Josh Dugan]]<br />
| 30-August-2012<br />
|-<br />
| [[user:hansenrl | Ross Hansen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:jungeml | Michael Junge]]<br />
| 05-September-2012<br />
|- <br />
| [[User:shinnsm|Stephen Shinn]]<br />
| 30-August-2012<br />
|-<br />
| [[User:draneaw|Alex Drane]]<br />
| 30-August-2012<br />
|-<br />
| [[User:larmorgs|Greg Larmore]]<br />
| 31-August-2012<br />
|-<br />
| [[User:jessebrannon|Jesse Brannon]]<br />
| 31-August-2012<br />
|-<br />
| [[User:lix|Xia Li]]<br />
| 31-August-2012<br />
|-<br />
| [[User:whiteer|Elias White]]<br />
| 31-August-2012<br />
|-<br />
| [[User:Astroricks|Yue Zhang]]<br />
| 31-August-2012<br />
|-<br />
| [[User:millerap|Andrew Miller]]<br />
| 31-August-2012<br />
|-<br />
| [[user:Geislekj | Kevin Geisler]]<br />
| 1-September-2012<br />
|-<br />
| [[user:chris.good | Christopher A Good]]<br />
| 3-September-2012<br />
|-<br />
| [[user:Lobdeljt | John Lobdell]]<br />
| 5-November-2012<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuming | Yuming Cao]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuhasmj | Michael Yuhas]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yifei | Yifei Li]]<br />
| 22-Nov-2011<br />
|-<br />
| [[user:Ziyi Zhang | Ziyi Zhang]]<br />
| 24-Nov-2011<br />
|-<br />
|[[user: mac | Jack Ma]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:Zitnikdj | David Zitnik]]<br />
| 25-Nov-2011<br />
|-<br />
| [[user:Harrisgw | Greg Harrison]]<br />
| 26-Nov-2011<br />
|-<br />
| [[user:Yanj | Mona J Yan]]<br />
| 27-Nov-2011<br />
|-<br />
| [[user:Gemini91 | Guanqun Wang]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:vsn1985 | Narayanan VS]]<br />
| 28-Nov-2011<br />
|}<br />
<br />
{{YoderFoot}}</div>Cooperdlhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=285026EBC Contributions and Project Status2013-09-09T17:55:57Z<p>Cooperdl: Added David Cooper to Contributions page</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Parasby | Ben Paras]]<br />
# [[Special:Contributions/Parasby | Taylor Purviance]]<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/FreeTymeKiyan FreeTymeKiyan]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Cooperdl