Copy from Alexandre repository

This commit is contained in:
fls committed 2026-09-17 18:13:02 -03:00
commit 355594d3c8
102 files changed
+5948

No files matched your search

+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "addsound",
"language": "javascript",
"extension": "webaudio",
"help": "Add Sound",
"label": "Add Sound",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nMerger = function(context) {\n var that = this;\n this.x = 0; // Initial sample number\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nMerger.prototype.process = function(e) {\n var in0 = e.inputBuffer.getChannelData(0);\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i];\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\nvar block_$id$_obj = new Merger(context);\nvar $port[sound_input0]$ = block_$id$_obj.node;\nvar $port[sound_input1]$ = block_$id$_obj.node;\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input0",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input1",
"conn_type": "Input",
"label": "Input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "addsoundfloat",
"language": "javascript",
"extension": "webaudio",
"help": " Add Sound Float",
"label": "Add Sound Float",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nAddSoundFloat = function(context, float_value) {\n var that = this;\n this.float = float_value;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nAddSoundFloat.prototype.process = function(e) {\n var in0 = e.inputBuffer.getChannelData(0);\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] + this.float;\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\n\nvar block_$id$_float = 0;\nvar block_$id$_obj = new AddSoundFloat(context, block_$id$_float);\n\nvar $port[float_input]$ = function(value){\n block_$id$_float = parseFloat(value);\n block_$id$_obj.float = block_$id$_float;\n return true;\n };\n\n\nvar $port[sound_input]$ = block_$id$_obj.node;\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "float_input",
"conn_type": "Input",
"label": "Float Value"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+113
View File
@@ -0,0 +1,113 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "adsr",
"language": "javascript",
"extension": "webaudio",
"help": "ADSR",
"label": "ADSR",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nEnvelope = function(context, a, d, s, r, g) {\nthis.node = context.createGain()\nthis.context = context;\nthis.node.gain.value = 0;\nthis.a = a / 1000.0;\nthis.d = d / 1000.0;\nthis.s = s / 1000.0;\nthis.r = r / 1000.0;\nthis.g = g;\n}\n\nEnvelope.prototype.play = function(e) {\nvar time = this.context.currentTime;\n// Zero\nthis.node.gain.linearRampToValueAtTime(0, time);\n// Attack time\ntime += this.a;\nthis.node.gain.linearRampToValueAtTime(1, time);\n// Decay time\ntime += this.d;\nthis.node.gain.linearRampToValueAtTime(0.5, time);\n// Sustain time (do nothing)\ntime += this.s;\n// Release time\ntime += this.r;\nthis.node.gain.linearRampToValueAtTime(0, time);\n}\n\nEnvelope.prototype.seta = function(a) {\n this.a = parseFloat(a)/1000.0;\n}\n\nEnvelope.prototype.setd = function(d) {\n this.d = parseFloat(d)/1000.0;\n}\n\nEnvelope.prototype.sets = function(s) {\n this.s = parseFloat(s)/1000.0;\n}\n\nEnvelope.prototype.setr = function(r) {\n this.r = parseFloat(r)/1000.0;\n}\n\nEnvelope.prototype.setg = function(g) {\n this.g = parseFloat(g);\n}\n",
"declaration": "\n// block_$id$ = $label$\n\nvar block_$id$_obj = new Envelope(context, $prop[a]$, $prop[d]$, $prop[s]$, $prop[r]$, $prop[g]$);\nvar $port[input]$ = block_$id$_obj.node;\nvar $port[output]$ = block_$id$_obj.node;\n\nvar $port[a]$ = function(value){\n block_$id$_obj.seta(value);\n};\n\nvar $port[d]$ = function(value){\n block_$id$_obj.setd(value);\n};\n\nvar $port[s]$ = function(value){\n block_$id$_obj.sets(value);\n};\n\nvar $port[r]$ = function(value){\n block_$id$_obj.setr(value);\n};\n\nvar $port[g]$ = function(value){\n block_$id$_obj.setg(value);\n};\n\nvar $port[play]$ = function(value){\n if (value != 0) {\n block_$id$_obj.play();\n }\n};\n"
},
"properties": [
{
"name": "a",
"label": "Attack",
"type": "Float",
"lower": 0,
"upper": 10000,
"step": 1,
"value": 200
},
{
"name": "d",
"label": "Decay",
"type": "Float",
"lower": 0,
"upper": 10000,
"step": 1,
"value": 20
},
{
"name": "s",
"label": "Sustain",
"type": "Float",
"lower": 0,
"upper": 10000,
"step": 1,
"value": 100
},
{
"name": "r",
"label": "Release",
"type": "Float",
"lower": 0,
"upper": 10000,
"step": 1,
"value": 50
},
{
"name": "g",
"label": "Gain",
"type": "Float",
"lower": 0,
"upper": 10000,
"step": 1,
"value": 0.8
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Input",
"conn_type": "Input",
"name": "input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Attack",
"conn_type": "Input",
"name": "a"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Decay",
"conn_type": "Input",
"name": "d"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Sustain",
"conn_type": "Input",
"name": "s"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Release",
"conn_type": "Input",
"name": "r"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Gain",
"conn_type": "Input",
"name": "g"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"conn_type": "Input",
"label": "Event Play",
"name": "play"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Output",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "channelmerger",
"language": "javascript",
"extension": "webaudio",
"help": "Channel Merger",
"label": "Channel Merger",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nMerger = function(context) {\n var that = this;\n this.x = 0; // Initial sample number\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nMerger.prototype.process = function(e) {\n var in1 = e.inputBuffer.getChannelData(0);\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in1.length; ++i) {\n out[i] = in1[i];\n }\n}\n",
"declaration": "\n// block_$id$ = Channel Merger\nvar block_$id$_obj = new Merger(context);\nvar $port[sound_output]$ = block_$id$_obj.node;\nvar $port[sound_input_1]$ = block_$id$_obj.node;\nvar $port[sound_input_2]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound Input 1",
"conn_type": "Input",
"name": "sound_input_1"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"conn_type": "Input",
"label": "Sound Input 2",
"name": "sound_input_2"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound Output",
"conn_type": "Output",
"name": "sound_output"
}
]
}
+40
View File
@@ -0,0 +1,40 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "delay",
"language": "javascript",
"extension": "webaudio",
"help": "Delay",
"label": "Delay",
"color": "150:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\n// block_$id$ = Delay\nvar block_$id$ = context.createDelay();\nblock_$id$.delayTime.value = $prop[time]$;\nvar $port[input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\n"
},
"properties": [
{
"name": "time",
"label": "Time",
"type": "Float",
"lower": 0,
"upper": 10000,
"step": 1,
"value": 1
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Input",
"conn_type": "Input",
"name": "input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Output",
"conn_type": "Output",
"name": "output"
}
]
}
+38
View File
@@ -0,0 +1,38 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "distortion",
"language": "javascript",
"extension": "webaudio",
"help": "Distortion",
"label": "Distortion",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\nvar block_$id$ = context.createWaveShaper();\nblock_$id$.curve = makeDistortionCurve($prop[curve]$);\nblock_$id$.oversample = '4x';\nvar $port[input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\n",
"function": "\nfunction makeDistortionCurve(amount) {\n var k = typeof amount === 'number' ? amount : 50,\n n_samples = 44100,\n curve = new Float32Array(n_samples),\n deg = Math.PI / 180,\n i = 0,\n x;\n for ( ; i < n_samples; ++i ) {\n x = i * 2 / n_samples - 1;\n curve[i] = ( 3 + k ) * x * 20 * deg / ( Math.PI + k * Math.abs(x) );\n }\n return curve;\n};\n"
},
"properties": [
{
"name": "curve",
"label": "Curve",
"type": "Float",
"value": 800
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Input",
"conn_type": "Input",
"name": "input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Output",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "divsound",
"language": "javascript",
"extension": "webaudio",
"help": "Div Sound",
"label": "Div Sound",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nDivSound = function(context, analyzer0, analyzer1) {\n var that = this;\n this.analyzer0 = analyzer0;\n this.analyzer1 = analyzer1;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) {that.process(e)};\n}\n\nDivSound.prototype.process = function(e) {\n var in0 = new Float32Array(this.analyzer0.fftSize);\n var in1 = new Float32Array(this.analyzer1.fftSize);\n\n this.analyzer0.getFloatTimeDomainData(in0);\n this.analyzer1.getFloatTimeDomainData(in1);\n\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] / in1[i];\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\nvar block_$id$_in0 = context.createAnalyser();\nvar block_$id$_in1 = context.createAnalyser();\n\nvar $port[sound_input0]$ = block_$id$_in0;\nvar $port[sound_input1]$ = block_$id$_in1;\nvar block_$id$_obj = new DivSound(context, block_$id$_in0, block_$id$_in1);\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input0",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input1",
"conn_type": "Input",
"label": "Input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "divsoundfloat",
"language": "javascript",
"extension": "webaudio",
"help": " Div Sound Float",
"label": "Div Sound Float",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nDivSoundFloat = function(context, float_value) {\n var that = this;\n this.float = float_value;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nDivSoundFloat.prototype.process = function(e) {\n var in0 = e.inputBuffer.getChannelData(0);\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] / this.float;\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\n\nvar block_$id$_float = 1;\nvar block_$id$_obj = new DivSoundFloat(context, block_$id$_float);\n\nvar $port[float_input]$ = function(value){\n block_$id$_float = parseFloat(value);\n block_$id$_obj.float = block_$id$_float;\n return true;\n };\n\nvar $port[sound_input]$ = block_$id$_obj.node;\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "float_input",
"conn_type": "Input",
"label": "Float Value"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+98
View File
@@ -0,0 +1,98 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "filter",
"language": "javascript",
"extension": "webaudio",
"help": "Filter",
"label": "Filter",
"color": "50:150:50:150",
"group": "Sound",
"codes": {
"declaration": "\n\n// block_$id$ = $label$\nvar block_$id$ = context.createBiquadFilter();\nvar $port[osc_freq]$ = block_$id$.frequency;\nblock_$id$.type = '$prop[type]$';\nblock_$id$.frequency.value = '$prop[freq]$';\nblock_$id$.gain.value = $prop[gain]$;\nblock_$id$.Q.value = $prop[Q]$;\n\nvar $port[freq]$ = function(value){\n block_$id$.frequency.value = parseFloat(value);\n return true;\n };\n\nvar $port[q]$ = function(value){\n block_$id$.Q.value = parseFloat(value);\n return true;\n };\n\nvar $port[gain]$ = function(value){\n block_$id$.gain.value = parseFloat(value);\n return true;\n };\n\nvar $port[sound_input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\n"
},
"properties": [
{
"name": "type",
"label": "Type",
"type": "Combo",
"values": [
"allpass",
"bandpass",
"highshelf",
"highpass",
"lowpass",
"lowshelf",
"notch",
"peaking"
],
"value": "highpass"
},
{
"name": "freq",
"label": "Frequency",
"type": "Float",
"lower": 0,
"upper": 48000,
"step": 1,
"value": 200
},
{
"name": "gain",
"label": "Gain",
"type": "Float",
"lower": 0,
"upper": 100,
"step": 0.1,
"value": 1
},
{
"name": "Q",
"label": "Q",
"type": "Float",
"lower": 0,
"upper": 48000,
"step": 1,
"value": 200
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Frequency",
"conn_type": "Input",
"name": "osc_freq"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "freq",
"conn_type": "Input",
"label": "Frequency"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "gain",
"conn_type": "Input",
"label": "Gain"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "q",
"conn_type": "Input",
"label": "Q"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+52
View File
@@ -0,0 +1,52 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "gain",
"language": "javascript",
"extension": "webaudio",
"help": "Sound output",
"label": "Gain",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\n// block_$id$ = $label$\nvar block_$id$ = context.createGain();\nvar $port[input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\nvar $port[gain]$ = block_$id$.gain;\nvar $port[gain_value]$ = function(value){\n block_$id$.gain.value = value;\n };\n",
"execution": "block_$id$.gain.value = $prop[gain]$;\n"
},
"properties": [
{
"name": "gain",
"label": "Gain",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 1
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Input",
"conn_type": "Input",
"name": "input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Gain",
"conn_type": "Input",
"name": "gain"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"conn_type": "Input",
"label": "Gain Value",
"name": "gain_value"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "output",
"conn_type": "Output",
"label": "Output"
}
]
}
+120
View File
@@ -0,0 +1,120 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "hrtf",
"language": "javascript",
"extension": "webaudio",
"help": "HRTF",
"label": "HRTF",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\n// block_$id$ = $label$\nvar block_$id$_width = window.innerWidth;\nvar block_$id$_height = window.innerHeight;\nvar block_$id$_xPos = Math.floor(block_$id$_width/2);\nvar block_$id$_yPos = Math.floor(block_$id$_height/2);\nvar block_$id$_zPos = 295;\nvar block_$id$ = context.createPanner();\n\nblock_$id$.panningModel = 'HRTF';\nblock_$id$.distanceModel = \"$prop[distance_model]$\";\nblock_$id$.refDistance = $prop[ref_distance]$;\nblock_$id$.maxDistance = $prop[max_distance]$;\nblock_$id$.rolloffFactor = $prop[rolloff_factor]$;\nblock_$id$.coneInnerAngle = $prop[cone_inner_angle]$;\nblock_$id$.coneOuterAngle = $prop[cone_outer_angle]$;\nblock_$id$.coneOuterGain = $prop[cone_outer_gain]$;\n\nvar block_$id$_panner_pos = [0, 0, 0];\nvar block_$id$_listener_pos = [0, 0, 0];\nvar block_$id$_panner_orientation = [0, 0, 0];\nvar block_$id$_listener_forward = [0, 0, 0];\nvar block_$id$_listener_up = [0, 0, 0];\n\n\nvar $port[panner_pos]$ = function(value){\n block_$id$_panner_pos = value;\n block_$id$.setPosition(value[0],\n value[1],\n value[2]);\n return true;\n};\nvar $port[listener_pos]$ = function(value){\n block_$id$_listener_pos = value;\n context.listener.setPosition(value[0],\n value[1],\n value[2]);\n return true;\n};\nvar $port[panner_orientation]$ = function(value){\n block_$id$_panner_orientation = value;\n block_$id$.setOrientation(value[0],\n value[1],\n value[2]);\n return true;\n};\nvar $port[listener_forward]$ = function(value){\n block_$id$_listener_forward = value;\n context.listener.setOrientation(value[0],\n value[1],\n value[2],\n block_$id$_listener_up[0],\n block_$id$_listener_up[1],\n block_$id$_listener_up[2]);\n return true;\n};\n\nvar $port[listener_up]$ = function(value){\n block_$id$_listener_up = value;\n context.listener.setOrientation(block_$id$_listener_forward[0],\n block_$id$_listener_forward[1],\n block_$id$_listener_forward[2],\n value[0],\n value[1],\n value[2]);\n return true;\n};\n\nvar $port[sound_input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\n"
},
"properties": [
{
"name": "distance_model",
"label": "Distance Model",
"type": "Combo",
"values": [
"linear",
"inverse",
"exponential"
],
"value": "inverse"
},
{
"name": "cone_inner_angle",
"label": "coneInnerAngle",
"type": "Float",
"lower": 0,
"upper": 360,
"value": 360
},
{
"name": "cone_outer_angle",
"label": "Cone Outer Angle",
"type": "Float",
"lower": 0,
"upper": 360,
"value": 0
},
{
"name": "cone_outer_gain",
"label": "Cone Outer Gain",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 0
},
{
"name": "ref_distance",
"label": "Ref Distance",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 1
},
{
"name": "max_distance",
"label": "Max Distance",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 10000
},
{
"name": "rolloff_factor",
"label": "Rolloff Factor",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 1
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.point",
"name": "panner_pos",
"conn_type": "Input",
"label": "Panner Position"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.point",
"name": "listener_pos",
"conn_type": "Input",
"label": "Listener Position"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.point",
"name": "panner_orientation",
"conn_type": "Input",
"label": "Panner Orientation"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.point",
"name": "listener_forward",
"conn_type": "Input",
"label": "Listener Forward"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.point",
"name": "listener_up",
"conn_type": "Input",
"label": "Listener Up"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "mulsound",
"language": "javascript",
"extension": "webaudio",
"help": "Mul Sound",
"label": "Mul Sound",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nMulSound = function(context, analyzer0, analyzer1) {\n var that = this;\n this.analyzer0 = analyzer0;\n this.analyzer1 = analyzer1;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) {that.process(e)};\n}\n\nMulSound.prototype.process = function(e) {\n var in0 = new Float32Array(this.analyzer0.fftSize);\n var in1 = new Float32Array(this.analyzer1.fftSize);\n\n this.analyzer0.getFloatTimeDomainData(in0);\n this.analyzer1.getFloatTimeDomainData(in1);\n\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] * in1[i];\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\nvar block_$id$_in0 = context.createAnalyser();\nvar block_$id$_in1 = context.createAnalyser();\n\nvar $port[sound_input0]$ = block_$id$_in0;\nvar $port[sound_input1]$ = block_$id$_in1;\nvar block_$id$_obj = new MulSound(context, block_$id$_in0, block_$id$_in1);\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input0",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input1",
"conn_type": "Input",
"label": "Input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "mulsoundfloat",
"language": "javascript",
"extension": "webaudio",
"help": " Mul Sound Float",
"label": "Mul Sound Float",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nMulSoundFloat = function(context, float_value) {\n var that = this;\n this.float = float_value;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nMulSoundFloat.prototype.process = function(e) {\n var in0 = e.inputBuffer.getChannelData(0);\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] * this.float;\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\n\nvar block_$id$_float = 1;\nvar block_$id$_obj = new MulSoundFloat(context, block_$id$_float);\n\nvar $port[float_input]$ = function(value){\n block_$id$_float = parseFloat(value);\n block_$id$_obj.float = block_$id$_float;\n return true;\n };\n\nvar $port[sound_input]$ = block_$id$_obj.node;\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "float_input",
"conn_type": "Input",
"label": "Float Value"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+65
View File
@@ -0,0 +1,65 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "oscillator",
"language": "javascript",
"extension": "webaudio",
"help": "Sound output",
"label": "Oscillator",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\n// block_$id$ = Oscillator\nvar block_$id$ = context.createOscillator();\nvar $port[osc_freq]$ = block_$id$.frequency;\nvar $port[sound]$ = block_$id$;\nvar $port[freq]$ = function(value){\n block_$id$.frequency.value = value;\n};\n\nvar $port[type]$ = function(value){\n oscillator = ''\n if (value < 1) oscillator = 'square';\n if (value == 1) oscillator = 'sine';\n if (value == 2) oscillator = 'sawtooth';\n if (value > 2) oscillator = 'triangle';\n block_$id$.type = oscillator;\n};\n",
"execution": "\nblock_$id$.type = '$prop[type]$';\nblock_$id$.frequency.value = $prop[freq]$; // value in hertz\nblock_$id$.detune.value = 100; // value in cents\nblock_$id$.start(0);\n"
},
"properties": [
{
"name": "freq",
"label": "Frequency",
"type": "Float",
"lower": 0,
"upper": 20000,
"step": 1,
"value": 440
},
{
"name": "type",
"label": "Type",
"type": "Combo",
"values": [
"square",
"sine",
"sawtooth",
"triangle"
],
"value": "sine"
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Osc Frequency",
"conn_type": "Input",
"name": "osc_freq"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"conn_type": "Input",
"label": "Frequency",
"name": "freq"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"conn_type": "Input",
"name": "type",
"label": "Type"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound",
"conn_type": "Output",
"label": "Sound"
}
]
}
+40
View File
@@ -0,0 +1,40 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "playback",
"language": "javascript",
"extension": "webaudio",
"help": "Playback",
"label": "Playback",
"color": "150:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\nvar block_$id$ = context.createBufferSource();\nvar $port[output]$ = block_$id$;\n",
"html": "\n$prop[label]$ <input type=\"file\" id=\"pb_$id$\" onchange=\"handleFile_$id$(this.files)\">\n",
"execution": "\nfunction handleFile_$id$() {\n var input_pb_$id$ = document.getElementById(\"pb_$id$\");\n input_pb_$id$.addEventListener(\"change\", handleFile_$id$, false);\n\n var reader = new FileReader();\n reader.onload = function(ev) {\n context.decodeAudioData(ev.target.result, function(buffer) {\n block_$id$.buffer = buffer;\n block_$id$.loop = (\"$prop[loop]$\" == \"True\");\n });\n };\n reader.readAsArrayBuffer(input_pb_$id$.files[0]);\n $port[output]$.start();\n}\n",
"onload": ""
},
"properties": [
{
"name": "loop",
"label": "Loop",
"type": "Check",
"value": "True"
},
{
"name": "label",
"label": "Label",
"type": "String",
"value": "Playback"
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Output",
"conn_type": "Output",
"name": "output"
}
]
}
+24
View File
@@ -0,0 +1,24 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "speaker",
"language": "javascript",
"extension": "webaudio",
"help": "Sound output",
"label": "Speaker",
"color": "150:150:250:150",
"group": "Sound",
"codes": {
"declaration": "\n// block_$id$ = $label$\nvar $port[sound]$ = context.destination;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Input",
"name": "sound"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "subsound",
"language": "javascript",
"extension": "webaudio",
"help": "Sub Sound",
"label": "Sub Sound",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nSubSound = function(context, analyzer0, analyzer1) {\n var that = this;\n this.analyzer0 = analyzer0;\n this.analyzer1 = analyzer1;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) {that.process(e)};\n}\n\nSubSound.prototype.process = function(e) {\n var in0 = new Float32Array(this.analyzer0.fftSize);\n var in1 = new Float32Array(this.analyzer1.fftSize);\n\n this.analyzer0.getFloatTimeDomainData(in0);\n this.analyzer1.getFloatTimeDomainData(in1);\n\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] - in1[i];\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\nvar block_$id$_in0 = context.createAnalyser();\nvar block_$id$_in1 = context.createAnalyser();\n\nvar $port[sound_input0]$ = block_$id$_in0;\nvar $port[sound_input1]$ = block_$id$_in1;\nvar block_$id$_obj = new SubSound(context, block_$id$_in0, block_$id$_in1);\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input0",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input1",
"conn_type": "Input",
"label": "Input"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "subsoundfloat",
"language": "javascript",
"extension": "webaudio",
"help": " Sub Sound Float",
"label": "Sub Sound Float",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nSubSoundFloat = function(context, float_value) {\n var that = this;\n this.float = float_value;\n this.context = context;\n this.node = context.createScriptProcessor(1024, 1, 1);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nSubSoundFloat.prototype.process = function(e) {\n var in0 = e.inputBuffer.getChannelData(0);\n var out = e.outputBuffer.getChannelData(0);\n for (var i = 0; i < in0.length; ++i) {\n out[i] = in0[i] - this.float;\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\n\nvar block_$id$_float = 0;\nvar block_$id$_obj = new SubSoundFloat(context, block_$id$_float);\n\nvar $port[float_input]$ = function(value){\n block_$id$_float = parseFloat(value);\n block_$id$_obj.float = block_$id$_float;\n return true;\n };\n\nvar $port[sound_input]$ = block_$id$_obj.node;\nvar $port[output]$ = block_$id$_obj.node;\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"name": "sound_input",
"conn_type": "Input",
"label": "Sound"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"name": "float_input",
"conn_type": "Input",
"label": "Float Value"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "output"
}
]
}
+25
View File
@@ -0,0 +1,25 @@
{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "whitenoise",
"language": "javascript",
"extension": "webaudio",
"help": "White Noise",
"label": "White Noise",
"color": "50:150:250:150",
"group": "Sound",
"codes": {
"function": "\nWhiteNoise = function(context) {\n var that = this;\n this.x = 0; // Initial sample number\n this.context = context;\n this.node = context.createScriptProcessor(1024, 0, 2);\n this.node.onaudioprocess = function(e) { that.process(e) };\n}\n\nWhiteNoise.prototype.process = function(e) {\n var data_l = e.outputBuffer.getChannelData(0);\n var data_r = e.outputBuffer.getChannelData(1);\n for (var i = 0; i < data_l.length; ++i) {\n// data[i] = Math.sin(this.x++);\n data_l[i] = (Math.random() * 2) - 1;\n data_r[i] = (Math.random() * 2) - 1;\n }\n}\n",
"declaration": "\n// block_$id$ = $label$\nvar block_$id$ = new WhiteNoise(context);\n$port[sound]$ = block_$id$.node;\n\n"
},
"properties": [],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound",
"label": "Sound",
"conn_type": "Output",
"name": "sound"
}
]
}