{ "patcher" : { "fileversion" : 1, "appversion" : { "major" : 8, "minor" : 5, "revision" : 3, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", "rect" : [ 63.0, 147.0, 476.0, 425.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-102", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 4, "outlettype" : [ "", "", "", "" ], "patcher" : { "fileversion" : 1, "appversion" : { "major" : 8, "minor" : 5, "revision" : 3, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", "rect" : [ 0.0, 0.0, 640.0, 480.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-94", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 50.0, 100.0, 154.0, 22.0 ], "text" : "jstrigger ([a[0]-1\\, a[1] == 0])" } } , { "box" : { "id" : "obj-67", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 4, "outlettype" : [ "", "", "", "" ], "patching_rect" : [ 50.0, 131.0, 50.5, 22.0 ], "text" : "spray 4" } } , { "box" : { "comment" : "", "id" : "obj-97", "index" : 1, "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 50.0, 40.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-98", "index" : 1, "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 50.0, 213.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-99", "index" : 2, "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 85.0, 213.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-100", "index" : 3, "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 120.0, 213.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-101", "index" : 4, "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 155.0, 213.0, 30.0, 30.0 ] } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-100", 0 ], "source" : [ "obj-67", 2 ] } } , { "patchline" : { "destination" : [ "obj-101", 0 ], "source" : [ "obj-67", 3 ] } } , { "patchline" : { "destination" : [ "obj-98", 0 ], "source" : [ "obj-67", 0 ] } } , { "patchline" : { "destination" : [ "obj-99", 0 ], "source" : [ "obj-67", 1 ] } } , { "patchline" : { "destination" : [ "obj-67", 0 ], "source" : [ "obj-94", 0 ] } } , { "patchline" : { "destination" : [ "obj-94", 0 ], "source" : [ "obj-97", 0 ] } } ] } , "patching_rect" : [ 329.5, 255.0, 101.5, 22.0 ], "saved_object_attributes" : { "description" : "", "digest" : "", "globalpatchername" : "", "tags" : "" } , "text" : "p" } } , { "box" : { "id" : "obj-85", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "parameter_enable" : 0, "patching_rect" : [ 412.0, 287.0, 24.0, 24.0 ] } } , { "box" : { "id" : "obj-86", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "parameter_enable" : 0, "patching_rect" : [ 384.5, 287.0, 24.0, 24.0 ] } } , { "box" : { "id" : "obj-84", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "parameter_enable" : 0, "patching_rect" : [ 357.0, 287.0, 24.0, 24.0 ] } } , { "box" : { "id" : "obj-82", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "parameter_enable" : 0, "patching_rect" : [ 329.5, 287.0, 24.0, 24.0 ] } } , { "box" : { "id" : "obj-65", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 329.5, 226.0, 99.0, 22.0 ], "text" : "route voicestatus" } } , { "box" : { "hidden" : 1, "id" : "obj-28", "maxclass" : "newobj", "numinlets" : 4, "numoutlets" : 1, "outlettype" : [ "" ], "patcher" : { "fileversion" : 1, "appversion" : { "major" : 8, "minor" : 5, "revision" : 3, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", "rect" : [ 0.0, 0.0, 640.0, 480.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-19", "linecount" : 2, "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 434.0, 100.0, 79.0, 35.0 ], "text" : "prepend voice/release" } } , { "box" : { "id" : "obj-18", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 307.0, 100.0, 125.0, 22.0 ], "text" : "prepend voice/sustain" } } , { "box" : { "id" : "obj-17", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 177.0, 100.0, 119.0, 22.0 ], "text" : "prepend voice/decay" } } , { "box" : { "id" : "obj-14", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 50.0, 100.0, 119.0, 22.0 ], "text" : "prepend voice/attack" } } , { "box" : { "comment" : "", "id" : "obj-23", "index" : 1, "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 50.0, 40.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-24", "index" : 2, "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 177.0, 40.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-25", "index" : 3, "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 307.0, 40.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-26", "index" : 4, "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 434.0, 40.0, 30.0, 30.0 ] } } , { "box" : { "comment" : "", "id" : "obj-27", "index" : 1, "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 236.0, 195.0, 30.0, 30.0 ] } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-27", 0 ], "source" : [ "obj-14", 0 ] } } , { "patchline" : { "destination" : [ "obj-27", 0 ], "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-27", 0 ], "source" : [ "obj-18", 0 ] } } , { "patchline" : { "destination" : [ "obj-27", 0 ], "source" : [ "obj-19", 0 ] } } , { "patchline" : { "destination" : [ "obj-14", 0 ], "source" : [ "obj-23", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 0 ], "source" : [ "obj-24", 0 ] } } , { "patchline" : { "destination" : [ "obj-18", 0 ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-19", 0 ], "source" : [ "obj-26", 0 ] } } ] } , "patching_rect" : [ 41.5, 165.0, 45.0, 22.0 ], "saved_object_attributes" : { "description" : "", "digest" : "", "globalpatchername" : "", "tags" : "" } , "text" : "p" } } , { "box" : { "attack_time" : 4.259302567452045, "decay_time" : 2264.395152613411028, "id" : "obj-4", "maxclass" : "live.adsrui", "numinlets" : 10, "numoutlets" : 10, "outlettype" : [ "", "", "", "", "", "", "", "", "", "" ], "patching_rect" : [ 41.5, 130.333332777023315, 152.348033250607671, 56.666667222976685 ], "release_time" : 252.949240259164071, "sustain" : 0.547058818158807 } } , { "box" : { "id" : "obj-21", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 8, "outlettype" : [ "", "", "", "int", "int", "", "int", "" ], "patching_rect" : [ 100.0, 289.0, 217.5, 22.0 ], "text" : "midiparse" } } , { "box" : { "id" : "obj-11", "maxclass" : "kslider", "mode" : 1, "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "int", "int" ], "parameter_enable" : 0, "patching_rect" : [ 100.0, 317.0, 336.0, 53.0 ] } } , { "box" : { "attr" : "steal", "id" : "obj-13", "maxclass" : "attrui", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "parameter_enable" : 0, "patching_rect" : [ 41.5, 103.0, 152.0, 22.0 ], "text_width" : 58.5 } } , { "box" : { "id" : "obj-12", "maxclass" : "ezdac~", "numinlets" : 2, "numoutlets" : 0, "patching_rect" : [ 41.5, 325.0, 45.0, 45.0 ] } } , { "box" : { "id" : "obj-9", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 62.5, 204.0, 40.0, 22.0 ], "text" : "midiin" } } , { "box" : { "autosave" : 0, "id" : "obj-1", "inletInfo" : { "IOInfo" : [ { "type" : "midi", "index" : -1, "tag" : "", "comment" : "" } ] } , "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 3, "outletInfo" : { "IOInfo" : [ { "type" : "signal", "index" : 1, "tag" : "out1", "comment" : "" } , { "type" : "midi", "index" : -1, "tag" : "", "comment" : "" } ] } , "outlettype" : [ "signal", "int", "list" ], "patcher" : { "fileversion" : 1, "appversion" : { "major" : 8, "minor" : 5, "revision" : 3, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "rnbo", "rect" : [ 46.0, 110.0, 1007.0, 824.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, "title" : "untitled", "boxes" : [ { "box" : { "fontname" : "Lato Light", "fontsize" : 14.0, "id" : "obj-5", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 18.400000095367432, 54.400000035762787, 424.0, 23.0 ], "text" : "Custom Voice modes with Codebox : Voice Stealing modes" } } , { "box" : { "id" : "obj-7", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 442.399996906518936, 93.399996817111969, 236.0, 23.0 ], "rnbo_classname" : "param", "rnbo_extra_attributes" : { "order" : "0", "preset" : 1, "minimum" : 0.0, "meta" : "", "value" : 0.0, "exponent" : 1.0, "ctlin" : 0.0, "fromnormalized" : "", "maximum" : 1.0, "sendinit" : 1, "displayorder" : "-", "displayname" : "", "tonormalized" : "", "unit" : "", "steps" : 0.0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "steal", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "value" : { "attrOrProp" : 2, "digest" : "Set initial value", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Initial Value", "displayorder" : 3 } , "normalizedvalue" : { "attrOrProp" : 1, "digest" : "Set value normalized. ", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "reset" : { "attrOrProp" : 1, "digest" : "Reset param to initial value", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "normalized" : { "attrOrProp" : 1, "digest" : "Normalized parameter value.", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "name" : { "attrOrProp" : 2, "digest" : "Name of the parameter", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "Parameter Name", "mandatory" : 1 } , "enum" : { "attrOrProp" : 2, "digest" : "Use an enumerated output", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list", "label" : "Enum Values", "displayorder" : 6 } , "minimum" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 0, "aliases" : [ "min" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "min" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 1, "aliasOf" : "minimum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "maximum" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 0, "aliases" : [ "max" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "max" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 1, "aliasOf" : "maximum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "exponent" : { "attrOrProp" : 2, "digest" : "Scale values exponentially", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Exponent", "displayorder" : 7 } , "steps" : { "attrOrProp" : 2, "digest" : "Divide the output into a number of discrete steps", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Steps", "displayorder" : 8 } , "displayname" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ "displayName" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "displayName" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 1, "aliasOf" : "displayname", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "unit" : { "attrOrProp" : 2, "digest" : "A symbol to describe the unit of the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Unit", "displayorder" : 15 } , "tonormalized" : { "attrOrProp" : 2, "digest" : "Converts a real parameter value to its normalized form.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "To Normalized Expression", "displayorder" : 10 } , "fromnormalized" : { "attrOrProp" : 2, "digest" : "Converts a normalized parameter into its actual parameter value.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "From Normalized Expression", "displayorder" : 9 } , "order" : { "attrOrProp" : 2, "digest" : "Order in which initial parameter values will be sent out on patcher load. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "0", "label" : "Restore Order", "displayorder" : 12 } , "displayorder" : { "attrOrProp" : 2, "digest" : "Order in which parameters will show up in a list of all parameters. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "-", "label" : "Display Order", "displayorder" : 13 } , "sendinit" : { "attrOrProp" : 2, "digest" : "Send initial value", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Send Init", "displayorder" : 4 } , "ctlin" : { "attrOrProp" : 2, "digest" : "MIDI controller number to control this parameter.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "label" : "MIDI Controller Number.", "displayorder" : 16 } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 17 } , "nopreset" : { "attrOrProp" : 2, "digest" : "Do not add this value to the preset [DEPRECATED - USE @preset 0 instead].", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 1, "type" : "bool", "defaultValue" : "false" } , "preset" : { "attrOrProp" : 2, "digest" : "Add this value to the preset.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Include In Preset", "displayorder" : 11 } } , "inputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalizedvalue", "type" : "number", "digest" : "Set value normalized. ", "docked" : 0 } ], "outputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalized", "type" : "number", "digest" : "Normalized parameter value.", "docked" : 0 } ], "helpname" : "param", "aliasOf" : "param", "classname" : "param", "operator" : 0, "versionId" : -1445040964, "changesPatcherIO" : 0 } , "text" : "param steal @enum highest lowest first last", "varname" : "steal" } } , { "box" : { "fontname" : "Lato", "fontsize" : 24.0, "id" : "obj-92", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 18.400000095367432, 17.400000035762787, 236.0, 35.0 ], "text" : "RNBO : Polyphony " } } , { "box" : { "id" : "obj-91", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 0, "patching_rect" : [ 54.000001430511475, 693.399996817111969, 49.0, 23.0 ], "rnbo_classname" : "midiout", "rnbo_serial" : 1, "rnbo_uniqueid" : "midiout_obj-91", "text" : "midiout" } } , { "box" : { "id" : "obj-2", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 231.400000095367432, 775.999996602535248, 111.0, 23.0 ], "rnbo_classname" : "outport", "rnbo_extra_attributes" : { "meta" : "" } , "rnbo_serial" : 1, "rnbo_uniqueid" : "outport_obj-2", "text" : "outport voicestatus" } } , { "box" : { "code" : "const POLYPHONY = 4; \r\n\r\nconst MIDINoteStateOff = 0;\nconst MIDINoteStateOn = 1;\r\n\r\nconst MIDINoteOffMask = 0x80;\nconst MIDINoteOnMask = 0x90;\n\r\n// 0 ... state (1 ... active, 0 ... muted)\n// 1 ... note number (MIDI pitch)\n// 2 ... last note on time\n// 3 ... MIDI channel\r\n\r\n@state voiceState = new FixedNumberArray(POLYPHONY, 4);\n@state parser = new midiparse();\r\n@state mode = 0;\r\n\r\nfunction listin3(v) {\n\t// we only react to notifications when a voice is muted\n\t// since we assume any voice activation will be done by us\n\tlet voiceIndex = v[0] - 1;\r\n\t\r\n\tif (v[1] == 1) {\r\n\t\tvoiceState[voiceIndex][0] = MIDINoteStateOff;\r\n\t\tvoiceState[voiceIndex][1] = 0;\r\n\t\tvoiceState[voiceIndex][2] = 0;\r\n\t\tvoiceState[voiceIndex][3] = 0;\n\t}\r\n}\r\n\r\nfunction stealmode(candidate_ontime, candidate_pitch, target_time, target_pitch) {\r\n\tlet suitable;\r\n\tswitch (mode) {\r\n\t\tcase 0:\r\n\t\t\t// higher note steals\r\n\t\t\tsuitable = candidate_pitch > target_pitch;\r\n\t\t\tbreak;\r\n\t\tcase 1:\r\n\t\t\t// lower note steals\r\n\t\t\tsuitable = candidate_pitch < target_pitch;\r\n\t\t\tbreak;\r\n\t\tcase 2:\r\n\t\t\t// FIFO\r\n\t\t\tsuitable = candidate_ontime < target_time;\r\n\t\t\tbreak;\r\n\t\tcase 3:\r\n\t\t\t// LIFO\r\n\t\t\tsuitable = candidate_ontime > target_time;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tsuitable = false;\r\n\t\t\t// pass\r\n\t}\r\n\treturn suitable;\r\n}\r\n\r\nfunction sendnoteoff(target) {\r\n\tif (voiceState[target - 1][0] != MIDINoteStateOff)\n\t{\r\n\t\t// set target\n\t\tout3 = target;\n\t\t\t\r\n\t\tlet channel = voiceState[target][3];\r\n\t\tout1 = MIDI_NoteOffMask | channel;\n\t\tout1 = voiceState[target - 1][1];\n\t\tout1 = 64; // default note off velocity\n\t\t\t\r\n\t\tvoiceState[target - 1][0] = MIDINoteStateOff;\n\t}\n}\r\n\r\nfunction sendnoteon(target, velocity) {\r\n\t// send mute state\n listout2 = [ target, 0 ];\n // set target\n out3 = target;\r\n\r\n\tlet channel = voiceState[target][3]; \n // send midi values out\n out1 = MIDINoteOnMask | channel;\n out1 = voiceState[target - 1][1];\n out1 = velocity;\t\r\n}\r\n\r\nfunction assignvoice(pitch, velocity, channel) {\r\n\tlet sendnoteoff = true;\n let target = 1;\n\t\r\n // get last on time of first note\n let target_time = voiceState[0][2];\n \r\n\t// get state of first note\n let target_state = voiceState[0][0];\r\n\r\n\t// get the pitch of the first note\r\n\tlet target_pitch = voiceState[0][1];\n\n for (let i = 0; i < POLYPHONY; i++) {\n let candidate_state = voiceState[i][0];\n\n // the note is already playing, just route the note on to\n\t // the voice, and do not send a note off\n\t if (voiceState[i][1] == pitch && candidate_state == MIDINoteStateOn)\n {\n sendnoteoff = false;\n target = i + 1;\n break;\n }\n\n if (i > 0) {\n // only consider this voice if it's off or if the current candidate is on\n // so we get the oldest voice that's off or the oldest voice period if all are on\n if ((candidate_state != MIDINoteStateOn) || (target_state == MIDINoteStateOn))\n {\n\t\t\t\tlet candidate_ontime = voiceState[i][2];\r\n\t\t\t\tlet candidate_pitch = voiceState[i][1];\r\n\t\t\t\t\r\n\t\t\t\tlet suitable = stealmode(candidate_ontime, candidate_pitch, target_time, target_pitch);\n\n // either this candidate is older/newer than our current target, or our current target is on\n // and this candidate is off (which we always prefer)\n if (suitable || (target_state == MIDINoteStateOn && candidate_state != MIDINoteStateOn)) {\n target = i + 1;\n if (mode > 1) target_time = candidate_ontime;\r\n\t\t\t\t\tif (mode < 2) target_pitch = candidate_pitch;\n target_state = candidate_state;\r\n\t\t\t\t}\n }\n }\n }\n \n if (sendnoteoff) sendnoteoff(target);\n \r\n // add the assigned note to voiceState array\r\n let targetIndex = target - 1;\n voiceState[targetIndex][0] = MIDINoteStateOn;\n voiceState[targetIndex][1] = pitch;\n voiceState[targetIndex][2] = currenttime();\n voiceState[targetIndex][3] = channel;\n\n\tsendnoteon(target, velocity);\t\r\n}\r\n\r\nfunction clearvoice(pitch, velocity, channel, status) {\r\n\t// these are the note-specific messages -- need to find proper target\n // and then turn voice off\n let target = 0;\n for (let i = 0; i < POLYPHONY; i++) {\n \tif (voiceState[i][1] == pitch && voiceState[i][3] == channel && voiceState[i][0] == MIDINoteStateOn) {\n \ttarget = i + 1;\n \tbreak;\n \t}\n }\n \n if (target > 0) {\n \t// set target\n out3 = target;\n \n // send out MIDI\n out1 = status;\n out1 = pitch;\n out1 = velocity;\n\n voiceState[target - 1][0] = MIDINoteStateOff;\r\n\t}\n \telse {\n \t// note not found -- could have been stolen -- just ignore\n }\r\n}\r\n\r\nlet midistate = parser.next(in1);\nlet messageType = midistate[0];\nmode = in2;\r\n\nlet status = midistate[midistate.length - 3];\nlet byte1 = midistate[midistate.length - 2];\nlet byte2 = midistate[midistate.length - 1];\n\r\nswitch (messageType) {\r\n\tcase -1:\r\n\t\t// nothing detected\r\n\t\tbreak;\n\tcase 0:\t\t\n\t{\t\r\n\t\t// note on or off\n \tlet pitch = midistate[1];\n let velocity = midistate[2];\n let channel = midistate[3];\n\n let isNoteOn = velocity != 0;\r\n\n if (isNoteOn) {\r\n\t\t\tassignvoice(pitch, velocity, channel);\r\n\t\t} else {\r\n\t\t\tclearvoice(pitch, velocity, channel, status);\r\n\t\t}\t\r\n\t\tbreak;\r\n\t}\r\n\tdefault:\r\n\t // set target\n out3 = 0;\n\r\n\t\t// default behavior is just forwarding MIDI to everyone\r\n\t\tout1 = status;\r\n\t\tout1 = byte1;\r\n\t\tout1 = byte2;\r\n}\n", "fontface" : 0, "fontname" : "", "fontsize" : 12.0, "id" : "obj-17", "maxclass" : "codebox", "numinlets" : 3, "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 18.400000095367432, 130.599996626377106, 866.999993622303009, 550.400000214576721 ], "rnbo_classname" : "codebox", "rnbo_extra_attributes" : { "code" : "const POLYPHONY = 4; \r\n\r\nconst MIDINoteStateOff = 0;\nconst MIDINoteStateOn = 1;\r\n\r\nconst MIDINoteOffMask = 0x80;\nconst MIDINoteOnMask = 0x90;\n\r\n// 0 ... state (1 ... active, 0 ... muted)\n// 1 ... note number (MIDI pitch)\n// 2 ... last note on time\n// 3 ... MIDI channel\r\n\r\n@state voiceState = new FixedNumberArray(POLYPHONY, 4);\n@state parser = new midiparse();\r\n@state mode = 0;\r\n\r\nfunction listin3(v) {\n\t// we only react to notifications when a voice is muted\n\t// since we assume any voice activation will be done by us\n\tlet voiceIndex = v[0] - 1;\r\n\t\r\n\tif (v[1] == 1) {\r\n\t\tvoiceState[voiceIndex][0] = MIDINoteStateOff;\r\n\t\tvoiceState[voiceIndex][1] = 0;\r\n\t\tvoiceState[voiceIndex][2] = 0;\r\n\t\tvoiceState[voiceIndex][3] = 0;\n\t}\r\n}\r\n\r\nfunction stealmode(candidate_ontime, candidate_pitch, target_time, target_pitch) {\r\n\tlet suitable;\r\n\tswitch (mode) {\r\n\t\tcase 0:\r\n\t\t\t// higher note steals\r\n\t\t\tsuitable = candidate_pitch > target_pitch;\r\n\t\t\tbreak;\r\n\t\tcase 1:\r\n\t\t\t// lower note steals\r\n\t\t\tsuitable = candidate_pitch < target_pitch;\r\n\t\t\tbreak;\r\n\t\tcase 2:\r\n\t\t\t// FIFO\r\n\t\t\tsuitable = candidate_ontime < target_time;\r\n\t\t\tbreak;\r\n\t\tcase 3:\r\n\t\t\t// LIFO\r\n\t\t\tsuitable = candidate_ontime > target_time;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tsuitable = false;\r\n\t\t\t// pass\r\n\t}\r\n\treturn suitable;\r\n}\r\n\r\nfunction sendnoteoff(target) {\r\n\tif (voiceState[target - 1][0] != MIDINoteStateOff)\n\t{\r\n\t\t// set target\n\t\tout3 = target;\n\t\t\t\r\n\t\tlet channel = voiceState[target][3];\r\n\t\tout1 = MIDI_NoteOffMask | channel;\n\t\tout1 = voiceState[target - 1][1];\n\t\tout1 = 64; // default note off velocity\n\t\t\t\r\n\t\tvoiceState[target - 1][0] = MIDINoteStateOff;\n\t}\n}\r\n\r\nfunction sendnoteon(target, velocity) {\r\n\t// send mute state\n listout2 = [ target, 0 ];\n // set target\n out3 = target;\r\n\r\n\tlet channel = voiceState[target][3]; \n // send midi values out\n out1 = MIDINoteOnMask | channel;\n out1 = voiceState[target - 1][1];\n out1 = velocity;\t\r\n}\r\n\r\nfunction assignvoice(pitch, velocity, channel) {\r\n\tlet sendnoteoff = true;\n let target = 1;\n\t\r\n // get last on time of first note\n let target_time = voiceState[0][2];\n \r\n\t// get state of first note\n let target_state = voiceState[0][0];\r\n\r\n\t// get the pitch of the first note\r\n\tlet target_pitch = voiceState[0][1];\n\n for (let i = 0; i < POLYPHONY; i++) {\n let candidate_state = voiceState[i][0];\n\n // the note is already playing, just route the note on to\n\t // the voice, and do not send a note off\n\t if (voiceState[i][1] == pitch && candidate_state == MIDINoteStateOn)\n {\n sendnoteoff = false;\n target = i + 1;\n break;\n }\n\n if (i > 0) {\n // only consider this voice if it's off or if the current candidate is on\n // so we get the oldest voice that's off or the oldest voice period if all are on\n if ((candidate_state != MIDINoteStateOn) || (target_state == MIDINoteStateOn))\n {\n\t\t\t\tlet candidate_ontime = voiceState[i][2];\r\n\t\t\t\tlet candidate_pitch = voiceState[i][1];\r\n\t\t\t\t\r\n\t\t\t\tlet suitable = stealmode(candidate_ontime, candidate_pitch, target_time, target_pitch);\n\n // either this candidate is older/newer than our current target, or our current target is on\n // and this candidate is off (which we always prefer)\n if (suitable || (target_state == MIDINoteStateOn && candidate_state != MIDINoteStateOn)) {\n target = i + 1;\n if (mode > 1) target_time = candidate_ontime;\r\n\t\t\t\t\tif (mode < 2) target_pitch = candidate_pitch;\n target_state = candidate_state;\r\n\t\t\t\t}\n }\n }\n }\n \n if (sendnoteoff) sendnoteoff(target);\n \r\n // add the assigned note to voiceState array\r\n let targetIndex = target - 1;\n voiceState[targetIndex][0] = MIDINoteStateOn;\n voiceState[targetIndex][1] = pitch;\n voiceState[targetIndex][2] = currenttime();\n voiceState[targetIndex][3] = channel;\n\n\tsendnoteon(target, velocity);\t\r\n}\r\n\r\nfunction clearvoice(pitch, velocity, channel, status) {\r\n\t// these are the note-specific messages -- need to find proper target\n // and then turn voice off\n let target = 0;\n for (let i = 0; i < POLYPHONY; i++) {\n \tif (voiceState[i][1] == pitch && voiceState[i][3] == channel && voiceState[i][0] == MIDINoteStateOn) {\n \ttarget = i + 1;\n \tbreak;\n \t}\n }\n \n if (target > 0) {\n \t// set target\n out3 = target;\n \n // send out MIDI\n out1 = status;\n out1 = pitch;\n out1 = velocity;\n\n voiceState[target - 1][0] = MIDINoteStateOff;\r\n\t}\n \telse {\n \t// note not found -- could have been stolen -- just ignore\n }\r\n}\r\n\r\nlet midistate = parser.next(in1);\nlet messageType = midistate[0];\nmode = in2;\r\n\nlet status = midistate[midistate.length - 3];\nlet byte1 = midistate[midistate.length - 2];\nlet byte2 = midistate[midistate.length - 1];\n\r\nswitch (messageType) {\r\n\tcase -1:\r\n\t\t// nothing detected\r\n\t\tbreak;\n\tcase 0:\t\t\n\t{\t\r\n\t\t// note on or off\n \tlet pitch = midistate[1];\n let velocity = midistate[2];\n let channel = midistate[3];\n\n let isNoteOn = velocity != 0;\r\n\n if (isNoteOn) {\r\n\t\t\tassignvoice(pitch, velocity, channel);\r\n\t\t} else {\r\n\t\t\tclearvoice(pitch, velocity, channel, status);\r\n\t\t}\t\r\n\t\tbreak;\r\n\t}\r\n\tdefault:\r\n\t // set target\n out3 = 0;\n\r\n\t\t// default behavior is just forwarding MIDI to everyone\r\n\t\tout1 = status;\r\n\t\tout1 = byte1;\r\n\t\tout1 = byte2;\r\n}\n", "hot" : 0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "codebox_obj-17", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "reset" : { "attrOrProp" : 1, "digest" : "Reset all state and params to initial values", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "in1" : { "attrOrProp" : 1, "digest" : "in1", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "in2" : { "attrOrProp" : 1, "digest" : "in2", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "in3" : { "attrOrProp" : 1, "digest" : "in3", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "list" } , "out1" : { "attrOrProp" : 1, "digest" : "out1", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "out2" : { "attrOrProp" : 1, "digest" : "out2", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "list" } , "out3" : { "attrOrProp" : 1, "digest" : "out3", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "expr" : { "attrOrProp" : 2, "digest" : "expr", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "hot" : { "attrOrProp" : 2, "digest" : "Trigger computation on all inlets.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "false" } } , "inputs" : [ { "name" : "in1", "type" : "number", "digest" : "in1", "hot" : 1, "docked" : 0 } , { "name" : "in2", "type" : "number", "digest" : "in2", "docked" : 0 } , { "name" : "in3", "type" : "list", "digest" : "in3", "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "number", "digest" : "out1", "docked" : 0 } , { "name" : "out2", "type" : "list", "digest" : "out2", "docked" : 0 } , { "name" : "out3", "type" : "number", "digest" : "out3", "docked" : 0 } ], "helpname" : "codebox", "aliasOf" : "expr", "classname" : "codebox", "operator" : 0, "versionId" : -604458600, "changesPatcherIO" : 0 } } } , { "box" : { "id" : "obj-14", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 18.400000095367432, 775.999996602535248, 43.0, 23.0 ], "rnbo_classname" : "out~", "rnbo_extra_attributes" : { "meta" : "", "comment" : "" } , "rnbo_serial" : 1, "rnbo_uniqueid" : "out~_obj-14", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "in1" : { "attrOrProp" : 1, "digest" : "signal sent to outlet with index 1", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "signal" } , "index" : { "attrOrProp" : 2, "digest" : "outlet number", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "mandatory" : 1 } , "comment" : { "attrOrProp" : 2, "digest" : "mouse over comment", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol" } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 3 } } , "inputs" : [ { "name" : "in1", "type" : "signal", "digest" : "signal sent to outlet with index 1", "displayName" : "", "hot" : 1, "docked" : 0 } ], "outputs" : [ ], "helpname" : "out~", "aliasOf" : "out~", "classname" : "out~", "operator" : 0, "versionId" : 374499139, "changesPatcherIO" : 1 } , "text" : "out~ 1" } } , { "box" : { "id" : "obj-3", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 18.400000095367432, 93.399996817111969, 40.0, 23.0 ], "rnbo_classname" : "midiin", "rnbo_serial" : 1, "rnbo_uniqueid" : "midiin_obj-3", "text" : "midiin" } } , { "box" : { "id" : "obj-1", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "signal", "" ], "patcher" : { "fileversion" : 1, "appversion" : { "major" : 8, "minor" : 5, "revision" : 3, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "rnbo", "rect" : [ 57.0, 117.0, 835.0, 767.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, "title" : "untitled", "boxes" : [ { "box" : { "fontname" : "Lato Light", "fontsize" : 14.0, "id" : "obj-16", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 18.400000095367432, 54.400000035762787, 424.0, 23.0 ], "text" : "Custom Voice modes with Codebox : Voice Stealing modes" } } , { "box" : { "fontname" : "Lato", "fontsize" : 24.0, "id" : "obj-92", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 18.400000095367432, 17.400000035762787, 236.0, 35.0 ], "text" : "RNBO : Polyphony " } } , { "box" : { "id" : "obj-20", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 403.0, 613.0, 23.0, 23.0 ], "rnbo_classname" : "t", "rnbo_extra_attributes" : { "triggers" : "" } , "rnbo_serial" : 1, "rnbo_uniqueid" : "t_obj-20", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "out1" : { "attrOrProp" : 1, "digest" : "Output order 1 (bang).", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "bang" } , "triggers" : { "attrOrProp" : 2, "digest" : "The number of arguments determines the number of outlets. \t\t\t\t\t\tEach outlet sends out either a whole number, float, bang or list, \t\t\t\t\t\tas identified by symbol arguments (i, f, b, l). \t\t\t\t\t\tIf there are no arguments, there are two outlets, both of which send a float.", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list" } } , "inputs" : [ { "name" : "input", "type" : [ "bang", "number", "list" ], "digest" : "input to distribute", "hot" : 1, "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "bang", "digest" : "Output order 1 (bang).", "defaultarg" : 1, "docked" : 0 } ], "helpname" : "trigger", "aliasOf" : "trigger", "classname" : "t", "operator" : 0, "versionId" : -1133428571, "changesPatcherIO" : 0 } , "text" : "t b" } } , { "box" : { "id" : "obj-25", "maxclass" : "newobj", "numinlets" : 4, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 465.000000000000057, 680.0, 255.0, 23.0 ], "rnbo_classname" : "pack", "rnbo_extra_attributes" : { "list" : "", "length" : 0.0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "pack_obj-25", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "out" : { "attrOrProp" : 1, "digest" : "out", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "list" } , "in1" : { "attrOrProp" : 1, "digest" : "number to be list element 1", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number", "defaultValue" : "0" } , "in2" : { "attrOrProp" : 1, "digest" : "number to be list element 2", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number", "defaultValue" : "0" } , "in3" : { "attrOrProp" : 1, "digest" : "number to be list element 3", "defaultarg" : 3, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number", "defaultValue" : "0" } , "in4" : { "attrOrProp" : 1, "digest" : "number to be list element 4", "defaultarg" : 4, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number", "defaultValue" : "0" } , "length" : { "attrOrProp" : 2, "digest" : "how many things to pack", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "list" : { "attrOrProp" : 2, "digest" : "the list to initialize the {@objectname} object with", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list" } } , "inputs" : [ { "name" : "in1", "type" : "number", "digest" : "number to be list element 1", "defaultarg" : 1, "hot" : 1, "docked" : 0 } , { "name" : "in2", "type" : "number", "digest" : "number to be list element 2", "defaultarg" : 2, "docked" : 0 } , { "name" : "in3", "type" : "number", "digest" : "number to be list element 3", "defaultarg" : 3, "docked" : 0 } , { "name" : "in4", "type" : "number", "digest" : "number to be list element 4", "defaultarg" : 4, "docked" : 0 } ], "outputs" : [ { "name" : "out", "type" : "list", "digest" : "out", "docked" : 0 } ], "helpname" : "pack", "aliasOf" : "pack", "classname" : "pack", "operator" : 0, "versionId" : 2113152561, "changesPatcherIO" : 0 } , "text" : "pack 0 0 0 0" } } , { "box" : { "id" : "obj-14", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 465.000000000000057, 713.0, 112.0, 23.0 ], "rnbo_classname" : "outport", "rnbo_extra_attributes" : { "meta" : "" } , "rnbo_serial" : 1, "rnbo_uniqueid" : "outport_obj-14", "text" : "outport voiceobject" } } , { "box" : { "id" : "obj-1", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 4, "outlettype" : [ "", "", "", "" ], "patching_rect" : [ 465.000000000000057, 637.0, 255.000000000000171, 23.0 ], "rnbo_classname" : "voice", "rnbo_serial" : 1, "rnbo_uniqueid" : "voice_obj-1", "text" : "voice" } } , { "box" : { "id" : "obj-6", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "signal" ], "patching_rect" : [ 48.0, 473.0, 54.0, 23.0 ], "rnbo_classname" : "phasor~", "rnbo_extra_attributes" : { "lock" : 0.0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "phasor~_obj-6", "text" : "phasor~" } } , { "box" : { "id" : "obj-24", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 80.0, 175.0, 186.0, 23.0 ], "rnbo_classname" : "expr", "rnbo_extra_attributes" : { "hot" : 0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "expr_obj-24", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "reset" : { "attrOrProp" : 1, "digest" : "Reset all state and params to initial values", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "in1" : { "attrOrProp" : 1, "digest" : "in1", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "out1" : { "attrOrProp" : 1, "digest" : "out1", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "expr" : { "attrOrProp" : 2, "digest" : "expr", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "hot" : { "attrOrProp" : 2, "digest" : "Trigger computation on all inlets.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "false" } } , "inputs" : [ { "name" : "in1", "type" : "number", "digest" : "in1", "hot" : 1, "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "number", "digest" : "out1", "docked" : 0 } ], "helpname" : "expr", "aliasOf" : "expr", "classname" : "expr", "operator" : 0, "versionId" : -604458600, "changesPatcherIO" : 0 } , "text" : "expr @expr out1 = in1 > 0 ? 1 : 0" } } , { "box" : { "id" : "obj-19", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 48.0, 270.0, 34.0, 23.0 ], "rnbo_classname" : "gate", "rnbo_extra_attributes" : { "outputs" : 1.0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "gate_obj-19", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "onoff" : { "attrOrProp" : 1, "digest" : "0 Closes gate, non-zero opens the corresponding gate outlet", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number", "defaultValue" : "0" } , "outputs" : { "attrOrProp" : 2, "digest" : "Number of outlets", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1" } } , "inputs" : [ { "name" : "onoff", "type" : "number", "digest" : "0 Closes gate, non-zero opens the corresponding gate outlet", "defaultarg" : 2, "docked" : 0 } , { "name" : "input", "type" : [ "bang", "number", "list" ], "digest" : "Incoming gated message", "hot" : 1, "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : [ "bang", "number", "list" ], "digest" : "Gated Output 1", "docked" : 0 } ], "helpname" : "gate", "aliasOf" : "gate", "classname" : "gate", "operator" : 0, "versionId" : 1220277655, "changesPatcherIO" : 0 } , "text" : "gate" } } , { "box" : { "id" : "obj-18", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "signal" ], "patching_rect" : [ 295.5, 637.0, 64.5, 23.0 ], "rnbo_classname" : "*~", "rnbo_serial" : 1, "rnbo_uniqueid" : "*~_obj-18", "text" : "*~" } } , { "box" : { "id" : "obj-13", "maxclass" : "newobj", "numinlets" : 5, "numoutlets" : 2, "outlettype" : [ "signal", "" ], "patching_rect" : [ 341.0, 576.0, 143.000000000000057, 23.0 ], "rnbo_classname" : "adsr~", "rnbo_serial" : 1, "rnbo_uniqueid" : "adsr~_obj-13", "text" : "adsr~" } } , { "box" : { "id" : "obj-4", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 465.0, 536.0, 318.0, 23.0 ], "rnbo_classname" : "param", "rnbo_extra_attributes" : { "order" : "", "preset" : 1, "meta" : "", "exponent" : 1.0, "ctlin" : 0.0, "fromnormalized" : "", "enum" : "", "sendinit" : 1, "displayorder" : "-", "displayname" : "", "tonormalized" : "", "unit" : "", "steps" : 0.0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "release", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "value" : { "attrOrProp" : 2, "digest" : "Set initial value", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Initial Value", "displayorder" : 3 } , "normalizedvalue" : { "attrOrProp" : 1, "digest" : "Set value normalized. ", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "reset" : { "attrOrProp" : 1, "digest" : "Reset param to initial value", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "normalized" : { "attrOrProp" : 1, "digest" : "Normalized parameter value.", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "name" : { "attrOrProp" : 2, "digest" : "Name of the parameter", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "Parameter Name", "mandatory" : 1 } , "enum" : { "attrOrProp" : 2, "digest" : "Use an enumerated output", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list", "label" : "Enum Values", "displayorder" : 6 } , "minimum" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 0, "aliases" : [ "min" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "min" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 1, "aliasOf" : "minimum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "maximum" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 0, "aliases" : [ "max" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "max" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 1, "aliasOf" : "maximum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "exponent" : { "attrOrProp" : 2, "digest" : "Scale values exponentially", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Exponent", "displayorder" : 7 } , "steps" : { "attrOrProp" : 2, "digest" : "Divide the output into a number of discrete steps", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Steps", "displayorder" : 8 } , "displayname" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ "displayName" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "displayName" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 1, "aliasOf" : "displayname", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "unit" : { "attrOrProp" : 2, "digest" : "A symbol to describe the unit of the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Unit", "displayorder" : 15 } , "tonormalized" : { "attrOrProp" : 2, "digest" : "Converts a real parameter value to its normalized form.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "To Normalized Expression", "displayorder" : 10 } , "fromnormalized" : { "attrOrProp" : 2, "digest" : "Converts a normalized parameter into its actual parameter value.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "From Normalized Expression", "displayorder" : 9 } , "order" : { "attrOrProp" : 2, "digest" : "Order in which initial parameter values will be sent out on patcher load. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "0", "label" : "Restore Order", "displayorder" : 12 } , "displayorder" : { "attrOrProp" : 2, "digest" : "Order in which parameters will show up in a list of all parameters. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "-", "label" : "Display Order", "displayorder" : 13 } , "sendinit" : { "attrOrProp" : 2, "digest" : "Send initial value", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Send Init", "displayorder" : 4 } , "ctlin" : { "attrOrProp" : 2, "digest" : "MIDI controller number to control this parameter.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "label" : "MIDI Controller Number.", "displayorder" : 16 } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 17 } , "nopreset" : { "attrOrProp" : 2, "digest" : "Do not add this value to the preset [DEPRECATED - USE @preset 0 instead].", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 1, "type" : "bool", "defaultValue" : "false" } , "preset" : { "attrOrProp" : 2, "digest" : "Add this value to the preset.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Include In Preset", "displayorder" : 11 } } , "inputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalizedvalue", "type" : "number", "digest" : "Set value normalized. ", "docked" : 0 } ], "outputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalized", "type" : "number", "digest" : "Normalized parameter value.", "docked" : 0 } ], "helpname" : "param", "aliasOf" : "param", "classname" : "param", "operator" : 0, "versionId" : -1445040964, "changesPatcherIO" : 0 } , "text" : "param release @minimum 1 @maximum 4000 @value 50", "varname" : "release" } } , { "box" : { "id" : "obj-17", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 434.0, 505.0, 303.0, 23.0 ], "rnbo_classname" : "param", "rnbo_extra_attributes" : { "order" : "", "preset" : 1, "meta" : "", "exponent" : 1.0, "ctlin" : 0.0, "fromnormalized" : "", "enum" : "", "sendinit" : 1, "displayorder" : "-", "displayname" : "", "tonormalized" : "", "unit" : "", "steps" : 0.0 } , "rnbo_serial" : 2, "rnbo_uniqueid" : "sustain", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "value" : { "attrOrProp" : 2, "digest" : "Set initial value", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Initial Value", "displayorder" : 3 } , "normalizedvalue" : { "attrOrProp" : 1, "digest" : "Set value normalized. ", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "reset" : { "attrOrProp" : 1, "digest" : "Reset param to initial value", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "normalized" : { "attrOrProp" : 1, "digest" : "Normalized parameter value.", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "name" : { "attrOrProp" : 2, "digest" : "Name of the parameter", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "Parameter Name", "mandatory" : 1 } , "enum" : { "attrOrProp" : 2, "digest" : "Use an enumerated output", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list", "label" : "Enum Values", "displayorder" : 6 } , "minimum" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 0, "aliases" : [ "min" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "min" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 1, "aliasOf" : "minimum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "maximum" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 0, "aliases" : [ "max" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "max" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 1, "aliasOf" : "maximum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "exponent" : { "attrOrProp" : 2, "digest" : "Scale values exponentially", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Exponent", "displayorder" : 7 } , "steps" : { "attrOrProp" : 2, "digest" : "Divide the output into a number of discrete steps", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Steps", "displayorder" : 8 } , "displayname" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ "displayName" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "displayName" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 1, "aliasOf" : "displayname", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "unit" : { "attrOrProp" : 2, "digest" : "A symbol to describe the unit of the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Unit", "displayorder" : 15 } , "tonormalized" : { "attrOrProp" : 2, "digest" : "Converts a real parameter value to its normalized form.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "To Normalized Expression", "displayorder" : 10 } , "fromnormalized" : { "attrOrProp" : 2, "digest" : "Converts a normalized parameter into its actual parameter value.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "From Normalized Expression", "displayorder" : 9 } , "order" : { "attrOrProp" : 2, "digest" : "Order in which initial parameter values will be sent out on patcher load. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "0", "label" : "Restore Order", "displayorder" : 12 } , "displayorder" : { "attrOrProp" : 2, "digest" : "Order in which parameters will show up in a list of all parameters. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "-", "label" : "Display Order", "displayorder" : 13 } , "sendinit" : { "attrOrProp" : 2, "digest" : "Send initial value", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Send Init", "displayorder" : 4 } , "ctlin" : { "attrOrProp" : 2, "digest" : "MIDI controller number to control this parameter.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "label" : "MIDI Controller Number.", "displayorder" : 16 } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 17 } , "nopreset" : { "attrOrProp" : 2, "digest" : "Do not add this value to the preset [DEPRECATED - USE @preset 0 instead].", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 1, "type" : "bool", "defaultValue" : "false" } , "preset" : { "attrOrProp" : 2, "digest" : "Add this value to the preset.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Include In Preset", "displayorder" : 11 } } , "inputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalizedvalue", "type" : "number", "digest" : "Set value normalized. ", "docked" : 0 } ], "outputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalized", "type" : "number", "digest" : "Normalized parameter value.", "docked" : 0 } ], "helpname" : "param", "aliasOf" : "param", "classname" : "param", "operator" : 0, "versionId" : -1445040964, "changesPatcherIO" : 0 } , "text" : "param sustain @minimum 0 @maximum 1. @value 0.2", "varname" : "sustain" } } , { "box" : { "id" : "obj-2", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 403.000000000000057, 469.0, 317.0, 23.0 ], "rnbo_classname" : "param", "rnbo_extra_attributes" : { "order" : "", "preset" : 1, "meta" : "", "exponent" : 1.0, "ctlin" : 0.0, "fromnormalized" : "", "enum" : "", "sendinit" : 1, "displayorder" : "-", "displayname" : "", "tonormalized" : "", "unit" : "", "steps" : 0.0 } , "rnbo_serial" : 3, "rnbo_uniqueid" : "decay", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "value" : { "attrOrProp" : 2, "digest" : "Set initial value", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Initial Value", "displayorder" : 3 } , "normalizedvalue" : { "attrOrProp" : 1, "digest" : "Set value normalized. ", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "reset" : { "attrOrProp" : 1, "digest" : "Reset param to initial value", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "normalized" : { "attrOrProp" : 1, "digest" : "Normalized parameter value.", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "name" : { "attrOrProp" : 2, "digest" : "Name of the parameter", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "Parameter Name", "mandatory" : 1 } , "enum" : { "attrOrProp" : 2, "digest" : "Use an enumerated output", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list", "label" : "Enum Values", "displayorder" : 6 } , "minimum" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 0, "aliases" : [ "min" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "min" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 1, "aliasOf" : "minimum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "maximum" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 0, "aliases" : [ "max" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "max" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 1, "aliasOf" : "maximum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "exponent" : { "attrOrProp" : 2, "digest" : "Scale values exponentially", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Exponent", "displayorder" : 7 } , "steps" : { "attrOrProp" : 2, "digest" : "Divide the output into a number of discrete steps", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Steps", "displayorder" : 8 } , "displayname" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ "displayName" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "displayName" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 1, "aliasOf" : "displayname", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "unit" : { "attrOrProp" : 2, "digest" : "A symbol to describe the unit of the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Unit", "displayorder" : 15 } , "tonormalized" : { "attrOrProp" : 2, "digest" : "Converts a real parameter value to its normalized form.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "To Normalized Expression", "displayorder" : 10 } , "fromnormalized" : { "attrOrProp" : 2, "digest" : "Converts a normalized parameter into its actual parameter value.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "From Normalized Expression", "displayorder" : 9 } , "order" : { "attrOrProp" : 2, "digest" : "Order in which initial parameter values will be sent out on patcher load. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "0", "label" : "Restore Order", "displayorder" : 12 } , "displayorder" : { "attrOrProp" : 2, "digest" : "Order in which parameters will show up in a list of all parameters. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "-", "label" : "Display Order", "displayorder" : 13 } , "sendinit" : { "attrOrProp" : 2, "digest" : "Send initial value", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Send Init", "displayorder" : 4 } , "ctlin" : { "attrOrProp" : 2, "digest" : "MIDI controller number to control this parameter.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "label" : "MIDI Controller Number.", "displayorder" : 16 } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 17 } , "nopreset" : { "attrOrProp" : 2, "digest" : "Do not add this value to the preset [DEPRECATED - USE @preset 0 instead].", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 1, "type" : "bool", "defaultValue" : "false" } , "preset" : { "attrOrProp" : 2, "digest" : "Add this value to the preset.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Include In Preset", "displayorder" : 11 } } , "inputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalizedvalue", "type" : "number", "digest" : "Set value normalized. ", "docked" : 0 } ], "outputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalized", "type" : "number", "digest" : "Normalized parameter value.", "docked" : 0 } ], "helpname" : "param", "aliasOf" : "param", "classname" : "param", "operator" : 0, "versionId" : -1445040964, "changesPatcherIO" : 0 } , "text" : "param decay @minimum 1 @maximum 5000 @value 200", "varname" : "decay" } } , { "box" : { "id" : "obj-3", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 372.0, 435.0, 310.0, 23.0 ], "rnbo_classname" : "param", "rnbo_extra_attributes" : { "order" : "", "preset" : 1, "meta" : "", "exponent" : 1.0, "ctlin" : 0.0, "fromnormalized" : "", "enum" : "", "sendinit" : 1, "displayorder" : "-", "displayname" : "", "tonormalized" : "", "unit" : "", "steps" : 0.0 } , "rnbo_serial" : 4, "rnbo_uniqueid" : "attack", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "value" : { "attrOrProp" : 2, "digest" : "Set initial value", "defaultarg" : 2, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Initial Value", "displayorder" : 3 } , "normalizedvalue" : { "attrOrProp" : 1, "digest" : "Set value normalized. ", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "reset" : { "attrOrProp" : 1, "digest" : "Reset param to initial value", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "normalized" : { "attrOrProp" : 1, "digest" : "Normalized parameter value.", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "name" : { "attrOrProp" : 2, "digest" : "Name of the parameter", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "Parameter Name", "mandatory" : 1 } , "enum" : { "attrOrProp" : 2, "digest" : "Use an enumerated output", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "list", "label" : "Enum Values", "displayorder" : 6 } , "minimum" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 0, "aliases" : [ "min" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "min" : { "attrOrProp" : 2, "digest" : "Minimum value", "isalias" : 1, "aliasOf" : "minimum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Minimum", "displayorder" : 1 } , "maximum" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 0, "aliases" : [ "max" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "max" : { "attrOrProp" : 2, "digest" : "Maximum value", "isalias" : 1, "aliasOf" : "maximum", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Maximum", "displayorder" : 2 } , "exponent" : { "attrOrProp" : 2, "digest" : "Scale values exponentially", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "1", "label" : "Exponent", "displayorder" : 7 } , "steps" : { "attrOrProp" : 2, "digest" : "Divide the output into a number of discrete steps", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0", "label" : "Steps", "displayorder" : 8 } , "displayname" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ "displayName" ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "displayName" : { "attrOrProp" : 2, "digest" : "A more readable name for the parameter in an external RNBO target", "isalias" : 1, "aliasOf" : "displayname", "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Display Name", "displayorder" : 14 } , "unit" : { "attrOrProp" : 2, "digest" : "A symbol to describe the unit of the parameter in an external RNBO target", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Unit", "displayorder" : 15 } , "tonormalized" : { "attrOrProp" : 2, "digest" : "Converts a real parameter value to its normalized form.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "To Normalized Expression", "displayorder" : 10 } , "fromnormalized" : { "attrOrProp" : 2, "digest" : "Converts a normalized parameter into its actual parameter value.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "label" : "From Normalized Expression", "displayorder" : 9 } , "order" : { "attrOrProp" : 2, "digest" : "Order in which initial parameter values will be sent out on patcher load. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "0", "label" : "Restore Order", "displayorder" : 12 } , "displayorder" : { "attrOrProp" : 2, "digest" : "Order in which parameters will show up in a list of all parameters. The order can be numeric or symbolic ('first' and 'last')", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "-", "label" : "Display Order", "displayorder" : 13 } , "sendinit" : { "attrOrProp" : 2, "digest" : "Send initial value", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Send Init", "displayorder" : 4 } , "ctlin" : { "attrOrProp" : 2, "digest" : "MIDI controller number to control this parameter.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "label" : "MIDI Controller Number.", "displayorder" : 16 } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 17 } , "nopreset" : { "attrOrProp" : 2, "digest" : "Do not add this value to the preset [DEPRECATED - USE @preset 0 instead].", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 1, "type" : "bool", "defaultValue" : "false" } , "preset" : { "attrOrProp" : 2, "digest" : "Add this value to the preset.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "true", "label" : "Include In Preset", "displayorder" : 11 } } , "inputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalizedvalue", "type" : "number", "digest" : "Set value normalized. ", "docked" : 0 } ], "outputs" : [ { "name" : "value", "type" : "number", "digest" : "Parameter value", "hot" : 1, "docked" : 0 } , { "name" : "normalized", "type" : "number", "digest" : "Normalized parameter value.", "docked" : 0 } ], "helpname" : "param", "aliasOf" : "param", "classname" : "param", "operator" : 0, "versionId" : -1445040964, "changesPatcherIO" : 0 } , "text" : "param attack @minimum 1 @maximum 2000 @value 10", "varname" : "attack" } } , { "box" : { "id" : "obj-11", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "signal" ], "patching_rect" : [ 341.0, 536.0, 33.0, 23.0 ], "rnbo_classname" : "sig~", "rnbo_extra_attributes" : { "unit" : "ms" } , "rnbo_serial" : 1, "rnbo_uniqueid" : "sig~_obj-11", "text" : "sig~" } } , { "box" : { "id" : "obj-12", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 341.0, 403.0, 391.0, 23.0 ], "rnbo_classname" : "expr", "rnbo_extra_attributes" : { "hot" : 0 } , "rnbo_serial" : 2, "rnbo_uniqueid" : "expr_obj-12", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "reset" : { "attrOrProp" : 1, "digest" : "Reset all state and params to initial values", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "in1" : { "attrOrProp" : 1, "digest" : "in1", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "out1" : { "attrOrProp" : 1, "digest" : "out1", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "expr" : { "attrOrProp" : 2, "digest" : "expr", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "hot" : { "attrOrProp" : 2, "digest" : "Trigger computation on all inlets.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "false" } } , "inputs" : [ { "name" : "in1", "type" : "number", "digest" : "in1", "hot" : 1, "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "number", "digest" : "out1", "docked" : 0 } ], "helpname" : "expr", "aliasOf" : "expr", "classname" : "expr", "operator" : 0, "versionId" : -604458600, "changesPatcherIO" : 0 } , "text" : "expr @expr out1 = in1 == 0 ? 0 : pow(10.\\, (-50. + (50 * in1 / 128.)) / 20.)" } } , { "box" : { "id" : "obj-10", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 421.918091000000004, 263.0, 124.0, 23.0 ], "rnbo_classname" : "bendin", "rnbo_serial" : 1, "rnbo_uniqueid" : "bendin_obj-10", "text" : "bendin @bendmode 1" } } , { "box" : { "id" : "obj-15", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "signal" ], "patching_rect" : [ 48.0, 519.0, 267.0, 23.0 ], "rnbo_classname" : "expr~", "rnbo_serial" : 1, "rnbo_uniqueid" : "expr~_obj-15", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "reset" : { "attrOrProp" : 1, "digest" : "Reset all state and params to initial values", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "in1" : { "attrOrProp" : 1, "digest" : "in1", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "out1" : { "attrOrProp" : 1, "digest" : "out1", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "signal" } , "expr" : { "attrOrProp" : 2, "digest" : "expr", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol" } } , "inputs" : [ { "name" : "in1", "type" : "auto", "digest" : "in1", "hot" : 1, "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "signal", "digest" : "out1", "docked" : 0 } ], "helpname" : "expr~", "aliasOf" : "expr~", "classname" : "expr~", "operator" : 0, "versionId" : 2074256310, "changesPatcherIO" : 0 } , "text" : "expr~ out1 = in1 < 0.5 ? 2. * in1 : 2. * (1. - in1)" } } , { "box" : { "id" : "obj-9", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 46.918091000000004, 327.0, 394.0, 23.0 ], "rnbo_classname" : "expr", "rnbo_serial" : 3, "rnbo_uniqueid" : "expr_obj-9", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "reset" : { "attrOrProp" : 1, "digest" : "Reset all state and params to initial values", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "bang" } , "in1" : { "attrOrProp" : 1, "digest" : "in1", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "in2" : { "attrOrProp" : 1, "digest" : "in2", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "out1" : { "attrOrProp" : 1, "digest" : "out1", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "number" } , "expr" : { "attrOrProp" : 2, "digest" : "expr", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "hot" : { "attrOrProp" : 2, "digest" : "Trigger computation on all inlets.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "false" } } , "inputs" : [ { "name" : "in1", "type" : "number", "digest" : "in1", "hot" : 1, "docked" : 0 } , { "name" : "in2", "type" : "number", "digest" : "in2", "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "number", "digest" : "out1", "docked" : 0 } ], "helpname" : "expr", "aliasOf" : "expr", "classname" : "expr", "operator" : 0, "versionId" : -604458600, "changesPatcherIO" : 0 } , "text" : "expr @expr out1 = 440. * exp(.057762265 * ((in1 + in2 * 2.) - 69.)) @hot 1" } } , { "box" : { "id" : "obj-8", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 295.5, 709.0, 44.0, 23.0 ], "rnbo_classname" : "out~", "rnbo_extra_attributes" : { "meta" : "", "comment" : "" } , "rnbo_serial" : 1, "rnbo_uniqueid" : "out~_obj-8", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "in1" : { "attrOrProp" : 1, "digest" : "signal sent to outlet with index 1", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "signal" } , "index" : { "attrOrProp" : 2, "digest" : "outlet number", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "mandatory" : 1 } , "comment" : { "attrOrProp" : 2, "digest" : "mouse over comment", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol" } , "meta" : { "attrOrProp" : 2, "digest" : "A JSON formatted string containing metadata for use by the exported code", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "defaultValue" : "", "label" : "Metadata", "displayorder" : 3 } } , "inputs" : [ { "name" : "in1", "type" : "signal", "digest" : "signal sent to outlet with index 1", "displayName" : "", "hot" : 1, "docked" : 0 } ], "outputs" : [ ], "helpname" : "out~", "aliasOf" : "out~", "classname" : "out~", "operator" : 0, "versionId" : 374499139, "changesPatcherIO" : 1 } , "text" : "out~ 1" } } , { "box" : { "id" : "obj-5", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "signal" ], "patching_rect" : [ 48.0, 429.0, 33.0, 23.0 ], "rnbo_classname" : "sig~", "rnbo_extra_attributes" : { "unit" : "ms" } , "rnbo_serial" : 2, "rnbo_uniqueid" : "sig~_obj-5", "text" : "sig~" } } , { "box" : { "id" : "obj-7", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 4, "outlettype" : [ "", "", "", "" ], "patching_rect" : [ 63.0, 112.0, 70.0, 23.0 ], "rnbo_classname" : "notein", "rnbo_serial" : 1, "rnbo_uniqueid" : "notein_obj-7", "text" : "notein" } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-25", 3 ], "source" : [ "obj-1", 3 ] } } , { "patchline" : { "destination" : [ "obj-25", 2 ], "source" : [ "obj-1", 2 ] } } , { "patchline" : { "destination" : [ "obj-25", 1 ], "source" : [ "obj-1", 1 ] } } , { "patchline" : { "destination" : [ "obj-25", 0 ], "source" : [ "obj-1", 0 ] } } , { "patchline" : { "destination" : [ "obj-9", 1 ], "source" : [ "obj-10", 0 ] } } , { "patchline" : { "destination" : [ "obj-13", 0 ], "source" : [ "obj-11", 0 ] } } , { "patchline" : { "destination" : [ "obj-11", 0 ], "source" : [ "obj-12", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 1 ], "source" : [ "obj-13", 1 ] } } , { "patchline" : { "destination" : [ "obj-18", 1 ], "source" : [ "obj-13", 0 ] } } , { "patchline" : { "destination" : [ "obj-18", 0 ], "source" : [ "obj-15", 0 ] } } , { "patchline" : { "destination" : [ "obj-13", 3 ], "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-8", 0 ], "source" : [ "obj-18", 0 ] } } , { "patchline" : { "destination" : [ "obj-9", 0 ], "source" : [ "obj-19", 0 ] } } , { "patchline" : { "destination" : [ "obj-13", 2 ], "source" : [ "obj-2", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "source" : [ "obj-20", 0 ] } } , { "patchline" : { "destination" : [ "obj-19", 0 ], "source" : [ "obj-24", 0 ] } } , { "patchline" : { "destination" : [ "obj-14", 0 ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-13", 1 ], "source" : [ "obj-3", 0 ] } } , { "patchline" : { "destination" : [ "obj-13", 4 ], "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-6", 0 ], "source" : [ "obj-5", 0 ] } } , { "patchline" : { "destination" : [ "obj-15", 0 ], "source" : [ "obj-6", 0 ] } } , { "patchline" : { "destination" : [ "obj-12", 0 ], "order" : 0, "source" : [ "obj-7", 1 ] } } , { "patchline" : { "destination" : [ "obj-19", 1 ], "order" : 1, "source" : [ "obj-7", 0 ] } } , { "patchline" : { "destination" : [ "obj-20", 0 ], "order" : 0, "source" : [ "obj-7", 0 ] } } , { "patchline" : { "destination" : [ "obj-24", 0 ], "order" : 1, "source" : [ "obj-7", 1 ] } } , { "patchline" : { "destination" : [ "obj-5", 0 ], "source" : [ "obj-9", 0 ] } } ], "default_bgcolor" : [ 0.031372549019608, 0.125490196078431, 0.211764705882353, 1.0 ], "color" : [ 0.929412, 0.929412, 0.352941, 1.0 ], "elementcolor" : [ 0.357540726661682, 0.515565991401672, 0.861786782741547, 1.0 ], "accentcolor" : [ 0.343034118413925, 0.506230533123016, 0.86220508813858, 1.0 ], "stripecolor" : [ 0.258338063955307, 0.352425158023834, 0.511919498443604, 1.0 ], "bgfillcolor_type" : "color", "bgfillcolor_color" : [ 0.031372549019608, 0.125490196078431, 0.211764705882353, 1.0 ], "bgfillcolor_color1" : [ 0.031372549019608, 0.125490196078431, 0.211764705882353, 1.0 ], "bgfillcolor_color2" : [ 0.263682, 0.004541, 0.038797, 1.0 ], "bgfillcolor_angle" : 270.0, "bgfillcolor_proportion" : 0.39, "bgfillcolor_autogradient" : 0.0 } , "patching_rect" : [ 18.400000095367432, 738.999996602535248, 232.0, 23.0 ], "rnbo_classname" : "p", "rnbo_extra_attributes" : { "args" : [ ], "receivemode" : "local", "exposevoiceparams" : 0, "notecontroller" : 0 } , "rnbo_serial" : 1, "rnbo_uniqueid" : "voice", "rnboinfo" : { "needsInstanceInfo" : 1, "argnames" : { "attack" : { "attrOrProp" : 1, "digest" : "attack", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "decay" : { "attrOrProp" : 1, "digest" : "decay", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "sustain" : { "attrOrProp" : 1, "digest" : "sustain", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "release" : { "attrOrProp" : 1, "digest" : "release", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "target" : { "attrOrProp" : 1, "digest" : "target", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "0" } , "mute" : { "attrOrProp" : 1, "digest" : "mute", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "list" } , "__probingout1" : { "attrOrProp" : 1, "digest" : "__probingout1", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "signal" } , "__probingout2" : { "attrOrProp" : 1, "digest" : "__probingout2", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "signal" } , "__probingout3" : { "attrOrProp" : 1, "digest" : "__probingout3", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "signal" } , "__probingout4" : { "attrOrProp" : 1, "digest" : "__probingout4", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "signal" } , "out1" : { "attrOrProp" : 1, "digest" : "out1", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "signal" } , "voicestatus" : { "attrOrProp" : 1, "digest" : "voicestatus", "isalias" : 0, "aliases" : [ ], "attachable" : 0, "isparam" : 0, "deprecated" : 0, "outlet" : 1, "type" : "list" } , "activevoices" : { "attrOrProp" : 1, "digest" : "activevoices", "isalias" : 0, "aliases" : [ ], "settable" : 0, "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "midiin" : { "attrOrProp" : 1, "digest" : "midiin", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "inlet" : 1, "type" : "number" } , "noteNumber" : { "attrOrProp" : 1, "digest" : "noteNumber", "isalias" : 0, "aliases" : [ ], "attachable" : 1, "isparam" : 0, "deprecated" : 0, "type" : "number" } , "polyphony" : { "attrOrProp" : 2, "digest" : "Polyphony of the subpatcher.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "number", "defaultValue" : "-1" } , "exposevoiceparams" : { "attrOrProp" : 2, "digest" : "Expose per voice versions of the contained parameters (only valid in polyphonic subpatchers).", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "bool", "defaultValue" : "false" } , "title" : { "attrOrProp" : 2, "digest" : "Title of the subpatcher", "defaultarg" : 1, "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "file" : { "attrOrProp" : 2, "digest" : "rnbo file to load", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "voicecontrol" : { "attrOrProp" : 2, "digest" : "Chooses the way that polyphonic voices are controlled. 'simple' (or 'midi') will automatically allocate voices for \tincoming MIDI notes. Setting it to 'user' (or 'none') will switch off MIDI \tvoice allocation and start with all voices unmuted.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "enum" : [ "simple", "user" ], "type" : "enum", "defaultValue" : "simple" } , "notecontroller" : { "attrOrProp" : 2, "digest" : "DEPRECATED. Use voicecontrol instead.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } , "receivemode" : { "attrOrProp" : 2, "digest" : "Do receive~ objects get the signal from a send~ inside the patcher directly (without latency), or compensated (with latency, aligned with all other voices).", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "enum" : [ "local", "compensated" ], "type" : "enum", "defaultValue" : "local" } , "args" : { "attrOrProp" : 2, "digest" : "Replacement args for the subpatcher, everything named #1, #2 etc. will be replaced with the according argument.", "isalias" : 0, "aliases" : [ ], "settable" : 1, "attachable" : 0, "isparam" : 0, "deprecated" : 0, "type" : "symbol", "doNotShowInMaxInspector" : 1 } } , "inputs" : [ { "name" : "midiin", "type" : "number", "digest" : "midiin", "hot" : 1, "docked" : 0 } ], "outputs" : [ { "name" : "out1", "type" : "signal", "digest" : "out1", "displayName" : "", "docked" : 0 } , { "name" : "voicestatus", "type" : "list", "digest" : "voicestatus", "docked" : 0 } ], "helpname" : "patcher", "aliasOf" : "rnbo", "classname" : "p", "operator" : 0, "versionId" : -1231830626, "changesPatcherIO" : 0 } , "text" : "p voice @polyphony 4 @voicecontrol none", "varname" : "voice" } } , { "box" : { "id" : "obj-4", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 442.399996906518936, 687.799996733665466, 55.0, 23.0 ], "rnbo_classname" : "set", "rnbo_serial" : 1, "rnbo_uniqueid" : "set_obj-4", "text" : "set mute" } } , { "box" : { "id" : "obj-6", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 866.399993717670441, 687.799996733665466, 59.0, 23.0 ], "rnbo_classname" : "set", "rnbo_serial" : 2, "rnbo_uniqueid" : "set_obj-6", "text" : "set target" } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-14", 0 ], "source" : [ "obj-1", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 2 ], "midpoints" : [ 240.900000095367432, 767.999996602535248, 967.399996906518936, 767.999996602535248, 967.399996906518936, 119.599996626377106, 875.899993717670441, 119.599996626377106 ], "order" : 1, "source" : [ "obj-1", 1 ] } } , { "patchline" : { "destination" : [ "obj-2", 0 ], "order" : 0, "source" : [ "obj-1", 1 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "order" : 1, "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-4", 0 ], "source" : [ "obj-17", 1 ] } } , { "patchline" : { "destination" : [ "obj-6", 0 ], "source" : [ "obj-17", 2 ] } } , { "patchline" : { "destination" : [ "obj-91", 0 ], "order" : 0, "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 0 ], "source" : [ "obj-3", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "source" : [ "obj-6", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 1 ], "source" : [ "obj-7", 0 ] } } ], "default_bgcolor" : [ 0.031372549019608, 0.125490196078431, 0.211764705882353, 1.0 ], "color" : [ 0.929412, 0.929412, 0.352941, 1.0 ], "elementcolor" : [ 0.357540726661682, 0.515565991401672, 0.861786782741547, 1.0 ], "accentcolor" : [ 0.343034118413925, 0.506230533123016, 0.86220508813858, 1.0 ], "stripecolor" : [ 0.258338063955307, 0.352425158023834, 0.511919498443604, 1.0 ], "bgfillcolor_type" : "color", "bgfillcolor_color" : [ 0.031372549019608, 0.125490196078431, 0.211764705882353, 1.0 ], "bgfillcolor_color1" : [ 0.031372549019608, 0.125490196078431, 0.211764705882353, 1.0 ], "bgfillcolor_color2" : [ 0.263682, 0.004541, 0.038797, 1.0 ], "bgfillcolor_angle" : 270.0, "bgfillcolor_proportion" : 0.39, "bgfillcolor_autogradient" : 0.0 } , "patching_rect" : [ 41.5, 240.0, 40.0, 22.0 ], "rnboattrcache" : { "voice/sustain" : { "label" : "sustain", "isEnum" : 0, "parsestring" : "" } , "voice/attack" : { "label" : "attack", "isEnum" : 0, "parsestring" : "" } , "voice/release" : { "label" : "release", "isEnum" : 0, "parsestring" : "" } , "voice/decay" : { "label" : "decay", "isEnum" : 0, "parsestring" : "" } , "steal" : { "label" : "steal", "isEnum" : 1, "parsestring" : "\"highest\" \"lowest\" \"first\" \"last\"" } } , "rnboversion" : "1.1.0", "saved_attribute_attributes" : { "valueof" : { "parameter_invisible" : 1, "parameter_longname" : "rnbo~", "parameter_shortname" : "rnbo~", "parameter_type" : 3 } } , "saved_object_attributes" : { "autosave" : 0, "optimization" : "O1", "parameter_enable" : 1, "uuid" : "550ba765-d836-11ec-a765-acde48001122" } , "text" : "rnbo~", "varname" : "rnbo~" } } , { "box" : { "fontname" : "Lato Light", "fontsize" : 14.0, "id" : "obj-5", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 12.0, 49.0, 424.0, 23.0 ], "text" : "Custom Voice modes with Codebox : Voice Stealing modes" } } , { "box" : { "fontname" : "Lato", "fontsize" : 24.0, "id" : "obj-3", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 12.0, 15.0, 236.0, 35.0 ], "text" : "RNBO : Polyphony " } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-12", 1 ], "order" : 0, "source" : [ "obj-1", 0 ] } } , { "patchline" : { "destination" : [ "obj-12", 0 ], "order" : 1, "source" : [ "obj-1", 0 ] } } , { "patchline" : { "destination" : [ "obj-21", 0 ], "source" : [ "obj-1", 1 ] } } , { "patchline" : { "destination" : [ "obj-65", 0 ], "source" : [ "obj-1", 2 ] } } , { "patchline" : { "destination" : [ "obj-82", 0 ], "source" : [ "obj-102", 0 ] } } , { "patchline" : { "destination" : [ "obj-84", 0 ], "source" : [ "obj-102", 1 ] } } , { "patchline" : { "destination" : [ "obj-85", 0 ], "source" : [ "obj-102", 3 ] } } , { "patchline" : { "destination" : [ "obj-86", 0 ], "source" : [ "obj-102", 2 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "source" : [ "obj-13", 0 ] } } , { "patchline" : { "destination" : [ "obj-11", 0 ], "source" : [ "obj-21", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "source" : [ "obj-28", 0 ] } } , { "patchline" : { "destination" : [ "obj-28", 3 ], "hidden" : 1, "source" : [ "obj-4", 3 ] } } , { "patchline" : { "destination" : [ "obj-28", 2 ], "hidden" : 1, "source" : [ "obj-4", 2 ] } } , { "patchline" : { "destination" : [ "obj-28", 1 ], "hidden" : 1, "source" : [ "obj-4", 1 ] } } , { "patchline" : { "destination" : [ "obj-28", 0 ], "hidden" : 1, "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-102", 0 ], "source" : [ "obj-65", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 1 ], "source" : [ "obj-9", 0 ] } } ], "parameters" : { "obj-1" : [ "rnbo~", "rnbo~", 0 ], "parameterbanks" : { "0" : { "index" : 0, "name" : "", "parameters" : [ "-", "-", "-", "-", "-", "-", "-", "-" ] } } , "inherited_shortname" : 1 } , "dependency_cache" : [ ], "autosave" : 0 } }