This commit is contained in:
Seth Call 2014-11-17 17:16:30 -06:00
parent b780b4a462
commit 76adc44a50
5 changed files with 98 additions and 104 deletions

View File

@ -386,21 +386,15 @@ module JamRuby
# new_modes should be a regular hash with non-symbolized keys (vs symbolized keys)
def mod_merge(new_mods)
self.mods = (mods_json.merge(new_mods) do |key, old_val, new_val|
<<<<<<< HEAD
if key == "no_show"
# we take the values from previous no_shows, and merge it with the new no_shows
=======
if key == MOD_NO_SHOW || key == MOD_GEAR
# we take the values from previous hash, and merge it with the new hash
>>>>>>> develop
old_val.merge(new_val)
else
raise "unknown in mode_merge key: #{key}"
end
end).to_json
@mods_json = nil # invalidate this since we've updated self.mods
<<<<<<< HEAD
=======
end
# any mod with the value 'null' will be deleted
@ -431,7 +425,6 @@ module JamRuby
def get_no_show_mod(sub_key)
get_mod(MOD_NO_SHOW, sub_key)
>>>>>>> develop
end
def heartbeat_interval_client

View File

@ -392,7 +392,7 @@
logger.debug("Fake JamClient: SessionAudioResync()");
}
function SessionGetControlState(mixerIds) {
function SessionGetControlState(mixerIds, isMasterOrPersonal) {
dbg("SessionGetControlState");
var groups = [0, 1, 2, 3, 7, 9];
var names = [
@ -473,8 +473,8 @@
dbg('SessionSetConnectionStatusRefreshRate: ' + milliseconds);
}
function SessionSetControlState(stringValue) {
dbg('SessionSetControlState: ' + stringValue);
function SessionSetControlState(stringValue, isMasterOrPersonal) {
dbg('SessionSetControlState: ' + stringValue + " m/p=" + isMasterOrPersonal);
}
function SessionSetRecordingFilename(filename) {}
function SessionSetRecordingFolder(folderName) {}

View File

@ -16,7 +16,8 @@
var sessionId;
var tracks = {};
var myTracks = [];
var mixers = [];
var masterMixers = [];
var personalMixers = [];
var configureTrackDialog;
var addNewGearDialog;
var localRecordingsDialog = null;
@ -453,8 +454,9 @@
* you must iterate. Convenience method to locate a particular
* mixer by id.
*/
function getMixer(mixerId) {
function getMixer(mixerId, mixMode) {
var foundMixer = null;
var mixers = mixMode == MIX_MODES.MASTER ? masterMixers : personalMixers;
$.each(mixers, function(index, mixer) {
if (mixer.id === mixerId) {
foundMixer = mixer;
@ -492,26 +494,17 @@
// Get the latest list of underlying audio mixer channels
function _updateMixers() {
var mixerIds = context.jamClient.SessionGetIDs();
var holder = $.extend(true, {}, {mixers: context.jamClient.SessionGetControlState(mixerIds)});
mixers = holder.mixers;
// grab the first mixer, and check the mode
var newMixerMode;;
if(mixers.length > 0) {
newMixerMode = mixers[0]["mode"]
if(newMixerMode === undefined) {
logger.error("mixer mode not present. defaulting to personal")
newMixerMode = MIX_MODES.PERSONAL;
}
}
else {
logger.error("no mixers present. defaulting mixer mode to personal")
newMixerMode = MIX_MODES.PERSONAL;
}
masterMixers = context.jamClient.SessionGetAllControlState(true);
//var holder = $.extend(true, {}, {mixers: context.jamClient.SessionGetControlState(masterMixerIds, true)});
//masterMixers = masterMixerIds.mixers;
sessionModel.setMixerMode(newMixerMode)
personalMixers = context.jamClient.SessionGetAllControlState(false);
//holder = $.extend(true, {}, {mixers: context.jamClient.SessionGetControlState(personalMixerIds, false)});
//personalMixers = personalMixerIds.mixers;
console.log("masterMixers", masterMixers)
console.log("personalMixers", personalMixers)
// Always add a hard-coded simplified 'mixer' for the L2M mix
/**
@ -524,31 +517,21 @@
mixers.push(l2m_mixer);*/
}
function _mixersForGroupId(groupId) {
function _mixersForGroupId(groupId, mixMode) {
var foundMixers = [];
var mixers = mixMode == MIX_MODES.MASTER ? masterMixers : personalMixers;
$.each(mixers, function(index, mixer) {
if (mixer.group_id === groupId) {
if ( mixer.group_id === groupId) {
foundMixers.push(mixer);
}
});
return foundMixers;
}
function _userMusicInputMixerForClientId(clientId) {
var found = null;
$.each(mixers, function(index, mixer) {
if (mixer.group_id === ChannelGroupIds.UserMusicInputGroup && mixer.client_id == clientId) {
found = mixer;
return false;
}
});
return found;
}
function _clientIdForUserInputMixer(mixerId) {
function _clientIdForUserInputMixer(mixerId, mixMode) {
var found = null;
var mixers = mixMode == MIX_MODES.MASTER ? masterMixers : personalMixers;
$.each(mixers, function(index, mixer) {
if (mixer.group_id === ChannelGroupIds.UserMusicInputGroup && mixer.id == mixerId) {
found = mixer.client_id;
@ -578,9 +561,11 @@
return foundMixer;
}
function _groupedMixersForClientId(clientId, groupIds, usedMixers) {
function _groupedMixersForClientId(clientId, groupIds, usedMixers, mixMode) {
//logger.debug("clientId", clientId, "groupIds", groupIds, "mixers", mixers)
var foundMixers = {};
var mixers = mixMode == MIX_MODES.MASTER ? masterMixers : personalMixers;
console.log("_groupedMixersForClientId", mixers)
$.each(mixers, function(index, mixer) {
if (mixer.client_id === clientId) {
for (var i=0; i<groupIds.length; i++) {
@ -603,6 +588,7 @@
function _wireTopVolume() {
var gainPercent = 0;
var mixerIds = [];
var mixers = sessionModel.isMasterMixMode() ? masterMixers : personalMixers;
$.each(mixers, function(index, mixer) {
if (sessionModel.isMasterMixMode() && mixer.group_id === ChannelGroupIds.MasterGroup) {
mixerIds.push(mixer.id);
@ -615,6 +601,11 @@
mixer.range_low, mixer.range_high, mixer.volume_left);
}
});
if(mixerIds.length == 0) {
logger.debug("did not find master/monitor volume", mixers)
}
var faderId = mixerIds.join(',');
var $volume = $('#volume');
$volume.attr('mixer-id', faderId);
@ -683,6 +674,7 @@
// If, and only if, there is a mixer in group 3 (voice chat)
// Add the voice chat controls below my tracks, and hook up the mixer.
// Assumption is that there is only ever one, so we just take the first one.
var mixers = sessionModel.isMasterMixMode() ? masterMixers : personalMixers;
$.each(mixers, function(index, mixer) {
if (mixer.group_id === ChannelGroupIds.AudioInputChatGroup) {
var $voiceChat = $('#voice-chat');
@ -709,9 +701,9 @@
}
function _renderLocalMediaTracks() {
var localMediaMixers = _mixersForGroupId(ChannelGroupIds.MediaTrackGroup);
var localMediaMixers = _mixersForGroupId(ChannelGroupIds.MediaTrackGroup, sessionModel.getMixMode());
if(localMediaMixers.length == 0) {
localMediaMixers = _mixersForGroupId(ChannelGroupIds.PeerMediaTrackGroup);
localMediaMixers = _mixersForGroupId(ChannelGroupIds.PeerMediaTrackGroup, sessionModel.getMixMode());
}
var recordedTracks = sessionModel.recordedTracks();
@ -882,28 +874,41 @@
// identify by track id or something similar.
var mixers = _groupedMixersForClientId(
participant.client_id,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.PeerAudioInputMusicGroup,
ChannelGroupIds.UserMusicInputGroup
],
usedMixers);
var currentMixers = _groupedMixersForClientId(
participant.client_id,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.PeerAudioInputMusicGroup,
ChannelGroupIds.UserMusicInputGroup
],
usedMixers, sessionModel.getMixMode());
var oppositeMixers = _groupedMixersForClientId(
participant.client_id,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.PeerAudioInputMusicGroup,
ChannelGroupIds.UserMusicInputGroup
],
usedMixers, !sessionModel.getMixMode());
console.log("currentMixers", currentMixers)
console.log("oppositeMixers", oppositeMixers)
var mixer = null;
var oppositeMixer = null;
if(mixers) {
if(mixers[ChannelGroupIds.AudioInputMusicGroup]) {
mixer = mixers[ChannelGroupIds.AudioInputMusicGroup][0]
if(currentMixers) {
if(currentMixers[ChannelGroupIds.AudioInputMusicGroup]) {
mixer = currentMixers[ChannelGroupIds.AudioInputMusicGroup][0]
oppositeMixer = oppositeMixers[ChannelGroupIds.AudioInputMusicGroup][0]
}
else if(sessionModel.isMasterMixMode() && mixers[ChannelGroupIds.PeerAudioInputMusicGroup]) {
mixer = mixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
oppositeMixer = mixers[ChannelGroupIds.UserMusicInputGroup][0]
else if(sessionModel.isMasterMixMode() && currentMixers[ChannelGroupIds.PeerAudioInputMusicGroup]) {
mixer = currentMixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
oppositeMixer = oppositeMixers[ChannelGroupIds.UserMusicInputGroup][0]
}
else if(!sessionModel.isMasterMixMode() && mixers[ChannelGroupIds.UserMusicInputGroup]) {
mixer = mixers[ChannelGroupIds.UserMusicInputGroup][0]
oppositeMixer = mixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
else if(!sessionModel.isMasterMixMode() && currentMixers[ChannelGroupIds.UserMusicInputGroup]) {
mixer = currentMixers[ChannelGroupIds.UserMusicInputGroup][0]
oppositeMixer = oppositeMixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
}
}
@ -981,50 +986,39 @@
var keysToDelete = [];
for (var key in lookingForMixers) {
var clientId = lookingForMixers[key];
<<<<<<< HEAD
var mixers = _groupedMixersForClientId(
var currentMixers = _groupedMixersForClientId(
clientId,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.PeerAudioInputMusicGroup,
ChannelGroupIds.UserMusicInputGroup
],
usedMixers);
usedMixers, sessionModel.getMixMode());
var oppositeMixers = _groupedMixersForClientId(
clientId,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.PeerAudioInputMusicGroup,
ChannelGroupIds.UserMusicInputGroup
],
usedMixers, !sessionModel.getMixMode());
var mixer = null;
var oppositeMixer = null;
if(mixers) {
if(mixers[ChannelGroupIds.AudioInputMusicGroup]) {
mixer = mixers[ChannelGroupIds.AudioInputMusicGroup][0]
if(currentMixers) {
if(currentMixers[ChannelGroupIds.AudioInputMusicGroup]) {
mixer = currentMixers[ChannelGroupIds.AudioInputMusicGroup][0]
oppositeMixer = oppositeMixers[ChannelGroupIds.AudioInputMusicGroup][0]
}
else if(sessionModel.isMasterMixMode() && mixers[ChannelGroupIds.PeerAudioInputMusicGroup]) {
mixer = mixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
oppositeMixer = mixers[ChannelGroupIds.UserMusicInputGroup][0]
else if(sessionModel.isMasterMixMode() && currentMixers[ChannelGroupIds.PeerAudioInputMusicGroup]) {
mixer = currentMixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
oppositeMixer = oppositeMixers[ChannelGroupIds.UserMusicInputGroup][0]
}
else if(!sessionModel.isMasterMixMode() && mixers[ChannelGroupIds.UserMusicInputGroup]) {
mixer = mixers[ChannelGroupIds.UserMusicInputGroup][0]
oppositeMixer = mixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
else if(!sessionModel.isMasterMixMode() && currentMixers[ChannelGroupIds.UserMusicInputGroup]) {
mixer = currentMixers[ChannelGroupIds.UserMusicInputGroup][0]
oppositeMixer = oppositeMixers[ChannelGroupIds.PeerAudioInputMusicGroup][0]
}
=======
var mixer = null;
if(sessionModel.isMasterMixMode()) {
mixer = _mixerForClientId(
clientId,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.PeerAudioInputMusicGroup
],
usedMixers);
}
else {
// don't pass in used mixers; we need to associate multiple tracks with the same mixer
mixer = _mixerForClientId(
clientId,
[
ChannelGroupIds.AudioInputMusicGroup,
ChannelGroupIds.UserMusicInputGroup
],
{});
>>>>>>> develop
}
if (mixer) {
var participant = (sessionModel.getParticipant(clientId) || {name:'unknown'}).name;
@ -1082,7 +1076,7 @@
var selector;
var pureMixerId = mixerId.replace("_vul", "");
pureMixerId = pureMixerId.replace("_vur", "");
var mixer = getMixer(pureMixerId);
var mixer = getMixer(pureMixerId, sessionModel.getMixMode());
if (mixer) {
if (!(mixer.stereo)) { // mono track
if (mixerId.substr(-4) === "_vul") {
@ -1223,7 +1217,7 @@
if (value < 4) {
connectionClass = 'red';
}
var clientId = _clientIdForUserInputMixer(mixerId);
var clientId = _clientIdForUserInputMixer(mixerId, sessionModel.getMixMode());
if(clientId) {
var $connection = $('.session-track[client-id="' + clientId + '"] .track-connection');
@ -1284,7 +1278,7 @@
function _toggleAudioMute(mixerId, muting) {
fillTrackVolumeObject(mixerId);
context.trackVolumeObject.mute = muting;
context.jamClient.SessionSetControlState(mixerId);
context.jamClient.SessionSetControlState(mixerId, sessionModel.getMixerMode());
}
function showMuteDropdowns($control) {
@ -1400,7 +1394,7 @@
context.jamClient.SessionSetMasterLocalMix(dbValue);
// context.jamClient.SessionSetMasterLocalMix(sliderValue);
} else {
context.jamClient.SessionSetControlState(mixerId);
context.jamClient.SessionSetControlState(mixerId, sessionModel.getMixerMode());
}
}

View File

@ -506,6 +506,10 @@
return mixerMode == MIX_MODES.MASTER;
}
function getMixMode() {
return mixerMode;
}
function onWebsocketDisconnected(in_error) {
// kill the streaming of the session immediately
if(currentSessionId) {
@ -664,6 +668,7 @@
this.inSession = inSession;
this.setMixerMode = setMixerMode;
this.isMasterMixMode = isMasterMixMode;
this.getMixMode = getMixMode;
// ALERT HANDLERS
this.onBackendMixerChanged = onBackendMixerChanged;

View File

@ -16,8 +16,9 @@
getTracks: function(jamClient, groupId) {
var tracks = [];
var trackIds = jamClient.SessionGetIDs();
var allTracks = jamClient.SessionGetControlState(trackIds);
var allTracks = context.jamClient.SessionGetAllControlState(true);
//var trackIds = jamClient.SessionGetIDs();
//var allTracks = jamClient.SessionGetControlState(trackIds, true);
// get client's tracks
for (var i=0; i < allTracks.length; i++) {
@ -41,6 +42,7 @@
localMusicTracks = context.JK.TrackHelpers.getTracks(jamClient, 2);
console.log("getUserTracks", localMusicTracks)
var trackObjects = [];
for (i=0; i < localMusicTracks.length; i++) {