From 55e6f371413960c22073f014b62cd5092554af89 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Mon, 17 Nov 2014 11:21:07 -0800 Subject: [PATCH] Show actual channel information --- index.html | 4 ++-- media.js | 9 ++++++++- winamp.css | 2 +- winamp.js | 26 ++++++++++++++++++++++---- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index 288de0f9..ca57898d 100755 --- a/index.html +++ b/index.html @@ -42,8 +42,8 @@
-
-
+
+
diff --git a/media.js b/media.js index 456cf7ef..881506fe 100644 --- a/media.js +++ b/media.js @@ -21,12 +21,13 @@ Media = { }, // Load from bufferArray - loadBuffer: function(buffer) { + loadBuffer: function(buffer, loadedCallback) { this.stop(); this._callbacks.waiting(); var loadAudioBuffer = function(buffer) { this._buffer = buffer; + loadedCallback(); if(this.autoPlay) { this.play(0); } @@ -53,6 +54,12 @@ Media = { percentComplete: function() { return (this.timeElapsed() / this.duration()) * 100; }, + channels: function() { + if(!this._buffer) { + return 0; + } + return this._buffer.numberOfChannels; + }, /* Actions */ previous: function() { diff --git a/winamp.css b/winamp.css index 01869730..cdce392c 100755 --- a/winamp.css +++ b/winamp.css @@ -271,7 +271,7 @@ a:focus { outline: none; } background-position: -29px 0; } .stop .media-info .mono-stereo #mono.selected { - background-position: -29px 0; + background-position: -29px -12px; } .media-info .mono-stereo #stereo { diff --git a/winamp.js b/winamp.js index 9fe177a5..1bc4d3c2 100755 --- a/winamp.js +++ b/winamp.js @@ -361,29 +361,47 @@ function Winamp () { } else { self.media.autoPlay = true; self.fileManager.bufferFromFileReference(fileReference, this._loadBuffer.bind(this)); - self._setMetaData(fileReference.name, '128', '44'); + self._setTitle(fileReference.name); } } // Used only for the initial load, since it must have a CORS header this.loadFromUrl = function(url, fileName) { this.fileManager.bufferFromUrl(url, this._loadBuffer.bind(this)); - this._setMetaData(fileName, '128', '44'); + self._setTitle(fileName); + this._setMetaData(); } this._loadBuffer = function(buffer) { // Note, this will not happen right away - this.media.loadBuffer(buffer); + this.media.loadBuffer(buffer, this._setMetaData); } - this._setMetaData = function(name, kbps, khz) { + this._setTitle = function(name) { name += ' *** '; self.font.setNodeToString(document.getElementById('song-title'), name); + } + + this._setMetaData = function() { + var kbps = "128"; + var khz = "44"; self.font.setNodeToString(document.getElementById('kbps'), kbps); self.font.setNodeToString(document.getElementById('khz'), khz); + self._setChannels(); self.updateTime(); } + this._setChannels = function() { + var channels = self.media.channels(); + document.getElementById('mono').classList.remove('selected'); + document.getElementById('stereo').classList.remove('selected'); + if(channels == 1) { + document.getElementById('mono').classList.add('selected'); + } else if(channels == 2) { + document.getElementById('stereo').classList.add('selected'); + } + } + /* Helpers */ this._timeObject = function(time) { var minutes = Math.floor(time / 60);