From 04fb3844ff60d06a096c08b373a40dcbb59bc596 Mon Sep 17 00:00:00 2001 From: Jonathon Wilson Date: Thu, 31 Jan 2013 09:32:32 -0700 Subject: [PATCH] Mute button works. Better ties to music hardware (less hard-coding) --- app/assets/images/content/icon_mute.png | Bin 1442 -> 1035 bytes app/assets/javascripts/fakeJamClient.js | 17 ++-- app/assets/javascripts/session.js | 78 +++++++++++++++--- .../stylesheets/client/session.css.scss | 12 +++ app/views/clients/_session.html.erb | 17 ++-- 5 files changed, 97 insertions(+), 27 deletions(-) diff --git a/app/assets/images/content/icon_mute.png b/app/assets/images/content/icon_mute.png index 3796133031e37ea132ed7bff920b470aa5dfeacf..a14155706d6006cff82ab59566dcd27f8b43f766 100644 GIT binary patch literal 1035 zcmV+m1oZofP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*Z5 z4+|)YbNwU$00WCjL_t(Y$E}r5NK{)K$G_)zoqM}AF}&wuYD|ZjCcMK*BN}uOmAH7T zaiwH$(Z&{!5K>S?Ca@HR$e_Z7E<|z>wg}6fFfNoQBu@#7N2kD^Ah{Vt(!@tSow;*b zbnbASZ2r{`elX|$=6ufg{(k58yG6*shKGk$zu$jsadGh@eu71#QPnVvW3#ifS$RsP zU~6kD_51y20)fCix7+<;Wo0EiIXNi`71rP1PlLhW8OGSX($dloOG``Pv9U2xkig#F zUTEeSLk@G|hsuHZn5et*)+)7>03$Qi@nCHkwEzkaq@KT3Vd7wY68v z%ge88ns&$*qLk9Sh4u9GIP2@{uLc5v>$Bc#C$)8({F~K=k02~6a6AT95*k1|&lF6i%vVD0%h{FK>2XG0%pY|9n@Jd|( zunFLtT;G;!7a;_e3n6mKy4<%*2zd!0CTyGb6=)rh{>)}i0XzrrfOCEvKr4VQ##n4W z4yE*)?AdvyX|4z%=H+s7PX^=hII_7A0*OQ-RVv1q01yUH4&Yw^?*ZHbfZg5Qte#9J z5s$}Hyq%pL3gD9zezTwwo2I#^T#T`g03KN*Q;JTNHIrLBOP~PF-a}wxqI8annWN(!704~bxO>oY2#@J_7RdeF0stQH_@uzHvo45gc)O>0h|U91K|J8 z7|F&vP6%nRO^9LH(NLn%=qVXUmXwr)7-M%dO><>Bh%xpAz!TejdgwvQdA;5)P1CaR9?MF6zl;0&`ZmMi@Qt~-xs$7_s}Jqv$#LkWf7>?=!?-au zHFa`%dHJE$x%=@5A%EmNX4=}?-p$X?UtU;PIJ>pA^;T8YU+i6+uQfC@yqlh$zC1HC zb9Q56e#Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?@QuLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ@J&q4%mWE% zf_3=%T6yLbmn7yTr+T{BDgn*V%gju%GIDk?bar$#GQdGl)fawRsgeP1e2cGm(^ML8S2$-<7nchk=FffUDx;TbZ z+?q0Fe|A)$$npO3?fX}J(BTl1ZMo)X7~vf?eS(OLRqB+yxn0iFQVKXvUNCKOxK*!^ zqG>TxiI2~zy+nv};kJy|7ySH8UnQ*hwdKC@_i5stmHP2N9_)U9xBA`pIo0d7#pt=~ z^dEQ5+diAEnek?h*(HVNL}yehDm zV_z_9j?#xTqnT?xR5tY+*%+J&wb+p9utYeyc*dH;zBUs*YCcr$b$mI)e3JC18zu>6 zv;V5G7a1iGb!}?b1eRgsMYcJTQtXM2vBUakeRjzLH^jd?M-!D-MvC=(k=YKdH zNH(2+-hS$Ja{&&U_Pzq=Ek}>V-FV@nP^zdPD*kVhxTOqVmWfpS>#tRcbN%w$4?m2Z ze){QxYA?a>(>GMytIp_OowV`Cx)80kTcXzXADg`O(wFUKX1m{(?Y2Ml^wVswrJJt3 zEZLWQxV>!m-972k-?41}G5Ny7PuxxWKK%ac7{e6Y{hvjG!D8~&JXbDdMo_8g>FVdQ I&MBb@0GAyc2><{9 diff --git a/app/assets/javascripts/fakeJamClient.js b/app/assets/javascripts/fakeJamClient.js index 0ad7934d2..fd3ab5171 100644 --- a/app/assets/javascripts/fakeJamClient.js +++ b/app/assets/javascripts/fakeJamClient.js @@ -79,7 +79,8 @@ function SessionGetControlState(mixerIds) { var response = []; for (var i=0; i 10 || vuValue < -70) { vuChange = vuChange * -1; } } diff --git a/app/assets/javascripts/session.js b/app/assets/javascripts/session.js index 63ca82f23..d627f6b44 100644 --- a/app/assets/javascripts/session.js +++ b/app/assets/javascripts/session.js @@ -92,26 +92,36 @@ // Get the latest list of underlying audio mixer channels function _updateMixers() { - mixers = context.jamClient.SessionGetIDs(); + var mixerIds = context.jamClient.SessionGetIDs(); + mixers = context.jamClient.SessionGetControlState(mixerIds); + logger.debug("Mixers updated:"); + logger.debug(mixers); } // Given a clientId, return a dictionary of mixer ids which // correspond to that client's tracks // TODO - this is hard-coded. Need fix from Nat - function _mixersForTrack(clientId) { - return { - left: "FW AP Multi_2_10200.l", - right: "FW AP Multi_2_10200.r" - }; + function _inputMixerForClient(clientId) { + // Iterate over the mixers, but simply return the first + // mixer in the AudioInputMusicGroup + var mixer = null; + for (var i=0; i= lights) { state = 'off'; } - selector = '.session-mytracks table[mixer-id="' + mixerId + '"] td.vu' + i; + selector = '#tracks table[mixer-id="' + mixerId + '"] td.vu' + i; $light = $(selector); $light.addClass(colorClass + state); } @@ -211,11 +222,15 @@ // value is a DB value from -80 to 20. Convert to float from 0.0-1.0 vuVal = (value + 80) / 100; if (eventName === 'left_vu') { - mixerId = mixerId + ".l"; + mixerId = mixerId + "_vul"; } else { - mixerId = mixerId + ".r"; + mixerId = mixerId + "_vur"; } _updateVU(mixerId, vuVal); + } else { + // Examples of other events + // Add media file track: "add", "The_Abyss_4T", 0 + logger.debug('non-vu event: ' + eventName + ',' + mixerId + ',' + value); } } } @@ -232,8 +247,45 @@ } } + function _toggleVisualMuteControl($control, muting) { + if (muting) { + $control.removeClass('enabled'); + $control.addClass('muted'); + } else { + $control.removeClass('muted'); + $control.addClass('enabled'); + } + } + + function _toggleAudioMute(mixerId, muting) { + // 'fill' the trackVolume object volumes from what's in the + // corresponding mixer. + var mixer = null; + for (var i=0; i +
@@ -52,15 +53,16 @@
+