summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-03-24 17:08:47 -0400
committerJules Laplace <jules@okfoc.us>2015-03-24 17:08:47 -0400
commit0a67e7f8ab74f82212a123dd6c30903124c1e8df (patch)
treefa7c46742bf4be85ed0c85e3d5e68787debb7ba8
parente9aaaba09e7872fd6fd164f02ea6cc28251962b8 (diff)
sound interpolation
-rw-r--r--public/assets/javascripts/mx/primitives/mx.soundcloud.js5
-rw-r--r--public/assets/javascripts/mx/primitives/mx.video.js2
-rw-r--r--public/assets/javascripts/mx/primitives/mx.vimeo.js2
-rw-r--r--public/assets/javascripts/mx/primitives/mx.youtube.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/_scenery.js1
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/sound.js17
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/audio.js4
-rw-r--r--views/partials/scripts.ejs1
8 files changed, 31 insertions, 3 deletions
diff --git a/public/assets/javascripts/mx/primitives/mx.soundcloud.js b/public/assets/javascripts/mx/primitives/mx.soundcloud.js
index 75286d9..fecb2f4 100644
--- a/public/assets/javascripts/mx/primitives/mx.soundcloud.js
+++ b/public/assets/javascripts/mx/primitives/mx.soundcloud.js
@@ -102,6 +102,11 @@ MX.Soundcloud = MX.Object3D.extend({
setLoop: function(state){
this.media.loop = state
},
+
+ setVolume: function(n){
+ if (this.muted || ! this.player) return
+ this.player.setVolume(floor( n * 100 ))
+ },
didPlay: function(){
this.paused = false
diff --git a/public/assets/javascripts/mx/primitives/mx.video.js b/public/assets/javascripts/mx/primitives/mx.video.js
index 9138cdd..43c392a 100644
--- a/public/assets/javascripts/mx/primitives/mx.video.js
+++ b/public/assets/javascripts/mx/primitives/mx.video.js
@@ -88,7 +88,7 @@ MX.Video = MX.Object3D.extend({
},
setVolume: function(n){
- if (this.muted) return
+ if (this.muted || ! this.player) return
this.player.volume = n
},
diff --git a/public/assets/javascripts/mx/primitives/mx.vimeo.js b/public/assets/javascripts/mx/primitives/mx.vimeo.js
index bff781b..ccd0a13 100644
--- a/public/assets/javascripts/mx/primitives/mx.vimeo.js
+++ b/public/assets/javascripts/mx/primitives/mx.vimeo.js
@@ -132,7 +132,7 @@ MX.Vimeo = MX.Object3D.extend({
},
setVolume: function(n){
- if (this.muted) return
+ if (this.muted || ! this.player) return
this.player.api('setVolume', n)
},
diff --git a/public/assets/javascripts/mx/primitives/mx.youtube.js b/public/assets/javascripts/mx/primitives/mx.youtube.js
index fad66dd..e4e73d6 100644
--- a/public/assets/javascripts/mx/primitives/mx.youtube.js
+++ b/public/assets/javascripts/mx/primitives/mx.youtube.js
@@ -175,7 +175,7 @@ MX.Youtube = MX.Object3D.extend({
},
setVolume: function(n){
- if (this.muted) return
+ if (this.muted || ! this.player || ! this.player.setVolume) return
this.player.setVolume( floor(n * 100) )
},
diff --git a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
index d52fe21..18d665f 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
@@ -11,6 +11,7 @@ var Scenery = new function(){
base.init = function(){
base.resize.init()
+ base.sound.init()
}
base.add = function(opt){
diff --git a/public/assets/javascripts/rectangles/engine/scenery/sound.js b/public/assets/javascripts/rectangles/engine/scenery/sound.js
new file mode 100644
index 0000000..2f7f8de
--- /dev/null
+++ b/public/assets/javascripts/rectangles/engine/scenery/sound.js
@@ -0,0 +1,17 @@
+
+Scenery.sound = {}
+Scenery.sound.max_distance = 600
+Scenery.sound.init = function(){
+ app.tube.on("move", Scenery.sound.move)
+}
+Scenery.sound.move = function(){
+ var vals = Scenery.map(function(scenery){
+ if ((scenery.type == "video" || scenery.type == "audio") && ! scenery.muted()) {
+ //get distance from A to B
+ var distance = dist(cam.x, cam.z,
+ scenery.mx.x, scenery.mx.z)
+ var volume = 1 - (clamp( distance, 0, Scenery.sound.max_distance ) / Scenery.sound.max_distance)
+ scenery.setVolume(volume)
+ }
+ })
+}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/audio.js b/public/assets/javascripts/rectangles/engine/scenery/types/audio.js
index 82f984e..fdd221d 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/audio.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/audio.js
@@ -39,6 +39,10 @@ Scenery.types.audio = Scenery.types.base.extend(function(base){
this.dimensions.deserialize(data.dimensions)
},
+ setVolume: function(n){
+ this.mx.setVolume(n)
+ },
+
play: function(){
this.mx.play()
},
diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs
index 011644b..72aaa8c 100644
--- a/views/partials/scripts.ejs
+++ b/views/partials/scripts.ejs
@@ -65,6 +65,7 @@
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/move.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/resize.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/randomize.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/sound.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/undo.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/types/_object.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/types/audio.js"></script>