DJCtrlEmu/preload.js
2023-10-03 06:53:25 -04:00

56 lines
1.5 KiB
JavaScript

const electron = require("electron");
let volumeMeterLeft;
let volumeMeterRight;
function sendControl(name, value = 0x00) {
electron.ipcRenderer.invoke("control", name, value);
}
electron.contextBridge.exposeInMainWorld("controller", {
"load": function (deckIndex) {
sendControl("deck" + String(deckIndex) + ".load");
},
"play_pause": function (deckIndex) {
sendControl("deck" + String(deckIndex) + ".play_pause");
},
"volume": function (deckIndex, value) {
sendControl("deck" + String(deckIndex) + ".volume", value);
},
"speed": function (deckIndex, value) {
sendControl("deck" + String(deckIndex) + ".speed", value);
},
"crossfade": function (value) {
sendControl("master.crossfade", value);
}
});
electron.ipcRenderer.on("signal", function (event, name, value = 0x00) {
switch (name) {
case "master.volume.left":
volumeMeterLeft.style.height = String(Math.round((value / 80) * 100)) + "%";
break;
case "master.volume.right":
volumeMeterRight.style.height = String(Math.round((value / 80) * 100)) + "%";
break;
default:
break;
}
});
electron.ipcRenderer.invoke("load-driver", "linux-rawmidi");
electron.ipcRenderer.invoke("load-mappings", "numark-mixtrackplatinum");
(async function () {
var devices = await electron.ipcRenderer.invoke("list-devices");
if (devices.length > 0) {
electron.ipcRenderer.invoke("open-device", devices[0]);
}
})();
window.onload = function (event) {
volumeMeterLeft = document.querySelector("#volume-meter-left");
volumeMeterRight = document.querySelector("#volume-meter-right");
};