From 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 13 Apr 2025 18:48:02 +0100 Subject: initial --- site/app/twine/mixer.js | 149 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 site/app/twine/mixer.js (limited to 'site/app/twine/mixer.js') diff --git a/site/app/twine/mixer.js b/site/app/twine/mixer.js new file mode 100644 index 0000000..b98fa0e --- /dev/null +++ b/site/app/twine/mixer.js @@ -0,0 +1,149 @@ +var Mixer = function(twine) { + var mixer = this; + mixer.masterAmpChannel = "twine_masteramp"; + var masterVu = null; + this.soloChannel = "twine_csolo"; + this.ampChannel = "twine_masteramp"; + target = $("#twine_mixer"); + + this.visible = false; + + this.hide = function() { + masterVu = null; + mixer.visible = false; + target.empty().hide(); + }; + + this.setVu = function(v) { + if (!masterVu) return; + masterVu.value = v; + }; + + this.bootAudio = function() { + app.setControlChannel(mixer.ampChannel, 0.8); + app.setControlChannel(mixer.soloChannel, -1); + }; + + var height = 150; + var width = 30; + this.show = async function () { + masterVu = null; + mixer.visible = true; + target.empty().show(); + var soloChannels = []; + var tb = $("").appendTo($("").appendTo(target)); + var trMuteSolo = $("").appendTo(tb); + var trPan = $("").appendTo(tb); + var trAmp = $("").appendTo(tb); + var trName = $("").appendTo(tb); + for (let c of twine.timeline.channels) { + trName.append($("
").css({"text-align": "center"}).text(c.name)); + var tdMuteSolo = $("").css({"border-left": "1px solid black", "text-align": "center"}).appendTo(trMuteSolo); + var tdPan = $("").css({"border-left": "1px solid black", "text-align": "center"}).appendTo(trPan); + var tdAmp = $("").css({"border-left": "1px solid black"}).appendTo(trAmp); + var elMuteSolo = $("
").appendTo(tdMuteSolo); + var elPan = $("
").appendTo(tdPan); + var elAmp = $("
").appendTo(tdAmp); + + var coMute = new Control({ + name: "Mute", + image: "SC_BTNDef5-MUTE_16", + target: elMuteSolo, + channel: c.defaultChannels.mute, + width: width * 0.5, + height: width * 0.5, + noTriggerInit: true, + + }); + + var coSolo = new Control({ + image: "SC_BTNDef5-SOLO_16", + target: elMuteSolo, + channel: c.defaultChannels.solo, + min: -1, + max: c.index, + width: width * 0.5, + height: width * 0.5, + noTriggerInit: true, + onChange: function(v, co) { + for (let s of soloChannels) { + s.value = false; + s.element.trigger("change"); + } + if (v == c.index) { + co.value = true; + co.element.trigger("change"); + } + } + }); + soloChannels.push(coSolo); + + var coPan = new Control({ + name: "Pan", + image: "Timb&HY_Seq16x3v2_KNOB1FX3", + target: elPan, + channel: c.defaultChannels.pan, + width: width, + height: width, + noTriggerInit: true, + onReady: async function(coPan){ + coPan.value = await app.getControlChannel(c.defaultChannels.pan); + }, + onContextMenu: function(e) { + return twirl.contextMenu.show(e, [ + {name: "Show automation", click: function(){ + c.expand(); + c.showAutomation(0, 1); + }} + ]); + } + }); + var coAmp = new Control({ + name: "Amp", + image: "Sexan_Timb-Slider_29334-128fr", + target: elAmp, + channel: c.defaultChannels.amp, + width: width, + height: height, + noTriggerInit: true, + onReady: async function(coAmp){ + coAmp.value = await app.getControlChannel(c.defaultChannels.amp); + }, + onContextMenu: function(e) { + return twirl.contextMenu.show(e, [ + {name: "Show automation", click: function(){ + c.expand(); + c.showAutomation(0, 0); + }} + ]); + } + }); + } + trName.append($("
")); + trName.append($("")); + var tdm = $("").css({"border-left": "2px solid black"}).appendTo(trAmp); + var tdvu = $("").appendTo(trAmp); + var elm = $("
").appendTo(tdm); + var elmvu = $("
").appendTo(tdvu); + var mc = new Control({ + name: "Master", + image: "Sexan_Timb-Slider_29334-128fr", + target: elm, + channel: mixer.masterAmpChannel, + width: width, + height: height, + noTriggerInit: true, + onReady: async function(mc) { + mc.value = await app.getControlChannel(mixer.masterAmpChannel); + } + }); + + masterVu = new Control({ + name: "VU", + image: "Timb_MeterXRAYMANALOGDEF_8320-128", + target: elmvu, + width: 15, + height: height + }); + } +}; \ No newline at end of file -- cgit v1.2.3