diff --git a/app/assets/javascripts/fakeJamClient.js b/app/assets/javascripts/fakeJamClient.js
index 652232ef4..c1d114e84 100644
--- a/app/assets/javascripts/fakeJamClient.js
+++ b/app/assets/javascripts/fakeJamClient.js
@@ -201,12 +201,12 @@
// But we'll just build a list of names and fake it
var devices = [
"M-Audio FW Audiophile: FW AP 1/2",
- "M-Audio FW Audiophile: FW Multi 1/2",
- "M-Audio FW Audiophile: FW SPDIF 1/2",
+ //"M-Audio FW Audiophile: FW Multi 1/2",
+ //"M-Audio FW Audiophile: FW SPDIF 1/2",
"Realtek High Definition Audio: Realtek HD Digital",
- "Realtek High Definition Audio: Realtek HD Line",
- "Realtek High Definition Audio: Realtek HD Audio Mic",
- "Realtek High Definition Audio: Realtek HD Audio Stereo",
+ // "Realtek High Definition Audio: Realtek HD Line",
+ // "Realtek High Definition Audio: Realtek HD Audio Mic",
+ // "Realtek High Definition Audio: Realtek HD Audio Stereo",
"WebCamDV WDM Audio Capture: WebCamDV Audio"
];
var suffixes = [ " - Left", " - Right", " - Left", " - Right"];
diff --git a/app/assets/javascripts/findSession.js b/app/assets/javascripts/findSession.js
index 2efb11c8e..a01dd6cdf 100644
--- a/app/assets/javascripts/findSession.js
+++ b/app/assets/javascripts/findSession.js
@@ -248,7 +248,7 @@
var template = $('#template-musician-option').html();
$.each(musicianArray, function(index, val) {
// check if this musician is already in the filter
- if ( $('#musician-list option[value=' + val.id + ']').length == 0 ) {
+ if ( $('#musician-list option[value=' + val.id + ']').length === 0 ) {
var musicianOptionHtml = context.JK.fillTemplate(template, {value: val.id, label: val.name});
$('#musician-list').append(musicianOptionHtml);
}
diff --git a/app/assets/javascripts/session.js b/app/assets/javascripts/session.js
index 4b193efc2..5772ac078 100644
--- a/app/assets/javascripts/session.js
+++ b/app/assets/javascripts/session.js
@@ -20,6 +20,12 @@
TRACK2: 2
};
+ var VOICE_CHAT = {
+ CHAT: "0",
+ SESSION: "1",
+ MIC: "2"
+ };
+
var instrument_array = [];
var instrument_map = {
@@ -60,9 +66,13 @@
var unusedChatInputChannels = [];
var usedChatInputChannels = [];
+ var removedAudioChannels = {};
+ var removedVoiceChatChannels = {};
+
var devices = [];
var originalDeviceId;
- var voiceChatDevice;
+ var originalVoiceChat;
+ var currentVoiceChat;
// TODO Consolidate dragged controls and handles
var $draggingFaderHandle = null;
@@ -155,8 +165,8 @@
});
});
- voiceChatDevice = context.jamClient.TrackGetChatUsesMusic();
- $('#voice-chat-device').val(voiceChatDevice);
+ originalVoiceChat = context.jamClient.TrackGetChatUsesMusic();
+ $('#voice-chat-device').val(originalVoiceChat);
originalDeviceId = context.jamClient.TrackGetMusicDeviceID();
}
@@ -768,41 +778,85 @@
// Track 1 Add
$('#img-track1-input-add').click(function() {
- $('#audio-inputs-unused option:selected').remove().appendTo('#track1-input');
+ // REMOVE FROM VOICE CHAT UNUSED IF NECESSARY
+ syncVoiceChatDialog();
+ $('#audio-inputs-unused > option:selected').remove().appendTo('#track1-input');
});
// Track 1 Remove
$('#img-track1-input-remove').click(function() {
- $('#track1-input option:selected').remove().appendTo('#audio-inputs-unused');
+ // ADD TO VOICE CHAT UNUSED IF NECESSARY
+ $("#track1-input > option:selected").each(function() {
+ var deviceId = this.value;
+ var description = this.text;
+ if ($('#track1-input > option[value="' + deviceId + '"]').length > 0) {
+ if (removedVoiceChatChannels[deviceId]) {
+ logger.debug("Adding " + deviceId + " to Voice Chat Unused");
+ $('#voice-inputs-unused').append('');
+ delete removedVoiceChatChannels[deviceId];
+ }
+ }
+ $(this).remove().appendTo('#audio-inputs-unused');
+ });
});
// Track 2 Add
$('#img-track2-input-add').click(function() {
- $('#audio-inputs-unused option:selected').remove().appendTo('#track2-input');
+ // REMOVE FROM VOICE CHAT UNUSED IF NECESSARY
+ syncVoiceChatDialog();
+ $('#audio-inputs-unused > option:selected').remove().appendTo('#track2-input');
});
// Track 2 Remove
$('#img-track2-input-remove').click(function() {
- $('#track2-input option:selected').remove().appendTo('#audio-inputs-unused');
+ // ADD TO VOICE CHAT UNUSED IF NECESSARY
+ $("#track2-input > option:selected").each(function() {
+ var deviceId = this.value;
+ var description = this.text;
+ if ($('#track2-input > option[value="' + deviceId + '"]').length > 0) {
+ if (removedVoiceChatChannels[deviceId]) {
+ logger.debug("Adding " + deviceId + " to Voice Chat Unused");
+ $('#voice-inputs-unused').append('');
+ delete removedVoiceChatChannels[deviceId];
+ }
+ }
+ $(this).remove().appendTo('#audio-inputs-unused');
+ });
});
// Audio Output Add
$('#img-audio-output-add').click(function() {
- $('#audio-output-unused option:selected').remove().appendTo('#audio-output-selection');
+ $('#audio-output-unused > option:selected').remove().appendTo('#audio-output-selection');
});
// Audio Output Remove
$('#img-audio-output-remove').click(function() {
- $('#audio-output-selection option:selected').remove().appendTo('#audio-output-unused');
+ $('#audio-output-selection > option:selected').remove().appendTo('#audio-output-unused');
});
// Voice Chat Add
$('#img-voice-input-add').click(function() {
- $('#voice-inputs-unused option:selected').remove().appendTo('#voice-inputs-selection');
+ // REMOVE FROM AUDIO UNUSED IF NECESSARY
+ syncMusicAudioDialog();
+ $('#voice-inputs-unused > option:selected').remove().appendTo('#voice-inputs-selection');
});
$('#img-voice-input-remove').click(function() {
- $('#voice-inputs-selection option:selected').remove().appendTo('#voice-inputs-unused');
+ // ADD TO AUDIO UNUSED IF NECESSARY
+ $("#voice-inputs-selection > option:selected").each(function() {
+ var deviceId = this.value;
+ var description = this.text;
+ if ($('#voice-inputs-selection > option[value="' + deviceId + '"]').length > 0) {
+ if (removedAudioChannels[deviceId]) {
+ logger.debug("Adding " + deviceId + " to Music Audio Unused");
+ var option = '';
+ $('#audio-inputs-unused').append(option);
+ delete removedAudioChannels[deviceId];
+ }
+ $('#voice-inputs-unused > option[value="' + deviceId + '"]').remove();
+ }
+ $(this).remove().appendTo('#voice-inputs-unused');
+ });
});
$('.voicechat-settings').click(function() {
@@ -834,6 +888,41 @@
});
}
+ function syncVoiceChatDialog() {
+ $("#audio-inputs-unused option:selected").each(function() {
+ var deviceId = this.value;
+ var description = this.text;
+
+ if ($('#voice-inputs-unused > option[value="' + deviceId + '"]').length > 0) {
+ logger.debug("Removing " + deviceId + " from Voice Chat Unused");
+
+ $('#voice-inputs-unused > option[value="' + deviceId + '"]').remove();
+ var option = '';
+ removedVoiceChatChannels[deviceId] = option;
+
+ // TODO: ADD THIS BACK WHEN APPROPRIATE
+ if ($('#voice-inputs-unused > option').size() === 0) {
+ $('#voice-chat-device > option[value="1"]').remove();
+ }
+ }
+ });
+ }
+
+ function syncMusicAudioDialog() {
+ $("#voice-inputs-unused > option:selected").each(function() {
+ var deviceId = this.value;
+ var description = this.text;
+
+ if ($('#audio-inputs-unused > option[value="' + deviceId + '"]').length > 0) {
+ logger.debug("Removing " + deviceId + " from Music Audio Unused");
+
+ $('#audio-inputs-unused > option[value="' + deviceId + '"]').remove();
+ var option = '';
+ removedAudioChannels[deviceId] = option;
+ }
+ });
+ }
+
// TODO: figure out how to handle this in layout.js for layered popups
function showOverlay() {
$('.dialog-overlay').show();
@@ -844,6 +933,13 @@
}
function audioDriverChanged() {
+ // ensure any channels removed are restored
+ var keys = Object.keys(removedVoiceChatChannels);
+ for (var i=0; i < keys.length; i++) {
+ $('#voice-inputs-unused').append(removedVoiceChatChannels[keys[i]]);
+ delete removedVoiceChatChannels[keys[i]];
+ }
+
context.jamClient.TrackSetMusicDevice($('#audio-drivers').val());
// refresh dialog
@@ -851,6 +947,13 @@
}
function voiceChatChanged() {
+ // ensure any channels removed are restored
+ var keys = Object.keys(removedAudioChannels);
+ for (var i=0; i < keys.length; i++) {
+ $('#audio-inputs-unused').append(removedAudioChannels[keys[i]]);
+ delete removedAudioChannels[keys[i]];
+ }
+
showVoiceChatPanel(true);
}
@@ -877,7 +980,7 @@
if (refreshLists) {
configureDriverSettingsButton();
-
+
$('#audio-drivers').empty();
// determine correct music device to preselect
@@ -913,6 +1016,8 @@
initDialogData();
+ // TODO: FILTER OUT ANY CHANNELS SELECTED ON THE VOICE CHAT TAB
+
// load Unused Inputs
loadOptions($('#audio-inputs-unused'), unusedAudioInputChannels, "device_id", "name", -1);
@@ -959,19 +1064,28 @@
var chatOption = $('#voice-chat-device').val();
// populate with unused session inputs
- if (chatOption === "1") {
- loadOptions($('#voice-inputs-unused'), unusedAudioInputChannels, "device_id", "name", -1);
+ var voiceChatOptions = [];
+ $.each(unusedAudioInputChannels, function(index, val) {
+ var deviceId = val.device_id;
+ if ($('#track1-input > option[value="' + deviceId + '"]').length === 0 &&
+ $('#track2-input > option[value="' + deviceId + '"]').length === 0) {
+ voiceChatOptions.push(val);
+ }
+ });
+
+ if (chatOption === VOICE_CHAT.SESSION) {
+ loadOptions($('#voice-inputs-unused'), voiceChatOptions, "device_id", "name", -1);
loadOptions($('#voice-inputs-selection'), usedChatInputChannels, "device_id", "name", -1);
}
// populate with voice devices
- else if (chatOption === "0") {
+ else if (chatOption === VOICE_CHAT.CHAT) {
loadOptions($('#voice-inputs-unused'), unusedChatInputChannels, "device_id", "name", -1);
loadOptions($('#voice-inputs-selection'), usedChatInputChannels, "device_id", "name", -1);
}
// disable inputs
- else if (chatOption === "2") {
+ else if (chatOption === VOICE_CHAT.MIC) {
}
}
@@ -1093,7 +1207,7 @@
// TRACK 1 INSTRUMENT
var instrumentVal = $('#track1-instrument').val();
- var instrumentText = $('#track1-instrument option:selected').text().toLowerCase();
+ var instrumentText = $('#track1-instrument > option:selected').text().toLowerCase();
logger.debug("Saving track 1 instrument = " + instrumentVal);
context.jamClient.TrackSetInstrument(ASSIGNMENT.TRACK1, instrumentVal);
@@ -1113,7 +1227,7 @@
// TRACK 2 INSTRUMENT
instrumentVal = $('#track2-instrument').val();
- instrumentText = $('#track2-instrument option:selected').text().toLowerCase();
+ instrumentText = $('#track2-instrument > option:selected').text().toLowerCase();
logger.debug("Saving track 2 instrument = " + instrumentVal);
context.jamClient.TrackSetInstrument(ASSIGNMENT.TRACK2, instrumentVal);
@@ -1134,10 +1248,10 @@
}
function saveVoiceChatSettings() {
- voiceChatDevice = $('#voice-chat-device').val();
+ currentVoiceChat = $('#voice-chat-device').val();
- logger.debug("Calling TrackSetChatUsesMusic with value = " + voiceChatDevice);
- context.jamClient.TrackSetChatUsesMusic(voiceChatDevice);
+ logger.debug("Calling TrackSetChatUsesMusic with value = " + currentVoiceChat);
+ context.jamClient.TrackSetChatUsesMusic(currentVoiceChat);
$("#voice-inputs-selection > option").each(function() {
logger.debug("Saving chat input = " + this.value);
@@ -1148,6 +1262,9 @@
function cancelSettings() {
// reset to original device ID
context.jamClient.TrackSetMusicDevice(originalDeviceId);
+
+ // reset voice chat option to original
+ $('#voice-chat-device').val(originalVoiceChat);
}
function validateAudioSettings() {
@@ -1159,13 +1276,13 @@
var errMsg;
// verify Track 1 Input and Instrument exist
- if ($('#track1-input option').size() === 0 || $('#track1-input option').size() > 2) {
+ if ($('#track1-input > option').size() === 0 || $('#track1-input > option').size() > 2) {
errMsg = noTrackErrMsg;
isValid = false;
}
if (isValid) {
- if ($('#track1-instrument option').size() === 0) {
+ if ($('#track1-instrument > option').size() === 0) {
errMsg = noInstrumentErrMsg;
isValid = false;
}
@@ -1173,19 +1290,19 @@
// if Track 2 exists, verify Input and Instrument exist
if (isValid && myTrackCount > 1) {
- if ($('#track2-input option').size() === 0 || $('#track2-input option').size() > 2) {
+ if ($('#track2-input > option').size() === 0 || $('#track2-input > option').size() > 2) {
errMsg = noTrackErrMsg;
isValid = false;
}
- if (isValid && $('#track2-instrument option').size() === 0) {
+ if (isValid && $('#track2-instrument > option').size() === 0) {
errMsg = noInstrumentErrMsg;
isValid = false;
}
}
// verify Session Audio Output exists
- if (isValid && $('#audio-output-selection option').size() !== 2) {
+ if (isValid && $('#audio-output-selection > option').size() !== 2) {
errMsg = outputErrMsg;
isValid = false;
}
@@ -1198,19 +1315,18 @@
}
function validateVoiceChatSettings() {
- return true;
var isValid = true;
var noTrackErrMsg = 'You must select a voice input.';
var errMsg;
- voiceChatDevice = $('#voice-chat-device').val();
- if (voiceChatDevice === "1" || voiceChatDevice === "0") {
- if ($('#voice-inputs-selection option').size() === 0 || $('#voice-inputs-selection option').size() > 2) {
+ currentVoiceChat = $('#voice-chat-device').val();
+ if (currentVoiceChat === VOICE_CHAT.SESSION || currentVoiceChat === VOICE_CHAT.CHAT) {
+ if ($('#voice-inputs-selection > option').size() === 0 || $('#voice-inputs-selection > option').size() > 2) {
errMsg = noTrackErrMsg;
isValid = false;
}
}
- else if (voiceChatDevice === "2") {
+ else if (currentVoiceChat === VOICE_CHAT.MIC) {
// NO VALIDATION NEEDED
}