add level meters

This commit is contained in:
sparks-alec
2023-01-30 13:25:34 -05:00
parent 35245ff17f
commit 2b0d05fcfa
3 changed files with 53 additions and 34 deletions
+7 -1
View File
@@ -1,5 +1,11 @@
<tr class="fader" id="<%=type%>-<%=index%>">
<td class="fader-channel"><%=index%></td>
<% if(fader && fader.meter>0){ %>
<td class="fader-channel" style="background: linear-gradient(0deg, rgba(68, 255, 68, 0.3) <%=fader.meter%>%, transparent <%=fader.meter%>%);">
<%=index%>
</td>
<% }else{ %>
<td class="fader-channel"><%=index%></td>
<% } %>
<% if(type=="Control_Groups"){ %>
<td class="fader-name lcd-control-group state-<%= fader ? fader.solo : '' %>">
+45 -32
View File
@@ -35,10 +35,7 @@ exports.ready = function ready(_device) {
device.send('/Console/Session/Filename/?');
device.send('/Console/Channels/?');
device.send('/Snapshots/Current_Snapshot/?');
// These are also sent by the iPad app but aren't queries (?) so may potentially write to console?
// device.send('/Meters/clear');
// device.send('/Meters/clear');
device.send('/Meters/clear');
};
exports.data = function data(_device, oscData) {
const device = _device;
@@ -46,75 +43,91 @@ exports.data = function data(_device, oscData) {
const properties = oscData.address.split('/');
properties.shift();
setObjectProperty(device.data, properties, oscData.args);
if (properties[0] !== 'Meters') {
setObjectProperty(device.data, properties, oscData.args);
// console.log(properties);
}
if (properties[0] === 'Console' && properties[1] === 'Control_Groups') {
for (let i = 1; i <= device.data.Console.Control_Groups; i++) {
device.send(`/Control_Groups/${i}/?`);
}
device.draw();
} else if (['Control_Groups', 'Input_Channels', 'Group_Outputs', 'Aux_Outputs'].includes(properties[0])) {
device.update('fader', {
type: properties[0],
channel: properties[1],
});
// } else if (properties[0] === 'Control_Groups') {
// device.update('fader', {
// type: 'Control_Groups',
// channel: properties[1],
// });
} else if (properties[0] === 'Console' && properties[1] === 'Input_Channels') {
for (let i = 1; i <= device.data.Console.Input_Channels; i++) {
device.send(`/Input_Channels/${i}/Channel_Input/name`); // yup, no ? at the end of this one
device.send(`/Input_Channels/${i}/Channel_Input/name/?`);
device.send(`/Input_Channels/${i}/mute/?`);
device.send(`/Input_Channels/${i}/solo/?`);
device.send(`/Input_Channels/${i}/fader/?`);
device.send(`/Meters/request/1${i}`, [
{ type: 's', value: `/Input_Channels/${i}/Channel_Input/post_meter/left` },
]);
}
device.draw();
// } else if (properties[0] === 'Input_Channels') {
// device.update('fader', {
// type: 'Input_Channels',
// channel: properties[1],
// });
} else if (properties[0] === 'Console' && properties[1] === 'Group_Outputs') {
for (let i = 1; i <= device.data.Console.Group_Outputs; i++) {
device.send(`/Group_Outputs/${i}/mute/?`);
device.send(`/Group_Outputs/${i}/solo/?`);
device.send(`/Group_Outputs/${i}/fader/?`);
device.send(`/Group_Outputs/${i}/Buss_Trim/name/?`);
device.send(`/Meters/request/3${i}`, [{ type: 's', value: `/Group_Outputs/${i}/fader_meter/left` }]);
}
device.draw();
// } else if (properties[0] === 'Group_Outputs') {
// device.update('fader', {
// type: 'Group_Outputs',
// channel: properties[1],
// });
} else if (properties[0] === 'Console' && properties[1] === 'Aux_Outputs') {
for (let i = 1; i <= device.data.Console.Aux_Outputs; i++) {
device.send(`/Aux_Outputs/${i}/mute/?`);
device.send(`/Aux_Outputs/${i}/solo/?`);
device.send(`/Aux_Outputs/${i}/fader/?`);
device.send(`/Aux_Outputs/${i}/Buss_Trim/name/?`);
device.send(`/Meters/request/4${i}`, [{ type: 's', value: `/Aux_Outputs/${i}/fader_meter/left` }]);
}
device.draw();
// } else if (properties[0] === 'Aux_Outputs') {
// device.update('fader', {
// type: 'Aux_Outputs',
// channel: properties[1],
// });
} else if (properties[0] === 'Console' && properties[1] === 'Name') {
this.deviceInfoUpdate(device, 'defaultName', device.data.Console.Name);
} else if (['Control_Groups', 'Input_Channels', 'Group_Outputs', 'Aux_Outputs'].includes(properties[0])) {
device.update('fader', {
type: properties[0],
channel: properties[1],
});
} else if (properties[0] === 'Snapshots') {
device.update('updateSnapshot', {
snapshots: device.data.Snapshots,
});
} else if (properties[0] === 'Meters' && properties[1] === 'values') {
for (let i = 0; i < oscData.args.length; i += 2) {
const channelType = oscData.args[i].toString()[0];
const channelNumber = oscData.args[i].toString().substring(1);
const meterValue = BigInt(oscData.args[i + 1]) / -40000n + 100n;
if (channelType === '1' && device.data.Input_Channels[channelNumber]) {
device.data.Input_Channels[channelNumber].meter = meterValue;
device.update('fader', {
type: 'Input_Channels',
channel: channelNumber,
});
} else if (channelType === '3' && device.data.Group_Outputs[channelNumber]) {
device.data.Group_Outputs[channelNumber].meter = meterValue;
device.update('fader', {
type: 'Group_Outputs',
channel: channelNumber,
});
} else if (channelType === '4' && device.data.Aux_Outputs[channelNumber]) {
device.data.Aux_Outputs[channelNumber].meter = meterValue;
device.update('fader', {
type: 'Aux_Outputs',
channel: channelNumber,
});
}
}
}
};
exports.heartbeat = function heartbeat(device) {
device.send('/Console/Name/?');
console.log(device.data);
// Need to do a /Meters/clear when quitting Cue View or closing the View
};
class DiGiCo {
+1 -1
View File
@@ -32,7 +32,7 @@ table {
border: black 1px solid;
}
.fader .fader-channel {
color: #444;
color: #777;
font-size: 10px;
}
.fader .fader-name {