gen-rack

Create VCV Rack modules from gen~ exports
Log | Files | Refs | README | LICENSE

commit 78637606f64fd4f9fad4e748d5df175493f57295
parent 8476c1ed170623d453b4fecc082d26b44e3b1ddb
Author: Isabel Kaspriskie <ikaspriskie@gmail.com>
Date:   Wed,  5 May 2021 21:40:43 -0500

First steps at templating through scripting

Diffstat:
Agen/projects/example/exporter.maxpat | 752+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agen/projects/example/gen-rack.js | 33+++++++++++++++++++++++++++++++++
Rgen/projects/example/helper.js -> gen/projects/example/path-helper.js | 0
Dgen/projects/example/starter.maxpat | 647-------------------------------------------------------------------------------
Dgen/projects/gigaverb/gigaverb.js | 0
Dgen/projects/gigaverb/gigaverb.maxpat | 4662-------------------------------------------------------------------------------
Msrc/gigaverb.cpp | 39++++++++++++++++++++-------------------
Asrc/module.in | 317+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 files changed, 1122 insertions(+), 5328 deletions(-)

diff --git a/gen/projects/example/exporter.maxpat b/gen/projects/example/exporter.maxpat @@ -0,0 +1,752 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 1, + "revision" : 10, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 564.0, 471.0, 885.0, 491.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "assistshowspatchername" : 0, + "boxes" : [ { + "box" : { + "id" : "obj-16", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 288.0, 127.0, 93.0, 22.0 ], + "text" : "build myModule" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 288.0, 101.0, 101.0, 22.0 ], + "text" : "create myModule" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 249.0, 62.0, 64.0, 22.0 ], + "text" : "script start" + } + + } +, { + "box" : { + "bgmode" : 0, + "border" : 0, + "clickthrough" : 0, + "enablehscroll" : 0, + "enablevscroll" : 0, + "id" : "obj-3", + "lockeddragscroll" : 0, + "maxclass" : "bpatcher", + "name" : "n4m.monitor.maxpat", + "numinlets" : 1, + "numoutlets" : 1, + "offset" : [ 0.0, 0.0 ], + "outlettype" : [ "bang" ], + "patching_rect" : [ 431.0, 204.0, 400.0, 220.0 ], + "viewvisibility" : 1 + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "" ], + "patching_rect" : [ 249.0, 173.0, 201.0, 22.0 ], + "saved_object_attributes" : { + "autostart" : 1, + "defer" : 0, + "node_bin_path" : "", + "npm_bin_path" : "", + "watch" : 0 + } +, + "text" : "node.script gen-rack.js @autostart 1" + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-10", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 120.0, 264.0, 139.0, 24.0 ], + "text" : "Build gen code here" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 31.5, 86.0, 72.0, 22.0 ], + "text" : "prepend set" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 31.5, 55.0, 110.0, 22.0 ], + "text" : "loadmess gen-rack" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 107.5, 214.5, 68.0, 22.0 ], + "text" : "exportcode" + } + + } +, { + "box" : { + "id" : "obj-27", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 1, + "revision" : 10, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 1079.0, 348.0, 302.0, 412.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "assistshowspatchername" : 0, + "boxes" : [ { + "box" : { + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 112.0, 92.0, 22.0, 22.0 ], + "text" : "t b" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 112.0, 123.0, 32.0, 22.0 ], + "text" : "path" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "" ], + "patching_rect" : [ 112.0, 152.0, 67.0, 22.0 ], + "save" : [ "#N", "thispatcher", ";", "#Q", "end", ";" ], + "text" : "thispatcher" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 72.0, 296.0, 119.0, 22.0 ], + "text" : "prepend exportfolder" + } + + } +, { + "box" : { + "id" : "obj-21", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 26.0, 263.0, 119.0, 22.0 ], + "text" : "prepend exportname" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 26.0, 156.0, 57.0, 22.0 ], + "text" : "tosymbol" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "", "" ], + "patching_rect" : [ 26.0, 125.0, 59.0, 22.0 ], + "text" : "route text" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 160.0, 189.0, 49.0, 22.0 ], + "text" : "path $1" + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 26.0, 189.0, 55.0, 22.0 ], + "text" : "name $1" + } + + } +, { + "box" : { + "id" : "obj-11", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 26.0, 229.0, 93.0, 22.0 ], + "saved_object_attributes" : { + "filename" : "path-helper.js", + "parameter_enable" : 0 + } +, + "text" : "js path-helper.js" + } + + } +, { + "box" : { + "comment" : "name", + "id" : "obj-25", + "index" : 1, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 26.0, 29.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-26", + "index" : 1, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 26.0, 355.0, 30.0, 30.0 ] + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "source" : [ "obj-15", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-18", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-13", 0 ], + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-21", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "order" : 1, + "source" : [ "obj-25", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "order" : 0, + "source" : [ "obj-25", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "source" : [ "obj-8", 1 ] + } + + } + ] + } +, + "patching_rect" : [ 31.5, 172.0, 79.0, 22.0 ], + "saved_object_attributes" : { + "description" : "", + "digest" : "", + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p export-help" + } + + } +, { + "box" : { + "id" : "obj-24", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 75.5, 119.5, 39.0, 20.0 ], + "text" : "name" + } + + } +, { + "box" : { + "id" : "obj-17", + "keymode" : 1, + "lines" : 1, + "maxclass" : "textedit", + "numinlets" : 1, + "numoutlets" : 4, + "outlettype" : [ "", "int", "", "" ], + "parameter_enable" : 0, + "patching_rect" : [ 31.5, 141.5, 92.0, 22.0 ], + "text" : "gen-rack", + "wordwrap" : 0 + } + + } +, { + "box" : { + "id" : "obj-7", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 64.5, 214.5, 35.0, 22.0 ], + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "signal" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 1, + "revision" : 10, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "dsp.gen", + "rect" : [ 279.0, 334.0, 600.0, 450.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "assistshowspatchername" : 0, + "boxes" : [ { + "box" : { + "id" : "obj-5", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 301.5, 405.0, 35.0, 22.0 ], + "text" : "out 2" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 50.0, 14.0, 28.0, 22.0 ], + "text" : "in 1" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 305.0, 14.0, 28.0, 22.0 ], + "text" : "in 2" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 176.0, 149.0, 29.5, 22.0 ], + "text" : "+" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 56.0, 405.0, 35.0, 22.0 ], + "text" : "out 1" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 1 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "order" : 1, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "order" : 0, + "source" : [ "obj-3", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 31.5, 264.0, 79.0, 22.0 ], + "saved_object_attributes" : { + "exportfolder" : "C:/Users/Isabel Kaspriskie/dev/vcv/gen-rack/gen/exports/", + "exportname" : "test" + } +, + "text" : "gen~" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-15", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-16", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-27", 0 ], + "source" : [ "obj-17", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-2", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-27", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-6", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-17", 0 ], + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-9", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "gen-rack.js", + "bootpath" : "~/dev/vcv/gen-rack/gen/projects/example", + "patcherrelativepath" : ".", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "n4m.monitor.maxpat", + "bootpath" : "C74:/packages/Node For Max/patchers/debug-monitor", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "resize_n4m_monitor_patcher.js", + "bootpath" : "C74:/packages/Node For Max/patchers/debug-monitor", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "fit_jweb_to_bounds.js", + "bootpath" : "C74:/packages/Node For Max/patchers/debug-monitor", + "type" : "TEXT", + "implicit" : 1 + } + ], + "autosave" : 0 + } + +} diff --git a/gen/projects/example/gen-rack.js b/gen/projects/example/gen-rack.js @@ -0,0 +1,32 @@ +const maxApi = require('max-api'); +const fs = require('fs'); + +maxApi.addHandlers({ + // Write the .cpp file + create: async (name) => { + let basedir = process.cwd() + '/../../../'; // => /gen-rack + + // Replace GEN_RACK_DISPLAY_NAME with all lowercase name + // Replace GEN_RACK_NAME with name with the first letter capitalized + fs.readFile(basedir + 'src/module.in', 'utf8', function (err, data) { + if (err) { + maxApi.post('Error reading module.in.'); + return; + } + let result = data.split('GEN_RACK_DISPLAY_NAME').join(name.toLowerCase()); + result = result.split('GEN_RACK_NAME').join(name.charAt(0).toUpperCase() + name.slice(1)); + + fs.writeFile(basedir + 'src/' + name + '.cpp', result, 'utf8', function (err) { + if (err) { + maxApi.post('Error writing .cpp'); + } + }) + }); + // TODO - Add to plugin.cpp, plugin.hpp, and plugin.json + }, + + // TODO - Run `make install` + build: async (name) => { + + } +}); +\ No newline at end of file diff --git a/gen/projects/example/helper.js b/gen/projects/example/path-helper.js diff --git a/gen/projects/example/starter.maxpat b/gen/projects/example/starter.maxpat @@ -1,647 +0,0 @@ -{ - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 8, - "minor" : 1, - "revision" : 10, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 913.0, 489.0, 548.0, 352.0 ], - "bglocked" : 0, - "openinpresentation" : 1, - "default_fontsize" : 12.0, - "default_fontface" : 0, - "default_fontname" : "Arial", - "gridonopen" : 1, - "gridsize" : [ 15.0, 15.0 ], - "gridsnaponopen" : 1, - "objectsnaponopen" : 1, - "statusbarvisible" : 2, - "toolbarvisible" : 1, - "lefttoolbarpinned" : 0, - "toptoolbarpinned" : 0, - "righttoolbarpinned" : 0, - "bottomtoolbarpinned" : 0, - "toolbars_unpinned_last_save" : 0, - "tallnewobj" : 0, - "boxanimatetime" : 200, - "enablehscroll" : 1, - "enablevscroll" : 1, - "devicewidth" : 0.0, - "description" : "", - "digest" : "", - "tags" : "", - "style" : "", - "subpatcher_template" : "", - "assistshowspatchername" : 0, - "boxes" : [ { - "box" : { - "bubble" : 1, - "id" : "obj-10", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 125.0, 221.0, 139.0, 24.0 ], - "text" : "Build gen code here" - } - - } -, { - "box" : { - "id" : "obj-8", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 36.5, 43.0, 72.0, 22.0 ], - "text" : "prepend set" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 36.5, 12.0, 110.0, 22.0 ], - "text" : "loadmess gen-rack" - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 112.5, 171.5, 68.0, 22.0 ], - "presentation" : 1, - "presentation_rect" : [ 164.5, 34.5, 68.0, 22.0 ], - "text" : "exportcode" - } - - } -, { - "box" : { - "id" : "obj-27", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 8, - "minor" : 1, - "revision" : 10, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 1079.0, 348.0, 302.0, 412.0 ], - "bglocked" : 0, - "openinpresentation" : 0, - "default_fontsize" : 12.0, - "default_fontface" : 0, - "default_fontname" : "Arial", - "gridonopen" : 1, - "gridsize" : [ 15.0, 15.0 ], - "gridsnaponopen" : 1, - "objectsnaponopen" : 1, - "statusbarvisible" : 2, - "toolbarvisible" : 1, - "lefttoolbarpinned" : 0, - "toptoolbarpinned" : 0, - "righttoolbarpinned" : 0, - "bottomtoolbarpinned" : 0, - "toolbars_unpinned_last_save" : 0, - "tallnewobj" : 0, - "boxanimatetime" : 200, - "enablehscroll" : 1, - "enablevscroll" : 1, - "devicewidth" : 0.0, - "description" : "", - "digest" : "", - "tags" : "", - "style" : "", - "subpatcher_template" : "", - "assistshowspatchername" : 0, - "boxes" : [ { - "box" : { - "id" : "obj-2", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "bang" ], - "patching_rect" : [ 112.0, 92.0, 22.0, 22.0 ], - "text" : "t b" - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 112.0, 123.0, 32.0, 22.0 ], - "text" : "path" - } - - } -, { - "box" : { - "id" : "obj-8", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 112.0, 152.0, 67.0, 22.0 ], - "save" : [ "#N", "thispatcher", ";", "#Q", "end", ";" ], - "text" : "thispatcher" - } - - } -, { - "box" : { - "id" : "obj-22", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 72.0, 296.0, 119.0, 22.0 ], - "text" : "prepend exportfolder" - } - - } -, { - "box" : { - "id" : "obj-21", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 26.0, 263.0, 119.0, 22.0 ], - "text" : "prepend exportname" - } - - } -, { - "box" : { - "id" : "obj-19", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 26.0, 156.0, 57.0, 22.0 ], - "text" : "tosymbol" - } - - } -, { - "box" : { - "id" : "obj-18", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 26.0, 125.0, 59.0, 22.0 ], - "text" : "route text" - } - - } -, { - "box" : { - "id" : "obj-15", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 160.0, 189.0, 49.0, 22.0 ], - "text" : "path $1" - } - - } -, { - "box" : { - "id" : "obj-13", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 26.0, 189.0, 55.0, 22.0 ], - "text" : "name $1" - } - - } -, { - "box" : { - "id" : "obj-11", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 26.0, 229.0, 65.0, 22.0 ], - "saved_object_attributes" : { - "filename" : "helper.js", - "parameter_enable" : 0 - } -, - "text" : "js helper.js" - } - - } -, { - "box" : { - "comment" : "name", - "id" : "obj-25", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 26.0, 29.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-26", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 26.0, 355.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-22", 0 ], - "source" : [ "obj-11", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-13", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-15", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-19", 0 ], - "source" : [ "obj-18", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "source" : [ "obj-19", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-26", 0 ], - "source" : [ "obj-21", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-26", 0 ], - "source" : [ "obj-22", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-18", 0 ], - "order" : 1, - "source" : [ "obj-25", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "order" : 0, - "source" : [ "obj-25", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-15", 0 ], - "source" : [ "obj-8", 1 ] - } - - } - ] - } -, - "patching_rect" : [ 36.5, 129.0, 79.0, 22.0 ], - "saved_object_attributes" : { - "description" : "", - "digest" : "", - "globalpatchername" : "", - "tags" : "" - } -, - "text" : "p export-help" - } - - } -, { - "box" : { - "id" : "obj-24", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 80.5, 76.5, 39.0, 20.0 ], - "presentation" : 1, - "presentation_rect" : [ 5.5, 10.5, 39.0, 20.0 ], - "text" : "name" - } - - } -, { - "box" : { - "id" : "obj-17", - "keymode" : 1, - "lines" : 1, - "maxclass" : "textedit", - "numinlets" : 1, - "numoutlets" : 4, - "outlettype" : [ "", "int", "", "" ], - "parameter_enable" : 0, - "patching_rect" : [ 36.5, 98.5, 92.0, 22.0 ], - "presentation" : 1, - "presentation_rect" : [ 49.5, 10.5, 108.0, 22.0 ], - "text" : "test", - "wordwrap" : 0 - } - - } -, { - "box" : { - "id" : "obj-7", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 69.5, 171.5, 35.0, 22.0 ], - "presentation" : 1, - "presentation_rect" : [ 164.5, 10.5, 35.0, 22.0 ], - "text" : "open" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "signal", "signal" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 8, - "minor" : 1, - "revision" : 10, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "dsp.gen", - "rect" : [ 279.0, 334.0, 600.0, 450.0 ], - "bglocked" : 0, - "openinpresentation" : 0, - "default_fontsize" : 12.0, - "default_fontface" : 0, - "default_fontname" : "Arial", - "gridonopen" : 1, - "gridsize" : [ 15.0, 15.0 ], - "gridsnaponopen" : 1, - "objectsnaponopen" : 1, - "statusbarvisible" : 2, - "toolbarvisible" : 1, - "lefttoolbarpinned" : 0, - "toptoolbarpinned" : 0, - "righttoolbarpinned" : 0, - "bottomtoolbarpinned" : 0, - "toolbars_unpinned_last_save" : 0, - "tallnewobj" : 0, - "boxanimatetime" : 200, - "enablehscroll" : 1, - "enablevscroll" : 1, - "devicewidth" : 0.0, - "description" : "", - "digest" : "", - "tags" : "", - "style" : "", - "subpatcher_template" : "", - "assistshowspatchername" : 0, - "boxes" : [ { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 301.5, 405.0, 35.0, 22.0 ], - "text" : "out 2" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 50.0, 14.0, 28.0, 22.0 ], - "text" : "in 1" - } - - } -, { - "box" : { - "id" : "obj-2", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 305.0, 14.0, 28.0, 22.0 ], - "text" : "in 2" - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 176.0, 149.0, 29.5, 22.0 ], - "text" : "+" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 56.0, 405.0, 35.0, 22.0 ], - "text" : "out 1" - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 1 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "order" : 1, - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "order" : 0, - "source" : [ "obj-3", 0 ] - } - - } - ] - } -, - "patching_rect" : [ 36.5, 221.0, 79.0, 22.0 ], - "presentation" : 1, - "presentation_rect" : [ 49.5, 34.5, 108.0, 22.0 ], - "saved_object_attributes" : { - "exportfolder" : "C:/Users/Isabel Kaspriskie/dev/vcv/gen-rack/gen/exports/", - "exportname" : "test" - } -, - "text" : "gen~" - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-27", 0 ], - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-27", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 0 ], - "source" : [ "obj-8", 0 ] - } - - } - ], - "dependency_cache" : [ { - "name" : "helper.js", - "bootpath" : "~/dev/vcv/gen-rack/gen/projects/_starter", - "patcherrelativepath" : ".", - "type" : "TEXT", - "implicit" : 1 - } - ], - "autosave" : 0 - } - -} diff --git a/gen/projects/gigaverb/gigaverb.js b/gen/projects/gigaverb/gigaverb.js diff --git a/gen/projects/gigaverb/gigaverb.maxpat b/gen/projects/gigaverb/gigaverb.maxpat @@ -1,4662 +0,0 @@ -{ - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 8, - "minor" : 1, - "revision" : 10, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 962.0, 302.0, 496.0, 367.0 ], - "bglocked" : 0, - "openinpresentation" : 0, - "default_fontsize" : 12.0, - "default_fontface" : 0, - "default_fontname" : "Arial", - "gridonopen" : 1, - "gridsize" : [ 15.0, 15.0 ], - "gridsnaponopen" : 1, - "objectsnaponopen" : 1, - "statusbarvisible" : 2, - "toolbarvisible" : 1, - "lefttoolbarpinned" : 0, - "toptoolbarpinned" : 0, - "righttoolbarpinned" : 0, - "bottomtoolbarpinned" : 0, - "toolbars_unpinned_last_save" : 0, - "tallnewobj" : 0, - "boxanimatetime" : 200, - "enablehscroll" : 1, - "enablevscroll" : 1, - "devicewidth" : 0.0, - "description" : "", - "digest" : "", - "tags" : "", - "style" : "", - "subpatcher_template" : "", - "assistshowspatchername" : 0, - "boxes" : [ { - "box" : { - "id" : "obj-17", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 218.0, 311.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-15", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 201.0, 265.0, 67.0, 22.0 ], - "save" : [ "#N", "thispatcher", ";", "#Q", "end", ";" ], - "text" : "thispatcher" - } - - } -, { - "box" : { - "fontsize" : 13.0, - "id" : "obj-13", - "lastchannelcount" : 0, - "maxclass" : "live.gain~", - "numinlets" : 2, - "numoutlets" : 5, - "orientation" : 1, - "outlettype" : [ "signal", "signal", "", "float", "list" ], - "parameter_enable" : 1, - "patching_rect" : [ 14.0, 260.0, 136.0, 41.0 ], - "saved_attribute_attributes" : { - "valueof" : { - "parameter_initial" : [ -70 ], - "parameter_initial_enable" : 1, - "parameter_longname" : "live.gain~", - "parameter_mmax" : 6.0, - "parameter_mmin" : -70.0, - "parameter_shortname" : "live.gain~", - "parameter_type" : 0, - "parameter_unitstyle" : 4 - } - - } -, - "showname" : 0, - "varname" : "live.gain~" - } - - } -, { - "box" : { - "id" : "obj-14", - "local" : 1, - "maxclass" : "ezdac~", - "numinlets" : 2, - "numoutlets" : 0, - "patching_rect" : [ 14.0, 311.0, 44.0, 44.0 ], - "prototypename" : "helpfile" - } - - } -, { - "box" : { - "args" : [ "@loop", 1, "@file", "drumLoop.aif" ], - "bgmode" : 0, - "border" : 0, - "clickthrough" : 0, - "enablehscroll" : 0, - "enablevscroll" : 0, - "id" : "obj-12", - "lockeddragscroll" : 0, - "maxclass" : "bpatcher", - "name" : "demosound.maxpat", - "numinlets" : 0, - "numoutlets" : 1, - "offset" : [ 0.0, 0.0 ], - "outlettype" : [ "signal" ], - "patching_rect" : [ 14.0, 42.0, 225.0, 105.0 ], - "viewvisibility" : 1 - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-4", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "signal", "signal" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 8, - "minor" : 1, - "revision" : 10, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "dsp.gen", - "rect" : [ 0.0, 44.0, 1024.0, 810.0 ], - "bglocked" : 0, - "openinpresentation" : 0, - "default_fontsize" : 12.0, - "default_fontface" : 0, - "default_fontname" : "Lato", - "gridonopen" : 1, - "gridsize" : [ 15.0, 15.0 ], - "gridsnaponopen" : 1, - "objectsnaponopen" : 1, - "statusbarvisible" : 2, - "toolbarvisible" : 1, - "lefttoolbarpinned" : 0, - "toptoolbarpinned" : 0, - "righttoolbarpinned" : 0, - "bottomtoolbarpinned" : 0, - "toolbars_unpinned_last_save" : 0, - "tallnewobj" : 0, - "boxanimatetime" : 200, - "enablehscroll" : 1, - "enablevscroll" : 1, - "devicewidth" : 0.0, - "description" : "", - "digest" : "", - "tags" : "", - "style" : "", - "subpatcher_template" : "", - "assistshowspatchername" : 0, - "boxes" : [ { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-307", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1200.0, 1365.0, 60.0, 20.0 ], - "text" : "Dry mix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-304", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 975.0, 1365.0, 30.0, 20.0 ], - "text" : "in 2" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-305", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 975.0, 1395.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-306", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1005.0, 1365.0, 172.0, 20.0 ], - "text" : "param dry 1 @min 0 @max 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-303", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 45.0, 1230.0, 60.0, 34.0 ], - "text" : "Diffusion\nchains" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-302", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 270.0, 885.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-300", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 285.0, 930.0, 30.0, 20.0 ], - "text" : "in 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-299", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 658.5, 930.0, 30.0, 20.0 ], - "text" : "in 2" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-298", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 60.0, 50.0, 20.0 ], - "text" : "* 0.707" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-297", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 30.0, 30.0, 20.0 ], - "text" : "in 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-296", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 645.0, 990.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-294", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1140.0, 825.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-295", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 990.0, 825.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-293", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 825.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-292", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 825.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-289", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 495.0, 690.0, 36.0, 20.0 ], - "text" : "* 0.5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-288", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 690.0, 36.0, 20.0 ], - "text" : "* 0.5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-287", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 690.0, 36.0, 20.0 ], - "text" : "* 0.5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-286", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 45.000003999999997, 690.0, 36.0, 20.0 ], - "text" : "* 0.5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-284", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 465.0, 1365.0, 30.0, 20.0 ], - "text" : "in 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-283", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 465.0, 1395.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-278", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 270.0, 990.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-277", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1065.0, 855.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-276", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 270.0, 855.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-271", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1290.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-272", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1140.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-273", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 990.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-274", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-275", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1335.0, 735.0, 120.0, 33.0 ], - "text" : "param early 0.25 @min 0 @max 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-269", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 495.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-270", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-267", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-266", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 45.000003999999997, 780.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-264", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 660.0, 28.0, 20.0 ], - "text" : "!- 0" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-263", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 495.0, 630.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-262", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 630.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-261", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 630.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-260", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 435.0, 585.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-259", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 45.000003999999997, 630.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-258", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 360.0, 585.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-257", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 135.0, 585.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-256", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 60.0, 585.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-249", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 255.0, 570.0, 60.0, 33.0 ], - "text" : "FDN matrix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-245", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 525.0, 720.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-246", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 375.0, 720.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-247", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 225.0, 720.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-248", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 75.0, 720.0, 32.5, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-231", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 510.0, 435.0, 113.0, 20.0 ], - "text" : "expr -pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-232", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 495.0, 465.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-233", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 555.0, 540.0, 47.0, 20.0 ], - "text" : "history" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-234", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 495.0, 540.0, 46.0, 20.0 ], - "text" : "mix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-236", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 495.0, 405.0, 78.0, 20.0 ], - "text" : "delay 48000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-238", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 360.0, 435.0, 113.0, 20.0 ], - "text" : "expr -pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-239", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 465.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-240", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 405.0, 540.0, 47.0, 20.0 ], - "text" : "history" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-241", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 540.0, 46.0, 20.0 ], - "text" : "mix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-243", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 345.0, 405.0, 78.0, 20.0 ], - "text" : "delay 48000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-224", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 210.0, 435.0, 113.0, 20.0 ], - "text" : "expr -pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-225", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 465.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-226", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 255.0, 540.0, 47.0, 20.0 ], - "text" : "history" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-227", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 540.0, 46.0, 20.0 ], - "text" : "mix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-229", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 195.0, 405.0, 78.0, 20.0 ], - "text" : "delay 48000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-214", - "maxclass" : "newobj", - "numinlets" : 5, - "numoutlets" : 4, - "outlettype" : [ "", "", "", "" ], - "patching_rect" : [ 840.0, 540.0, 465.0, 20.0 ], - "text" : "delay 48000 4" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-213", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 780.0, 540.0, 60.0, 33.0 ], - "text" : "Tap delays" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-212", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 900.0, 240.000014999999991, 75.0, 20.0 ], - "text" : "prediffuse" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-211", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 945.0, 1425.0, 38.0, 20.0 ], - "text" : "out 2" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-210", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 435.0, 1425.0, 38.0, 20.0 ], - "text" : "out 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-204", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1290.0, 600.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-205", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1305.0, 570.0, 109.0, 20.0 ], - "text" : "expr pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-202", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1140.0, 600.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-203", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1155.0, 570.0, 109.0, 20.0 ], - "text" : "expr pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-200", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 990.0, 600.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-201", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1005.0, 570.0, 109.0, 20.0 ], - "text" : "expr pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-199", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 600.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-198", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 855.0, 570.0, 109.0, 20.0 ], - "text" : "expr pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-197", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1305.0, 510.0, 28.0, 20.0 ], - "text" : "+ 5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-196", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1155.0, 510.0, 28.0, 20.0 ], - "text" : "+ 5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-195", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1005.0, 510.0, 28.0, 20.0 ], - "text" : "+ 5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-194", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 855.0, 510.0, 28.0, 20.0 ], - "text" : "+ 5" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-191", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1155.0, 480.0, 50.0, 20.0 ], - "text" : "* 0.155" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-192", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1005.0, 480.0, 36.0, 20.0 ], - "text" : "* 0.3" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-193", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 855.0, 480.0, 43.0, 20.0 ], - "text" : "* 0.41" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-173", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 975.0, 1110.0, 49.0, 20.0 ], - "text" : "!- 1341" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-174", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 930.0, 1110.0, 32.5, 20.0 ], - "text" : "!-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-175", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 930.0, 1080.0, 42.0, 20.0 ], - "text" : "+ 369" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-176", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 975.0, 1080.0, 42.0, 20.0 ], - "text" : "+ 931" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-177", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 975.0, 1050.0, 74.0, 20.0 ], - "text" : "* -0.380445" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-178", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 885.0, 1110.0, 42.0, 20.0 ], - "text" : "+ 159" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-179", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 885.0, 1050.0, 74.0, 20.0 ], - "text" : "* -0.568366" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-134", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 945.0, 1320.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-136", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 945.0, 1290.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-137", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 945.0, 1260.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-140", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 960.0, 1230.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-141", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 990.0, 1200.0, 78.0, 20.0 ], - "text" : "delay 12000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-142", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1020.00006099999996, 1170.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-144", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 795.0, 1320.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-146", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 795.0, 1290.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-147", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 795.0, 1260.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-150", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 810.0, 1230.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-151", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 1200.0, 78.0, 20.0 ], - "text" : "delay 16000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-152", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 870.0, 1170.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-154", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 645.0, 1320.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-156", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 645.0, 1290.0, 43.0, 20.0 ], - "text" : "* 0.75" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-157", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 645.0, 1260.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-160", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 660.0, 1230.0, 43.0, 20.0 ], - "text" : "* 0.75" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-161", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 690.0, 1200.0, 71.0, 20.0 ], - "text" : "delay 7000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-162", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 720.0, 1170.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-131", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 330.0, 1110.0, 49.0, 20.0 ], - "text" : "!- 1341" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-129", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 270.0, 1110.0, 32.5, 20.0 ], - "text" : "!-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-127", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 270.0, 1080.0, 42.0, 20.0 ], - "text" : "+ 369" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-125", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 330.0, 1080.0, 42.0, 20.0 ], - "text" : "+ 931" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-124", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 330.0, 1050.0, 70.0, 20.0 ], - "text" : "* 0.376623" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-112", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 435.0, 1320.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-114", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 435.0, 1290.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-116", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 435.0, 1260.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-119", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 450.0, 1230.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-120", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 480.0, 1200.0, 78.0, 20.0 ], - "text" : "delay 10000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-121", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 510.000061000000017, 1170.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-98", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 285.0, 1320.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-100", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 285.0, 1290.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-102", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 285.0, 1260.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-105", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 300.0, 1230.0, 50.0, 20.0 ], - "text" : "* 0.625" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-106", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 330.0, 1200.0, 78.0, 20.0 ], - "text" : "delay 15000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-107", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 360.0, 1170.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-95", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 224.999968999999993, 1110.0, 42.0, 20.0 ], - "text" : "+ 159" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-88", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 224.999968999999993, 1050.0, 70.0, 20.0 ], - "text" : "* 0.125541" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-77", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 134.999968999999993, 1320.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-79", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 134.999968999999993, 1290.0, 43.0, 20.0 ], - "text" : "* 0.75" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-81", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 134.999968999999993, 1260.0, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-84", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 149.999968999999993, 1230.0, 43.0, 20.0 ], - "text" : "* 0.75" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-85", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 179.999968999999993, 1200.0, 71.0, 20.0 ], - "text" : "delay 5000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-86", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 209.999968999999993, 1170.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-74", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 300.0, 45.0, 20.0 ], - "text" : "+" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-72", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 270.0, 43.0, 20.0 ], - "text" : "* 0.75" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-67", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 240.000014999999991, 32.5, 20.0 ], - "text" : "-" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-64", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 855.0, 210.000014999999991, 43.0, 20.0 ], - "text" : "* 0.75" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-63", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 885.0, 180.000014999999991, 71.0, 20.0 ], - "text" : "delay 6000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-62", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 930.0, 150.0, 70.0, 20.0 ], - "text" : "* 0.110732" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-52", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 675.0, 1110.0, 24.0, 20.0 ], - "text" : "int" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-51", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 675.0, 1080.0, 70.0, 20.0 ], - "text" : "* 0.000527" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-45", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 60.0, 435.0, 113.0, 20.0 ], - "text" : "expr -pow(in2\\,in1)" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-44", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 45.000003999999997, 465.0, 32.5, 20.0 ], - "text" : "*" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-42", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 555.0, 345.0, 63.0, 20.0 ], - "text" : "* 0.63245" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-43", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 405.0, 345.0, 57.0, 20.0 ], - "text" : "* 0.7071" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-41", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 255.0, 345.0, 63.0, 20.0 ], - "text" : "* 0.81649" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-40", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 105.0, 345.0, 26.0, 20.0 ], - "text" : "* 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-35", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1125.0, 390.0, 240.0, 33.0 ], - "text" : "expr pow(pow(10\\,-60/20)\\,1./(in1*samplerate))" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-31", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 105.0, 540.0, 47.0, 20.0 ], - "text" : "history" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-32", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 45.000003999999997, 540.0, 46.0, 20.0 ], - "text" : "mix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-33", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 90.0, 495.0, 60.0, 33.0 ], - "text" : "FDN dampers" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-30", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 45.000003999999997, 405.0, 78.0, 20.0 ], - "text" : "delay 48000" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-28", - "linecount" : 3, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 30.0, 330.0, 75.0, 47.0 ], - "text" : "Feeedback delay network" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-27", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 900.0, 104.999992000000006, 47.0, 20.0 ], - "text" : "history" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-17", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 840.0, 104.999992000000006, 46.0, 20.0 ], - "text" : "mix" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-16", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 960.0, 105.0, 90.0, 20.0 ], - "text" : "input damper" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-14", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 960.0, 75.0, 28.0, 20.0 ], - "text" : "!- 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-11", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 675.0, 120.0, 144.0, 20.0 ], - "text" : "expr in1*samplerate/340" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-10", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 570.0, 735.0, 105.0, 33.0 ], - "text" : "param tail 0.25 @min 0 @max 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-7", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 960.0, 30.0, 135.0, 33.0 ], - "text" : "param bandwidth 0.5 @min 0 @max 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-6", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 885.0, 990.0, 120.0, 33.0 ], - "text" : "param spread 23 @min 0 @max 100" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-5", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 540.0, 495.0, 120.0, 33.0 ], - "text" : "param damping 0.7 @min 0 @max 1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-4", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1125.0, 360.0, 163.0, 20.0 ], - "text" : "param revtime 11 @min 0.1" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-3", - "linecount" : 2, - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 675.0, 75.0, 135.0, 33.0 ], - "text" : "param roomsize 75 @min 0.1 @max 300" - } - - } -, { - "box" : { - "fontname" : "Lato", - "fontsize" : 12.0, - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 885.0, 30.0, 30.0, 20.0 ], - "text" : "in 2" - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-298", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-266", 1 ], - "midpoints" : [ 579.5, 774.5, 68.00000399999999, 774.5 ], - "order" : 3, - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-267", 1 ], - "midpoints" : [ 579.5, 774.5, 218.0, 774.5 ], - "order" : 2, - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-269", 1 ], - "midpoints" : [ 579.5, 774.5, 518.0, 774.5 ], - "order" : 0, - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-270", 1 ], - "midpoints" : [ 579.5, 774.5, 368.0, 774.5 ], - "order" : 1, - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-98", 0 ], - "source" : [ "obj-100", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-100", 0 ], - "order" : 1, - "source" : [ "obj-102", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-106", 0 ], - "order" : 0, - "source" : [ "obj-102", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-102", 1 ], - "source" : [ "obj-105", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-105", 0 ], - "order" : 1, - "source" : [ "obj-106", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-98", 1 ], - "order" : 0, - "source" : [ "obj-106", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-106", 1 ], - "source" : [ "obj-107", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-191", 0 ], - "midpoints" : [ 684.5, 339.5, 1164.5, 339.5 ], - "order" : 1, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-192", 0 ], - "midpoints" : [ 684.5, 339.5, 1014.5, 339.5 ], - "order" : 2, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-193", 0 ], - "midpoints" : [ 684.5, 339.5, 864.5, 339.5 ], - "order" : 4, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-197", 0 ], - "midpoints" : [ 684.5, 338.394897000000014, 1314.5, 338.394897000000014 ], - "order" : 0, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-40", 0 ], - "midpoints" : [ 684.5, 337.166503999999975, 114.5, 337.166503999999975 ], - "order" : 9, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-41", 0 ], - "midpoints" : [ 684.5, 337.166503999999975, 264.5, 337.166503999999975 ], - "order" : 8, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-42", 0 ], - "midpoints" : [ 684.5, 338.630584999999996, 564.5, 338.630584999999996 ], - "order" : 6, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-43", 0 ], - "midpoints" : [ 684.5, 335.702392999999972, 414.5, 335.702392999999972 ], - "order" : 7, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-51", 0 ], - "midpoints" : [ 684.5, 609.5, 684.5, 609.5 ], - "order" : 5, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.827451, 0.737255, 0.835294, 1.0 ], - "destination" : [ "obj-62", 0 ], - "midpoints" : [ 684.5, 144.679504000000009, 939.5, 144.679504000000009 ], - "order" : 3, - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-210", 0 ], - "source" : [ "obj-112", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-112", 0 ], - "source" : [ "obj-114", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-114", 0 ], - "order" : 1, - "source" : [ "obj-116", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-120", 0 ], - "order" : 0, - "source" : [ "obj-116", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-116", 1 ], - "source" : [ "obj-119", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-112", 1 ], - "order" : 0, - "source" : [ "obj-120", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-119", 0 ], - "order" : 1, - "source" : [ "obj-120", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-120", 1 ], - "source" : [ "obj-121", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-125", 0 ], - "source" : [ "obj-124", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-129", 1 ], - "order" : 1, - "source" : [ "obj-125", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-131", 0 ], - "order" : 0, - "source" : [ "obj-125", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-129", 0 ], - "source" : [ "obj-127", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-107", 1 ], - "source" : [ "obj-129", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-121", 1 ], - "source" : [ "obj-131", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-211", 0 ], - "source" : [ "obj-134", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-134", 0 ], - "source" : [ "obj-136", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-136", 0 ], - "order" : 1, - "source" : [ "obj-137", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-141", 0 ], - "order" : 0, - "source" : [ "obj-137", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 2 ], - "source" : [ "obj-14", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-137", 1 ], - "source" : [ "obj-140", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-134", 1 ], - "order" : 0, - "source" : [ "obj-141", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-140", 0 ], - "order" : 1, - "source" : [ "obj-141", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-141", 1 ], - "source" : [ "obj-142", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-137", 0 ], - "source" : [ "obj-144", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-144", 0 ], - "source" : [ "obj-146", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-146", 0 ], - "order" : 1, - "source" : [ "obj-147", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-151", 0 ], - "order" : 0, - "source" : [ "obj-147", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-147", 1 ], - "source" : [ "obj-150", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-144", 1 ], - "order" : 0, - "source" : [ "obj-151", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-150", 0 ], - "order" : 1, - "source" : [ "obj-151", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-151", 1 ], - "source" : [ "obj-152", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-147", 0 ], - "source" : [ "obj-154", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-154", 0 ], - "source" : [ "obj-156", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-156", 0 ], - "order" : 1, - "source" : [ "obj-157", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-161", 0 ], - "order" : 0, - "source" : [ "obj-157", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-157", 1 ], - "source" : [ "obj-160", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-154", 1 ], - "order" : 0, - "source" : [ "obj-161", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-160", 0 ], - "order" : 1, - "source" : [ "obj-161", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-161", 1 ], - "source" : [ "obj-162", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-27", 0 ], - "order" : 0, - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-67", 0 ], - "order" : 1, - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-142", 1 ], - "source" : [ "obj-173", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-152", 1 ], - "source" : [ "obj-174", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-174", 0 ], - "source" : [ "obj-175", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-173", 0 ], - "order" : 0, - "source" : [ "obj-176", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-174", 1 ], - "order" : 1, - "source" : [ "obj-176", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-176", 0 ], - "source" : [ "obj-177", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-162", 1 ], - "source" : [ "obj-178", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-175", 0 ], - "order" : 0, - "source" : [ "obj-179", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-178", 0 ], - "order" : 1, - "source" : [ "obj-179", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-196", 0 ], - "source" : [ "obj-191", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-195", 0 ], - "source" : [ "obj-192", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-194", 0 ], - "source" : [ "obj-193", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-198", 0 ], - "order" : 1, - "source" : [ "obj-194", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-214", 1 ], - "order" : 0, - "source" : [ "obj-194", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-201", 0 ], - "order" : 1, - "source" : [ "obj-195", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-214", 2 ], - "order" : 0, - "source" : [ "obj-195", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-203", 0 ], - "order" : 1, - "source" : [ "obj-196", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-214", 3 ], - "order" : 0, - "source" : [ "obj-196", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-205", 0 ], - "order" : 0, - "source" : [ "obj-197", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-214", 4 ], - "order" : 1, - "source" : [ "obj-197", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-199", 1 ], - "source" : [ "obj-198", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-248", 1 ], - "order" : 1, - "source" : [ "obj-199", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-274", 0 ], - "order" : 0, - "source" : [ "obj-199", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-247", 1 ], - "order" : 1, - "source" : [ "obj-200", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-273", 0 ], - "order" : 0, - "source" : [ "obj-200", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-200", 1 ], - "source" : [ "obj-201", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-246", 1 ], - "order" : 1, - "source" : [ "obj-202", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-272", 0 ], - "order" : 0, - "source" : [ "obj-202", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-202", 1 ], - "source" : [ "obj-203", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-245", 1 ], - "order" : 1, - "source" : [ "obj-204", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-271", 0 ], - "order" : 0, - "source" : [ "obj-204", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-204", 1 ], - "source" : [ "obj-205", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-199", 0 ], - "source" : [ "obj-214", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-200", 0 ], - "source" : [ "obj-214", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-202", 0 ], - "source" : [ "obj-214", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-204", 0 ], - "source" : [ "obj-214", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-225", 1 ], - "source" : [ "obj-224", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-227", 0 ], - "source" : [ "obj-225", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-227", 1 ], - "source" : [ "obj-226", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-226", 0 ], - "order" : 0, - "source" : [ "obj-227", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-256", 1 ], - "order" : 2, - "source" : [ "obj-227", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-257", 1 ], - "order" : 1, - "source" : [ "obj-227", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-225", 0 ], - "source" : [ "obj-229", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-232", 1 ], - "source" : [ "obj-231", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-234", 0 ], - "source" : [ "obj-232", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-234", 1 ], - "source" : [ "obj-233", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-233", 0 ], - "order" : 0, - "source" : [ "obj-234", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-258", 1 ], - "order" : 2, - "source" : [ "obj-234", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-260", 1 ], - "order" : 1, - "source" : [ "obj-234", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-232", 0 ], - "source" : [ "obj-236", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-239", 1 ], - "source" : [ "obj-238", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-241", 0 ], - "source" : [ "obj-239", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-241", 1 ], - "source" : [ "obj-240", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-240", 0 ], - "order" : 1, - "source" : [ "obj-241", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-258", 0 ], - "order" : 2, - "source" : [ "obj-241", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-260", 0 ], - "order" : 0, - "source" : [ "obj-241", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-239", 0 ], - "source" : [ "obj-243", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-236", 0 ], - "midpoints" : [ 534.5, 749.0, 488.5, 749.0, 488.5, 395.0, 504.5, 395.0 ], - "source" : [ "obj-245", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-243", 0 ], - "midpoints" : [ 384.5, 749.0, 339.5, 749.0, 339.5, 395.0, 354.5, 395.0 ], - "source" : [ "obj-246", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-229", 0 ], - "midpoints" : [ 234.5, 749.0, 188.5, 749.0, 188.5, 395.0, 204.5, 395.0 ], - "source" : [ "obj-247", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 0 ], - "midpoints" : [ 84.5, 749.0, 39.5, 749.0, 39.5, 395.0, 54.500003999999997, 395.0 ], - "source" : [ "obj-248", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-259", 0 ], - "order" : 1, - "source" : [ "obj-256", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-263", 0 ], - "order" : 0, - "source" : [ "obj-256", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-261", 0 ], - "order" : 1, - "source" : [ "obj-257", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-262", 0 ], - "order" : 0, - "source" : [ "obj-257", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-259", 1 ], - "order" : 1, - "source" : [ "obj-258", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-263", 1 ], - "order" : 0, - "source" : [ "obj-258", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-286", 0 ], - "source" : [ "obj-259", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-261", 1 ], - "order" : 1, - "source" : [ "obj-260", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-262", 1 ], - "order" : 0, - "source" : [ "obj-260", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-287", 0 ], - "source" : [ "obj-261", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-264", 0 ], - "source" : [ "obj-262", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-289", 0 ], - "source" : [ "obj-263", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-288", 0 ], - "source" : [ "obj-264", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-292", 0 ], - "source" : [ "obj-266", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-293", 0 ], - "source" : [ "obj-267", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-293", 1 ], - "source" : [ "obj-269", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 1 ], - "source" : [ "obj-27", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-292", 1 ], - "source" : [ "obj-270", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-294", 1 ], - "source" : [ "obj-271", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-295", 1 ], - "source" : [ "obj-272", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-294", 0 ], - "source" : [ "obj-273", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-295", 0 ], - "source" : [ "obj-274", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-271", 1 ], - "midpoints" : [ 1344.5, 774.5, 1313.0, 774.5 ], - "order" : 0, - "source" : [ "obj-275", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-272", 1 ], - "midpoints" : [ 1344.5, 774.5, 1163.0, 774.5 ], - "order" : 1, - "source" : [ "obj-275", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-273", 1 ], - "midpoints" : [ 1344.5, 774.5, 1013.0, 774.5 ], - "order" : 2, - "source" : [ "obj-275", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-274", 1 ], - "midpoints" : [ 1344.5, 774.5, 863.0, 774.5 ], - "order" : 3, - "source" : [ "obj-275", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-302", 0 ], - "midpoints" : [ 279.5, 879.5, 279.5, 879.5 ], - "source" : [ "obj-276", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-302", 1 ], - "midpoints" : [ 1074.5, 879.5, 293.0, 879.5 ], - "source" : [ "obj-277", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-81", 0 ], - "midpoints" : [ 279.5, 1020.479736000000003, 144.499968999999993, 1020.479736000000003 ], - "source" : [ "obj-278", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-210", 0 ], - "source" : [ "obj-283", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-283", 0 ], - "source" : [ "obj-284", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-248", 0 ], - "order" : 0, - "source" : [ "obj-286", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-266", 0 ], - "order" : 1, - "source" : [ "obj-286", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-247", 0 ], - "order" : 0, - "source" : [ "obj-287", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-267", 0 ], - "order" : 1, - "source" : [ "obj-287", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-246", 0 ], - "order" : 0, - "source" : [ "obj-288", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-270", 0 ], - "order" : 1, - "source" : [ "obj-288", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-245", 0 ], - "order" : 0, - "source" : [ "obj-289", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-269", 0 ], - "order" : 1, - "source" : [ "obj-289", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-276", 0 ], - "source" : [ "obj-292", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-276", 1 ], - "source" : [ "obj-293", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-277", 1 ], - "source" : [ "obj-294", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-277", 0 ], - "source" : [ "obj-295", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-157", 0 ], - "midpoints" : [ 654.5, 1019.015625, 654.5, 1019.015625 ], - "source" : [ "obj-296", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-298", 0 ], - "source" : [ "obj-297", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 0 ], - "source" : [ "obj-298", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-296", 1 ], - "source" : [ "obj-299", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-44", 0 ], - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-278", 1 ], - "source" : [ "obj-300", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-278", 0 ], - "midpoints" : [ 279.5, 916.253906000000029, 279.5, 916.253906000000029 ], - "order" : 1, - "source" : [ "obj-302", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-296", 0 ], - "midpoints" : [ 279.5, 916.253906000000029, 654.5, 916.253906000000029 ], - "order" : 0, - "source" : [ "obj-302", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-305", 0 ], - "source" : [ "obj-304", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-211", 0 ], - "source" : [ "obj-305", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-283", 1 ], - "midpoints" : [ 1014.5, 1389.5, 488.0, 1389.5 ], - "order" : 1, - "source" : [ "obj-306", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-305", 1 ], - "order" : 0, - "source" : [ "obj-306", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 1 ], - "source" : [ "obj-31", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-256", 0 ], - "order" : 2, - "source" : [ "obj-32", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-257", 0 ], - "order" : 0, - "source" : [ "obj-32", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-31", 0 ], - "order" : 1, - "source" : [ "obj-32", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-198", 1 ], - "midpoints" : [ 1134.5, 429.869415000000004, 954.5, 429.869415000000004 ], - "order" : 3, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-201", 1 ], - "midpoints" : [ 1134.5, 429.869415000000004, 1104.5, 429.869415000000004 ], - "order" : 2, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-203", 1 ], - "midpoints" : [ 1134.5, 431.333496000000025, 1254.5, 431.333496000000025 ], - "order" : 1, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-205", 1 ], - "midpoints" : [ 1134.5, 428.405304000000001, 1404.5, 428.405304000000001 ], - "order" : 0, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-224", 1 ], - "midpoints" : [ 1134.5, 429.0, 313.5, 429.0 ], - "order" : 6, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-231", 1 ], - "midpoints" : [ 1134.5, 429.0, 613.5, 429.0 ], - "order" : 4, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-238", 1 ], - "midpoints" : [ 1134.5, 429.0, 463.5, 429.0 ], - "order" : 5, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.917647, 0.937255, 0.670588, 1.0 ], - "destination" : [ "obj-45", 1 ], - "midpoints" : [ 1134.5, 429.0, 163.5, 429.0 ], - "order" : 7, - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 0 ], - "source" : [ "obj-4", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 1 ], - "order" : 0, - "source" : [ "obj-40", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-45", 0 ], - "order" : 1, - "source" : [ "obj-40", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-224", 0 ], - "order" : 1, - "source" : [ "obj-41", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-229", 1 ], - "order" : 0, - "source" : [ "obj-41", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-231", 0 ], - "order" : 1, - "source" : [ "obj-42", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-236", 1 ], - "order" : 0, - "source" : [ "obj-42", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-238", 0 ], - "order" : 1, - "source" : [ "obj-43", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-243", 1 ], - "order" : 0, - "source" : [ "obj-43", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 0 ], - "source" : [ "obj-44", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-44", 1 ], - "source" : [ "obj-45", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-227", 2 ], - "midpoints" : [ 549.5, 534.0, 231.5, 534.0 ], - "order" : 2, - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-234", 2 ], - "midpoints" : [ 549.5, 534.0, 531.5, 534.0 ], - "order" : 0, - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-241", 2 ], - "midpoints" : [ 549.5, 534.0, 381.5, 534.0 ], - "order" : 1, - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 2 ], - "midpoints" : [ 549.5, 534.0, 81.50000399999999, 534.0 ], - "order" : 3, - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-52", 0 ], - "source" : [ "obj-51", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.67451, 0.819608, 0.572549, 1.0 ], - "destination" : [ "obj-107", 0 ], - "midpoints" : [ 684.5, 1149.5, 369.5, 1149.5 ], - "order" : 4, - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.67451, 0.819608, 0.572549, 1.0 ], - "destination" : [ "obj-121", 0 ], - "midpoints" : [ 684.5, 1149.5, 519.50006099999996, 1149.5 ], - "order" : 3, - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.67451, 0.819608, 0.572549, 1.0 ], - "destination" : [ "obj-142", 0 ], - "midpoints" : [ 684.5, 1149.5, 1029.50006099999996, 1149.5 ], - "order" : 0, - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.67451, 0.819608, 0.572549, 1.0 ], - "destination" : [ "obj-152", 0 ], - "midpoints" : [ 684.5, 1149.5, 879.5, 1149.5 ], - "order" : 1, - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.67451, 0.819608, 0.572549, 1.0 ], - "destination" : [ "obj-162", 0 ], - "midpoints" : [ 684.5, 1149.5, 729.5, 1149.5 ], - "order" : 2, - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "color" : [ 0.67451, 0.819608, 0.572549, 1.0 ], - "destination" : [ "obj-86", 0 ], - "midpoints" : [ 684.5, 1149.5, 219.499968999999993, 1149.5 ], - "order" : 5, - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-124", 0 ], - "midpoints" : [ 894.5, 1037.0, 339.5, 1037.0 ], - "order" : 2, - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-177", 0 ], - "midpoints" : [ 894.5, 1037.0, 984.5, 1037.0 ], - "order" : 0, - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-179", 0 ], - "midpoints" : [ 894.5, 1037.0, 894.5, 1037.0 ], - "order" : 1, - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-88", 0 ], - "midpoints" : [ 894.5, 1037.0, 234.499968999999993, 1037.0 ], - "order" : 3, - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-63", 1 ], - "source" : [ "obj-62", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-64", 0 ], - "order" : 1, - "source" : [ "obj-63", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-74", 1 ], - "order" : 0, - "source" : [ "obj-63", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-67", 1 ], - "source" : [ "obj-64", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-63", 0 ], - "order" : 0, - "source" : [ "obj-67", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-72", 0 ], - "order" : 1, - "source" : [ "obj-67", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-74", 0 ], - "source" : [ "obj-72", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-214", 0 ], - "source" : [ "obj-74", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-102", 0 ], - "source" : [ "obj-77", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-77", 0 ], - "source" : [ "obj-79", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-79", 0 ], - "order" : 1, - "source" : [ "obj-81", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-85", 0 ], - "order" : 0, - "source" : [ "obj-81", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-81", 1 ], - "source" : [ "obj-84", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-77", 1 ], - "order" : 0, - "source" : [ "obj-85", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-84", 0 ], - "order" : 1, - "source" : [ "obj-85", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-85", 1 ], - "source" : [ "obj-86", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-127", 0 ], - "order" : 0, - "source" : [ "obj-88", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-95", 0 ], - "order" : 1, - "source" : [ "obj-88", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-86", 1 ], - "source" : [ "obj-95", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-116", 0 ], - "source" : [ "obj-98", 0 ] - } - - } - ], - "bgcolor" : [ 0.9, 0.9, 0.9, 1.0 ], - "editing_bgcolor" : [ 0.9, 0.9, 0.9, 1.0 ] - } -, - "patching_rect" : [ 14.0, 214.0, 35.0, 23.0 ], - "text" : "gen~" - } - - } -, { - "box" : { - "id" : "obj-2", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 14.0, 13.0, 213.0, 20.0 ], - "text" : "Gigaverb from gen~.gigaverb example" - } - - } -, { - "box" : { - "attr" : "spread", - "id" : "obj-3", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 138.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "roomsize", - "id" : "obj-5", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 114.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "dry", - "id" : "obj-6", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 90.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "damping", - "id" : "obj-7", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 162.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "early", - "id" : "obj-8", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 186.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "tail", - "id" : "obj-9", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 210.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "revtime", - "id" : "obj-10", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 66.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "bandwidth", - "id" : "obj-11", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 315.0, 42.0, 150.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "exportfolder", - "id" : "obj-1", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 14.0, 184.0, 150.0, 22.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 324.5, 90.0, 249.0, 90.0, 249.0, 208.0, 23.5, 208.0 ], - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 324.5, 66.0, 249.0, 66.0, 249.0, 207.0, 23.5, 207.0 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 1 ], - "order" : 0, - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "order" : 1, - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 1 ], - "source" : [ "obj-13", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-13", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 1 ], - "source" : [ "obj-15", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 248.0, 159.0, 248.0, 210.0, 23.5, 210.0 ], - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 1 ], - "source" : [ "obj-4", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "source" : [ "obj-4", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 324.5, 138.0, 249.0, 138.0, 249.0, 208.0, 23.5, 208.0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 324.5, 114.0, 249.0, 114.0, 249.0, 208.0, 23.5, 208.0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 248.0, 184.0, 248.0, 209.0, 23.5, 209.0 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 23.0, 206.0 ], - "source" : [ "obj-8", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "midpoints" : [ 324.5, 238.0, 247.0, 238.0, 247.0, 206.0, 23.5, 206.0 ], - "source" : [ "obj-9", 0 ] - } - - } - ], - "parameters" : { - "obj-12::obj-21::obj-6" : [ "live.tab[3]", "live.tab[1]", 0 ], - "obj-12::obj-35" : [ "[5]", "Level", 0 ], - "obj-13" : [ "live.gain~", "live.gain~", 0 ], - "parameterbanks" : { - - } -, - "inherited_shortname" : 1 - } -, - "dependency_cache" : [ { - "name" : "demosound.maxpat", - "bootpath" : "C74:/help/msp", - "type" : "JSON", - "implicit" : 1 - } -, { - "name" : "sine.svg", - "bootpath" : "C74:/media/max/picts/m4l-picts", - "type" : "svg", - "implicit" : 1 - } -, { - "name" : "saw.svg", - "bootpath" : "C74:/media/max/picts/m4l-picts", - "type" : "svg", - "implicit" : 1 - } -, { - "name" : "square.svg", - "bootpath" : "C74:/media/max/picts/m4l-picts", - "type" : "svg", - "implicit" : 1 - } -, { - "name" : "random.svg", - "bootpath" : "C74:/media/max/picts/m4l-picts", - "type" : "svg", - "implicit" : 1 - } -, { - "name" : "interfacecolor.js", - "bootpath" : "C74:/interfaces", - "type" : "TEXT", - "implicit" : 1 - } - ], - "autosave" : 0 - } - -} diff --git a/src/gigaverb.cpp b/src/gigaverb.cpp @@ -1,6 +1,7 @@ #include "plugin.hpp" #include "gigaverb.h" +using namespace gigaverb; /// Processing @@ -19,12 +20,12 @@ struct Gigaverb : Module { Gigaverb() { // Set default sample rate of 44100 Hz and vector size 1 (VCV uses single sample processing) // and update it later if needed - moduleState = (CommonState *)gigaverb::create(44100, currentBufferSize); - gigaverb::reset(moduleState); + moduleState = (CommonState *)create(44100, currentBufferSize); + reset(moduleState); - numParams = gigaverb::num_params(); - numInputs = gigaverb::num_inputs(); - numOutputs = gigaverb::num_outputs(); + numParams = num_params(); + numInputs = num_inputs(); + numOutputs = num_outputs(); // Initialize sample buffers inputBuffers = new t_sample *[numInputs]; @@ -41,13 +42,13 @@ struct Gigaverb : Module { // Configure parameters config(numParams, numInputs + numParams, numOutputs, 0); for (int i = 0; i < numParams; i++) { - std::string name = std::string(gigaverb::getparametername(moduleState, i)); - std::string units = std::string(gigaverb::getparameterunits(moduleState, i)); + std::string name = std::string(getparametername(moduleState, i)); + std::string units = std::string(getparameterunits(moduleState, i)); float min = 0.0; float max = 1.0; - if (gigaverb::getparameterhasminmax(moduleState, i)) { - min = gigaverb::getparametermin(moduleState, i); - max = gigaverb::getparametermax(moduleState, i); + if (getparameterhasminmax(moduleState, i)) { + min = getparametermin(moduleState, i); + max = getparametermax(moduleState, i); } configParam(i, min, max, min, name, units); } @@ -55,7 +56,7 @@ struct Gigaverb : Module { ~Gigaverb() { - gigaverb::destroy(moduleState); + destroy(moduleState); deleteBuffers(); } @@ -126,16 +127,16 @@ struct Gigaverb : Module { float cvVal = inputs[i + numInputs].isConnected() ? inputs[i + numInputs].getVoltage() / 5.f : 0.f; // Normalize to -1..1 // Scale to range of parameter - t_param min = gigaverb::getparametermin(moduleState, i); - t_param max = gigaverb::getparametermax(moduleState, i); + t_param min = getparametermin(moduleState, i); + t_param max = getparametermax(moduleState, i); t_param range = fabs(max - min); t_param val = clamp(knobVal + cvVal * range, min, max); // Offset the knobVal by the CV input - gigaverb::setparameter(moduleState, i, val, NULL); + setparameter(moduleState, i, val, NULL); } // Fill the buffers - gigaverb::perform(moduleState, inputBuffers, numInputs, outputBuffers, numOutputs, currentBufferSize); + perform(moduleState, inputBuffers, numInputs, outputBuffers, numOutputs, currentBufferSize); } } }; @@ -192,7 +193,7 @@ struct GigaverbWidget : ModuleWidget { panel = new genrack::Panel(40, 40, 40); addChild(panel); panel->box.size = box.size; - genrack::Title *title = new genrack::Title(box.size.x / 2, top_margin, box.size.x, "gigaverb"); + genrack::Title *title = new genrack::Title(box.size.x / 2, top_margin, box.size.x, gigaverb); addChild(title); if (module) { @@ -212,7 +213,7 @@ struct GigaverbWidget : ModuleWidget { } for (int i = 0; i < numParams; i++) { - std::string paramLabel = std::string(gigaverb::getparametername(module->moduleState, i)); + std::string paramLabel = std::string(getparametername(module->moduleState, i)); paramLabel.resize(10); paramLabels.push_back(paramLabel); } @@ -242,7 +243,7 @@ struct GigaverbWidget : ModuleWidget { panel->box.size = box.size; // Title text - genrack::Title *title = new genrack::Title(box.size.x / 2, top_margin, box.size.x, "gigaverb"); + genrack::Title *title = new genrack::Title(box.size.x / 2, top_margin, box.size.x, gigaverb); addChild(title); // Screws @@ -313,4 +314,4 @@ struct GigaverbWidget : ModuleWidget { /// Register the model -Model* modelGigaverb = createModel<Gigaverb, GigaverbWidget>("gigaverb"); +Model* modelGigaverb = createModel<Gigaverb, GigaverbWidget>(gigaverb); diff --git a/src/module.in b/src/module.in @@ -0,0 +1,317 @@ +#include "plugin.hpp" +#include "GEN_RACK_DISPLAY_NAME.h" + +using namespace GEN_RACK_DISPLAY_NAME; + +/// Processing + +struct GEN_RACK_NAME : Module { + CommonState *moduleState; + t_sample **inputBuffers; // access like: buffer[input #][sample #] + t_sample **outputBuffers; + int currentBufferSize = 256; + + int numParams; + int numInputs; + int numOutputs; + + int count = 0; + + GEN_RACK_NAME() { + // Set default sample rate of 44100 Hz and vector size 1 (VCV uses single sample processing) + // and update it later if needed + moduleState = (CommonState *)create(44100, currentBufferSize); + reset(moduleState); + + numParams = num_params(); + numInputs = num_inputs(); + numOutputs = num_outputs(); + + // Initialize sample buffers + inputBuffers = new t_sample *[numInputs]; + for (int i = 0; i < numInputs; i++) { + inputBuffers[i] = new t_sample[currentBufferSize]; + } + + outputBuffers = new t_sample *[numOutputs]; + for (int i = 0; i < numOutputs; i++) { + outputBuffers[i] = new t_sample[currentBufferSize]; + } + + + // Configure parameters + config(numParams, numInputs + numParams, numOutputs, 0); + for (int i = 0; i < numParams; i++) { + std::string name = std::string(getparametername(moduleState, i)); + std::string units = std::string(getparameterunits(moduleState, i)); + float min = 0.0; + float max = 1.0; + if (getparameterhasminmax(moduleState, i)) { + min = getparametermin(moduleState, i); + max = getparametermax(moduleState, i); + } + configParam(i, min, max, min, name, units); + } + } + + + ~GEN_RACK_NAME() { + destroy(moduleState); + deleteBuffers(); + } + + void deleteBuffers() { + for (int i = 0; i < numInputs; i++) { + if (inputBuffers[i]) { + delete inputBuffers[i]; + } + } + + for (int i = 0; i < numOutputs; i++) { + if (outputBuffers[i]) { + delete outputBuffers[i]; + } + } + } + + + void assureBufferSize(long bufferSize) { + if (bufferSize > currentBufferSize) { + for (int i = 0; i < numInputs; i++) { + if (inputBuffers[i]) { + delete inputBuffers[i]; + } + inputBuffers[i] = new t_sample[bufferSize]; + } + + for (int i = 0; i < numOutputs; i++) { + if (outputBuffers[i]) { + delete outputBuffers[i]; + } + outputBuffers[i] = new t_sample[bufferSize]; + } + currentBufferSize = bufferSize; + } + } + + + void process(const ProcessArgs& args) override { + if (count >= currentBufferSize) { + count = 0; + } + + // Fill inputs + for (int i = 0; i < numInputs; i++) { + if (inputs[i].isConnected()) { + inputBuffers[i][count] = inputs[i].getVoltage() / 5.f; + } + else { + inputBuffers[i][count] = 0.f; + } + } + + // Set output + for (int i = 0; i < numOutputs; i++) { + outputs[i].setVoltage(outputBuffers[i][count] * 5.f); + } + + // Step forward + count++; + + // Perform when we've filled the buffer + if (count == currentBufferSize) { + // Update any parameters + for (int i = 0; i < numParams; i++) { + // Get VCV inputs + float knobVal = params[i].getValue(); // Already scaled to range that genlib will understand + float cvVal = inputs[i + numInputs].isConnected() ? inputs[i + numInputs].getVoltage() / 5.f : 0.f; // Normalize to -1..1 + + // Scale to range of parameter + t_param min = getparametermin(moduleState, i); + t_param max = getparametermax(moduleState, i); + t_param range = fabs(max - min); + t_param val = clamp(knobVal + cvVal * range, min, max); // Offset the knobVal by the CV input + + setparameter(moduleState, i, val, NULL); + } + + // Fill the buffers + perform(moduleState, inputBuffers, numInputs, outputBuffers, numOutputs, currentBufferSize); + } + } +}; + + +/// Main module UI + +struct GEN_RACK_NAMEWidget : ModuleWidget { + int numParams; + int numInputs; + int numOutputs; + + std::vector<std::string> inputLabels; + std::vector<std::string> outputLabels; + std::vector<std::string> paramLabels; + + // Each column of ports has a certain number of "cells" that contain a port and label. + int ports_per_col = 6; + + // Each column of params has a certain number of "cells" that contain a port, a label, and a knob. + int params_per_col = 4; + + // Box off the actual section of "cells" with a margin + int l_margin = RACK_GRID_WIDTH; + int r_margin = RACK_GRID_WIDTH; + int bot_margin = 2 * RACK_GRID_WIDTH; + // The title and top margin together make up the top band of margin + int top_margin = RACK_GRID_WIDTH; + int h_title = 3 * RACK_GRID_WIDTH; + // The height of the actual part that will contain ports and knobs + int active_box_height = RACK_GRID_HEIGHT - bot_margin - h_title - top_margin; + + // A column will take up 3HP + int w_col = 3 * RACK_GRID_WIDTH; + + // Offset from the top of a cell to the knobs, ports, and labels + float port_center_offset = active_box_height / ports_per_col * 0.25f; + float label_port_offset = active_box_height / ports_per_col * 0.55f; + float param_knob_center_offset = active_box_height / params_per_col * 0.25f; + float param_port_center_offset = active_box_height / params_per_col * 0.65f; + float param_label_offset = active_box_height / params_per_col * 0.85f; + + int module_hp = 12; + + genrack::Panel *panel; + bool dirty = false; + + + GEN_RACK_NAMEWidget(GEN_RACK_NAME* module) { + setModule(module); + box.size = Vec(RACK_GRID_WIDTH * module_hp, RACK_GRID_HEIGHT); + + // Default background and title for module browser - will be drawn over when step() is called + panel = new genrack::Panel(40, 40, 40); + addChild(panel); + panel->box.size = box.size; + genrack::Title *title = new genrack::Title(box.size.x / 2, top_margin, box.size.x, GEN_RACK_DISPLAY_NAME); + addChild(title); + + if (module) { + // Make these publically accessible to the widget + numParams = module->numParams; + numInputs = module->numInputs; + numOutputs = module->numOutputs; + + for (int i = 0; i < numInputs; i++) { + std::string inputLabel = std::string("in ") + std::to_string(i + 1); + inputLabels.push_back(inputLabel); + } + + for (int i = 0; i < numOutputs; i++) { + std::string outputLabel = std::string("out ") + std::to_string(i + 1); + outputLabels.push_back(outputLabel); + } + + for (int i = 0; i < numParams; i++) { + std::string paramLabel = std::string(getparametername(module->moduleState, i)); + paramLabel.resize(10); + paramLabels.push_back(paramLabel); + } + + // Figure out the width of the module + module_hp = 2 + 3 * (genrack::util::int_div_round_up(numInputs, ports_per_col) + + genrack::util::int_div_round_up(numOutputs, ports_per_col) + + genrack::util::int_div_round_up(numParams, params_per_col)); + + box.size = Vec(RACK_GRID_WIDTH * module_hp, RACK_GRID_HEIGHT); + + // Draw on the next step + dirty = true; + step(); + } + } + + + // Runs with every UI frame update + void step() override { + + // The widget will be dirtied after the module is registered in the constructor + if (dirty) { + // Background panel + panel = new genrack::Panel(40, 40, 40); + addChild(panel); + panel->box.size = box.size; + + // Title text + genrack::Title *title = new genrack::Title(box.size.x / 2, top_margin, box.size.x, GEN_RACK_DISPLAY_NAME); + addChild(title); + + // Screws + addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); + addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 0))); + addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 365))); + addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 365))); + + // PORTS, PARAMS, LABELS + for (int i = 0; i < numInputs; i++) { + float left_x = l_margin + + int(i / ports_per_col) * w_col; + float center_x = left_x + w_col / 2; + + float top_y = top_margin + h_title + (i % ports_per_col) * (active_box_height / ports_per_col); + float port_center_y = top_y + port_center_offset; + float label_center_y = top_y + label_port_offset; + + addInput(createInputCentered<PJ301MPort>(Vec(center_x, port_center_y), module, i)); + + genrack::TextLabel *label = new genrack::TextLabel(center_x, label_center_y, left_x, inputLabels[i].c_str(), nvgRGB(230, 230, 230), 10); + addChild(label); + } + + for (int i = 0; i < numParams; i++) { + float left_x = l_margin + + genrack::util::int_div_round_up(numInputs, ports_per_col) * w_col + + int(i / params_per_col) * w_col; + float center_x = left_x + w_col / 2; + + float top_y = top_margin + h_title + (i % params_per_col) * (active_box_height / params_per_col); + + float knob_center_y = top_y + param_knob_center_offset; + float port_center_y = top_y + param_port_center_offset; + float label_center_y = top_y + param_label_offset; + + addParam(createParamCentered<RoundSmallBlackKnob>(Vec(center_x, knob_center_y), module, i)); + addInput(createInputCentered<PJ301MPort>(Vec(center_x, port_center_y), module, i + numInputs)); + + genrack::TextLabel *label = new genrack::TextLabel(center_x, label_center_y, left_x, paramLabels[i].c_str(), nvgRGB(230, 230, 230), 10); + addChild(label); + } + + for (int i = 0; i < numOutputs; i++) { + float left_x = l_margin + + genrack::util::int_div_round_up(numInputs, ports_per_col) * w_col + + genrack::util::int_div_round_up(numParams, params_per_col) * w_col + + int(i / ports_per_col) * w_col; + + float center_x = left_x + w_col / 2; + + float top_y = top_margin + h_title + (i % ports_per_col) * (active_box_height / ports_per_col); + float port_center_y = top_y + port_center_offset; + float label_center_y = top_y + label_port_offset; + + addOutput(createOutputCentered<PJ301MPort>(Vec(center_x, port_center_y), module, i)); + + genrack::TextLabel *label = new genrack::TextLabel(center_x, label_center_y, left_x, outputLabels[i].c_str(), nvgRGB(230, 230, 230), 10); + addChild(label); + } + + dirty = false; + } + + ModuleWidget::step(); + } +}; + + +/// Register the model +Model* modelGEN_RACK_NAME = createModel<GEN_RACK_NAME, GEN_RACK_NAMEWidget>(GEN_RACK_DISPLAY_NAME);