musicw 0.3.5 → 0.3.5.1
raw patch · 2 files changed
+104/−51 lines, 2 files
Files
- musicw.cabal +1/−1
- src/Sound/MusicW/Worklets.hs +103/−50
musicw.cabal view
@@ -1,5 +1,5 @@ name: musicw-version: 0.3.5+version: 0.3.5.1 synopsis: Sound synthesis library, to be used with GHCJS and Web Audio API description: A library for sound synthesis, currently targeting GHCJS and the Web Audio API. Used in the Inner Ear and Estuary projects. homepage: https://github.com/dktr0/musicw/blob/master/README.md
src/Sound/MusicW/Worklets.hs view
@@ -151,8 +151,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input1[0][i] == input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0;i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input1[0][i] == input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ }\ \ }\ \ return true;\ \ }\@@ -170,8 +172,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input1[0][i] != input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0;i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input1[0][i] != input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ }\ \ }\ \ return true;\ \ }\@@ -189,8 +193,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input1[0][i] > input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0;i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input1[0][i] > input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ }\ \ }\ \ return true;\ \ }\@@ -208,8 +214,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input1[0][i] >= input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0;i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input1[0][i] >= input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ }\ \ }\ \ return true;\ \ }\@@ -227,8 +235,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input1[0][i] < input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0;i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input1[0][i] < input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ }\ \ }\ \ return true;\ \ }\@@ -246,8 +256,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input1[0][i] <= input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0;i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input1[0][i] <= input2[0][i]) output[0][i] = 1; else output[0][i] = 0;\+\ }\ \ }\ \ return true;\ \ }\@@ -260,8 +272,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = 440 * (2 ** ((input[0][i]-69)/12));\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = 440 * (2 ** ((input[0][i]-69)/12));\+\ }\ \ }\ \ return true;\ \ }\@@ -274,8 +288,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = 69 + (12 * (Math.log2(input[0][i]/440)));\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = 69 + (12 * (Math.log2(input[0][i]/440)));\+\ }\ \ }\ \ return true;\ \ }\@@ -288,8 +304,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = 10 ** (input[0][i]/20);\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = 10 ** (input[0][i]/20);\+\ }\ \ }\ \ return true;\ \ }\@@ -302,8 +320,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = 20 * Math.log10(input[0][i]);\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = 20 * Math.log10(input[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -316,8 +336,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = Math.abs(input[0][i]);\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = Math.abs(input[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -330,8 +352,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = Math.sqrt(input[0][i]);\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = Math.sqrt(input[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -345,9 +369,11 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ if(input2[0][i] == 0) output[0][i] = 0;\-\ else output[0][i] = input1[0][i] / input2[0][i];\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ if(input2[0][i] == 0) output[0][i] = 0;\+\ else output[0][i] = input1[0][i] / input2[0][i];\+\ }\ \ }\ \ return true;\ \ }\@@ -361,8 +387,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ output[0][i] = input1[0][i] / input2[0][i];\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ output[0][i] = input1[0][i] / input2[0][i];\+\ }\ \ }\ \ return true;\ \ }\@@ -376,8 +404,10 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ output[0][i] = Math.pow(input1[0][i],input2[0][i]);\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ output[0][i] = Math.pow(input1[0][i],input2[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -390,8 +420,10 @@ \ process(inputs,outputs,parameters) {\ \ const input1 = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ output[0][i] = Math.floor(input1[0][i]);\+\ if(input1[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ output[0][i] = Math.floor(input1[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -404,8 +436,10 @@ \ process(inputs,outputs,parameters) {\ \ const input1 = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < input1[0].length; i++) {\-\ output[0][i] = input1[0][i] % 1;\+\ if(input1[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input1[0].length; i++) {\+\ output[0][i] = input1[0][i] % 1;\+\ }\ \ }\ \ return true;\ \ }\@@ -420,8 +454,10 @@ \ const max = inputs[1];\ \ const input = inputs[2];\ \ const output = outputs[0];\-\ for(let i = 0; i < input[0].length; i++) {\-\ output[0][i] = Math.min(Math.max(input[0][i], min[0][i]), max[0][i]);\+\ if(min[0] === undefined || max[0] === undefined || input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < input[0].length; i++) {\+\ output[0][i] = Math.min(Math.max(input[0][i], min[0][i]), max[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -435,8 +471,10 @@ \ const in1 = inputs[0];\ \ const in2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < in1[0].length; i++) {\-\ output[0][i] = Math.max(in1[0][i],in2[0][i]);\+\ if(in1[0] === undefined || in2[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < in1[0].length; i++) {\+\ output[0][i] = Math.max(in1[0][i],in2[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -450,8 +488,10 @@ \ const in1 = inputs[0];\ \ const in2 = inputs[1];\ \ const output = outputs[0];\-\ for(let i = 0; i < in1[0].length; i++) {\-\ output[0][i] = Math.min(in1[0][i],in2[0][i]);\+\ if(in1[0] === undefined || in2[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < in1[0].length; i++) {\+\ output[0][i] = Math.min(in1[0][i],in2[0][i]);\+\ }\ \ }\ \ return true;\ \ }\@@ -479,8 +519,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < output[0].length; i++) {\-\ output[0][i] = (input[0][i] >= 0) ? 1 : -1;\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < output[0].length; i++) {\+\ output[0][i] = (input[0][i] >= 0) ? 1 : -1;\+\ }\ \ }\ \ return true;\ \ }\@@ -494,8 +536,10 @@ \ process(inputs,outputs,parameters) {\ \ const input = inputs[0];\ \ const output = outputs[0];\-\ for(let i = 0; i < output[0].length; i++) {\-\ output[0][i] = Math.abs(Math.asin(input[0][i]))*this.MULT-1;\+\ if(input[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ for(let i = 0; i < output[0].length; i++) {\+\ output[0][i] = Math.abs(Math.asin(input[0][i]))*this.MULT-1;\+\ }\ \ }\ \ return true;\ \ }\@@ -509,10 +553,12 @@ \ const input1 = inputs[0];\ \ const input2 = inputs[1];\ \ const output = outputs[0];\-\ var a;\-\ for(let i = 0; i < output[0].length; i++) {\-\ a = Math.abs(Math.asin(input1[0][i]))*this.MULT;\-\ output[0][i] = (input2[0][i] >= 0) ? (a-1) : (1-a);\+\ if(input1[0] === undefined || input2[0] === undefined){for(let i=0; i<output[0].length;i++)output[0][i]=0;}else{\+\ var a;\+\ for(let i = 0; i < output[0].length; i++) {\+\ a = Math.abs(Math.asin(input1[0][i]))*this.MULT;\+\ output[0][i] = (input2[0][i] >= 0) ? (a-1) : (1-a);\+\ }\ \ }\ \ return true;\ \ }\@@ -525,8 +571,15 @@ \ process(inputs,outputs,parameters) {\ \ const output = outputs[0];\ \ if(inputs.length < 2) { for(let i = 0; i < output[0].length; i++) output[0][i] = 0;}\-\ else if(inputs.length == 2) { for(let i = 0; i < output[0].length; i++) output[0][i] = inputs[1][i];}\+\ else if(inputs[0][0] === undefined || inputs[1][0] === undefined) { for(let i = 0; i < output[0].length; i++) output[0][i] = 0;}\+\ else if(inputs.length == 2) { for(let i = 0; i < output[0].length; i++) output[0][i] = inputs[1][0][i];}\ \ else {\+\ for(let n = 2; n < inputs.length; n++){\+\ if(inputs[n][0] === undefined){\+\ for(let i = 0; i < output[0].length; i++) output[0][i] = 0;\+\ return true;\+\ }\+\ }\ \ var a,n = inputs.length - 1;\ \ for(let i = 0; i < output[0].length; i++) {\ \ a = inputs[0][0][i] * 0.5 + 0.5;\