Commit 86f076fd authored by Karan Goel's avatar Karan Goel
Browse files

move old code, add new web app

parent bf322786
var fs = require('fs');
var http = require('http');
var url = require('url');
var tessel = require('tessel');
var audio = require('audio-vs1053b').use(tessel.port['A']);
var scURL = 'https://api.soundcloud.com/tracks/185716083.json?consumer_key=apigee';
var parsedSCURL = url.parse(scURL);
var options = {
host: parsedSCURL.host,
port: 80,
path: parsedSCURL.pathname + '?client_id=apigee'
};
// console.log(options);
// Wait for the module to connect
// audio.on('ready', function() {
// console.log("Audio module connected! Setting volume...");
// Set the volume in decibels. Around .8 is good; 80% max volume or -25db
// audio.setVolume(.8, function(err) {
// if (err) {
// return console.log(err);
// }
// Get the song
console.log('Retrieving song...');
http.get(scURL, function(responseFromSC) {
console.log(responseFromSC.statusCode);
responseFromSC.on('data', function (body) {
var mediaLocation = JSON.parse(body).stream_url;
console.log(mediaLocation);
var parsedMediaURL = url.parse(mediaLocation);
var options = {
host: parsedMediaURL.host,
port: 80,
path: parsedMediaURL.pathname + '?consumer_key=apigee'
};
console.log(options);
http.get(options, function(responseFromMedia) {
// And stream it back to the client
console.log('streaming streaming');
console.log(responseFromMedia);
audio.play(song, function(err) {
if (err) {
console.log(err);
} else {
console.log('Done playing', audioFile);
}
});
});
});
}).on('error', function(error) {
// If we can't get to the SC API server then respond with a 404
console.log('ERRORED');
console.log(error);
});
// });
// });
// If there is an error, report it
// audio.on('error', function(err) {
// console.log(err);
// });
{
"name": "audio",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"audio-vs1053b": "*"
}
}
// Setup basic express server
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
// Routing
app.use(express.static(__dirname + '/public'));
function sendEEGData() {
io.sockets.emit('data', {
'eegPower': { 'beta': 1000 * Math.random() + 1000 }
});
}
io.on('connection', function (socket) {
console.log('Client connected');
// let's mock some data and send it every second
setInterval(sendEEGData, 1000);
// when the user disconnects.. perform this
socket.on('disconnect', function () {
// remove the username from global usernames list
console.log('Client disconnected');
});
});
{
"name": "server",
"version": "0.0.0",
"description": "",
"main": "index.js",
"private": true,
"dependencies": {
"express": "3.4.8",
"socket.io": "*"
}
}
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9.
* Hide the `template` element in IE, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background: transparent;
}
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
\ No newline at end of file
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot');
}
@font-face {
font-family: 'icomoon';
src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'),
url(data:application/font-woff;charset=utf-8;base64,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) format('woff');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'icomoon';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-github:before {
content: "\e600";
}
.icon-play:before {
content: "\e601";
}
.icon-info:before {
content: "\e602";
}
.icon-menu:before {
content: "\e603";
}
* {
padding: 0;
margin: 0;
}
body {
background-color: #000000;
overflow: hidden;
}
a, a:visited {
text-decoration: none;
color: #c6c6c6;
}
a:hover, a:active {
color: #fff;
}
#info {
display: none;
}
#controlPanel {
z-index: 50;
position: absolute;
bottom: 35px;
width: 100%;
color: #999;
max-height: 600px;
-webkit-transition: max-height 0.8s;
-moz-transition: max-height 0.8s;
transition: max-height 0.8s;
overflow: hidden;
}
#controlPanel.hidden {
max-height: 52px;
}
#tab {
padding: 10px 16px 2px 16px;
font-size: 32px;
}
#tab>a {
background-color: rgba(255, 255, 255, 0.15);
padding: 7px 10px 3px 10px;
}
#trackInfoPanel {
float: left;
width: 100%;