FTUE: Wire up new ASIO controls

This commit is contained in:
Jonathon Wilson 2013-06-01 18:12:54 -06:00
parent c83154eb74
commit b4eb54fe41
4 changed files with 94 additions and 14 deletions

View File

@ -31,14 +31,14 @@
return 2;
}
function FTUESetInputLatency(latency) {
dbg("FTUESetInputLatency");
dbg("FTUESetInputLatency:" + latency);
}
function FTUEGetOutputLatency() {
dbg("FTUEGetOutputLatency");
return 2;
}
function FTUESetOutputLatency(latency) {
dbg("FTUESetOutputLatency");
dbg("FTUESetOutputLatency:" + latency);
}
function FTUEGetVolumeRanges () {
dbg("FTUEGetVolumeRanges");
@ -58,7 +58,7 @@
return frameSize;
}
function FTUESetFrameSize(newSize) {
dbg("FTUESetFrameSize");
dbg("FTUESetFrameSize:" + newSize);
// one of 2.5, 5 or 10
frameSize = newSize;
}
@ -175,6 +175,7 @@
// Session Functions
function SessionAddTrack() {}
function SessionGetControlState(mixerIds) {
dbg("SessionGetControlState")
var groups = [0, 1, 2, 3, 7, 9];
var names = [
"FW AP Multi",
@ -230,7 +231,9 @@
callbackTimer = context.setInterval(doCallbacks, eventCallbackRate);
}
}
function SessionSetControlState(stringValue) {}
function SessionSetControlState(stringValue) {
dbg('SessionSetControlState: ' + stringValue);
}
function SessionSetRecordingFilename(filename) {}
function SessionSetRecordingFolder(folderName) {}
function SessionStartPlay() {}

View File

@ -74,6 +74,16 @@
function settingsInit() {
context.jamClient.FTUEInit();
// Set all mixer levels to -80
// Using the Session* apis to do so.
var trackIds = jamClient.SessionGetIDs();
var controlStates = jamClient.SessionGetControlState(trackIds);
$.each(controlStates, function(index, value) {
context.JK.Mixer.fillTrackVolume(value, false);
context.trackVolumeObject.volL = -80;
context.trackVolumeObject.volR = -80;
context.jamClient.SessionSetControlState(trackIds[index]);
});
}
function updateGauge() {
@ -115,10 +125,31 @@
context.jamClient.FTUEOpenControlPanel();
}
function asioResync(evt) {
context.jamClient.FTUESave();
}
function setAsioFrameSize(evt) {
var val = $(evt.currentTarget).val();
context.jamClient.FTUESetFrameSize(val);
}
function setAsioInputLatency(evt) {
var val = $(evt.currentTarget).val();
context.jamClient.FTUESetInputLatency(val);
}
function setAsioOutputLatency(evt) {
var val = $(evt.currentTarget).val();
context.jamClient.FTUESetOutputLatency(val);
}
function events() {
$('[layout-wizard-step="2"] .settings-driver select').on('change', audioDriverChanged);
$('[layout-wizard-step="2"] .settings-controls select').on('change', audioDeviceChanged);
$('#btn-asio-control-panel').on('click', openASIOControlPanel);
$('#btn-asio-resync').on('click', asioResync);
$('#asio-framesize').on('change', setAsioFrameSize);
$('#asio-input-latency').on('change', setAsioInputLatency);
$('#asio-output-latency').on('change', setAsioOutputLatency);
}
/**
@ -150,6 +181,11 @@
context._.each(sortedDeviceKeys, deviceOptionFunc);
$select.html(optionsHtml);
$select.removeAttr("disabled");
$('[layout-wizard-step="2"] .settings-asio select').removeAttr("disabled");
// Set selects to lowest possible values to start:
$('#asio-framesize').val('2.5').change();
$('#asio-input-latency').val('120').change();
$('#asio-output-latency').val('120').change();
}
}

View File

@ -0,0 +1,41 @@
/**
* Static functions for controlling underlying jamClient mixer
* functions.
*/
(function(context, $) {
/**
* We'll want to move control over mixer functions out of the session.js
* file and into here, as it is becoming apparent we'll need better
* audio control globally.
*/
"use strict";
context.JK = context.JK || {};
context.JK.Mixer = {
/**
* Fill the track volume object, given a controlState structure.
* Provide a boolean for broadcast indicating whether the change
* should go out over the network
*/
fillTrackVolume: function(controlState, broadcast) {
context.trackVolumeObject.clientID = controlState.client_id;
context.trackVolumeObject.broadcast = broadcast;
context.trackVolumeObject.master = controlState.master;
context.trackVolumeObject.monitor = controlState.monitor;
context.trackVolumeObject.mute = controlState.mute;
context.trackVolumeObject.name = controlState.name;
context.trackVolumeObject.record = controlState.record;
context.trackVolumeObject.volL = controlState.volume_left;
context.trackVolumeObject.volR = controlState.volume_right;
// trackVolumeObject doesn't have a place for range min/max
//currentMixerRangeMin = mixer.range_low;
//currentMixerRangeMax = mixer.range_high;
}
};
})(window, jQuery);

View File

@ -63,7 +63,7 @@
<div class="column settings-asio">
<div class="subcolumn first">
Frame:<br />
<select disabled="disabled">
<select disabled="disabled" id="asio-framesize">
<option value=""></option>
<option value="2.5">2.5</option>
<option value="5">5</option>
@ -72,27 +72,27 @@
</div>
<div class="subcolumn second">
Buffer/In:<br />
<select disabled="disabled">
<select disabled="disabled" id="asio-input-latency">
<option value=""></option>
<option value="100">120</option>
<option value="100">240</option>
<option value="100">480</option>
<option value="120">120</option>
<option value="240">240</option>
<option value="480">480</option>
</select>
</div>
<div class="subcolumn third">
Buffer/Out:<br />
<select disabled="disabled">
<select disabled="disabled" id="asio-output-latency">
<option value=""></option>
<option value="100">120</option>
<option value="100">240</option>
<option value="100">480</option>
<option value="120">120</option>
<option value="240">240</option>
<option value="480">480</option>
</select>
</div>
</div>
<div class="column settings-asio-button">
<div class="bottom">
<a class="button-grey" id="btn-asio-control-panel">ASIO SETTINGS</a>
<button>Resync</button>
<button id="btn-asio-resync">Resync</button>
</div>
</div>
</div>