VRFS-292 configure tracks dialog work

This commit is contained in:
Brian Smith 2013-05-13 18:35:14 -04:00
parent 8561c0ceca
commit afba76beaa
3 changed files with 194 additions and 98 deletions

View File

@ -72,8 +72,7 @@
}
function GetASIODevices() {
var response =[{"device_id":0,"device_name":"Realtek High Definition Audio","interfaces":[{"interface_id":0,"interface_name":"Realtek HDA SPDIF Out","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":1,"interface_name":"Realtek HD Audio rear output","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":2,"interface_name":"Realtek HD Audio Mic input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":3,"interface_name":"Realtek HD Audio Line input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":4,"interface_name":"Realtek HD Digital input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"}]},{"interface_id":5,"interface_name":"Realtek HD Audio Stereo input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]}],"wavert_supported":false},{"device_id":1,"device_name":"M-Audio FW Audiophile","interfaces":[{"interface_id":0,"interface_name":"FW AP Multi","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":1,"interface_name":"FW AP 1/2","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":2,"interface_name":"FW AP SPDIF","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":3,"interface_name":"FW AP 3/4","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":2,"device_name":"Virtual Audio Cable","interfaces":[{"interface_id":0,"interface_name":"Virtual Cable 2","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]},{"interface_id":1,"interface_name":"Virtual Cable 1","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":3,"device_name":"WebCamDV WDM Audio Capture","interfaces":[{"interface_id":0,"interface_name":"WebCamDV Audio","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"},{"is_input":false,"pin_id":1,"pin_name":"Volume Control"}]}],"wavert_supported":false}];
var response =[{"device_id":0,"device_name":"Realtek High Definition Audio","device_type": 0,"interfaces":[{"interface_id":0,"interface_name":"Realtek HDA SPDIF Out","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":1,"interface_name":"Realtek HD Audio rear output","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":2,"interface_name":"Realtek HD Audio Mic input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":3,"interface_name":"Realtek HD Audio Line input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":4,"interface_name":"Realtek HD Digital input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"}]},{"interface_id":5,"interface_name":"Realtek HD Audio Stereo input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]}],"wavert_supported":false},{"device_id":1,"device_name":"M-Audio FW Audiophile","device_type": 1,"interfaces":[{"interface_id":0,"interface_name":"FW AP Multi","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":1,"interface_name":"FW AP 1/2","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":2,"interface_name":"FW AP SPDIF","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":3,"interface_name":"FW AP 3/4","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":2,"device_name":"Virtual Audio Cable","device_type": 2,"interfaces":[{"interface_id":0,"interface_name":"Virtual Cable 2","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]},{"interface_id":1,"interface_name":"Virtual Cable 1","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":3,"device_name":"WebCamDV WDM Audio Capture","device_type": 3,"interfaces":[{"interface_id":0,"interface_name":"WebCamDV Audio","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"},{"is_input":false,"pin_id":1,"pin_name":"Volume Control"}]}],"wavert_supported":false}];
return response;
}
@ -213,6 +212,7 @@
var suffixes = [ " - Left", " - Right", " - Left", " - Right"];
var lefts = [true, false, true, false];
var inputs = [true, true, false, false];
var types = ["music", "non-music", "music", "non-music"];
var response = [];
var name, o, i, j;
for (j=0; j<4; j++) {
@ -224,7 +224,8 @@
id: name,
input: inputs[j],
left: lefts[j],
name: name
name: name,
device_type: types[j]
};
response.push(o);
}
@ -236,27 +237,40 @@
return 1; // Real version returns whatever was set
}
function TrackGetInstrument(trackNumber) {}
function TrackGetInstrument(trackNumber) {
if (trackNumber === 1) {
return 0;
}
else {
return 1;
}
}
function TrackGetDevices() {
var response =[{"device_id":0,"device_name":"Realtek High Definition Audio","interfaces":[{"interface_id":0,"interface_name":"Realtek HDA SPDIF Out","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":1,"interface_name":"Realtek HD Audio rear output","pins":[{"is_input":false,"pin_id":0,"pin_name":"PC Speaker"}]},{"interface_id":2,"interface_name":"Realtek HD Audio Mic input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":3,"interface_name":"Realtek HD Audio Line input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]},{"interface_id":4,"interface_name":"Realtek HD Digital input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"}]},{"interface_id":5,"interface_name":"Realtek HD Audio Stereo input","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"}]}],"wavert_supported":false},{"device_id":1,"device_name":"M-Audio FW Audiophile","interfaces":[{"interface_id":0,"interface_name":"FW AP Multi","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":1,"interface_name":"FW AP 1/2","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":2,"interface_name":"FW AP SPDIF","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"},{"is_input":true,"pin_id":1,"pin_name":"Input"}]},{"interface_id":3,"interface_name":"FW AP 3/4","pins":[{"is_input":false,"pin_id":0,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":2,"device_name":"Virtual Audio Cable","interfaces":[{"interface_id":0,"interface_name":"Virtual Cable 2","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]},{"interface_id":1,"interface_name":"Virtual Cable 1","pins":[{"is_input":true,"pin_id":0,"pin_name":"Capture"},{"is_input":false,"pin_id":1,"pin_name":"Output"}]}],"wavert_supported":false},{"device_id":3,"device_name":"WebCamDV WDM Audio Capture","interfaces":[{"interface_id":0,"interface_name":"WebCamDV Audio","pins":[{"is_input":true,"pin_id":0,"pin_name":"Recording Control"},{"is_input":false,"pin_id":1,"pin_name":"Volume Control"}]}],"wavert_supported":false}];
var response = {"Built-in":"Built-in", "ASIO4ALL v2":"ASIO4ALL v2 - ASIO", "BEHRINGER USB AUDIO":"BEHRINGER USB AUDIO - ASIO", "{2B7D1F21-FA6E-11D4-0002-DDCA793267F2}":"SoundMAX HD Audio O - WDM", "{ABCC5A6C-C263-463B-A72F-A5BF64C86EBA}":"Generic USB Audio Device - WDM"};
return response;
}
function TrackGetMusicDeviceID() {
return "ASIO4ALL v2";
}
function TrackSetMusicDevice(id) {
device_id = id;
}
// mock response of this method by allowing only even device IDs to open control panel
function TrackHasControlPanel() {
var devices = TrackGetDevices();
if (devices[device_id].device_id % 2 === 0) {
return true;
}
else {
return false;
}
return true;
}
function TrackIsMusicDeviceType(type) {
return true;
}
function TrackGetChatUsesMusic() {
return true;
}
function TrackOpenControlPanel() {
@ -271,6 +285,7 @@
// assignment is an enum:
// CHAT = -2, OUTPUT = -1, UNASSIGNED = 0
function TrackSetAssignment(chanId, isInput, assignment) {}
// Get a Track Assignment.
function TrackGetAssignment(chanId, isInput) {
// CHAT = -2, OUTPUT = -1, UNASSIGNED = 0
@ -370,9 +385,13 @@
this.TrackGetInstrument = TrackGetInstrument;
this.TrackGetDevices = TrackGetDevices;
this.TrackGetMusicDeviceID = TrackGetMusicDeviceID;
this.TrackSetMusicDevice = TrackSetMusicDevice;
this.TrackHasControlPanel = TrackHasControlPanel;
this.TrackOpenControlPanel = TrackOpenControlPanel;
this.TrackIsMusicDeviceType = TrackIsMusicDeviceType;
this.TrackGetChatUsesMusic = TrackGetChatUsesMusic;
// Client Update
this.ClientUpdateVersion = ClientUpdateVersion;

View File

@ -11,6 +11,19 @@
var mixers = [];
var myTrackCount = 0;
// dialog variables
var unusedAudioInputChannels = [];
var track1AudioInputChannels = [];
var track2AudioInputChannels = [];
var unusedAudioOutputChannels = [];
var usedAudioOutputChannels = [];
var usedChatInputChannels = [];
var devices = [];
var original_device_id;
// TODO Consolidate dragged controls and handles
var $draggingFaderHandle = null;
var $draggingFader = null;
@ -680,18 +693,18 @@
$('#tab-configure-audio').click(function() {
// validate voice chat settings
if (validateVoiceChatSettings()) {
//if (validateVoiceChatSettings()) {
setAudioInstructions();
initMusicAudioPanel();
}
//}
});
$('#tab-configure-voice').click(function() {
// validate audio settings
if (validateAudioSettings()) {
//if (validateAudioSettings()) {
initVoiceChatPanel();
$('#instructions', 'div[layout-id="configure-audio"]').html(configure_voice_instructions);
}
//}
});
// Track 1 Add
@ -728,31 +741,39 @@
initVoiceChatPanel();
});
$('#audio-drivers').change(function() {
audioDriverChanged();
});
$('#btn-driver-settings').click(function() {
context.jamClient.TrackSetMusicDevice($('#audio-drivers').val());
if (context.jamClient.TrackHasControlPanel()) {
logger.debug("Opening control panel");
context.jamClient.TrackOpenControlPanel();
}
logger.debug("Opening control panel...");
context.jamClient.TrackOpenControlPanel();
});
$('#btn-save-settings').click(function() {
if (!validateAudioSettings()) {
return false;
}
$('#btn-save-settings').click(saveSettings);
if (!validateVoiceChatSettings()) {
}
});
$('#btn-cancel-settings').click(cancelSettings);
$('#btn-leave-session-test').click(function() {
$('div[layout-id="configure-audio"]').hide();
});
}
function audioDriverChanged() {
context.jamClient.TrackSetMusicDevice($('#audio-drivers').val());
if (context.jamClient.TrackHasControlPanel()) {
logger.debug("Showing DRIVER SETTINGS button...");
$('#btn-driver-settings').show();
}
else {
logger.debug("Hiding DRIVER SETTINGS button...");
$('#btn-driver-settings').hide();
}
}
function initMusicAudioPanel() {
$('div[tab-id="music-audio"]').show();
$('div[tab-id="voice-chat"]').hide();
@ -761,73 +782,28 @@
$('#audio-drivers').empty();
// TODO: add logic for Audio Driver dropdown change event
// determine correct music device to preselect
var original_device_id = context.jamClient.TrackGetMusicDeviceID();
var current_device_id = original_device_id;
// load Audio Driver dropdown (TODO: determine correct preselected option)
var devices = context.jamClient.TrackGetDevices();
loadOptions($('#audio-drivers'), devices, "device_id", "device_name", 0);
// load Audio Driver dropdown
devices = context.jamClient.TrackGetDevices();
var keys = Object.keys(devices);
// get data needed for listboxes
var channels = context.jamClient.TrackGetChannels();
var unusedAudioInputChannels = [];
var track1AudioInputChannels = [];
var track2AudioInputChannels = [];
var unusedAudioOutputChannels = [];
var usedAudioOutputChannels = [];
var usedChatInputChannels = [];
/* -2 = chat
-1 = speakers
0 = unassigned
>0 = the music input track number */
$.each(channels, function(index, val) {
var assignment = context.jamClient.TrackGetAssignment(val.input, val.id);
logger.debug("channel id=" + val.id + ", channel input=" + val.input + ", channel assignment=" + assignment + ", channel name=" + val.name);
// INPUT
if (val.input) {
if (assignment === -2) {
usedChatInputChannels.push(val);
}
else if (assignment === 0) {
unusedAudioInputChannels.push(val);
}
else if (assignment === -1) {
}
else {
if (assignment === 1) {
track1AudioInputChannels.push(val);
}
else {
track2AudioInputChannels.push(val);
}
}
for (var i=0; i < keys.length; i++) {
var template = $('#template-option').html();
var isSelected = "";
if (keys[i] === current_device_id) {
isSelected = "selected";
}
var html = context.JK.fillTemplate(template, {
value: keys[i],
label: devices[keys[i]],
selected: isSelected
});
// OUTPUT
else {
if (assignment === -2) {
usedChatInputChannels.push(val);
}
else if (assignment === 0) {
unusedAudioOutputChannels.push(val);
}
else if (assignment === -1) {
}
else {
usedAudioOutputChannels.push(val);
}
}
});
$('#audio-drivers').append(html);
}
$('#audio-inputs-unused').empty();
$('#track1-input').empty();
@ -837,6 +813,8 @@
$('#audio-output-unused').empty();
$('#audio-output-selection').empty();
initDialogData();
// load Unused Inputs
loadOptions($('#audio-inputs-unused'), unusedAudioInputChannels, "device_id", "name", -1);
@ -844,7 +822,9 @@
loadOptions($('#track1-input'), track1AudioInputChannels, "device_id", "name", -1);
// load Track 1 Instrument
var instrument = context.jamClient.TrackGetInstrument(1);
// TODO: use map of integer to instrument to get appropriate instrument
//loadOptions($('#track1-instrument', [instrument], "", "", -1));
// load Track 2 config details if necessary
if (myTrackCount > 1) {
@ -852,6 +832,9 @@
loadOptions($('#track2-input'), track2AudioInputChannels, "device_id", "name", -1);
// load Track 2 Instrument
instrument = context.jamClient.TrackGetInstrument(2);
// TODO: use map of integer to instrument to get appropriate instrument
// loadOptions($('#track1-instrument', [instrument], "", "", -1));
}
// load Unused Outputs
@ -873,7 +856,75 @@
$('#voice-inputs-unused').empty();
$('#voice-inputs-selection').empty();
initDialogData();
// load Voice Chat Input
loadOptions($('#voice-inputs-unused'), unusedAudioInputChannels, "device_id", "name", -1);
loadOptions($('#voice-inputs-selection'), usedChatInputChannels, "device_id", "name", -1);
}
function initDialogData() {
// clear out arrays
unusedAudioInputChannels = [];
track1AudioInputChannels = [];
track2AudioInputChannels = [];
unusedAudioOutputChannels = [];
usedAudioOutputChannels = [];
usedChatInputChannels = [];
// get data needed for listboxes
var channels = context.jamClient.TrackGetChannels();
/* -2 = chat
-1 = speakers
0 = unassigned
>0 = the music input track number */
$.each(channels, function(index, val) {
var assignment = context.jamClient.TrackGetAssignment(val.id, val.input);
logger.debug("channel id=" + val.id + ", channel input=" + val.input + ", channel assignment=" + assignment +
", channel name=" + val.name + ", channel type=" + val.device_type);
// INPUT
if (context.jamClient.TrackIsMusicDeviceType(val.device_type)) {
if (val.input) {
if (assignment === -2) {
usedChatInputChannels.push(val);
}
else if (assignment === 0) {
unusedAudioInputChannels.push(val);
}
else if (assignment === -1) {
}
else {
if (assignment === 1) {
track1AudioInputChannels.push(val);
}
else {
track2AudioInputChannels.push(val);
}
}
}
// OUTPUT
else {
if (assignment === -2) {
}
else if (assignment === 0) {
unusedAudioOutputChannels.push(val);
}
else if (assignment === -1) {
}
else {
usedAudioOutputChannels.push(val);
}
}
}
});
}
function loadOptions(listbox_id, input_array, id_field, text_field, selected_id) {
@ -893,7 +944,33 @@
});
}
function saveSettings() {
if (!validateAudioSettings()) {
return false;
}
if (!validateVoiceChatSettings()) {
return false;
}
// TrackSetAssignment(const QString& id, bool input, int assignment)
// TrackSetInstrument(int track, int instrument_id)
// TrackSaveAssignments()
// update jam-db with settings
// TODO: reload / refresh Session screen (instrument icons at minimum)
}
function cancelSettings() {
// reset to original device ID
context.jamClient.TrackSetMusicDevice(original_device_id);
}
function validateAudioSettings() {
// verify Track 1 Input and Instrument exist
// verify Session Audio Output exists
return true;
}

View File

@ -261,8 +261,8 @@
</div>
<br clear="left" /><br />
<div class="right mr30">
<a layout-action="close" class="button-grey">CANCEL</a>&nbsp;
<a id="btn-save-settings" class="button-orange">UPDATE SETTINGS</a>
<a id="btn-cancel-settings" layout-action="close" class="button-grey">CANCEL</a>&nbsp;
<a id="btn-save-settings" layout-action="close" class="button-orange">UPDATE SETTINGS</a>
</div>
<br clear="all" />
</div>
@ -331,7 +331,7 @@
<br clear="left" /><br />
<div class="right">
<a layout-action="close" class="button-grey">CANCEL</a>&nbsp;
<a id="btn-leave-session-test" layout-action="close" href="#/home" class="button-orange">LEAVE SESSION &amp; START TEST</a>
<a id="btn-leave-session-test" layout-action="close" href="#/ftue1" class="button-orange">LEAVE SESSION &amp; START TEST</a>
</div>
<br clear="all" />
</div>