fix vst3 stepCount + fix and improve web-{make,demo} + disable ajv

This commit is contained in:
Stefano D'Angelo 2024-02-06 11:18:43 +01:00
parent 875745e9ac
commit 5629b9d0b6
6 changed files with 48 additions and 25 deletions

View File

@ -1,4 +1 @@
TBA TBA
iOS app

View File

@ -121,7 +121,7 @@ static struct Steinberg_Vst_ParameterInfo parameterInfo[DATA_PRODUCT_PARAMETERS_
/* .title = */ { {{~Array.from(p.name) :c}}0x{{=c.charCodeAt(0).toString(16)}}, {{~}}0 }, /* .title = */ { {{~Array.from(p.name) :c}}0x{{=c.charCodeAt(0).toString(16)}}, {{~}}0 },
/* .shortTitle = */ { {{~Array.from(p.shortName) :c}}0x{{=c.charCodeAt(0).toString(16)}}, {{~}}0 }, /* .shortTitle = */ { {{~Array.from(p.shortName) :c}}0x{{=c.charCodeAt(0).toString(16)}}, {{~}}0 },
/* .units = */ { {{~Array.from(p.unit in it.tibia.vst3.units ? it.tibia.vst3.units[p.unit] : "") :c}}0x{{=c.charCodeAt(0).toString(16)}}, {{~}}0 }, /* .units = */ { {{~Array.from(p.unit in it.tibia.vst3.units ? it.tibia.vst3.units[p.unit] : "") :c}}0x{{=c.charCodeAt(0).toString(16)}}, {{~}}0 },
/* .stepCount = */ {{?p.toggled}}1{{??p.list && p.scalePoints.length > 1}}Number(1 / (p.scalePoints.length - 1)).toExponential(){{??p.integer}}Number(p.maximum - p.minimum).toExponential(){{??}}0{{?}}, /* .stepCount = */ {{=p.toggled ? 1 : (p.list && p.scalePoints.length > 1 ? p.scalePoints.length - 1 : (p.integer ? p.maximum - p.minimum : 0))}},
/* .defaultNormalizedValue = */ {{?p.map == "logarithmic"}}{{=Number(Math.log(p.defaultValue / p.minimum) / (2 * Math.log(Math.sqrt(p.minimum * p.maximum) / Math.abs(p.minimum)))).toExponential()}}{{??}}{{=Number((p.defaultValue - p.minimum) / (p.maximum - p.minimum)).toExponential()}}{{?}}, /* .defaultNormalizedValue = */ {{?p.map == "logarithmic"}}{{=Number(Math.log(p.defaultValue / p.minimum) / (2 * Math.log(Math.sqrt(p.minimum * p.maximum) / Math.abs(p.minimum)))).toExponential()}}{{??}}{{=Number((p.defaultValue - p.minimum) / (p.maximum - p.minimum)).toExponential()}}{{?}},
/* .unitId = */ 0, /* .unitId = */ 0,
/* .flags = */ {{?p.direction == "input"}}Steinberg_Vst_ParameterInfo_ParameterFlags_kCanAutomate{{??}}Steinberg_Vst_ParameterInfo_ParameterFlags_kIsReadOnly{{?}} /* .flags = */ {{?p.direction == "input"}}Steinberg_Vst_ParameterInfo_ParameterFlags_kCanAutomate{{??}}Steinberg_Vst_ParameterInfo_ParameterFlags_kIsReadOnly{{?}}

View File

@ -1,9 +1,9 @@
ALL += build/index.html build/cert.pem build/key.pem ALL += build/web/index.html build/web/cert.pem build/web/key.pem
build/index.html: ${DATA_DIR}/src/index.html | build build/web/index.html: ${DATA_DIR}/src/index.html | build
cp $^ $@ cp $^ $@
build/key.pem: build/cert.pem build/web/key.pem: build/web/cert.pem
build/cert.pem: | build build/web/cert.pem: | build
yes "" | openssl req -x509 -newkey rsa:2048 -keyout build/key.pem -out build/cert.pem -days 365 -nodes 2>/dev/null yes "" | openssl req -x509 -newkey rsa:2048 -keyout build/web/key.pem -out build/web/cert.pem -days 365 -nodes 2>/dev/null

View File

@ -90,6 +90,16 @@ var units = {
"semitone12TET": "semi" "semitone12TET": "semi"
}; };
function displayValue(elem, index, value) {
var param = demo.Module.data.product.parameters[index];
var unit = param.unit;
if (param.integer)
value = Math.round(value);
else
value = (0.01 * Math.round(100 * value)).toFixed(2);
elem.innerText = value + (unit in units ? " " + units[unit] : "");
}
var initState = 0; // 0 = not inited, 1 = in progress, 2 = inited var initState = 0; // 0 = not inited, 1 = in progress, 2 = inited
window.addEventListener("load", function (e) { window.addEventListener("load", function (e) {
@ -124,8 +134,7 @@ window.addEventListener("load", function (e) {
var value = document.createElement("span"); var value = document.createElement("span");
value.setAttribute("id", "v" + i); value.setAttribute("id", "v" + i);
var u = parameters[i].unit; displayValue(value, i, parameters[i].defaultValue);
value.innerText = parameters[i].defaultValue + (u in units ? " " + units[u] : "");
var range = document.createElement("input"); var range = document.createElement("input");
range.setAttribute("type", "range"); range.setAttribute("type", "range");
@ -135,12 +144,21 @@ window.addEventListener("load", function (e) {
range.setAttribute("min", 0); range.setAttribute("min", 0);
range.setAttribute("max", 1); range.setAttribute("max", 1);
range.setAttribute("step", 1); range.setAttribute("step", 1);
range.setAttribute("data-mapped", "false");
range.value = unmap(i, parameters[i].defaultValue);
} else if (parameters[i].integer) {
range.setAttribute("min", parameters[i].minimum);
range.setAttribute("max", parameters[i].maximum);
range.setAttribute("step", 1);
range.setAttribute("data-mapped", "true");
range.value = parameters[i].defaultValue;
} else { } else {
range.setAttribute("min", 0); range.setAttribute("min", 0);
range.setAttribute("max", 1); range.setAttribute("max", 1);
range.setAttribute("step", parameters[i].integer ? 1 / (parameters[i].maximum - parameters[i].minimum) : "any"); range.setAttribute("step", "any");
range.setAttribute("data-mapped", "false");
range.value = unmap(i, parameters[i].defaultValue);
} }
range.value = unmap(i, parameters[i].defaultValue);
if (parameters[i].direction == "output") if (parameters[i].direction == "output")
range.setAttribute("readonly", "true"); range.setAttribute("readonly", "true");
else { else {
@ -148,10 +166,10 @@ window.addEventListener("load", function (e) {
let v = value; let v = value;
range.addEventListener("input", function (e) { range.addEventListener("input", function (e) {
var p = node.parameters.get(parameters[index].name); var p = node.parameters.get(parameters[index].name);
var val = map(index, e.target.value); var m = e.target.getAttribute("data-mapped") == "true";
var val = m ? e.target.value : map(index, e.target.value);
p.setValueAtTime(val, 0); p.setValueAtTime(val, 0);
var u = parameters[index].unit; displayValue(v, index, val);
v.innerText = val + (u in units ? " " + units[u] : "");
}); });
} }
@ -188,9 +206,13 @@ window.addEventListener("load", function (e) {
}); });
node.port.onmessage = function (e) { node.port.onmessage = function (e) {
if (e.data.type == "paramOutChange") if (e.data.type == "paramOutChange") {
document.getElementById("p" + e.data.index).value = unmap(e.data.index, e.data.value); var r = document.getElementById("p" + e.data.index);
document.getElementById("v" + e.data.index).innerText = e.data.value; var v = document.getElementById("v" + e.data.index);
displayValue(v, e.data.index, e.data.value);
var m = r.getAttribute("data-mapped") == "true";
r.value = m ? e.data.value : unmap(e.data.index, e.data.value);
}
}; };
if (midi) { if (midi) {

View File

@ -44,7 +44,7 @@ CXX_SRCS = ${COMMON_DIR}/src/new.cpp ${CXX_SRCS_EXTRA}
CXX_OBJS = $(addprefix build/obj/, $(notdir $(CXX_SRCS:.cpp=.o))) CXX_OBJS = $(addprefix build/obj/, $(notdir $(CXX_SRCS:.cpp=.o)))
endif endif
ALL = build/${BUNDLE_NAME}.wasm build/${BUNDLE_NAME}_processor.js build/${BUNDLE_NAME}.js ALL = build/web/${BUNDLE_NAME}.wasm build/web/${BUNDLE_NAME}_processor.js build/web/${BUNDLE_NAME}.js
default: all default: all
@ -53,20 +53,20 @@ default: all
all: ${ALL} all: ${ALL}
ifeq ($(CXX_OBJS),) ifeq ($(CXX_OBJS),)
build/${BUNDLE_NAME}.wasm: ${C_OBJS} | build build/web/${BUNDLE_NAME}.wasm: ${C_OBJS} | build/web
${CC} $^ -o $@ ${CFLAGS_ALL} ${LDFLAGS_ALL} ${CC} $^ -o $@ ${CFLAGS_ALL} ${LDFLAGS_ALL}
else else
build/${BUNDLE_NAME}.wasm: ${C_OBJS} ${CXX_OBJS} | build build/web/${BUNDLE_NAME}.wasm: ${C_OBJS} ${CXX_OBJS} | build/web
${CXX} $^ -o $@ ${CFLAGS_ALL} ${CXXFLAGS_ALL} ${LDFLAGS_ALL} ${CXX} $^ -o $@ ${CFLAGS_ALL} ${CXXFLAGS_ALL} ${LDFLAGS_ALL}
endif endif
build/${BUNDLE_NAME}_processor.js: ${DATA_DIR}/src/processor.js | build build/web/${BUNDLE_NAME}_processor.js: ${DATA_DIR}/src/processor.js | build/web
cp $^ $@ cp $^ $@
build/${BUNDLE_NAME}.js: ${DATA_DIR}/src/module.js | build build/web/${BUNDLE_NAME}.js: ${DATA_DIR}/src/module.js | build/web
cp $^ $@ cp $^ $@
build build/obj: build/web build/obj:
mkdir -p $@ mkdir -p $@
clean: clean:

4
tibia
View File

@ -38,6 +38,7 @@ if (process.argv[2] == "--common") {
var fs = require("fs"); var fs = require("fs");
var path = require("path"); var path = require("path");
/*
var ajvValidate; var ajvValidate;
if (outputData) { if (outputData) {
var schema = JSON.parse(fs.readFileSync(__dirname + path.sep + "schema.json", { encoding: "utf-8" })); var schema = JSON.parse(fs.readFileSync(__dirname + path.sep + "schema.json", { encoding: "utf-8" }));
@ -45,6 +46,7 @@ if (outputData) {
var ajv = new Ajv(); var ajv = new Ajv();
ajvValidate = ajv.compile(schema); ajvValidate = ajv.compile(schema);
} }
*/
var data = {}; var data = {};
for (var i = 0; i < jsonFiles.length; i++) { for (var i = 0; i < jsonFiles.length; i++) {
@ -53,6 +55,7 @@ for (var i = 0; i < jsonFiles.length; i++) {
data[k] = d[k]; data[k] = d[k];
} }
/*
if (outputData) { if (outputData) {
var ajvValid = ajvValidate(data); var ajvValid = ajvValidate(data);
if (!ajvValid) { if (!ajvValid) {
@ -60,6 +63,7 @@ if (outputData) {
process.exit(1); process.exit(1);
} }
} }
*/
var doT = require("dot"); var doT = require("dot");
doT.templateSettings.strip = false; doT.templateSettings.strip = false;