musical timing
This commit is contained in:
parent
ebd09dfd26
commit
1d8610fa5f
@ -39,12 +39,12 @@ function Switch(props){
|
||||
e('span', {className: 'slider round'}, null))
|
||||
}
|
||||
|
||||
function CreateParamChanger(arr, setArr, index, cb=() => {}){
|
||||
function CreateParamChanger(arr, setArr, index, postCB=() => {}, preCB=(val) => val){
|
||||
return (event) => {
|
||||
let newArr = arr.slice();
|
||||
newArr[index] = event.target.value;
|
||||
newArr[index] = preCB(event.target.value);
|
||||
setArr(newArr);
|
||||
cb();
|
||||
postCB();
|
||||
log(`${index} ${event.target.value}`);
|
||||
}
|
||||
}
|
||||
|
456
example.maxpat
456
example.maxpat
@ -10,7 +10,7 @@
|
||||
}
|
||||
,
|
||||
"classnamespace" : "box",
|
||||
"rect" : [ 533.0, 91.0, 930.0, 869.0 ],
|
||||
"rect" : [ 533.0, 91.0, 1344.0, 869.0 ],
|
||||
"bglocked" : 0,
|
||||
"openinpresentation" : 0,
|
||||
"default_fontsize" : 12.0,
|
||||
@ -39,6 +39,54 @@
|
||||
"subpatcher_template" : "",
|
||||
"assistshowspatchername" : 0,
|
||||
"boxes" : [ {
|
||||
"box" : {
|
||||
"id" : "obj-53",
|
||||
"maxclass" : "button",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 737.0, 43.0, 24.0, 24.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-1",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 684.0, 146.0, 94.0, 22.0 ],
|
||||
"text" : "prepend timesig"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-52",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 545.0, 135.0, 89.0, 22.0 ],
|
||||
"text" : "prepend tempo"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-49",
|
||||
"linecount" : 2,
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 868.0, 96.0, 150.0, 33.0 ],
|
||||
"text" : "ADD SUPPORT FOR MUSICAL TIMINGS"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-37",
|
||||
"maxclass" : "newobj",
|
||||
@ -115,9 +163,9 @@
|
||||
"patching_rect" : [ 643.0, 770.0, 40.0, 22.0 ],
|
||||
"restore" : [ {
|
||||
"data" : {
|
||||
"enumArrays" : [ [ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "3", 2, 2, "2", "2", "2", "2", "2", "2", "2" ], [ "meter", "NONE", "NONE", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ],
|
||||
"enumArrays" : [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "3", 2, 2, "2", "2", "2", "2", "2", "2", "2" ], [ "meter", "NONE", "NONE", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ],
|
||||
"enumMats" : [ [ [ 0, "1", "2", 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ], [ [ "3 4", "4 4", "7 8", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ] ] ],
|
||||
"modArrays" : [ [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "meter", "eventfulness", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "0.1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0.5", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "2.5", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", null, "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ]
|
||||
"modArrays" : [ [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "meter", "eventfulness", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "0.1hz", "1hz", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0.5", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "2.5", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ]
|
||||
}
|
||||
|
||||
}
|
||||
@ -136,9 +184,9 @@
|
||||
"box" : {
|
||||
"data" : {
|
||||
"data" : {
|
||||
"enumArrays" : [ [ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "3", 2, 2, "2", "2", "2", "2", "2", "2", "2" ], [ "meter", "NONE", "NONE", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ],
|
||||
"enumArrays" : [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "3", 2, 2, "2", "2", "2", "2", "2", "2", "2" ], [ "meter", "NONE", "NONE", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ],
|
||||
"enumMats" : [ [ [ 0, "1", "2", 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ], [ [ "3 4", "4 4", "7 8", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ] ] ],
|
||||
"modArrays" : [ [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "meter", "eventfulness", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "0.1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0.5", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "2.5", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", null, "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ]
|
||||
"modArrays" : [ [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "meter", "eventfulness", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "0.1hz", "1hz", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0.5", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "2.5", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ]
|
||||
}
|
||||
|
||||
}
|
||||
@ -170,31 +218,6 @@
|
||||
"text" : "print"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-9",
|
||||
"linecount" : 2,
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 904.0, 80.0, 150.0, 33.0 ],
|
||||
"text" : "FINISH THE SAVING THING!!!"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-48",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 4,
|
||||
"outlettype" : [ "", "bang", "", "dictionary" ],
|
||||
"patching_rect" : [ 129.0, 107.0, 50.5, 22.0 ],
|
||||
"text" : "DJster",
|
||||
"varname" : "DJster"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
@ -203,22 +226,10 @@
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 9,
|
||||
"outlettype" : [ "int", "int", "float", "float", "float", "", "int", "float", "" ],
|
||||
"patching_rect" : [ 253.0, 520.0, 103.0, 22.0 ],
|
||||
"patching_rect" : [ 744.815790414810181, 107.0, 103.0, 22.0 ],
|
||||
"text" : "transport"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-46",
|
||||
"linecount" : 4,
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 1045.5, 6.0, 153.0, 60.0 ],
|
||||
"text" : "Should be an indicator for modulators if there is a corresponding enumerator and vice versa"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
@ -323,19 +334,20 @@
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 569.0, 647.0, 87.0, 22.0 ],
|
||||
"text" : "meter 7 8"
|
||||
"text" : "meter 4 4"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-31",
|
||||
"linecount" : 2,
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 485.0, 647.0, 80.0, 22.0 ],
|
||||
"text" : "stream 0.364"
|
||||
"patching_rect" : [ 485.0, 647.0, 80.0, 35.0 ],
|
||||
"text" : "stream 0.207125"
|
||||
}
|
||||
|
||||
}
|
||||
@ -347,7 +359,7 @@
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 347.0, 647.0, 133.0, 22.0 ],
|
||||
"text" : "metriclarity param2"
|
||||
"text" : "metriclarity 20"
|
||||
}
|
||||
|
||||
}
|
||||
@ -370,7 +382,7 @@
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 522.0, 528.0, 268.0, 33.0 ],
|
||||
"patching_rect" : [ 518.0, 541.0, 268.0, 33.0 ],
|
||||
"text" : "we can only output symbols from jweb, so this turns them into lists"
|
||||
}
|
||||
|
||||
@ -382,7 +394,7 @@
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 423.5, 539.0, 71.0, 22.0 ],
|
||||
"patching_rect" : [ 423.5, 552.0, 71.0, 22.0 ],
|
||||
"text" : "fromsymbol"
|
||||
}
|
||||
|
||||
@ -607,7 +619,7 @@
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 403.52631402015686, 149.0, 774.105266809463501, 365.0 ],
|
||||
"patching_rect" : [ 402.0, 174.0, 788.631580829620361, 367.0 ],
|
||||
"rendermode" : 0,
|
||||
"url" : "file://lfogui.html"
|
||||
}
|
||||
@ -615,6 +627,13 @@
|
||||
}
|
||||
],
|
||||
"lines" : [ {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-2", 0 ],
|
||||
"source" : [ "obj-1", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-27", 0 ],
|
||||
"source" : [ "obj-10", 0 ]
|
||||
@ -759,7 +778,7 @@
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-15", 0 ],
|
||||
"order" : 1,
|
||||
"order" : 2,
|
||||
"source" : [ "obj-37", 0 ]
|
||||
}
|
||||
|
||||
@ -767,6 +786,14 @@
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-16", 0 ],
|
||||
"order" : 1,
|
||||
"source" : [ "obj-37", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-47", 0 ],
|
||||
"order" : 0,
|
||||
"source" : [ "obj-37", 0 ]
|
||||
}
|
||||
@ -794,6 +821,20 @@
|
||||
"source" : [ "obj-40", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-1", 0 ],
|
||||
"source" : [ "obj-47", 5 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-52", 0 ],
|
||||
"source" : [ "obj-47", 4 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
@ -801,6 +842,20 @@
|
||||
"source" : [ "obj-5", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-2", 0 ],
|
||||
"source" : [ "obj-52", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-47", 0 ],
|
||||
"source" : [ "obj-53", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
@ -810,304 +865,7 @@
|
||||
|
||||
}
|
||||
],
|
||||
"parameters" : {
|
||||
"obj-48::obj-1" : [ "Outset Pulses", "Outset Pulses", 0 ],
|
||||
"obj-48::obj-104" : [ "Tonality Profile", "Tonality Profile", 0 ],
|
||||
"obj-48::obj-109" : [ "Play", "Play", 0 ],
|
||||
"obj-48::obj-11" : [ "Eventfulness", "Eventfulness", 0 ],
|
||||
"obj-48::obj-110" : [ "Event Length", "Event Length", 0 ],
|
||||
"obj-48::obj-122" : [ "Choice", "Choice", 0 ],
|
||||
"obj-48::obj-128" : [ "Ostinato Buffer", "Ostinato Buffer", 0 ],
|
||||
"obj-48::obj-13" : [ "Melody Scope", "Melody Scope", 0 ],
|
||||
"obj-48::obj-136" : [ "Sorted", "Sorted", 0 ],
|
||||
"obj-48::obj-155" : [ "Use Transport", "Use Transport", 0 ],
|
||||
"obj-48::obj-158" : [ "Subdivision", "Subdivision", 0 ],
|
||||
"obj-48::obj-16" : [ "Scale", "Scale", 0 ],
|
||||
"obj-48::obj-187" : [ "meters", "meters", 0 ],
|
||||
"obj-48::obj-188" : [ "Pitchsets", "Pitchsets", 0 ],
|
||||
"obj-48::obj-206" : [ "Chordal Weight", "Chordal Weight", 0 ],
|
||||
"obj-48::obj-217" : [ "Overlap", "Overlap", 0 ],
|
||||
"obj-48::obj-22" : [ "Pulse Length", "Pulse Length", 0 ],
|
||||
"obj-48::obj-24" : [ "Harmoniclarity", "Harmoniclarity", 0 ],
|
||||
"obj-48::obj-25" : [ "Pitch Center", "Pitch Center", 0 ],
|
||||
"obj-48::obj-26" : [ "Pitch Range", "Pitch Range", 0 ],
|
||||
"obj-48::obj-27" : [ "Dynamics", "Dynamics", 0 ],
|
||||
"obj-48::obj-28" : [ "Attenuation", "Attenuation", 0 ],
|
||||
"obj-48::obj-29" : [ "Ostinato", "Ostinato", 0 ],
|
||||
"obj-48::obj-32" : [ "live.text[1]", "Clear Scales", 0 ],
|
||||
"obj-48::obj-47" : [ "Silent Downbeat", "Silent Downbeat", 0 ],
|
||||
"obj-48::obj-49" : [ "Sync", "Sync", 0 ],
|
||||
"obj-48::obj-5" : [ "Metriclarity", "Metriclarity", 0 ],
|
||||
"obj-48::obj-52" : [ "Tonic Pitch", "Tonic Pitch", 0 ],
|
||||
"obj-48::obj-53" : [ "Precision", "Precision", 0 ],
|
||||
"obj-48::obj-56" : [ "Precision[1]", "Preset Tab", 0 ],
|
||||
"obj-48::obj-77" : [ "Melodic Cohesion", "Melodic Cohesion", 0 ],
|
||||
"obj-48::obj-87" : [ "Sync Type", "menu", 0 ],
|
||||
"obj-48::obj-88" : [ "Scala Browser", "Scala Browser", 0 ],
|
||||
"parameterbanks" : {
|
||||
"0" : {
|
||||
"index" : 0,
|
||||
"name" : "",
|
||||
"parameters" : [ "-", "-", "-", "-", "-", "-", "-", "-" ]
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"parameter_overrides" : {
|
||||
"obj-48::obj-1" : {
|
||||
"parameter_range" : [ 1, 8 ]
|
||||
}
|
||||
,
|
||||
"obj-48::obj-13" : {
|
||||
"parameter_unitstyle" : 7
|
||||
}
|
||||
,
|
||||
"obj-48::obj-25" : {
|
||||
"parameter_unitstyle" : 8
|
||||
}
|
||||
,
|
||||
"obj-48::obj-26" : {
|
||||
"parameter_unitstyle" : 7
|
||||
}
|
||||
,
|
||||
"obj-48::obj-52" : {
|
||||
"parameter_unitstyle" : 8
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"inherited_shortname" : 1
|
||||
}
|
||||
,
|
||||
"dependency_cache" : [ {
|
||||
"name" : "AdditiveMeter2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Autobusk-µPlayer.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "DJster.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Inner-Equation.5.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Inside.3.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Mod.2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Pof_(Qi)(i=0toz-r-1).2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Pof_(Qj)(j=1toz).2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Pof_(Qz+1-k)(k=0tor).2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Qz+1-k2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Qz-r2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "TIE.7.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "Total-Internal-Equation.6.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "bytecount.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "composite-meters.txt",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "dispenser.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "djster.accum.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "dumper.2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "harmonic-energy-profile.txt",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/Profiles",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/Profiles",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "harmonicity.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/Tonality",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/Tonality",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "indigestibility.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/Tonality",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/Tonality",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "meter-subpatch.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "mxj.mxo",
|
||||
"type" : "iLaX"
|
||||
}
|
||||
, {
|
||||
"name" : "outset.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "packback.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/abstractions",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/abstractions",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "platform.js",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/javascript",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/javascript",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "primefactors.txt",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/maps/microMaps",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/maps/microMaps",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "psi-functions.txt",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "reader.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "reader2.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "scalaFileBase.js",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/javascript",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/javascript",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "scale-subpatch-exp.maxpat",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core",
|
||||
"type" : "JSON",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "scriptingname.js",
|
||||
"bootpath" : "~/Documents/Max 8/Packages/MaxScore/javascript",
|
||||
"patcherrelativepath" : "../../Max 8/Packages/MaxScore/javascript",
|
||||
"type" : "TEXT",
|
||||
"implicit" : 1
|
||||
}
|
||||
],
|
||||
"dependency_cache" : [ ],
|
||||
"autosave" : 0
|
||||
}
|
||||
|
||||
|
@ -200,6 +200,7 @@
|
||||
|
||||
<script src="./react.js"></script>
|
||||
<script src="./react-dom.js"></script>
|
||||
<script src="./moment.js"></script>
|
||||
<script src="./common.js"></script>
|
||||
<script src="./enums.js"></script>
|
||||
<script src="./modulators.js"></script>
|
||||
|
39
lfogui.js
39
lfogui.js
@ -28,6 +28,8 @@ const MODULATORLABELS = ["-type-", "---shape---", "-------param-------", "--time
|
||||
const ENUMERATORLABELS = ["---parameter---", "-# points-"];
|
||||
|
||||
|
||||
|
||||
|
||||
function MasterLfoHandler(){
|
||||
|
||||
let initVisArr = Array(MAXLFOS).fill(false);
|
||||
@ -47,10 +49,13 @@ function MasterLfoHandler(){
|
||||
|
||||
const [modCenterVals, setModCenterVals] = React.useState({});
|
||||
|
||||
const [bpm, setBpm] = React.useState(100);
|
||||
const [beatsInMeasure, setBeatsInMeasure] = React.useState(4);
|
||||
|
||||
const [shapeArr, setShapeArr] = React.useState(Array(MAXLFOS).fill('Sine'));
|
||||
const [djParamArr, setDjParamArr] = React.useState(Array(MAXLFOS).fill('NONE'));
|
||||
|
||||
const [timeArr, setTimeArr] = React.useState(Array(MAXLFOS).fill('1hz'));
|
||||
const [freqArr, setFreqArr] = React.useState(Array(MAXLFOS).fill('1hz'));
|
||||
|
||||
// const [ampArr, setAmpArr] = React.useState(Array(MAXLFOS).fill('1'));
|
||||
const [minArr, setMinArr] = React.useState(Array(MAXLFOS).fill('0'));
|
||||
@ -58,8 +63,8 @@ function MasterLfoHandler(){
|
||||
|
||||
const [phaseArr, setPhaseArr] = React.useState(Array(MAXLFOS).fill('0'));
|
||||
|
||||
const allModArrays = [modVisibleArr, shapeArr, djParamArr, timeArr, minArr, maxArr, phaseArr];
|
||||
const allModSetters = [setModVisibleArr, setShapeArr, setDjParamArr, setTimeArr, setMinArr, setMaxArr, setPhaseArr];
|
||||
const allModArrays = [modVisibleArr, shapeArr, djParamArr, freqArr, minArr, maxArr, phaseArr];
|
||||
const allModSetters = [setModVisibleArr, setShapeArr, setDjParamArr, setFreqArr, setMinArr, setMaxArr, setPhaseArr];
|
||||
const modBlankVals = [true, SHAPETYPES[0], MODPARAMOPTIONS[0], '1', '0', '1', '0'];
|
||||
|
||||
|
||||
@ -186,7 +191,15 @@ function MasterLfoHandler(){
|
||||
|
||||
function handleTick(event) {
|
||||
let time = (Date.now() - firstUpdateTime) / 1000;
|
||||
operateModulators(modVisibleArr, djParamArr, modCenterVals, timeArr, minArr, maxArr, shapeArr, phaseArr, time);
|
||||
operateModulators(modVisibleArr, djParamArr, modCenterVals, freqArr, minArr, maxArr, shapeArr, phaseArr, time, bpm, beatsInMeasure);
|
||||
}
|
||||
|
||||
function handleBpm(event) {
|
||||
setBpm(event.detail);
|
||||
}
|
||||
|
||||
function handleTimeSig(event) {
|
||||
setBeatsInMeasure(parseFloat(event.detail[0]) * parseFloat(event.detail[1])/ 4);
|
||||
}
|
||||
|
||||
|
||||
@ -195,6 +208,8 @@ function MasterLfoHandler(){
|
||||
window.addEventListener('tick', handleTick);
|
||||
window.addEventListener('param', handleParam);
|
||||
window.addEventListener('enum', handleEnum);
|
||||
window.addEventListener('tempo', handleBpm);
|
||||
window.addEventListener('timesig', handleTimeSig);
|
||||
|
||||
return () => {
|
||||
window.removeEventListener('loadDict', handleLoad);
|
||||
@ -202,8 +217,10 @@ function MasterLfoHandler(){
|
||||
window.removeEventListener('tick', handleTick);
|
||||
window.removeEventListener('param', handleParam);
|
||||
window.removeEventListener('enum', handleEnum);
|
||||
window.removeEventListener('tempo', handleBpm);
|
||||
window.removeEventListener('timesig', handleTimeSig);
|
||||
};
|
||||
}, [...allModArrays, ...allEnumArrays, ...allEnumMats, modCenterVals, render]);
|
||||
}, [...allModArrays, ...allEnumArrays, ...allEnumMats, modCenterVals, render, bpm, beatsInMeasure]);
|
||||
|
||||
|
||||
|
||||
@ -224,8 +241,8 @@ function MasterLfoHandler(){
|
||||
setDjParam: CreateParamChanger(djParamArr, setDjParamArr, i),
|
||||
centerVals: modCenterVals,
|
||||
|
||||
freq: timeArr[i],
|
||||
setFreq: CreateParamChanger(timeArr, setTimeArr, i),
|
||||
freq: freqArr[i],
|
||||
setFreq: CreateParamChanger(freqArr, setFreqArr, i),
|
||||
|
||||
//amp: ampArr[i],
|
||||
//setAmp: CreateParamChanger(ampArr, setAmpArr, i),
|
||||
@ -388,6 +405,14 @@ if (!DEBUG){
|
||||
window.dispatchEvent(new CustomEvent('param', {'detail' : [paramName, val]}));
|
||||
});
|
||||
|
||||
window.max.bindInlet("tempo", (val) => {
|
||||
window.dispatchEvent(new CustomEvent('tempo', {'detail' : val}));
|
||||
});
|
||||
|
||||
window.max.bindInlet("timesig", (top, bottom) => {
|
||||
window.dispatchEvent(new CustomEvent('timesig', {'detail' : [top, bottom]}));
|
||||
});
|
||||
|
||||
setInterval(() => {
|
||||
window.dispatchEvent(new CustomEvent('tick'));
|
||||
}, 200);
|
||||
|
@ -56,7 +56,7 @@ function indexWave(type, phase){
|
||||
}
|
||||
}
|
||||
|
||||
function operateModulators(visibleArr, paramNames, centers, lfoTimes, mins, maxs, waveTypes, phaseArr, currTime){
|
||||
function operateModulators(visibleArr, paramNames, centers, freqs, mins, maxs, waveTypes, phaseArr, currTime, bpm, beatsInMeasure){
|
||||
for (let i=0; i<paramNames.length; i++){
|
||||
if (visibleArr[i]){
|
||||
let name = paramNames[i];
|
||||
@ -64,16 +64,16 @@ function operateModulators(visibleArr, paramNames, centers, lfoTimes, mins, maxs
|
||||
if (centers.hasOwnProperty(name)){
|
||||
center = centers[name];
|
||||
}
|
||||
let output = operateModulator(center, lfoTimes[i], mins[i], maxs[i], waveTypes[i], phaseArr, i, name, currTime);
|
||||
let output = operateModulator(center, freqs[i], mins[i], maxs[i], waveTypes[i], phaseArr, i, name, currTime, bpm, beatsInMeasure);
|
||||
if (name !== "NONE")
|
||||
window.dispatchEvent(new CustomEvent('enum', {'detail' : [name, output]}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function operateModulator(center, lfoTime, min, max, waveType, phaseArr, phaseI, name, currTime){
|
||||
function operateModulator(center, freq, min, max, waveType, phaseArr, phaseI, name, currTime, bpm, beatsInMeasure){
|
||||
let amp = parseFloat(max) - parseFloat(min);
|
||||
let freq = parseLfoTime(lfoTime);
|
||||
freq = parseLfoTime(freq, bpm, beatsInMeasure);
|
||||
let phase = (currTime * freq + parseFloat(phaseArr[phaseI])) % 1.00;
|
||||
let unscaled = indexWave(waveType, phase);
|
||||
let el = document.getElementById(`slider-${name}`);
|
||||
@ -84,9 +84,33 @@ function operateModulator(center, lfoTime, min, max, waveType, phaseArr, phaseI,
|
||||
return unscaled * amp + center + parseFloat(min);
|
||||
}
|
||||
|
||||
/* @param */
|
||||
function parseLfoTime(lfoTime){
|
||||
|
||||
function parseLfoTime(lfoTime, bpm, beatsInMeasure){
|
||||
if (lfoTime.slice(-2) == "hz"){
|
||||
return parseFloat(lfoTime.slice(0, -2));
|
||||
}
|
||||
}
|
||||
else if (lfoTime.slice(-2) == "ms"){
|
||||
return 1000 / parseFloat(lfoTime.slice(0, -2));
|
||||
}
|
||||
else if (lfoTime.slice(-1) == "s"){
|
||||
return 1 / parseFloat(lfoTime.slice(0, -1));
|
||||
}
|
||||
else if ((lfoTime.match(/:/g) || []).length == 2){
|
||||
return 1 / moment.duration(lfoTime).asSeconds();
|
||||
}
|
||||
else if ((lfoTime.match(/\./g) || []).length == 2){
|
||||
return musicalTimingToFreq(...lfoTime.split('.'), bpm, beatsInMeasure)
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function musicalTimingToFreq(bars, beats, ticks, bpm, beatsInMeasure){
|
||||
let totalTicks = (parseFloat(bars) * parseFloat(beatsInMeasure) + beats) * 480 + parseFloat(ticks);
|
||||
let tpm = bpm * 480;
|
||||
let cyclesPerMinute = tpm / totalTicks;
|
||||
let hz = cyclesPerMinute / 60;
|
||||
return hz;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user