template for mods

This commit is contained in:
trian-gles 2024-08-01 17:11:37 +02:00
parent 15beba29f2
commit ece14b9599
6 changed files with 2682 additions and 1108 deletions

1
.gitattributes vendored
View File

@ -1 +0,0 @@
*.wav filter=lfs diff=lfs merge=lfs -text

9
hack-dict.js Normal file
View File

@ -0,0 +1,9 @@
outlets = 4
function hack(s, v){
var djNum = s[12];
if (typeof v == "string" && v.slice(0, 3) == "obj")
return;
outlet(parseInt(djNum), "param", s.slice(16), v);
}

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
{
}

View File

@ -1,10 +1,10 @@
inlets = 2 inlets = 2
outlets = 4; outlets = 3;
var jpieces = {};
var presets = []; var presets = [];
var hsspiece = {}; var hsspiece = {};
var outdict = new Dict("HSSPieces");; var outdict = new Dict;
var points = [[0.5, 0.5], [1., 0.], [1., 1.], [0., 1.], [0., 0.]]; var points = [[0.5, 0.5], [1., 0.], [1., 1.], [0., 1.], [0., 0.]];
var net = new Dict; var net = new Dict;
var title; var title;
@ -29,39 +29,21 @@ var DJsterParams = {
"tempo" : [20, 200, "log"],// "tempo" : [20, 200, "log"],//
"timesig_denominator" : [1, 5, "enum"],// "timesig_denominator" : [1, 5, "enum"],//
"timesig_numerator" : [1, 12, "linear"],// "timesig_numerator" : [1, 12, "linear"],//
"tonic_pitch" : [12, 108, "enum"],// "tonic_pitch" : [12, 108, "linear"],//
}; };
//
function dictionary(d) function dictionary(d)
{ {
net.name = d; net.name = d;
hsspiece[title]["networkData"] = JSON.parse(net.stringify()); hsspiece[title]["networkData"] = JSON.parse(net.stringify());
outdict.parse(JSON.stringify(hsspiece)); outdict.parse(JSON.stringify(hsspiece));
//outlet(0, "dictionary", outdict.name); outlet(0, "dictionary", outdict.name);
}
function readPiece(path)
{
outdict.import_json(path);
jpieces = JSON.parse(outdict.stringify());
var keys = outdict.getkeys();
for (var i = 0; i < keys.length; i++) outlet(3, keys[i]);
outlet(1, outdict.get("DefaultSetting::1::networkData");
outlet(1, predict(0.5, 0.5);
outlet(0, 0.5, 0.5;
}
function getSection(section)
{
outlet(1, outdict.get(section + "::1::networkData");
outlet(1, predict(0.5, 0.5);
outlet(0, 0.5, 0.5;
} }
function writePiece() function writePiece()
{ {
outdict.export_json(this.patcher.filepath + "HSSPiece.json"); var path = this.patcher.getnamed("machineLearning").subpatcher().getnamed("path").getvalueof();
net.export_json(path + "HSSPiece.json");
} }
function anything() function anything()
@ -75,7 +57,7 @@ function anything()
hsspiece[title] = {}; hsspiece[title] = {};
var slots = presets[i].get("pattrstorage::slots").getkeys();//number of slots here var slots = presets[i].get("pattrstorage::slots").getkeys();//number of slots here
post("slots", slots, "\n"); post("slots", slots, "\n");
outlet(1, "clear_data"); outlet(1, "clear");
for (var j = 0; j < slots.length; j++){ for (var j = 0; j < slots.length; j++){
hsspiece[title][j + 1] = {}; hsspiece[title][j + 1] = {};
var trainingData = []; var trainingData = [];
@ -85,6 +67,7 @@ function anything()
delete data["Djster.µbus[" + p + "]::meters"]; delete data["Djster.µbus[" + p + "]::meters"];
for (var param in DJsterParams) { for (var param in DJsterParams) {
var val = data["Djster.µbus[" + p + "]::" + param]; var val = data["Djster.µbus[" + p + "]::" + param];
//post("params", hsspiece[title][j + 1]["Djster.µbus[" + p + "]::" + param], "\n");
switch (DJsterParams[param][2]) { switch (DJsterParams[param][2]) {
case "linear" : case "linear" :
trainingData.push(scale(val, DJsterParams[param][0], DJsterParams[param][1], 0., 1.)); trainingData.push(scale(val, DJsterParams[param][0], DJsterParams[param][1], 0., 1.));
@ -93,19 +76,17 @@ function anything()
trainingData.push(scale(val, DJsterParams[param][0], DJsterParams[param][1], 0., 1.)); trainingData.push(scale(val, DJsterParams[param][0], DJsterParams[param][1], 0., 1.));
break; break;
case "enum" : case "enum" :
trainingData.push(j/5); trainingData.push(0);
break; break;
} }
} }
//var val = data["hub::instrument::instrument-" + (p + 1)]; var val = data["hub::instrument::instrument-" + (p + 1)];
trainingData.push(j/5); trainingData.push(0);
var val = data["hub::src::src" + (p + 1)];
trainingData.push(scale(val[0], 0, 127, 0., 1.));
trainingData.push(scale(val[1], 0, 127, 0., 1.));
} }
//post("data", JSON.stringify(data), "\n"); //post("data", JSON.stringify(data), "\n");
hsspiece[title][j + 1] = data; hsspiece[title][j + 1] = data;
outlet(1, "data_point", points[j].concat(trainingData)); outlet(1, points[j].concat(trainingData));
outlet(1, "addPat");
} }
outlet(1, "train", 10000); outlet(1, "train", 10000);
} }
@ -114,13 +95,10 @@ function anything()
function list() function list()
{ {
var vector = arrayfromargs(arguments); var vector = arrayfromargs(arguments);
var src = [];
var currentPiece = this.patcher.getnamed("currentPiece").getvalueof();
var keys = Object.keys(DJsterParams); var keys = Object.keys(DJsterParams);
for (var i = 0; i < 4; i++) { for (var i = 0; i < 4; i++) {
for (var j = 0; j < vector.length/4; j++) { for (var j = 0; j < vector.length/4; j++) {
var k = j + i * vector.length/4; var k = j + i * vector.length/4;
//post("vector", j, "\n");
switch (j) { switch (j) {
case 3 : //log case 3 : //log
case 17 : case 17 :
@ -128,32 +106,20 @@ function list()
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val); outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
break; break;
case 13 : //enum case 13 : //enum
//val = "Major"; val = "Major";
post(vector[k], Math.floor(vector[k]/0.2 + 1), "\n"); outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["Djster.µbus[" + i + "]::scale"]);
break; break;
case 16 : case 16 :
//val = "2 2 2"; val = "2 2 2";
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["Djster.µbus[" + i + "]::meter"]); outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
break; break;
case 18 : case 18 :
//val = "4" val = "4"
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["Djster.µbus[" + i + "]::timesig_denominator"]); outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
break; break;
case 21 : case 21 :
val = "4" val = "4"
outlet(2, "hub::instrument::instrument-" + (i + 1), jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["hub::instrument::instrument-" + (i + 1)]); outlet(2, "hub::instrument::instrument-" + (i + 1), val);
break;
case 22 :
src[0] = scale(vector[k], 0, 1, 0, 127);
break;
case 23 :
src[1] = scale(vector[k], 0, 1, 0, 127);
outlet(2, "hub::src::src" + (i + 1), src);
break;
case 1 : case 9 : case 10 : case 14 : case 15 : case 19 : case 20 :
var val = Math.round(scale(vector[k], 0, 1, DJsterParams[keys[j]][0], DJsterParams[keys[j]][1]));
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
break; break;
default : //linear default : //linear
var val = scale(vector[k], 0, 1, DJsterParams[keys[j]][0], DJsterParams[keys[j]][1]); var val = scale(vector[k], 0, 1, DJsterParams[keys[j]][0], DJsterParams[keys[j]][1]);

28
lfogui.html Normal file
View File

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<!--
We start with a basic html 'page' that is the size of the jweb object,
but has no scrollbars nor floating content.
-->
<head>
<link rel="stylesheet" href="./src/lfogui.css">
</head>
<body>
<div id="lfo-container"></div>
<script src="./src/moment.js"></script>
<script src="./src/react.js"></script>
<script src="./src/react-dom.js"></script>
<script src="./src/common.js"></script>
<script src="./src/enums.js"></script>
<script src="./src/modulators.js"></script>
<script src="./src/lfogui.js">
</script>
</body>
</html>