@@ -26,7 +26,7 @@ angular |
||
26 | 26 |
controller: 'MainCtrl', |
27 | 27 |
controllerAs: 'main' |
28 | 28 |
}) |
29 |
- .when('/about', { |
|
29 |
+ .when('/player', { |
|
30 | 30 |
templateUrl: 'public/scripts/views/player.html', |
31 | 31 |
controller: 'PlayerCtrl', |
32 | 32 |
controllerAs: 'player' |
@@ -10,7 +10,7 @@ |
||
10 | 10 |
angular.module('infernoQuadrifonicoApp') |
11 | 11 |
.controller('MainCtrl', function ($http, $scope, $interval, $localStorage) { |
12 | 12 |
|
13 |
- var useLocalStorage = false; |
|
13 |
+ var useLocalStorage = true; |
|
14 | 14 |
var socket = io("", { query: "type=controller"}); |
15 | 15 |
$scope.playing = []; |
16 | 16 |
|
@@ -49,7 +49,7 @@ angular.module('infernoQuadrifonicoApp') |
||
49 | 49 |
$localStorage.roteiro = angular.copy($scope.roteiro); |
50 | 50 |
console.log("Autosaving...") |
51 | 51 |
//console.log($localStorage); |
52 |
- }, 15000); |
|
52 |
+ }, 60000); |
|
53 | 53 |
//$interval.cancel(interval); |
54 | 54 |
}); |
55 | 55 |
|
@@ -113,9 +113,14 @@ angular.module('infernoQuadrifonicoApp') |
||
113 | 113 |
|
114 | 114 |
$scope.roteiro[i].arquivos[c].playing = true; |
115 | 115 |
var d = $scope.roteiro[i].arquivos[c].duration; |
116 |
- var s = $scope.roteiro[i].arquivos[c].seek; |
|
116 |
+ var s1 = $scope.roteiro[i].arquivos[c].channels[0].seek; |
|
117 |
+ var s2 = $scope.roteiro[i].arquivos[c].channels[1].seek; |
|
118 |
+ var volume1 = $scope.roteiro[i].arquivos[c].channels[0].volume |
|
119 |
+ var volume2 = $scope.roteiro[i].arquivos[c].channels[1].volume |
|
120 |
+ var pan1 = $scope.roteiro[i].arquivos[c].channels[0].pan |
|
121 |
+ var pan2 = $scope.roteiro[i].arquivos[c].channels[1].pan |
|
117 | 122 |
$scope.roteiro[i].arquivos[c].channels[0].seek; |
118 |
- console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | " + Math.floor((d * s)/100)); |
|
123 |
+ console.log('Playing: ' + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " ("+ volume1 + "/" + volume2 + " | " + pan1 + "/" + pan2 + ")"); |
|
119 | 124 |
sendPlayCommand($scope.roteiro[i].arquivos[c]); |
120 | 125 |
} |
121 | 126 |
} |
@@ -131,7 +136,7 @@ angular.module('infernoQuadrifonicoApp') |
||
131 | 136 |
$scope.roteiro[i].arquivos[c].playing = false; |
132 | 137 |
//$scope.roteiro[i].arquivos[c].seek = 0; |
133 | 138 |
sendStopCommand($scope.roteiro[i].arquivos[c]) |
134 |
- console.log('Finished: ' + $scope.roteiro[i].arquivos[c].id + " | " + $scope.roteiro[i].arquivos[c].playing); |
|
139 |
+ console.log('Finished: ' + $scope.roteiro[i].arquivos[c].url + " | " + $scope.roteiro[i].arquivos[c].playing); |
|
135 | 140 |
} |
136 | 141 |
} |
137 | 142 |
} |
@@ -267,6 +272,8 @@ angular.module('infernoQuadrifonicoApp') |
||
267 | 272 |
} |
268 | 273 |
delete arquivo.channels[0].pan; |
269 | 274 |
delete arquivo.channels[0].seek; |
275 |
+ delete arquivo.channels[1].pan; |
|
276 |
+ delete arquivo.channels[1].seek; |
|
270 | 277 |
socket.emit('update playback', arquivo); |
271 | 278 |
} |
272 | 279 |
} |
@@ -284,6 +291,8 @@ angular.module('infernoQuadrifonicoApp') |
||
284 | 291 |
} |
285 | 292 |
delete arquivo.channels[0].volume; |
286 | 293 |
delete arquivo.channels[0].seek; |
294 |
+ delete arquivo.channels[1].volume; |
|
295 |
+ delete arquivo.channels[1].seek; |
|
287 | 296 |
socket.emit('update playback', arquivo); |
288 | 297 |
} |
289 | 298 |
} |
@@ -10,6 +10,20 @@ |
||
10 | 10 |
angular.module('infernoQuadrifonicoApp') |
11 | 11 |
.controller('PlayerCtrl', function ($http, $scope, $interval, $localStorage) { |
12 | 12 |
|
13 |
+ var channel = 0; |
|
14 |
+ $scope.current_channel = 1; |
|
15 |
+ |
|
16 |
+ $scope.changeChannel = function() { |
|
17 |
+ if(channel == 0){ |
|
18 |
+ channel = 1; |
|
19 |
+ $scope.current_channel = 2; |
|
20 |
+ } else { |
|
21 |
+ channel = 0; |
|
22 |
+ $scope.current_channel = 1; |
|
23 |
+ } |
|
24 |
+ console.log("changing to channel " + channel); |
|
25 |
+ } |
|
26 |
+ |
|
13 | 27 |
var socket = io(); |
14 | 28 |
socket.on('play', function(arquivo){ |
15 | 29 |
console.log("Playing file: " + arquivo.url) |
@@ -52,14 +66,14 @@ angular.module('infernoQuadrifonicoApp') |
||
52 | 66 |
src: [$scope.roteiro[i].arquivos[c].url], |
53 | 67 |
autoplay: false, |
54 | 68 |
loop: $scope.roteiro[i].arquivos[c].loop, |
55 |
- volume: ($scope.roteiro[i].arquivos[c].channels[0].volume/100), |
|
56 |
- stereo: $scope.roteiro[i].arquivos[c].channels[0].pan, |
|
69 |
+ volume: ($scope.roteiro[i].arquivos[c].channels[channel].volume/100), |
|
70 |
+ stereo: $scope.roteiro[i].arquivos[c].channels[channel].pan, |
|
57 | 71 |
onend: function(id) { |
58 | 72 |
for (var i = 0; i < $scope.roteiro.length; i++) { |
59 | 73 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) { |
60 | 74 |
if($scope.roteiro[i].arquivos[c].id == id){ |
61 | 75 |
$scope.roteiro[i].arquivos[c].playing = false; |
62 |
- $scope.roteiro[i].arquivos[c].channels[0].seek = 0; |
|
76 |
+ $scope.roteiro[i].arquivos[c].channels[channel].seek = 0; |
|
63 | 77 |
console.log('Finished: ' + id + " | playing: " + $scope.roteiro[i].arquivos[c].playing); |
64 | 78 |
$scope.$apply(); |
65 | 79 |
delete $scope.roteiro[i].arquivos[c].sound; |
@@ -79,13 +93,17 @@ angular.module('infernoQuadrifonicoApp') |
||
79 | 93 |
for (var i = 0; i < $scope.roteiro.length; i++) { |
80 | 94 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) { |
81 | 95 |
if($scope.roteiro[i].arquivos[c].url == arquivo.url){ |
82 |
- $scope.roteiro[i].arquivos[c].volume = parseInt(arquivo.channels[0].volume); |
|
83 |
- $scope.roteiro[i].arquivos[c].pan = parseInt(arquivo.channels[0].pan); |
|
84 |
- $scope.roteiro[i].arquivos[c].seek = parseInt(arquivo.channels[0].seek); |
|
96 |
+ //$scope.roteiro[i].arquivos[c].volume = arquivo.channels[channel].volume; |
|
97 |
+ //$scope.roteiro[i].arquivos[c].pan = arquivo.channels[channel].pan; |
|
98 |
+ //$scope.roteiro[i].arquivos[c].seek = arquivo.channels[channel].seek; |
|
99 |
+ $scope.roteiro[i].arquivos[c].channels = arquivo.channels; |
|
85 | 100 |
console.log($scope.roteiro[i].arquivos[c]) |
101 |
+ var channels = $scope.roteiro[i].arquivos[c].channels; |
|
102 |
+ console.log("received: " + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " (" + channels[0].volume + "/" + channels[1].volume + " | " + channels[0].pan + "/" + channels[1].pan + ")") |
|
103 |
+ console.log("playing: " + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " (" + channels[channel].volume + " | " + channels[channel].pan + ")") |
|
86 | 104 |
if($scope.roteiro[i].arquivos[c].sound) { |
87 |
- $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[0].volume/100); |
|
88 |
- $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[0].pan/100); |
|
105 |
+ $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[channel].volume/100); |
|
106 |
+ $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[channel].pan/100); |
|
89 | 107 |
$scope.roteiro[i].arquivos[c].sound.stop(); |
90 | 108 |
$scope.roteiro[i].arquivos[c].sound.play(); |
91 | 109 |
} else { |
@@ -95,15 +113,15 @@ angular.module('infernoQuadrifonicoApp') |
||
95 | 113 |
src: [$scope.roteiro[i].arquivos[c].url], |
96 | 114 |
autoplay: false, |
97 | 115 |
loop: $scope.roteiro[i].arquivos[c].loop, |
98 |
- volume: ($scope.roteiro[i].arquivos[c].channels[0].volume/100), |
|
99 |
- stereo: $scope.roteiro[i].arquivos[c].channels[0].pan, |
|
116 |
+ volume: ($scope.roteiro[i].arquivos[c].channels[channel].volume/100), |
|
117 |
+ stereo: $scope.roteiro[i].arquivos[c].channels[channel].pan, |
|
100 | 118 |
onend: function(id) { |
101 | 119 |
for (var i = 0; i < $scope.roteiro.length; i++) { |
102 | 120 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) { |
103 | 121 |
if($scope.roteiro[i].arquivos[c].id == id){ |
104 | 122 |
$scope.roteiro[i].arquivos[c].playing = false; |
105 | 123 |
$scope.roteiro[i].arquivos[c].seek = 0; |
106 |
- console.log('Finished: ' + id + " | playing: " + $scope.roteiro[i].arquivos[c].playing); |
|
124 |
+ console.log('finished: ' + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop()); |
|
107 | 125 |
$scope.$apply(); |
108 | 126 |
delete $scope.roteiro[i].arquivos[c].sound; |
109 | 127 |
socket.emit('play ended', $scope.roteiro[i].arquivos[c]); |
@@ -119,9 +137,9 @@ angular.module('infernoQuadrifonicoApp') |
||
119 | 137 |
$scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].pan); |
120 | 138 |
$scope.roteiro[i].arquivos[c].playing = true; |
121 | 139 |
var d = $scope.roteiro[i].arquivos[c].sound.duration(); |
122 |
- var s = $scope.roteiro[i].arquivos[c].channels[0].seek; |
|
140 |
+ var s = $scope.roteiro[i].arquivos[c].channels[channel].seek; |
|
123 | 141 |
$scope.roteiro[i].arquivos[c].sound.seek((d * s)/100) |
124 |
- console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | pan: " + $scope.roteiro[i].arquivos[c].channels[0].pan + " | volume: " + $scope.roteiro[i].arquivos[c].channels[0].volume); |
|
142 |
+ //console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | pan: " + $scope.roteiro[i].arquivos[c].channels[channel].pan + " | volume: " + $scope.roteiro[i].arquivos[c].channels[channel].volume); |
|
125 | 143 |
} |
126 | 144 |
} |
127 | 145 |
} |
@@ -134,7 +152,7 @@ angular.module('infernoQuadrifonicoApp') |
||
134 | 152 |
$scope.roteiro[i].arquivos[c].sound.stop(); |
135 | 153 |
delete $scope.roteiro[i].arquivos[c].sound; |
136 | 154 |
$scope.roteiro[i].arquivos[c].playing = false; |
137 |
- $scope.roteiro[i].arquivos[c].channels[0].seek = 0; |
|
155 |
+ $scope.roteiro[i].arquivos[c].channels[channel].seek = 0; |
|
138 | 156 |
console.log('Finished: ' + $scope.roteiro[i].arquivos[c].id + " | playing: " + $scope.roteiro[i].arquivos[c].playing); |
139 | 157 |
} |
140 | 158 |
} |
@@ -145,23 +163,23 @@ angular.module('infernoQuadrifonicoApp') |
||
145 | 163 |
for (var i = 0; i < $scope.roteiro.length; i++) { |
146 | 164 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) { |
147 | 165 |
if($scope.roteiro[i].arquivos[c].url == arquivo.url){ |
148 |
- if(arquivo.channels[0].seek){ |
|
149 |
- $scope.roteiro[i].arquivos[c].channels[0].seek = arquivo.channels[0].seek; |
|
166 |
+ if(arquivo.channels[channel].seek){ |
|
167 |
+ $scope.roteiro[i].arquivos[c].channels[channel].seek = arquivo.channels[channel].seek; |
|
150 | 168 |
var d = $scope.roteiro[i].arquivos[c].sound.duration(); |
151 |
- var s = $scope.roteiro[i].arquivos[c].channels[0].seek; |
|
169 |
+ var s = $scope.roteiro[i].arquivos[c].channels[channel].seek; |
|
152 | 170 |
var v = $scope.roteiro[i].arquivos[c].sound.seek(); |
153 | 171 |
$scope.roteiro[i].arquivos[c].sound.seek(s) |
154 | 172 |
console.log("seek: " + s); |
155 | 173 |
} |
156 |
- if(arquivo.channels[0].volume){ |
|
157 |
- $scope.roteiro[i].arquivos[c].channels[0].volume = arquivo.channels[0].volume; |
|
158 |
- $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[0].volume/100); |
|
159 |
- console.log("volume: " + $scope.roteiro[i].arquivos[c].sound.volume() + " | " + $scope.roteiro[i].arquivos[c].channels[0].volume); |
|
174 |
+ if(arquivo.channels[channel].volume){ |
|
175 |
+ $scope.roteiro[i].arquivos[c].channels[channel].volume = arquivo.channels[channel].volume; |
|
176 |
+ $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[channel].volume/100); |
|
177 |
+ console.log("volume: " + $scope.roteiro[i].arquivos[c].sound.volume() + " | " + $scope.roteiro[i].arquivos[c].channels[channel].volume); |
|
160 | 178 |
} |
161 | 179 |
if(arquivo.channels[0].pan){ |
162 |
- $scope.roteiro[i].arquivos[c].channels[0].pan = arquivo.channels[0].pan; |
|
163 |
- $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[0].pan/100); |
|
164 |
- console.log("pan: " + $scope.roteiro[i].arquivos[c].sound.stereo() + " | " + $scope.roteiro[i].arquivos[c].channels[0].pan); |
|
180 |
+ $scope.roteiro[i].arquivos[c].channels[channel].pan = arquivo.channels[channel].pan; |
|
181 |
+ $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[channel].pan/100); |
|
182 |
+ console.log("pan: " + $scope.roteiro[i].arquivos[c].sound.stereo() + " | " + $scope.roteiro[i].arquivos[c].channels[channel].pan); |
|
165 | 183 |
} |
166 | 184 |
break; |
167 | 185 |
} |
@@ -1,3 +1,4 @@ |
||
1 | 1 |
<div style="margin-top: 150px; margin-left: auto; margin-right: auto; width: 400px; text-align: center;"> |
2 | 2 |
<h2>Network Audio Player</h2> |
3 |
+ <a ng-click="changeChannel()">Channel {{current_channel}}</a> |
|
3 | 4 |
</div> |
@@ -26,7 +26,7 @@ io.on('connection', function(socket){ |
||
26 | 26 |
|
27 | 27 |
socket.on('play', function(file){ |
28 | 28 |
io.emit('play', file); |
29 |
- console.log('playing file: ' + file.url + " | volume: " + file.channels[0].volume + " | pan: " + file.channels[0].pan ); |
|
29 |
+ console.log('playing: ' + file.url.split("public/audio/").pop() + " (" + file.channels[0].volume + "/" + file.channels[1].volume + " | " + file.channels[0].pan + "/" + file.channels[1].pan + ")" ); |
|
30 | 30 |
}); |
31 | 31 |
|
32 | 32 |
socket.on('stop', function(file){ |