Copiando o repositório do Alexandre
This commit is contained in:
1 parent
a3e604697b
commit
0ab8836265
363 files changed
+27249
No files matched your search
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.adsr",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "ADSR",
|
||||
"label": "ADSR",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "input",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "a",
|
||||
"label": "Attack",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "d",
|
||||
"label": "Decay",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "s",
|
||||
"label": "Sustain",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "r",
|
||||
"label": "Release",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "g",
|
||||
"label": "Gain",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "play",
|
||||
"label": "Event Play",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Output",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.addsoundfloat",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": " Add Sound Float",
|
||||
"label": "Add Sound Float",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "float_input",
|
||||
"label": "Float Value",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.addsound",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Add Sound",
|
||||
"label": "Add Sound",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input0",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input1",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.channelmerger",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Channel Merger",
|
||||
"label": "Channel Merger",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input_1",
|
||||
"label": "Sound Input 1",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input_2",
|
||||
"label": "Sound Input 2",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "sound_output",
|
||||
"label": "Sound Output",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.delay",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Delay",
|
||||
"label": "Delay",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "input",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Output",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.distortion",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Distortion",
|
||||
"label": "Distortion",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "input",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Output",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.divsoundfloat",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": " Div Sound Float",
|
||||
"label": "Div Sound Float",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "float_input",
|
||||
"label": "Float Value",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.divsound",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Div Sound",
|
||||
"label": "Div Sound",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input0",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input1",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.filter",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "",
|
||||
"label": "Filter",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "osc_freq",
|
||||
"label": "Frequency",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "freq",
|
||||
"label": "Frequency",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "gain",
|
||||
"label": "Gain",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "q",
|
||||
"label": "Q",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.gain",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Sound output",
|
||||
"label": "Gain",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "execution",
|
||||
"code": "block_$id$.gain.value = $prop[gain]$;\n"
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"name": "gain",
|
||||
"label": "Gain",
|
||||
"type": "Float",
|
||||
"lower": 0,
|
||||
"upper": 32000,
|
||||
"value": 1
|
||||
}
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "input",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "gain",
|
||||
"label": "Gain",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "gain_value",
|
||||
"label": "Gain Value",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Output",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.hrtf",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "HRTF",
|
||||
"label": "HRTF",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "panner_pos",
|
||||
"label": "Panner Position",
|
||||
"type": "javascript.point"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "listener_pos",
|
||||
"label": "Listener Position",
|
||||
"type": "javascript.point"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "panner_orientation",
|
||||
"label": "Panner Orientation",
|
||||
"type": "javascript.point"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "listener_forward",
|
||||
"label": "Listener Forward",
|
||||
"type": "javascript.point"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "listener_up",
|
||||
"label": "Listener Up",
|
||||
"type": "javascript.point"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.mulsoundfloat",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": " Mul Sound Float",
|
||||
"label": "Mul Sound Float",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "float_input",
|
||||
"label": "Float Value",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.mulsound",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Mul Sound",
|
||||
"label": "Mul Sound",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input0",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input1",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.oscillator",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Sound output",
|
||||
"label": "Oscillator",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "execution",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "osc_freq",
|
||||
"label": "Osc Frequency",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "freq",
|
||||
"label": "Frequency",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "type",
|
||||
"label": "Type",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "sound",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.playback",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Playback",
|
||||
"label": "Playback",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\nvar block_$id$ = context.createBufferSource();\nvar $port[output]$ = block_$id$;\n"
|
||||
},
|
||||
{
|
||||
"name": "html",
|
||||
"code": "\n$prop[label]$ <input type=\"file\" id=\"pb_$id$\" onchange=\"handleFile_$id$(this.files)\">\n"
|
||||
},
|
||||
{
|
||||
"name": "execution",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "onload",
|
||||
"code": ""
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"name": "loop",
|
||||
"label": "Loop",
|
||||
"type": "Check",
|
||||
"value": "True"
|
||||
},
|
||||
{
|
||||
"name": "label",
|
||||
"label": "Label",
|
||||
"type": "String",
|
||||
"value": "Playback"
|
||||
}
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Output",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.speaker",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Sound output",
|
||||
"label": "Speaker",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\n// block_$id$ = $label$\nvar $port[sound]$ = context.destination;\n"
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"ports": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.subsoundfloat",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": " Sub Sound Float",
|
||||
"label": "Sub Sound Float",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "float_input",
|
||||
"label": "Float Value",
|
||||
"type": "javascript.float"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.subsound",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "Sub Sound",
|
||||
"label": "Sub Sound",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\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": [
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input0",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "input",
|
||||
"name": "sound_input1",
|
||||
"label": "Input",
|
||||
"type": "javascript.sound"
|
||||
},
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "output",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"source": "JSON",
|
||||
"data": "BLOCK",
|
||||
"version": "0.0.1",
|
||||
"type": "javascript.whitenoise",
|
||||
"language": "javascript",
|
||||
"extension": "webaudio",
|
||||
"help": "White Noise",
|
||||
"label": "White Noise",
|
||||
"color": "#D3C124",
|
||||
"group": "Sound",
|
||||
"codes": [
|
||||
{
|
||||
"name": "function",
|
||||
"code": "\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"
|
||||
},
|
||||
{
|
||||
"name": "declaration",
|
||||
"code": "\n// block_$id$ = $label$\nvar block_$id$ = new WhiteNoise(context);\n$port[sound]$ = block_$id$.node;\n\n"
|
||||
}
|
||||
],
|
||||
"properties": [],
|
||||
"ports": [
|
||||
{
|
||||
"conn_type": "output",
|
||||
"name": "sound",
|
||||
"label": "Sound",
|
||||
"type": "javascript.sound"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user