let javascript module only export buses and parameters

This commit is contained in:
Stefano D'Angelo 2025-05-09 15:32:10 +02:00
parent fb767d9bbf
commit 8eaf255762
2 changed files with 18 additions and 19 deletions

View File

@ -75,12 +75,12 @@ var Player = {
}; };
function map(index, value) { function map(index, value) {
var p = demo.Module.data.product.parameters[index]; var p = demo.Module.parameters[index];
return p.map == "logarithmic" ? p.minimum * Math.exp((2.0 * Math.log(Math.sqrt(p.maximum * p.minimum) / Math.abs(p.minimum))) * value) : p.minimum + (p.maximum - p.minimum) * value; return p.map == "logarithmic" ? p.minimum * Math.exp((2.0 * Math.log(Math.sqrt(p.maximum * p.minimum) / Math.abs(p.minimum))) * value) : p.minimum + (p.maximum - p.minimum) * value;
} }
function unmap(index, value) { function unmap(index, value) {
var p = demo.Module.data.product.parameters[index]; var p = demo.Module.parameters[index];
return p.map == "logarithmic" ? Math.log(value / p.minimum) / (2.0 * Math.log(Math.sqrt(p.maximum * p.minimum) / Math.abs(p.minimum))) : (value - p.minimum) / (p.maximum - p.minimum); return p.map == "logarithmic" ? Math.log(value / p.minimum) / (2.0 * Math.log(Math.sqrt(p.maximum * p.minimum) / Math.abs(p.minimum))) : (value - p.minimum) / (p.maximum - p.minimum);
} }
@ -112,7 +112,7 @@ var units = {
}; };
function displayValue(elem, index, value) { function displayValue(elem, index, value) {
var param = demo.Module.data.product.parameters[index]; var param = demo.Module.parameters[index];
var unit = param.unit; var unit = param.unit;
if (param.integer) if (param.integer)
value = Math.round(value); value = Math.round(value);
@ -132,9 +132,9 @@ window.addEventListener("load", function (e) {
var playPause = document.getElementById("playPause"); var playPause = document.getElementById("playPause");
var controls = document.getElementById("controls"); var controls = document.getElementById("controls");
audioInputIndex = demo.Module.data.product.buses.filter(x => x.type == "audio" && x.direction == "input").findIndex(x => !x.cv && !x.sidechain); audioInputIndex = demo.Module.buses.filter(x => x.type == "audio" && x.direction == "input").findIndex(x => !x.cv && !x.sidechain);
audioOutputIndex = demo.Module.data.product.buses.filter(x => x.type == "audio" && x.direction == "output").findIndex(x => !x.cv && !x.sidechain); audioOutputIndex = demo.Module.buses.filter(x => x.type == "audio" && x.direction == "output").findIndex(x => !x.cv && !x.sidechain);
hasMidiInput = demo.Module.data.product.buses.filter(x => x.type == "midi" && x.direction == "input").length > 0; hasMidiInput = demo.Module.buses.filter(x => x.type == "midi" && x.direction == "input").length > 0;
if (hasMidiInput && !navigator.requestMIDIAccess) if (hasMidiInput && !navigator.requestMIDIAccess)
alert("Your browser doesn't support the Web MIDI API"); alert("Your browser doesn't support the Web MIDI API");
@ -145,7 +145,7 @@ window.addEventListener("load", function (e) {
file.value = ""; file.value = "";
playPause.disabled = true; playPause.disabled = true;
var parameters = demo.Module.data.product.parameters; var parameters = demo.Module.parameters;
for (var i = 0; i < parameters.length; i++) { for (var i = 0; i < parameters.length; i++) {
var div = document.createElement("div"); var div = document.createElement("div");
@ -241,8 +241,8 @@ window.addEventListener("load", function (e) {
if ((e.data[0] & 0xf0) == 0xf0) if ((e.data[0] & 0xf0) == 0xf0)
return; return;
var msg = { type: "midi", data: e.data }; var msg = { type: "midi", data: e.data };
for (var i = 0; i < demo.Module.data.product.buses.length; i++) { for (var i = 0; i < demo.Module.buses.length; i++) {
var b = demo.Module.data.product.buses[i]; var b = demo.Module.buses[i];
if (b.type != "midi" || b.direction != "input") if (b.type != "midi" || b.direction != "input")
continue; continue;
msg.index = i; msg.index = i;

View File

@ -1,7 +1,7 @@
/* /*
* Tibia * Tibia
* *
* Copyright (C) 2022-2024 Orastron Srl unipersonale * Copyright (C) 2022-2025 Orastron Srl unipersonale
* *
* Tibia is free software: you can redistribute it and/or modify * Tibia is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -18,13 +18,12 @@
* File author: Stefano D'Angelo * File author: Stefano D'Angelo
*/ */
const data = { const buses = {{=JSON.stringify(it.product.buses, null, 2)}};
company: {{=JSON.stringify(it.company, null, 2)}}, const parameters = {{=JSON.stringify(it.product.parameters, null, 2)}};
product: {{=JSON.stringify(it.product, null, 2)}}
};
export class Module { export class Module {
static get data() { return data; } static get buses() { return buses; }
static get parameters() { return parameters; }
async init(context, processorJsPath, wasmPath) { async init(context, processorJsPath, wasmPath) {
var wasmBytes = await fetch(wasmPath) var wasmBytes = await fetch(wasmPath)
@ -45,11 +44,11 @@ export class Module {
export class Node extends AudioWorkletNode { export class Node extends AudioWorkletNode {
constructor(module) { constructor(module) {
super(module.context, data.product.bundleName, super(module.context, "{{=it.product.bundleName}}",
{ {
numberOfInputs: data.product.buses.filter(b => b.type == "audio" && b.direction == "input").length, numberOfInputs: buses.filter(b => b.type == "audio" && b.direction == "input").length,
numberOfOutputs: data.product.buses.filter(b => b.type == "audio" && b.direction == "output").length, numberOfOutputs: buses.filter(b => b.type == "audio" && b.direction == "output").length,
outputChannelCount: data.product.buses.filter(b => b.type == "audio" && b.direction == "output").map(b => b.channels == "mono" ? 1 : 2), outputChannelCount: buses.filter(b => b.type == "audio" && b.direction == "output").map(b => b.channels == "mono" ? 1 : 2),
processorOptions: { wasmBytes: module.wasmBytes } processorOptions: { wasmBytes: module.wasmBytes }
}); });
} }