diff --git a/hss-distributed-server.maxpat b/hss-distributed-server.maxpat index 9e3cd4d..e6bffd3 100644 --- a/hss-distributed-server.maxpat +++ b/hss-distributed-server.maxpat @@ -4,13 +4,13 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", - "rect" : [ 278.0, 100.0, 1019.0, 510.0 ], + "rect" : [ 34.0, 76.0, 981.0, 763.0 ], "bglocked" : 1, "openinpresentation" : 1, "default_fontsize" : 12.0, @@ -39,6 +39,998 @@ "subpatcher_template" : "", "assistshowspatchername" : 0, "boxes" : [ { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-84", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 6, + "revision" : 2, + "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-81", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 131.0, 200.0, 43.0, 22.0 ], + "text" : "zlclear" + } + + } +, { + "box" : { + "id" : "obj-55", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 50.0, 200.0, 69.0, 22.0 ], + "text" : "r mod-save" + } + + } +, { + "box" : { + "id" : "obj-33", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "", "" ], + "patching_rect" : [ 140.5, 174.0, 38.0, 22.0 ], + "text" : "zl.reg" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-73", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 71.5, 124.0, 63.0, 22.0 ], + "text" : "s save-gui" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-69", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "bang", "" ], + "patching_rect" : [ 131.0, 100.0, 29.5, 22.0 ], + "text" : "t b l" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-82", + "index" : 1, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 131.0, 40.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-83", + "index" : 1, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 140.5, 289.777344000000028, 30.0, 30.0 ] + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-81", 0 ], + "order" : 1, + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "order" : 0, + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-55", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 1 ], + "source" : [ "obj-69", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-73", 0 ], + "source" : [ "obj-69", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-81", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-69", 0 ], + "source" : [ "obj-82", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 558.0, 263.0, 170.0, 22.0 ], + "saved_object_attributes" : { + "description" : "", + "digest" : "", + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p preset-modenum-scaffolding" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-78", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 314.0, 553.0, 22.0, 22.0 ], + "text" : "t b" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-77", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 314.0, 581.0, 71.0, 22.0 ], + "text" : "s mod-save", + "varname" : "modstorage-2[1]" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-137", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 5, + "outlettype" : [ "dictionary", "", "", "", "" ], + "patching_rect" : [ 195.0, 559.0, 105.0, 22.0 ], + "saved_object_attributes" : { + "embed" : 0, + "legacy" : 1, + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "dict modstorage-2", + "varname" : "modstorage-2" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-67", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 5, + "outlettype" : [ "", "", "", "", "dictionary" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 6, + "revision" : 2, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 59.0, 107.0, 608.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" : { + "comment" : "", + "id" : "obj-1", + "index" : 5, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 325.0, 259.8865966796875, 30.0, 30.0 ] + } + + } +, { + "box" : { + "id" : "obj-33", + "maxclass" : "newobj", + "numinlets" : 5, + "numoutlets" : 5, + "outlettype" : [ "", "", "", "", "" ], + "patching_rect" : [ 164.0, 177.8865966796875, 76.0, 22.0 ], + "text" : "route 1 2 3 4" + } + + } +, { + "box" : { + "id" : "obj-139", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "bang", "bang" ], + "patching_rect" : [ 176.5, 107.8865966796875, 32.0, 22.0 ], + "text" : "t b b" + } + + } +, { + "box" : { + "id" : "obj-138", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 5, + "outlettype" : [ "dictionary", "", "", "", "" ], + "patching_rect" : [ 264.0, 145.8865966796875, 105.0, 22.0 ], + "saved_object_attributes" : { + "embed" : 0, + "legacy" : 1, + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "dict modstorage-1" + } + + } +, { + "box" : { + "id" : "obj-133", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 50.0, 126.8865966796875, 71.0, 22.0 ], + "text" : "fromsymbol" + } + + } +, { + "box" : { + "id" : "obj-63", + "maxclass" : "newobj", + "numinlets" : 3, + "numoutlets" : 3, + "outlettype" : [ "", "", "" ], + "patching_rect" : [ 50.0, 150.8865966796875, 133.0, 22.0 ], + "text" : "routepass saved debug" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-58", + "index" : 1, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 50.0, 39.999999679687505, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-60", + "index" : 1, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 164.0, 259.8865966796875, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-61", + "index" : 2, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 199.0, 259.8865966796875, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-62", + "index" : 3, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 234.0, 259.8865966796875, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-66", + "index" : 4, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 269.0, 259.8865966796875, 30.0, 30.0 ] + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-63", 0 ], + "source" : [ "obj-133", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-138", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-138", 0 ], + "source" : [ "obj-139", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-60", 0 ], + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-61", 0 ], + "source" : [ "obj-33", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-62", 0 ], + "source" : [ "obj-33", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-66", 0 ], + "source" : [ "obj-33", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-133", 0 ], + "source" : [ "obj-58", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-139", 0 ], + "source" : [ "obj-63", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-63", 2 ] + } + + } + ] + } +, + "patching_rect" : [ 75.0, 549.0, 86.0, 22.0 ], + "saved_object_attributes" : { + "description" : "", + "digest" : "", + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p save-n-route" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-92", + "maxclass" : "newobj", + "numinlets" : 4, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 6, + "revision" : 2, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 59.0, 107.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-23", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 702.0, 185.0, 63.0, 22.0 ], + "text" : "prepend 4" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 611.0, 185.0, 63.0, 22.0 ], + "text" : "prepend 3" + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 517.0, 185.0, 63.0, 22.0 ], + "text" : "prepend 2" + } + + } +, { + "box" : { + "id" : "obj-40", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 435.0, 185.0, 63.0, 22.0 ], + "text" : "prepend 1" + } + + } +, { + "box" : { + "id" : "obj-49", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 421.0, 215.0, 90.0, 22.0 ], + "text" : "prepend param" + } + + } +, { + "box" : { + "id" : "obj-35", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 56.0, 223.0, 94.0, 22.0 ], + "text" : "prepend timesig" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 50.0, 184.0, 89.0, 22.0 ], + "text" : "prepend tempo" + } + + } +, { + "box" : { + "id" : "obj-37", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 9, + "outlettype" : [ "int", "int", "float", "float", "float", "", "int", "float", "" ], + "patching_rect" : [ 63.0, 150.0, 103.0, 22.0 ], + "text" : "transport" + } + + } +, { + "box" : { + "id" : "obj-122", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 309.0, 163.0, 61.0, 22.0 ], + "text" : "r save-gui" + } + + } +, { + "box" : { + "id" : "obj-116", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 309.0, 189.0, 111.0, 22.0 ], + "text" : "save modstorage-1" + } + + } +, { + "box" : { + "id" : "obj-56", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 197.0, 174.0, 39.0, 22.0 ], + "text" : "r load" + } + + } +, { + "box" : { + "id" : "obj-47", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 197.0, 204.0, 109.0, 22.0 ], + "text" : "load modstorage-2" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 194.0, 100.0, 58.0, 22.0 ], + "text" : "loadbang" + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 175.0, 146.0, 106.0, 22.0 ], + "text" : "readfile lfogui.html" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-68", + "index" : 1, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 435.0, 40.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-69", + "index" : 2, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 517.0, 40.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-70", + "index" : 3, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 611.0, 40.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-78", + "index" : 4, + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 702.0, 40.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-83", + "index" : 1, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 195.333336000000003, 305.0, 30.0, 30.0 ] + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-116", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-116", 0 ], + "source" : [ "obj-122", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-13", 0 ], + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-49", 0 ], + "source" : [ "obj-23", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-49", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-35", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-36", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-35", 0 ], + "source" : [ "obj-37", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-36", 0 ], + "source" : [ "obj-37", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-49", 0 ], + "source" : [ "obj-38", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-49", 0 ], + "source" : [ "obj-40", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-47", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-49", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-47", 0 ], + "source" : [ "obj-56", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "source" : [ "obj-68", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-38", 0 ], + "source" : [ "obj-69", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-70", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-23", 0 ], + "source" : [ "obj-78", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 80.0, 347.0, 131.0, 22.0 ], + "saved_object_attributes" : { + "description" : "", + "digest" : "", + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p modulator-boilerplate" + } + + } +, { + "box" : { + "id" : "obj-74", + "maxclass" : "jweb", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 49.25, 411.0, 990.5, 136.0 ], + "presentation" : 1, + "presentation_rect" : [ 9.0, 517.5, 987.5, 417.0 ], + "rendermode" : 0, + "url" : "file://lfogui.html" + } + + } +, { + "box" : { + "bubble" : 1, + "bubbleside" : 0, + "fontname" : "Arial", + "fontsize" : 11.0, + "id" : "obj-72", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 405.0, 320.0, 139.0, 38.0 ], + "presentation" : 1, + "presentation_rect" : [ 617.5, 110.0, 176.0, 38.0 ], + "text" : "USE FOR LOADING" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.0, 0.0, 1.0 ], + "id" : "obj-24", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 771.5, 336.0, 41.0, 22.0 ], + "text" : "s load" + } + + } +, { "box" : { "id" : "obj-56", "maxclass" : "button", @@ -241,7 +1233,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -567,8 +1559,8 @@ "key" : "svg", "val" : { "id" : "src4", - "cx" : 132, - "cy" : 72 + "cx" : 153, + "cy" : 70 } } @@ -808,7 +1800,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -2063,7 +3055,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 1222.0, 96.0, 95.0, 35.0 ], + "patching_rect" : [ 1222.0, 96.0, 95.0, 36.0 ], "text" : "readPiece HSSPieces.json" } @@ -2160,7 +3152,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -2333,7 +3325,7 @@ "numoutlets" : 2, "outlettype" : [ "", "" ], "parameter_enable" : 0, - "patching_rect" : [ 751.5, 205.0, 39.0, 32.0 ] + "patching_rect" : [ 748.0, 205.0, 39.0, 32.0 ] } } @@ -2361,13 +3353,13 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", - "rect" : [ 84.0, 144.0, 640.0, 480.0 ], + "rect" : [ 538.0, 104.0, 640.0, 480.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -2792,7 +3784,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "parameter_enable" : 0, - "patching_rect" : [ 771.5, 65.0, 126.0, 115.0 ], + "patching_rect" : [ 771.5, 62.5, 126.0, 115.0 ], "presentation" : 1, "presentation_rect" : [ 796.0, 10.0, 126.0, 122.5 ], "varname" : "nodes", @@ -2825,13 +3817,13 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", - "rect" : [ 170.0, 100.0, 1244.0, 670.0 ], + "rect" : [ -169.0, 172.0, 1244.0, 670.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -3112,16 +4104,9 @@ "id" : "obj-44", "maxclass" : "newobj", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], + "numoutlets" : 1, + "outlettype" : [ "" ], "patching_rect" : [ 232.75, 282.0, 301.0, 22.0 ], - "saved_object_attributes" : { - "args" : [ 2, 96, 48 ], - "autostart" : 1, - "defer" : 0, - "watch" : 1 - } -, "text" : "node.script tf.js @watch 1 @autostart 1 @args 2 96 48", "varname" : "nnLists" } @@ -3413,7 +4398,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -3590,7 +4575,7 @@ "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 565.0, 725.0, 19.0, 22.0 ], + "patching_rect" : [ 575.0, 995.0, 19.0, 22.0 ], "text" : "t l" } @@ -3601,7 +4586,7 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 734.0, 785.0, 165.0, 22.0 ], + "patching_rect" : [ 744.0, 1055.0, 165.0, 22.0 ], "text" : "udpsend 192.168.6.104 9000" } @@ -3612,7 +4597,7 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 565.0, 785.0, 165.0, 22.0 ], + "patching_rect" : [ 575.0, 1055.0, 165.0, 22.0 ], "text" : "udpsend 192.168.7.103 9000" } @@ -3623,7 +4608,7 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 394.0, 785.0, 165.0, 22.0 ], + "patching_rect" : [ 404.0, 1055.0, 165.0, 22.0 ], "text" : "udpsend 192.168.6.102 9000" } @@ -3634,7 +4619,7 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 252.0, 785.0, 135.0, 22.0 ], + "patching_rect" : [ 262.0, 1055.0, 135.0, 22.0 ], "text" : "udpsend localhost 9000" } @@ -3767,6 +4752,34 @@ "patching_rect" : [ 225.0, 65.0, 56.0, 22.0 ], "restore" : { "currentPiece" : [ "DefaultSetting" ], + "modstorage-2" : [ { + "data" : { + "enumArrays" : [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "2", "2", "2", "2", "2", "2", "2", "2", "2", "2" ], [ "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ], + "enumMats" : [ [ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ], [ [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ] ] ], + "modArrays" : [ [ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "Sine", "Sine", "SawUp", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz" ], [ "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ], + "modCenters" : { + "1" : { + + } +, + "2" : { + + } +, + "3" : { + + } +, + "4" : { + + } + + } + + } + + } + ], "nodes" : [ 0.5, 0.5, 0.1, 1, 0.1, 0.1, 0.1, 1, 0.9, 0.1, 0.1, 1, 0.9, 0.9, 0.1, 1, 0.1, 0.9, 0.1, 1 ] } , @@ -3816,11 +4829,11 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 762.0, 8.0, 139.0, 35.0 ], + "patching_rect" : [ 762.0, 8.0, 139.0, 36.0 ], "presentation" : 1, "presentation_linecount" : 2, - "presentation_rect" : [ 642.0, 11.5, 139.0, 35.0 ], - "text" : "Create presets by clicking on numbers" + "presentation_rect" : [ 642.0, 11.5, 139.0, 36.0 ], + "text" : "USE FOR SAVING PRESETS" } } @@ -3832,7 +4845,7 @@ "numinlets" : 1, "numoutlets" : 5, "outlettype" : [ "preset", "int", "preset", "int", "" ], - "patching_rect" : [ 751.5, 280.0, 126.0, 28.0 ], + "patching_rect" : [ 751.5, 289.0, 126.0, 28.0 ], "pattrstorage" : "DJster", "presentation" : 1, "presentation_rect" : [ 642.0, 86.5, 127.0, 28.0 ] @@ -3850,7 +4863,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -4060,13 +5073,13 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } , "classnamespace" : "box", - "rect" : [ 524.0, 100.0, 876.0, 682.0 ], + "rect" : [ 202.0, 191.0, 876.0, 682.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -4180,7 +5193,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -4318,7 +5331,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 383.5, 132.0, 148.0, 22.0 ], - "restore" : [ "HSS_Samples.json" ], + "restore" : [ "Tutorial.bank.json" ], "saved_object_attributes" : { "parameter_enable" : 0, "parameter_mappable" : 0 @@ -4398,10 +5411,10 @@ "outlettype" : [ "", "", "", "" ], "patching_rect" : [ 83.0, 16.0, 56.0, 22.0 ], "restore" : { - "instrument-1" : [ "Basic-Tone.instr.json" ], - "instrument-2" : [ "Basic-Tone.instr.json" ], - "instrument-3" : [ "Gentle-Metallic-1.instr.json" ], - "instrument-4" : [ "Basic-Tone.instr.json" ] + "instrument-1" : [ "X_Darkswarm.instr.json" ], + "instrument-2" : [ "X_Darkswarm.instr.json" ], + "instrument-3" : [ "X_BasicBells.instr.json" ], + "instrument-4" : [ "X_Grain.instr.json" ] } , "text" : "autopattr", @@ -5103,7 +6116,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -5360,7 +6373,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 343.0, 265.0, 171.0, 22.0 ], - "restore" : [ 1 ], + "restore" : [ 0 ], "saved_object_attributes" : { "parameter_enable" : 0, "parameter_mappable" : 0 @@ -6135,7 +7148,7 @@ "appversion" : { "major" : 8, "minor" : 6, - "revision" : 4, + "revision" : 2, "architecture" : "x64", "modernui" : 1 } @@ -6289,7 +7302,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 517.899999999999977, 790.0, 145.0, 22.0 ], - "restore" : [ -3, 61 ], + "restore" : [ 21, 63 ], "saved_object_attributes" : { "parameter_enable" : 0, "parameter_mappable" : 0 @@ -6308,7 +7321,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 460.899999999999977, 903.0, 145.0, 22.0 ], - "restore" : [ 67, 0 ], + "restore" : [ 63, 21 ], "saved_object_attributes" : { "parameter_enable" : 0, "parameter_mappable" : 0 @@ -6327,7 +7340,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 403.899999999999977, 847.0, 145.0, 22.0 ], - "restore" : [ 138, 66 ], + "restore" : [ 109, 63 ], "saved_object_attributes" : { "parameter_enable" : 0, "parameter_mappable" : 0 @@ -6346,7 +7359,7 @@ "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 346.899999999999977, 790.0, 145.0, 22.0 ], - "restore" : [ 68, 130 ], + "restore" : [ 66, 109 ], "saved_object_attributes" : { "parameter_enable" : 0, "parameter_mappable" : 0 @@ -7865,7 +8878,7 @@ } , { "box" : { - "autorestore" : "Loria_HSS_Composition.json", + "autorestore" : "hss-Xiao-2024.json", "id" : "obj-20", "maxclass" : "newobj", "numinlets" : 1, @@ -7879,10 +8892,10 @@ } , "saved_object_attributes" : { - "client_rect" : [ 903, 252, 1512, 568 ], + "client_rect" : [ 1057, 45, 1440, 407 ], "parameter_enable" : 0, "parameter_mappable" : 0, - "storage_rect" : [ 780, 524, 1380, 824 ] + "storage_rect" : [ 583, 69, 1034, 197 ] } , "text" : "pattrstorage DJster @greedy 1 @outputmode 1", @@ -7918,7 +8931,7 @@ "numoutlets" : 4, "offset" : [ 0.0, 0.0 ], "outlettype" : [ "", "bang", "", "dictionary" ], - "patching_rect" : [ 585.0, 520.0, 499.0, 172.0 ], + "patching_rect" : [ 595.0, 790.0, 499.0, 172.0 ], "presentation" : 1, "presentation_rect" : [ 512.0, 333.0, 499.0, 172.0 ], "varname" : "Djster.µbus[3]", @@ -7942,7 +8955,7 @@ "numoutlets" : 4, "offset" : [ 0.0, 0.0 ], "outlettype" : [ "", "bang", "", "dictionary" ], - "patching_rect" : [ 65.0, 520.0, 500.0, 172.0 ], + "patching_rect" : [ 75.0, 790.0, 500.0, 172.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 333.0, 500.0, 172.0 ], "varname" : "Djster.µbus[2]", @@ -7966,7 +8979,7 @@ "numoutlets" : 4, "offset" : [ 0.0, 0.0 ], "outlettype" : [ "", "bang", "", "dictionary" ], - "patching_rect" : [ 585.0, 340.0, 499.0, 172.0 ], + "patching_rect" : [ 595.0, 610.0, 499.0, 172.0 ], "presentation" : 1, "presentation_rect" : [ 512.0, 159.0, 499.0, 172.0 ], "varname" : "Djster.µbus[1]", @@ -8009,7 +9022,7 @@ "numoutlets" : 4, "offset" : [ 0.0, 0.0 ], "outlettype" : [ "", "bang", "", "dictionary" ], - "patching_rect" : [ 65.0, 340.0, 500.0, 172.0 ], + "patching_rect" : [ 75.0, 610.0, 500.0, 172.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 159.0, 498.5, 172.0 ], "varname" : "Djster.µbus[0]", @@ -8027,7 +9040,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 16.0, 4.0, 143.0, 66.0 ], + "patching_rect" : [ 16.0, 4.0, 143.0, 67.0 ], "saved_bundle_data" : [ 35, 98, 117, 110, 100, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 47, 42, 0, 0, 44, 46, 0, 0, 0, 0, 0, 60, 35, 98, 117, 110, 100, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 47, 107, 101, 121, 0, 0, 0, 0, 44, 115, 0, 0, 99, 108, 101, 97, 114, 0, 0, 0, 0, 0, 0, 16, 47, 118, 97, 108, 0, 0, 0, 0, 44, 115, 0, 0, 42, 0, 0, 0 ], "saved_bundle_length" : 92, "text" : "/* : {\n /key : \"clear\",\n /val : \"*\"\n}" @@ -8114,7 +9127,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 1191.5, 285.0, 231.0, 35.0 ], + "patching_rect" : [ 1191.5, 285.0, 231.0, 36.0 ], "text" : "priority hub -1, priority hub::instrument -1, priority hub::instrument::bank -1" } @@ -8127,7 +9140,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 1151.0, 14.0, 135.0, 76.0 ], + "patching_rect" : [ 1151.0, 14.0, 135.0, 77.0 ], "text" : "\"Macintosh HD:/Users/Shared/Max 8/Library/healing-soundscapes/Presets/DefaultSetting.json\"" } @@ -8274,6 +9287,13 @@ "source" : [ "obj-132", 2 ] } + } +, { + "patchline" : { + "destination" : [ "obj-78", 0 ], + "source" : [ "obj-137", 0 ] + } + } , { "patchline" : { @@ -8284,7 +9304,7 @@ } , { "patchline" : { - "destination" : [ "obj-79", 0 ], + "destination" : [ "obj-84", 0 ], "source" : [ "obj-160", 0 ] } @@ -8615,6 +9635,41 @@ "source" : [ "obj-65", 0 ] } + } +, { + "patchline" : { + "destination" : [ "obj-137", 0 ], + "source" : [ "obj-67", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "source" : [ "obj-67", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-67", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-67", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-67", 2 ] + } + } , { "patchline" : { @@ -8629,14 +9684,42 @@ "source" : [ "obj-71", 0 ] } + } +, { + "patchline" : { + "destination" : [ "obj-67", 0 ], + "source" : [ "obj-74", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-77", 0 ], + "source" : [ "obj-78", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-24", 0 ], + "source" : [ "obj-79", 1 ] + } + } , { "patchline" : { "destination" : [ "obj-17", 0 ], - "midpoints" : [ 74.5, 718.5, 574.5, 718.5 ], + "midpoints" : [ 84.5, 988.5, 584.5, 988.5 ], "source" : [ "obj-8", 0 ] } + } +, { + "patchline" : { + "destination" : [ "obj-79", 0 ], + "source" : [ "obj-84", 0 ] + } + } , { "patchline" : { @@ -8653,44 +9736,47 @@ "source" : [ "obj-89", 5 ] } - } -, { - "patchline" : { - "destination" : [ "obj-15", 0 ], - "midpoints" : [ 423.5, 280.0, 594.5, 280.0 ], - "source" : [ "obj-89", 4 ] - } - } , { "patchline" : { "destination" : [ "obj-17", 0 ], - "midpoints" : [ 371.5, 297.0, 574.5, 297.0 ], + "midpoints" : [ 371.5, 297.0, 584.5, 297.0 ], "source" : [ "obj-89", 0 ] } } , { "patchline" : { - "destination" : [ "obj-26", 0 ], - "midpoints" : [ 384.5, 289.0, 74.5, 289.0 ], - "source" : [ "obj-89", 1 ] + "destination" : [ "obj-92", 3 ], + "source" : [ "obj-89", 4 ] } } , { "patchline" : { - "destination" : [ "obj-5", 0 ], - "midpoints" : [ 397.5, 288.0, 594.5, 288.0 ], + "destination" : [ "obj-92", 2 ], + "source" : [ "obj-89", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-92", 1 ], "source" : [ "obj-89", 2 ] } } , { "patchline" : { - "destination" : [ "obj-8", 0 ], - "midpoints" : [ 410.5, 278.0, 74.5, 278.0 ], - "source" : [ "obj-89", 3 ] + "destination" : [ "obj-92", 0 ], + "source" : [ "obj-89", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-74", 0 ], + "source" : [ "obj-92", 0 ] } } @@ -8863,7 +9949,7 @@ "parameter_overrides" : { "obj-15::obj-1" : { "parameter_longname" : "Outset Pulses[3]", - "parameter_range" : [ 1, 20 ] + "parameter_range" : [ 1, 28 ] } , "obj-15::obj-104" : { @@ -8991,7 +10077,7 @@ , "obj-26::obj-1" : { "parameter_longname" : "Outset Pulses", - "parameter_range" : [ 1, 8 ] + "parameter_range" : [ 1, 28 ] } , "obj-26::obj-104" : { @@ -9125,7 +10211,7 @@ , "obj-5::obj-1" : { "parameter_longname" : "Outset Pulses[1]", - "parameter_range" : [ 1, 8 ] + "parameter_range" : [ 1, 28 ] } , "obj-5::obj-104" : { @@ -9255,7 +10341,7 @@ , "obj-8::obj-1" : { "parameter_longname" : "Outset Pulses[2]", - "parameter_range" : [ 1, 12 ] + "parameter_range" : [ 1, 28 ] } , "obj-8::obj-104" : { @@ -9388,314 +10474,272 @@ , "dependency_cache" : [ { "name" : "AdditiveMeter2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Autobusk-µPlayer.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/core", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/core", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", "type" : "JSON", "implicit" : 1 } , { "name" : "DJster.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster", "type" : "JSON", "implicit" : 1 } , { "name" : "Inner-Equation.5.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Inside.3.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", - "type" : "JSON", - "implicit" : 1 - } -, { - "name" : "Loria_HSS_Composition.json", - "bootpath" : "/Users/Shared/Max 8/Library/healing-soundscapes/Presets", - "patcherrelativepath" : "./Presets", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Mod.2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Pof_(Qi)(i=0toz-r-1).2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Pof_(Qj)(j=1toz).2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Pof_(Qz+1-k)(k=0tor).2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Qz+1-k2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Qz-r2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "TIE.7.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "Total-Internal-Equation.6.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "bytecount.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/core", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/core", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", "type" : "JSON", "implicit" : 1 } , { "name" : "composite-meters.txt", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "TEXT", "implicit" : 1 } , { "name" : "dispenser.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "djster.accum.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/core", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/core", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", "type" : "JSON", "implicit" : 1 } , { "name" : "djster_webcontrol.js", - "bootpath" : "/Users/Shared/Max 8/Library/healing-soundscapes", + "bootpath" : "D:/projects/healing-soundscapes", "patcherrelativepath" : ".", "type" : "TEXT", "implicit" : 1 } , { "name" : "drawsocket-max.js", - "bootpath" : "/Users/Shared/Max 8/Packages/drawsocket-max/javascript", - "patcherrelativepath" : "../../Packages/drawsocket-max/javascript", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/drawsocket-max/javascript", "type" : "TEXT", "implicit" : 1 } , { "name" : "drawsocket.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/drawsocket-max/patchers", - "patcherrelativepath" : "../../Packages/drawsocket-max/patchers", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/drawsocket-max/patchers", "type" : "JSON", "implicit" : 1 } , { "name" : "dumper.2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "harmonic-energy-profile.txt", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/Profiles", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/Profiles", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/Profiles", "type" : "TEXT", "implicit" : 1 } , { "name" : "harmonicity.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/Tonality", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/Tonality", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/Tonality", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "hss-Xiao-2024.json", + "bootpath" : "D:/projects/healing-soundscapes/Presets", + "patcherrelativepath" : "./Presets", "type" : "JSON", "implicit" : 1 } , { "name" : "hss.piecemaker.js", - "bootpath" : "/Users/Shared/Max 8/Library/healing-soundscapes", + "bootpath" : "D:/projects/healing-soundscapes", "patcherrelativepath" : ".", "type" : "TEXT", "implicit" : 1 } , { "name" : "indigestibility.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/Tonality", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/Tonality", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/Tonality", "type" : "JSON", "implicit" : 1 } , { "name" : "meter-subpatch.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/core", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/core", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", "type" : "JSON", "implicit" : 1 } , { - "name" : "mxj.mxo", - "type" : "iLaX" + "name" : "mxj.mxe64", + "type" : "mx64" } , { - "name" : "o.atomize.mxo", - "type" : "iLaX" + "name" : "o.atomize.mxe64", + "type" : "mx64" } , { - "name" : "o.compose.mxo", - "type" : "iLaX" + "name" : "o.compose.mxe64", + "type" : "mx64" } , { - "name" : "o.dict.mxo", - "type" : "iLaX" + "name" : "o.dict.mxe64", + "type" : "mx64" } , { - "name" : "o.display.mxo", - "type" : "iLaX" + "name" : "o.display.mxe64", + "type" : "mx64" } , { - "name" : "o.expr.codebox.mxo", - "type" : "iLaX" + "name" : "o.expr.codebox.mxe64", + "type" : "mx64" } , { - "name" : "o.pack.mxo", - "type" : "iLaX" + "name" : "o.pack.mxe64", + "type" : "mx64" } , { - "name" : "o.route.mxo", - "type" : "iLaX" + "name" : "o.route.mxe64", + "type" : "mx64" } , { - "name" : "o.select.mxo", - "type" : "iLaX" + "name" : "o.select.mxe64", + "type" : "mx64" } , { - "name" : "o.timetag.mxo", - "type" : "iLaX" + "name" : "o.timetag.mxe64", + "type" : "mx64" } , { "name" : "outset.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/core", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/core", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", "type" : "JSON", "implicit" : 1 } , { "name" : "packback.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/abstractions", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/abstractions", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/abstractions", "type" : "JSON", "implicit" : 1 } , { "name" : "platform.js", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/javascript", - "patcherrelativepath" : "../../Packages/MaxScore/javascript", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/javascript", "type" : "TEXT", "implicit" : 1 } , { "name" : "primefactors.txt", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/maps/microMaps", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/maps/microMaps", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/maps/microMaps", "type" : "TEXT", "implicit" : 1 } , { "name" : "psi-functions.txt", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "TEXT", "implicit" : 1 } , { "name" : "reader.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "reader2.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/dispenser", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/dispenser", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", "type" : "JSON", "implicit" : 1 } , { "name" : "scalaFileBase.js", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/javascript", - "patcherrelativepath" : "../../Packages/MaxScore/javascript", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/javascript", "type" : "TEXT", "implicit" : 1 } , { "name" : "scale-subpatch-exp.maxpat", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/patchers/DJster/core", - "patcherrelativepath" : "../../Packages/MaxScore/patchers/DJster/core", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", "type" : "JSON", "implicit" : 1 } , { "name" : "scriptingname.js", - "bootpath" : "/Users/Shared/Max 8/Packages/MaxScore/javascript", - "patcherrelativepath" : "../../Packages/MaxScore/javascript", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/MaxScore/javascript", "type" : "TEXT", "implicit" : 1 } , { "name" : "startscript.js", - "bootpath" : "/Users/Shared/Max 8/Packages/Quintet.net/patchers/Library/nodejs/drawsocket-min/code", - "patcherrelativepath" : "../../Packages/Quintet.net/patchers/Library/nodejs/drawsocket-min/code", - "type" : "TEXT", - "implicit" : 1 - } -, { - "name" : "tf.js", - "bootpath" : "/Users/Shared/Max 8/Library/tensorflow-max-mlp", - "patcherrelativepath" : "../tensorflow-max-mlp", + "bootpath" : "~/OneDrive/Documents/Max 8/Packages/drawsocket-max/javascript", "type" : "TEXT", "implicit" : 1 } diff --git a/lfogui.html b/lfogui.html new file mode 100644 index 0000000..eea2c60 --- /dev/null +++ b/lfogui.html @@ -0,0 +1,28 @@ + + + + + + + + + + +
+ + + + + + + + + + + diff --git a/modulators/common.js b/modulators/common.js new file mode 100644 index 0000000..96cb58e --- /dev/null +++ b/modulators/common.js @@ -0,0 +1,62 @@ +function isNumeric(str) { + if (typeof str != "string") return false // we only process strings! + return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)... + !isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail + } + +function DropDown(props) { + return e('select', {type: "number", onChange: props.onChange, value: props.value}, + ...props.options.map((item) => Option(item))); +} + +function ListItem(child){ + return e('li', null, child); +} + +function Label(text){ + return e('div', {className: 'label'}, text); +} + +function NumberBox(props){ + return e('input', {type: "number", onChange: props.onChange, step: props.step, value: props.value, className: props.className}, null); +} + +function TextBox(props){ + return e('input', {type: "text", value: props.value, onChange: props.onChange, id: props.id}); +} + +function Option(str, value){ + return e("option", {value: value}, str); +} + +function Button(props){ + return e('button', {onClick: props.onClick}, props.text); +} + +function Switch(props){ + return e('label', {className: 'switch'}, + e('input', {type: 'checkbox', onClick: props.ontoggle}, null), + e('span', {className: 'slider round'}, null)) +} + +function CreateParamChanger(arr, setArr, index, postCB=() => {}, preCB=(val) => val){ + return (event) => { + let newArr = arr.slice(); + newArr[index] = preCB(event.target.value); + setArr(newArr); + postCB(); + log(`${index} ${event.target.value}`); + } +} + +function CreateMatrixParamChanger(matrix, setMatrix, i, j){ + return (event) => { + var newMatrix = matrix.map(function(arr) { + return arr.slice(); + }); + newMatrix[i][j] = event.target.value; + setMatrix(newMatrix); + log(`${i}, ${j} ${event.target.value}`); + + } +} \ No newline at end of file diff --git a/modulators/enums.js b/modulators/enums.js new file mode 100644 index 0000000..0c911af --- /dev/null +++ b/modulators/enums.js @@ -0,0 +1,72 @@ +///////////////////////// +// ENUMERATORS +///////////////////////// + + + +// NOT A REACT FUNCTIONAL COMPONENT. MERELY RETURNS AN ARRAY WHICH IS UNPACKED +function EnumeratorItems(index, enumBreakPoints, setEnumBreakPoints, enumNames, setEnumNames, djParam){ + let items = []; + for (let i = 0; i < MAXENUMPOINTS; i++){ + + items.push(ListItem(e(TextBox, {onChange: CreateMatrixParamChanger(enumNames, setEnumNames, index, i), value: enumNames[index][i], id:`text-${djParam}-${enumNames[index][i]}`}, null))); + // Add 1 to make up for the lower enum bound + items.push(ListItem(e(NumberBox, {onChange: CreateMatrixParamChanger(enumBreakPoints, setEnumBreakPoints, index, i + 1), value:enumBreakPoints[index][i + 1]}, null))); + } + return items; +} + +function EnumeratorRow(props){ + let linkedText = props.linked ? "<- mods" : ""; + + let content = e('ul', {className: 'lfo-item', id: `${props.djParam}-enum-row`}, + ListItem(DropDown({onChange: props.setInstanceNum, value:props.instanceNum, options: INSTANCEOPTIONS})), + ListItem(DropDown({onChange: props.setDjParam, value: props.djParam, options: MODPARAMOPTIONS})), + ListItem(e(NumberBox, {onChange: props.setEnumItemCounts, step:1, value:props.enumItems, className: 'enum-count'}, null)), + ListItem(e(NumberBox, {onChange: CreateMatrixParamChanger(props.enumBreakPoints, props.setEnumBreakPoints, props.index, 0), value:props.enumBreakPoints[props.index][0], step:0.1}, null)), + ...(EnumeratorItems(props.index, props.enumBreakPoints, props.setEnumBreakPoints, props.enumNames, props.setEnumNames, props.djParam).slice(0, props.enumItems * 2)), + ListItem(e(Button, {text:'+', onClick: props.addEnum}, null)), + ListItem(e(Button, {text:'-', onClick: props.removeEnum}, null)), + ListItem(e("div", {className:"linked"}, linkedText)) + ); + if (props.visible){ + return content; + }; +} + +function denumerate(inval, count, keys, vals){ + let output = inval; + for (let i=0; i < count; i++){ + log(vals[i]); + if (inval == vals[i]){ + output = (parseFloat(keys[i]) + parseFloat(keys[i+1])) / 2; // linear interpolate + } + } + return output; +} + + +function enumerate(name, inst, inval, count, keys, vals){ + let output = "OUT OF RANGE"; + for (let i=0; i < count + 1; i++){ + if (inval <= keys[i]){ + if (i > 0) + output = vals[i - 1]; + break + } + } + let highlightedItem = document.getElementById(`text-${name}-${output}`); + + if (highlightedItem){ + + highlightedItem.style.animation = "pulse-animation 0.5s normal"; + + highlightedItem.addEventListener('animationend', () => { + highlightedItem.style.animation = ""; + }); + } + + if (name !== "NONE") + window.max.outlet(inst + " " + name + " " + output); +} + diff --git a/modulators/example-with-dj.maxpat b/modulators/example-with-dj.maxpat new file mode 100644 index 0000000..3e26901 --- /dev/null +++ b/modulators/example-with-dj.maxpat @@ -0,0 +1,2680 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 5, + "revision" : 6, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 87.0, 170.0, 1345.0, 588.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-8", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 869.0, 74.0, 168.0, 33.0 ], + "text" : "TODO - must deenumerate inputs coming from DJster" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 663.516963958740234, 70.850461006164551, 101.0, 22.0 ], + "text" : "load localStorage" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 999.866710782051086, 199.542056441307068, 104.0, 22.0 ], + "text" : "save localStorage" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 663.516963958740234, 40.817753553390503, 55.0, 22.0 ], + "text" : "del 1000" + } + + } +, { + "box" : { + "id" : "obj-20", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 663.516963958740234, 4.317753553390503, 58.0, 22.0 ], + "text" : "loadbang" + } + + } +, { + "box" : { + "data" : { + "data" : { + "enumArrays" : [ [ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 2, 2, 2, 2, 2, "2", "2", "2", "2", "2" ], [ "meter", "stream", "scale", "NONE", "NONE", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ], + "enumMats" : [ [ [ "0", "1", "2", 3, 4, 5, 6, 7, 8, 9, 10 ], [ "0", "1", "2", 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ], [ [ "3 4", "7 8", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "0", "1", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "pentatonic", "major", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ] ] ], + "modArrays" : [ [ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "Sine", "SawUp", "SawDown", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "metriclarity", "stream", "meter", "harmoniclarity", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ], [ "0.6", "0.3", "0.1", "0.6", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "30", "2", "2", "36", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", "0", "0", "0.5", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ] + } + + } +, + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 4, + "outlettype" : [ "dictionary", "", "", "" ], + "patching_rect" : [ 702.514054298400879, 148.869158983230591, 159.0, 22.0 ], + "saved_object_attributes" : { + "embed" : 1, + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "dict localStorage @embed 1" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 839.266704782050965, 318.971981048583984, 71.0, 22.0 ], + "text" : "fromsymbol" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 68.8047869048537, 208.411226630210876, 90.0, 22.0 ], + "text" : "prepend param" + } + + } +, { + "box" : { + "bgmode" : 0, + "border" : 0, + "clickthrough" : 0, + "enablehscroll" : 0, + "enablevscroll" : 0, + "id" : "obj-1", + "lockeddragscroll" : 0, + "lockedsize" : 0, + "maxclass" : "bpatcher", + "name" : "DJster.maxpat", + "numinlets" : 1, + "numoutlets" : 4, + "offset" : [ 0.0, 0.0 ], + "outlettype" : [ "", "bang", "", "dictionary" ], + "patching_rect" : [ 839.266704782050965, 346.653744474845894, 465.200012000000015, 171.399993999999992 ], + "varname" : "Djster.µbus[1]", + "viewvisibility" : 1 + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "jweb", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 68.8047869048537, 239.018703579902649, 710.105266809463501, 317.0 ], + "rendermode" : 0, + "url" : "file://lfogui.html" + } + + } +, { + "box" : { + "bgmode" : 0, + "border" : 0, + "clickthrough" : 0, + "embed" : 1, + "enablehscroll" : 0, + "enablevscroll" : 0, + "id" : "obj-55", + "lockeddragscroll" : 0, + "lockedsize" : 0, + "maxclass" : "bpatcher", + "name" : "DJster-control-guts.maxpat", + "numinlets" : 0, + "numoutlets" : 1, + "offset" : [ 0.0, 0.0 ], + "outlettype" : [ "" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 5, + "revision" : 6, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 490.0, 157.0, 1441.0, 699.0 ], + "bglocked" : 0, + "openinpresentation" : 1, + "default_fontsize" : 10.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-43", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 893.53335600000014, 47.0, 76.0, 20.0 ], + "text" : "prepend sorted" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 708.958344000000011, 41.0, 81.0, 20.0 ], + "text" : "prepend overlap" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 328.816681000000017, 41.0, 79.0, 20.0 ], + "text" : "prepend stream" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 219.583333333333371, 355.0, 128.0, 20.0 ], + "text" : "prepend melodic_cohesion" + } + + } +, { + "box" : { + "annotation" : "Silent downbeat. This parameter switches the relative probabilities for the first and second pulses", + "bordercolor" : [ 1.0, 0.709803921568627, 0.196078431372549, 1.0 ], + "focusbordercolor" : [ 0.764705882352941, 0.764705882352941, 0.764705882352941, 1.0 ], + "id" : "obj-217", + "maxclass" : "live.toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 1, + "patching_rect" : [ 709.458344000000011, 13.0, 15.0, 15.0 ], + "presentation" : 1, + "presentation_rect" : [ 96.252646684646606, 133.5, 15.0, 15.0 ], + "saved_attribute_attributes" : { + "bordercolor" : { + "expression" : "themecolor.live_control_selection" + } +, + "focusbordercolor" : { + "expression" : "themecolor.live_control_zombie" + } +, + "valueof" : { + "parameter_enum" : [ "off", "on" ], + "parameter_info" : "Silent downbeat. This parameter switches the relative probabilities for the first and second pulses", + "parameter_initial" : [ 1 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Overlap", + "parameter_mmax" : 1, + "parameter_shortname" : "Overlap", + "parameter_type" : 2 + } + + } +, + "varname" : "overlap" + } + + } +, { + "box" : { + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-215", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1190.645843000000013, 312.0, 101.0, 18.0 ], + "presentation" : 1, + "presentation_rect" : [ 52.0, 131.5, 45.0, 18.0 ], + "saved_attribute_attributes" : { + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } + + } +, + "text" : "Overlap:", + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-207", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 694.049987999999871, 67.0, 75.0, 18.0 ], + "presentation" : 1, + "presentation_rect" : [ 389.850013136863708, 0.0, 77.0, 18.0 ], + "saved_attribute_attributes" : { + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } + + } +, + "text" : "Chordal Weight", + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ] + } + + } +, { + "box" : { + "activebgcolor" : [ 0.529411764705882, 0.529411764705882, 0.529411764705882, 1.0 ], + "annotation" : "Set the number of intervals in a chord. A maximum of 5 notes can be played together in each stream. ", + "appearance" : 2, + "bordercolor" : [ 1.0, 0.709803921568627, 0.196078431372549, 1.0 ], + "id" : "obj-206", + "maxclass" : "live.numbox", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 708.958344000000011, 96.5, 44.0, 15.0 ], + "presentation" : 1, + "presentation_rect" : [ 414.350013136863708, 20.0, 28.0, 15.0 ], + "saved_attribute_attributes" : { + "activebgcolor" : { + "expression" : "themecolor.live_surface_bg" + } +, + "bordercolor" : { + "expression" : "themecolor.live_control_selection" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_enum" : [ "1", "2", "3", "4", "5" ], + "parameter_info" : "Set the number of intervals in a chord. A maximum of 5 notes can be played together in each stream. ", + "parameter_initial" : [ 1 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Chordal Weight", + "parameter_mmax" : 5.0, + "parameter_mmin" : 1.0, + "parameter_shortname" : "Chordal Weight", + "parameter_type" : 1, + "parameter_unitstyle" : 9 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "textjustification" : 0, + "varname" : "chordal_weight" + } + + } +, { + "box" : { + "id" : "obj-165", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 173.75, 435.0, 74.0, 20.0 ], + "text" : "prepend meter" + } + + } +, { + "box" : { + "annotation" : "Transport on: set subdivisions of the current beat; transport off: set meter", + "bgcolor" : [ 0.2, 0.2, 0.2, 0.0 ], + "bgfillcolor_color" : [ 0.2, 0.2, 0.2, 0.0 ], + "bgfillcolor_color1" : [ 0.301961, 0.301961, 0.301961, 1 ], + "bgfillcolor_color2" : [ 0.2, 0.2, 0.2, 1 ], + "bgfillcolor_type" : "color", + "id" : "obj-158", + "items" : [ 1, ",", 2, ",", 3, ",", 2, 2, ",", "2+3", ",", "3+2", ",", 2, 3, ",", 3, 2, ",", "2+2+3", ",", "2+3+2", ",", "3+2+2", ",", 2, 2, 2, ",", "2+3+3", ",", "3+2+3", ",", "3+3+2", ",", 3, 3, ",", 2, 5, ",", 11, ",", 3, 2, 2, ",", 2, 3, 2, ",", 2, 2, 3, ",", "my-meter" ], + "maxclass" : "umenu", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "int", "", "" ], + "parameter_enable" : 1, + "parameter_mappable" : 0, + "patching_rect" : [ 174.324981500000035, 388.166666895151138, 17.850037000000043, 20.0 ], + "pattrmode" : 1, + "presentation" : 1, + "presentation_rect" : [ 194.0, 0.0, 18.0, 20.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_enum" : [ "1", "2", "3", "2 2", "2+3", "3+2", "2 3", "3 2", "2+2+3", "2+3+2", "3+2+2", "2 2 2", "2+3+3", "3+2+3", "3+3+2", "3 3", "2 5", "11", "3 2 2", "2 3 2", "2 2 3", "my-meter" ], + "parameter_longname" : "Subdivisions", + "parameter_mmax" : 21, + "parameter_shortname" : "Subdivision", + "parameter_type" : 2 + } + + } +, + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], + "varname" : "subdivision" + } + + } +, { + "box" : { + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-138", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1243.395843000000013, 339.5, 37.0, 18.0 ], + "presentation" : 1, + "presentation_rect" : [ 293.594707787036896, 0.0, 37.0, 18.0 ], + "saved_attribute_attributes" : { + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } + + } +, + "text" : "Sorted", + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ] + } + + } +, { + "box" : { + "annotation" : "Silent downbeat. This parameter switches the relative probabilities for the first and second pulses", + "bordercolor" : [ 1.0, 0.709803921568627, 0.196078431372549, 1.0 ], + "focusbordercolor" : [ 0.764705882352941, 0.764705882352941, 0.764705882352941, 1.0 ], + "id" : "obj-136", + "maxclass" : "live.toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 1, + "patching_rect" : [ 894.03335600000014, 13.0, 15.0, 15.0 ], + "presentation" : 1, + "presentation_rect" : [ 304.594707787036896, 20.0, 15.0, 15.0 ], + "saved_attribute_attributes" : { + "bordercolor" : { + "expression" : "themecolor.live_control_selection" + } +, + "focusbordercolor" : { + "expression" : "themecolor.live_control_zombie" + } +, + "valueof" : { + "parameter_enum" : [ "harm", "scale" ], + "parameter_info" : "Silent downbeat. This parameter switches the relative probabilities for the first and second pulses", + "parameter_initial" : [ 0.0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Sorted", + "parameter_mmax" : 1, + "parameter_shortname" : "Sorted", + "parameter_type" : 2 + } + + } +, + "varname" : "sorted" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "A measure of the preservation of the scale used as input for the stocastic process. The values range from -1 (preserved sequence played backward) to 0 (weighted randomness) to 1 (preserved sequence played forward).\nThe scale can be represented either as an ascending sequence or as sequence, the order of which depending on its members' harmonic distance from the tonic or an arbitrarily assignedpriority value (use the Sort switch to toggle between these modes).\n", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-77", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 221.816681000000017, 295.0, 53.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 384.094707787036896, 47.0, 72.5, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_info" : "A measure of the preservation of the scale used as input for the stocastic process. The values range from -1 (preserved sequence played backward) to 0 (weighted randomness) to 1 (preserved sequence played forward).\nThe scale can be represented either as an ascending sequence or as sequence, the order of which depending on its members' harmonic distance from the tonic or an arbitrarily assignedpriority value (use the Sort switch to toggle between these modes).\n", + "parameter_initial" : [ 0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Cohesion", + "parameter_mmax" : 100.0, + "parameter_mmin" : -100.0, + "parameter_shortname" : "Melodic Cohesion", + "parameter_type" : 0, + "parameter_unitstyle" : 5 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "melodic_cohesion" + } + + } +, { + "box" : { + "id" : "obj-134", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 1128.283339999999953, 165.0, 112.0, 20.0 ], + "text" : "prepend ostinato-buffer" + } + + } +, { + "box" : { + "activebgcolor" : [ 0.529411764705882, 0.529411764705882, 0.529411764705882, 1.0 ], + "annotation" : "Ostinato Buffer: Switch between different buffers", + "appearance" : 1, + "id" : "obj-128", + "maxclass" : "live.tab", + "num_lines_patching" : 3, + "num_lines_presentation" : 3, + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 1128.283339999999953, 86.0, 30.725006000000121, 36.75 ], + "presentation" : 1, + "presentation_rect" : [ 215.955291986465454, 4.0, 32.589416027069092, 36.0 ], + "saved_attribute_attributes" : { + "activebgcolor" : { + "expression" : "themecolor.live_surface_bg" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_enum" : [ "0", "1", "2", "3", "4", "5" ], + "parameter_info" : "Ostinato Buffer: Switch between different buffers", + "parameter_initial" : [ 0.0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Ostinato Buffer", + "parameter_mmax" : 5, + "parameter_shortname" : "Ostinato Buffer", + "parameter_type" : 2, + "parameter_unitstyle" : 9 + } + + } +, + "spacing_y" : 3.0, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "varname" : "ostinato-buffer" + } + + } +, { + "box" : { + "id" : "obj-112", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 972.470916500000158, 377.25, 105.0, 20.0 ], + "text" : "prepend event_length" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The length in pulses of every event generated; a value of 1 is similar to ‘staccato’, a large value to ‘legato’.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-110", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 972.470916500000158, 303.5, 59.5, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 155.0, 47.0, 64.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_exponent" : 4.0, + "parameter_info" : "The length in pulses of every event generated; a value of 1 is similar to ‘staccato’, a large value to ‘legato’.", + "parameter_initial" : [ 100 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Event Length Percent", + "parameter_mmax" : 1000.0, + "parameter_mmin" : 1.0, + "parameter_shortname" : "Event Length", + "parameter_type" : 0, + "parameter_unitstyle" : 5 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "event_length" + } + + } +, { + "box" : { + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-108", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1253.645843000000013, 285.5, 38.0, 18.0 ], + "presentation" : 1, + "presentation_rect" : [ 355.444720923900604, 0.0, 46.0, 18.0 ], + "saved_attribute_attributes" : { + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } + + } +, + "text" : "Outset", + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-113", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1073.733351999999968, 95.0, 26.0, 18.0 ], + "presentation" : 1, + "presentation_rect" : [ 328.76971435546875, 0.0, 30.0, 18.0 ], + "saved_attribute_attributes" : { + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } + + } +, + "text" : "SDB", + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ] + } + + } +, { + "box" : { + "activebgcolor" : [ 0.647, 0.647, 0.647, 1.0 ], + "activebgoncolor" : [ 1.0, 0.71, 0.196, 1.0 ], + "annotation" : "Turn event generation on/off", + "bordercolor" : [ 1.0, 0.709803921568627, 0.196078431372549, 1.0 ], + "focusbordercolor" : [ 0.764705882352941, 0.764705882352941, 0.764705882352941, 1.0 ], + "id" : "obj-109", + "maxclass" : "live.toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 1, + "patching_rect" : [ 329.316681000000017, 13.0, 15.0, 15.0 ], + "presentation" : 1, + "presentation_rect" : [ 10.25, 23.0, 15.0, 15.0 ], + "saved_attribute_attributes" : { + "activebgcolor" : { + "expression" : "" + } +, + "activebgoncolor" : { + "expression" : "" + } +, + "bordercolor" : { + "expression" : "themecolor.live_control_selection" + } +, + "focusbordercolor" : { + "expression" : "themecolor.live_control_zombie" + } +, + "valueof" : { + "parameter_enum" : [ "off", "on" ], + "parameter_info" : "Turn event generation on/off", + "parameter_initial" : [ 0.0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "stream", + "parameter_mmax" : 1, + "parameter_shortname" : "Play", + "parameter_type" : 2 + } + + } +, + "varname" : "stream" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-3", + "index" : 1, + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 53.75, 327.0, 30.0, 30.0 ] + } + + } +, { + "box" : { + "id" : "obj-48", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 1051.0, 228.0, 120.0, 20.0 ], + "text" : "prepend silent_downbeat" + } + + } +, { + "box" : { + "annotation" : "Silent downbeat. This parameter switches the relative probabilities for the first and second pulses", + "bordercolor" : [ 1.0, 0.709803921568627, 0.196078431372549, 1.0 ], + "focusbordercolor" : [ 0.764705882352941, 0.764705882352941, 0.764705882352941, 1.0 ], + "id" : "obj-47", + "maxclass" : "live.toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 1, + "patching_rect" : [ 1051.5, 96.5, 15.0, 15.0 ], + "presentation" : 1, + "presentation_rect" : [ 335.26971435546875, 20.0, 15.0, 15.0 ], + "saved_attribute_attributes" : { + "bordercolor" : { + "expression" : "themecolor.live_control_selection" + } +, + "focusbordercolor" : { + "expression" : "themecolor.live_control_zombie" + } +, + "valueof" : { + "parameter_enum" : [ "off", "on" ], + "parameter_info" : "Silent downbeat. This parameter switches the relative probabilities for the first and second pulses", + "parameter_initial" : [ 0.0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Silent Downbeat", + "parameter_mmax" : 1, + "parameter_shortname" : "Silent Downbeat", + "parameter_type" : 2 + } + + } +, + "varname" : "silent_downbeat" + } + + } +, { + "box" : { + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-45", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1228.645843000000013, 285.5, 21.0, 18.0 ], + "presentation" : 1, + "presentation_rect" : [ 7.0, 3.0, 33.0, 18.0 ], + "saved_attribute_attributes" : { + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } + + } +, + "text" : "On", + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ] + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 155.0, 179.0, 74.0, 20.0 ], + "text" : "prepend meter" + } + + } +, { + "box" : { + "id" : "obj-17", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 53.75, 228.0, 71.0, 20.0 ], + "text" : "prepend scale" + } + + } +, { + "box" : { + "id" : "obj-7", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 255.28334000000001, 135.0, 83.0, 20.0 ], + "text" : "prepend ostinato" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 990.216675000000009, 192.0, 97.0, 20.0 ], + "text" : "prepend attenuation" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 933.683350000000019, 219.0, 90.0, 20.0 ], + "text" : "prepend dynamics" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 877.15002400000003, 161.0, 100.0, 20.0 ], + "text" : "prepend pitch_range" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 820.61669900000004, 190.0, 102.0, 20.0 ], + "text" : "prepend pitch_center" + } + + } +, { + "box" : { + "id" : "obj-21", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 764.083312999999976, 161.0, 110.0, 20.0 ], + "text" : "prepend harmoniclarity" + } + + } +, { + "box" : { + "id" : "obj-33", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 709.549987999999985, 190.0, 115.0, 20.0 ], + "text" : "prepend chordal_weight" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 654.016662999999994, 158.5, 96.0, 20.0 ], + "text" : "prepend tonic_pitch" + } + + } +, { + "box" : { + "id" : "obj-35", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 587.416687000000024, 190.0, 112.0, 20.0 ], + "text" : "prepend melody_scope" + } + + } +, { + "box" : { + "id" : "obj-37", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 481.416687000000024, 190.0, 104.0, 20.0 ], + "text" : "prepend eventfulness" + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 424.883330999999998, 161.0, 105.0, 20.0 ], + "text" : "prepend pulse_length" + } + + } +, { + "box" : { + "id" : "obj-39", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 368.350006000000008, 190.0, 96.0, 20.0 ], + "text" : "prepend metriclarity" + } + + } +, { + "box" : { + "id" : "obj-40", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 311.816681000000017, 161.0, 110.0, 20.0 ], + "text" : "prepend outset_pulses" + } + + } +, { + "box" : { + "activebgcolor" : [ 0.529411764705882, 0.529411764705882, 0.529411764705882, 1.0 ], + "annotation" : "Ostinato: modes are none, talea (rhythmic ostinato) and ostinato (melodic ostinato)", + "appearance" : 1, + "id" : "obj-29", + "maxclass" : "live.tab", + "num_lines_patching" : 3, + "num_lines_presentation" : 3, + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 255.28334000000001, 86.0, 42.450012000000015, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 251.155292212963104, 4.0, 44.589416027069092, 36.0 ], + "saved_attribute_attributes" : { + "activebgcolor" : { + "expression" : "themecolor.live_surface_bg" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_enum" : [ "off", "talea", "ostinato" ], + "parameter_info" : "Ostinato: modes are none, talea (rhythmic ostinato) and ostinato (melodic ostinato)", + "parameter_longname" : "Ostinato", + "parameter_mmax" : 2, + "parameter_shortname" : "Ostinato", + "parameter_type" : 2, + "parameter_unitstyle" : 9 + } + + } +, + "spacing_y" : 3.0, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "varname" : "ostinato" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047, 0.424, 0.847, 1.0 ], + "activefgdialcolor" : [ 0.745, 0.745, 0.745, 1.0 ], + "activeneedlecolor" : [ 0.745, 0.745, 0.745, 1.0 ], + "annotation" : "The time interval between pulses", + "appearance" : 1, + "dialcolor" : [ 0.411764705882353, 0.411764705882353, 0.411764705882353, 1.0 ], + "fontsize" : 9.0, + "id" : "obj-22", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 424.883330999999998, 86.0, 59.5, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 6.0, 47.0, 64.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "dialcolor" : { + "expression" : "themecolor.live_dial_needle_zombie" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_exponent" : 5.0, + "parameter_info" : "The time interval between pulses", + "parameter_initial" : [ 200 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Pulse Length", + "parameter_mmax" : 20000.0, + "parameter_mmin" : 10.0, + "parameter_shortname" : "Pulse Length", + "parameter_type" : 0, + "parameter_unitstyle" : 2 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "pulse_length" + } + + } +, { + "box" : { + "annotation" : "Enter a meter into text field: separate strata with spaces (prime numbers up to 41 allowed) and use + for additive meters (numbers 2 and 3 allowed)", + "autoscroll" : 0, + "bgcolor" : [ 0.4, 0.4, 0.4, 1.0 ], + "fontname" : "Ableton Sans Medium", + "fontsize" : 9.5, + "id" : "obj-20", + "keymode" : 1, + "lines" : 1, + "maxclass" : "textedit", + "numinlets" : 1, + "numoutlets" : 4, + "outlettype" : [ "", "int", "", "" ], + "parameter_enable" : 0, + "patching_rect" : [ 173.75, 123.0, 62.0, 20.0 ], + "presentation" : 1, + "presentation_rect" : [ 121.0, 22.0, 78.0, 20.0 ], + "rounded" : 0.0, + "text" : "2 2 2", + "varname" : "textedit", + "wordwrap" : 0 + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The maximum velocity of the stream. Values may be attenuated dependimg on the Attenuation parameter setting.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-27", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 933.683350000000019, 86.0, 47.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 307.76971435546875, 92.0, 47.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_info" : "The maximum velocity of the stream. Values may be attenuated dependimg on the Attenuation parameter setting.", + "parameter_initial" : [ 64 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Dynamics", + "parameter_shortname" : "Dynamics", + "parameter_type" : 1, + "parameter_units" : "vel", + "parameter_unitstyle" : 9 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "dynamics" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The extent to which the dynamics may deviate from the dynamics value; at minimum ‘metriclarity’ this is decided at random, whereas at maximum ‘metriclarity’ the deviation is related to the ‘indispensability’ of the pulse - the metriclarity is then dynamically amplified; this may be useful in the case of maximum eventfulness where agogic elements are neutralized.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-28", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "parameter_mappable" : 0, + "patching_rect" : [ 990.216675000000009, 86.0, 53.5, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 384.094707787036896, 92.0, 55.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_initial" : [ 12.5 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Attenuation", + "parameter_mmax" : 100.0, + "parameter_shortname" : "Attenuation", + "parameter_type" : 0, + "parameter_unitstyle" : 5 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "attenuation" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The interval in semitones (floating point) from the pitch center defining the range the melody is allowed to move in.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-26", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 877.15002400000003, 86.0, 56.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 232.094707787036896, 92.0, 60.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_exponent" : 2.0, + "parameter_info" : "The interval in semitones (floating point) from the pitch center defining the range the melody is allowed to move in.", + "parameter_initial" : [ 7 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Pitch Range", + "parameter_mmax" : 96.0, + "parameter_shortname" : "Pitch Range", + "parameter_type" : 0, + "parameter_units" : "st", + "parameter_unitstyle" : 7 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "pitch_range" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The MIDI pitch (floating point) of the center of pitch window (i.e. the range the melody is allowed to move in)", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-25", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 820.61669900000004, 86.0, 58.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 155.0, 92.0, 60.0, 36.0 ], + "prototypename" : "pitch", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_info" : "The MIDI pitch (floating point) of the center of pitch window (i.e. the range the melody is allowed to move in)", + "parameter_initial" : [ 60 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Pitch Center", + "parameter_mmax" : 96.0, + "parameter_shortname" : "Pitch Center", + "parameter_type" : 0, + "parameter_units" : "nt", + "parameter_unitstyle" : 8 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "pitch_center" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "Analogous to metriclarity, a minimum value accords all pitches in the scale an equal probability, thus weakening the key-feeling; at maximum the opposite is true. Note that this description particularly holds in the case of scales such as the chromatic; a major scale would introduce its own intrinsic key-feeling even at the minimum Parameter value.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-24", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 764.083312999999976, 86.0, 66.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 307.76971435546875, 47.0, 71.0, 36.0 ], + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_initial" : [ 50 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Harmoniclarity", + "parameter_mmax" : 100.0, + "parameter_shortname" : "Harmoniclarity", + "parameter_type" : 0, + "parameter_unitstyle" : 5 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "harmoniclarity" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The MIDI pitch (floating point) the selected tonality profile is anchored on. ", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-52", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 654.016662999999994, 86.0, 53.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 82.0, 92.0, 55.0, 36.0 ], + "prototypename" : "pitch", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_info" : "The MIDI pitch (floating point) the selected tonality profile is anchored on. ", + "parameter_initial" : [ 36 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Tonic Pitch", + "parameter_shortname" : "Tonic Pitch", + "parameter_type" : 0, + "parameter_units" : "nt", + "parameter_unitstyle" : 8 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "tonic_pitch" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "The maximum number of semitones permitted between the MIDI number of any event and the one following it.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-13", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 587.416687000000024, 86.0, 68.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 6.0, 92.0, 64.5, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_exponent" : 2.0, + "parameter_initial" : [ 7 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Melody Scope", + "parameter_mmax" : 96.0, + "parameter_shortname" : "Melody Scope", + "parameter_type" : 0, + "parameter_units" : "st", + "parameter_unitstyle" : 7 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "melody_scope" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "At minimum the stream is inactive, at maximum it is saturated with attacks, e.g. every available pulse in the metre accorded to this stream is played. ", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-11", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 481.416687000000024, 86.0, 67.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 78.0, 47.0, 64.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_info" : "At minimum the stream is inactive, at maximum it is saturated with attacks, e.g. every available pulse in the metre accorded to this stream is played. ", + "parameter_initial" : [ 100.0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Eventfulness", + "parameter_mmax" : 100.0, + "parameter_shortname" : "Eventfulness", + "parameter_type" : 0, + "parameter_unitstyle" : 5 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "eventfulness" + } + + } +, { + "box" : { + "activedialcolor" : [ 0.047058823529412, 0.423529411764706, 0.847058823529412, 1.0 ], + "activefgdialcolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "activeneedlecolor" : [ 0.745098039215686, 0.745098039215686, 0.745098039215686, 1.0 ], + "annotation" : "A measure of the resultant clarity of the metre as played in the stream - at minimum all pulses are accorded equal probability and the metre cannot be musically detected, whereas at maximum the opposite is true.", + "appearance" : 1, + "fontsize" : 9.0, + "id" : "obj-5", + "maxclass" : "live.dial", + "needlecolor" : [ 0.647058823529412, 0.647058823529412, 0.647058823529412, 1.0 ], + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 368.350006000000008, 86.0, 53.0, 36.0 ], + "presentation" : 1, + "presentation_rect" : [ 232.094707787036896, 47.0, 60.0, 36.0 ], + "prototypename" : "amount", + "saved_attribute_attributes" : { + "activedialcolor" : { + "expression" : "" + } +, + "activefgdialcolor" : { + "expression" : "" + } +, + "activeneedlecolor" : { + "expression" : "" + } +, + "needlecolor" : { + "expression" : "themecolor.live_macro_title" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_initial" : [ 100.0 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Metriclarity", + "parameter_mmax" : 100.0, + "parameter_shortname" : "Metriclarity", + "parameter_type" : 0, + "parameter_unitstyle" : 5 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "triangle" : 1, + "varname" : "metriclarity" + } + + } +, { + "box" : { + "activebgcolor" : [ 0.529411764705882, 0.529411764705882, 0.529411764705882, 1.0 ], + "annotation" : "Outset pulses: This parameter allows the metric profile for the given meter to be set to the indicated pulse number. If set to 2, the metric profile is shifted by 1. The downbeat would have the probablity of the second pulse, the second pulse that of the third pulse and so on.", + "appearance" : 2, + "bordercolor" : [ 1.0, 0.709803921568627, 0.196078431372549, 1.0 ], + "id" : "obj-1", + "maxclass" : "live.numbox", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 311.816681000000017, 96.5, 44.0, 15.0 ], + "presentation" : 1, + "presentation_rect" : [ 360.76971435546875, 20.0, 28.0, 15.0 ], + "saved_attribute_attributes" : { + "activebgcolor" : { + "expression" : "themecolor.live_surface_bg" + } +, + "bordercolor" : { + "expression" : "themecolor.live_control_selection" + } +, + "textcolor" : { + "expression" : "themecolor.maxwindow_posttext" + } +, + "valueof" : { + "parameter_info" : "Outset pulses: This parameter allows the metric profile for the given meter to be set to the indicated pulse number. If set to 2, the metric profile is shifted by 1. The downbeat would have the probablity of the second pulse, the second pulse that of the third pulse and so on.", + "parameter_initial" : [ 1 ], + "parameter_initial_enable" : 1, + "parameter_longname" : "Outset Pulses", + "parameter_mmax" : 8.0, + "parameter_mmin" : 1.0, + "parameter_shortname" : "Outset Pulses", + "parameter_type" : 1, + "parameter_unitstyle" : 0 + } + + } +, + "textcolor" : [ 0.968627, 0.968627, 0.968627, 1.0 ], + "textjustification" : 0, + "varname" : "outset_pulses" + } + + } +, { + "box" : { + "allowdrag" : 0, + "annotation" : " Here one of the scales can be choosen by its name as shown in the Scale Menu. Drag and drop additional Scala file ", + "bgcolor" : [ 0.4, 0.4, 0.4, 1 ], + "bgfillcolor_color" : [ 0.4, 0.4, 0.4, 1 ], + "bgfillcolor_color1" : [ 0.301961, 0.301961, 0.301961, 1 ], + "bgfillcolor_color2" : [ 0.2, 0.2, 0.2, 1 ], + "bgfillcolor_type" : "color", + "fontsize" : 11.0, + "id" : "obj-16", + "items" : [ "Major", ",", "Minor", ",", "Dorian", ",", "Mixolydian", ",", "Lydian", ",", "Phrygian", ",", "Locrian", ",", "Whole Tone", ",", "Half-whole Dim.", ",", "Whole-half Dim.", ",", "Minor Blues", ",", "Minor Pentatonic", ",", "Major Pentatonic", ",", "Harmonic Minor", ",", "Harmonic Major", ",", "Dorian #4", ",", "Phrygian Dominant", ",", "Melodic Minor", ",", "Lydian Augmented", ",", "Lydian Dominant", ",", "Super Locrian", ",", "8-Tone Spanish", ",", "Bhairav", ",", "Hungarian Minor", ",", "Hirajoshi", ",", "In-sen", ",", "Iwato", ",", "Kumoi", ",", "Pelog Selisir", ",", "Pelog Tembung", ",", "Messiaen 3", ",", "Messiaen 4", ",", "Messiaen 5", ",", "Messiaen 6", ",", "Messiaen 7", ",", "Chromatic", ",", "my-scale" ], + "maxclass" : "umenu", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "int", "", "" ], + "parameter_enable" : 1, + "patching_rect" : [ 13.25, 122.5, 100.0, 21.0 ], + "pattrmode" : 1, + "presentation" : 1, + "presentation_rect" : [ 32.0, 21.0, 77.0, 21.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_enum" : [ "Major", "Minor", "Dorian", "Mixolydian", "Lydian", "Phrygian", "Locrian", "Whole Tone", "Half-whole Dim.", "Whole-half Dim.", "Minor Blues", "Minor Pentatonic", "Major Pentatonic", "Harmonic Minor", "Harmonic Major", "Dorian #4", "Phrygian Dominant", "Melodic Minor", "Lydian Augmented", "Lydian Dominant", "Super Locrian", "8-Tone Spanish", "Bhairav", "Hungarian Minor", "Hirajoshi", "In-sen", "Iwato", "Kumoi", "Pelog Selisir", "Pelog Tembung", "Messiaen 3", "Messiaen 4", "Messiaen 5", "Messiaen 6", "Messiaen 7", "Chromatic", "my-scale" ], + "parameter_longname" : "Scale", + "parameter_mmax" : 36, + "parameter_shortname" : "Scale", + "parameter_type" : 2 + } + + } +, + "varname" : "scale" + } + + } +, { + "box" : { + "angle" : 270.0, + "bgcolor" : [ 0.4, 0.4, 0.4, 1.0 ], + "border" : 1, + "bordercolor" : [ 0.32549, 0.345098, 0.372549, 1.0 ], + "id" : "obj-42", + "maxclass" : "panel", + "mode" : 0, + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1269.645843000000013, 239.5, 37.0, 35.0 ], + "presentation" : 1, + "presentation_rect" : [ 0.0, 0.0, 464.5, 171.625 ], + "proportion" : 0.39 + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "source" : [ "obj-109", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-112", 0 ], + "source" : [ "obj-110", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-112", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-134", 0 ], + "source" : [ "obj-128", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-35", 0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-134", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-43", 0 ], + "source" : [ "obj-136", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-15", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-165", 0 ], + "source" : [ "obj-158", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-17", 0 ], + "source" : [ "obj-16", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-165", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-17", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-18", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "source" : [ "obj-20", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-206", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-21", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-36", 0 ], + "source" : [ "obj-217", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-38", 0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-24", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-25", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-26", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-9", 0 ], + "source" : [ "obj-27", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-28", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "source" : [ "obj-29", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-35", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-36", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-37", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-38", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-39", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-40", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-43", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-48", 0 ], + "source" : [ "obj-47", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-48", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-14", 0 ], + "source" : [ "obj-52", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-77", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-9", 0 ] + } + + } + ], + "styles" : [ { + "name" : "black on white", + "umenu" : { + "bgfillcolor" : { + "angle" : 270.0, + "autogradient" : 0, + "color" : [ 1.0, 1.0, 1.0, 1.0 ], + "color1" : [ 0.862745, 0.870588, 0.878431, 1.0 ], + "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ], + "proportion" : 0.39, + "type" : "color" + } +, + "textcolor_inverse" : [ 0.239216, 0.254902, 0.278431, 1.0 ] + } +, + "number" : { + "fontname" : [ "Arial" ], + "fontsize" : [ 12.0 ], + "textcolor_inverse" : [ 0.239216, 0.254902, 0.278431, 1.0 ] + } +, + "parentstyle" : "", + "multi" : 0 + } +, { + "name" : "panel_blue_yellow", + "default" : { + "bgfillcolor" : { + "angle" : -90.0, + "autogradient" : 0, + "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ], + "color1" : [ 0.0, 0.078431, 0.321569, 1.0 ], + "color2" : [ 0.960784, 0.827451, 0.156863, 1.0 ], + "proportion" : 0.736715, + "type" : "gradient" + } + + } +, + "parentstyle" : "", + "multi" : 0 + } +, { + "name" : "section info emph", + "default" : { + "fontface" : [ 1 ], + "fontname" : [ "Helvetica Neue" ], + "fontsize" : [ 12.0 ], + "textcolor" : [ 0.225893, 0.506614, 0.765943, 1.0 ] + } +, + "parentstyle" : "", + "multi" : 0 + } + ] + } +, + "patching_rect" : [ 77.8047869048537, 25.600006000000008, 465.200012000000015, 171.399993999999992 ], + "varname" : "Djster.µbus", + "viewvisibility" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-16", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-20", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-16", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-55", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-6", 0 ] + } + + } + ], + "parameters" : { + "obj-1::obj-1" : [ "Outset Pulses[1]", "Outset Pulses", 0 ], + "obj-1::obj-104" : [ "Tonality Profile", "Tonality Profile", 0 ], + "obj-1::obj-109" : [ "Play", "Play", 0 ], + "obj-1::obj-11" : [ "Eventfulness[1]", "Eventfulness", 0 ], + "obj-1::obj-110" : [ "Event Length", "Event Length", 0 ], + "obj-1::obj-122" : [ "Choice", "Choice", 0 ], + "obj-1::obj-128" : [ "Ostinato Buffer[1]", "Ostinato Buffer", 0 ], + "obj-1::obj-13" : [ "Melody Scope[1]", "Melody Scope", 0 ], + "obj-1::obj-136" : [ "Sorted[1]", "Sorted", 0 ], + "obj-1::obj-155" : [ "Use Transport", "Use Transport", 0 ], + "obj-1::obj-158" : [ "Subdivision", "Subdivision", 0 ], + "obj-1::obj-16" : [ "Scale[1]", "Scale", 0 ], + "obj-1::obj-187" : [ "meters", "meters", 0 ], + "obj-1::obj-188" : [ "Pitchsets", "Pitchsets", 0 ], + "obj-1::obj-206" : [ "Chordal Weight[1]", "Chordal Weight", 0 ], + "obj-1::obj-217" : [ "Overlap[1]", "Overlap", 0 ], + "obj-1::obj-22" : [ "Pulse Length[1]", "Pulse Length", 0 ], + "obj-1::obj-24" : [ "Harmoniclarity[1]", "Harmoniclarity", 0 ], + "obj-1::obj-25" : [ "Pitch Center[1]", "Pitch Center", 0 ], + "obj-1::obj-26" : [ "Pitch Range[1]", "Pitch Range", 0 ], + "obj-1::obj-27" : [ "Dynamics[1]", "Dynamics", 0 ], + "obj-1::obj-28" : [ "Attenuation[1]", "Attenuation", 0 ], + "obj-1::obj-29" : [ "Ostinato[1]", "Ostinato", 0 ], + "obj-1::obj-32" : [ "live.text[1]", "Clear Scales", 0 ], + "obj-1::obj-47" : [ "Silent Downbeat[1]", "Silent Downbeat", 0 ], + "obj-1::obj-49" : [ "Sync", "Sync", 0 ], + "obj-1::obj-5" : [ "Metriclarity[1]", "Metriclarity", 0 ], + "obj-1::obj-52" : [ "Tonic Pitch[1]", "Tonic Pitch", 0 ], + "obj-1::obj-53" : [ "Precision", "Precision", 0 ], + "obj-1::obj-56" : [ "Precision[1]", "Preset Tab", 0 ], + "obj-1::obj-77" : [ "Melodic Cohesion", "Melodic Cohesion", 0 ], + "obj-1::obj-87" : [ "Sync Type", "menu", 0 ], + "obj-1::obj-88" : [ "Scala Browser", "Scala Browser", 0 ], + "obj-55::obj-1" : [ "Outset Pulses", "Outset Pulses", 0 ], + "obj-55::obj-109" : [ "stream", "Play", 0 ], + "obj-55::obj-11" : [ "Eventfulness", "Eventfulness", 0 ], + "obj-55::obj-110" : [ "Event Length Percent", "Event Length", 0 ], + "obj-55::obj-128" : [ "Ostinato Buffer", "Ostinato Buffer", 0 ], + "obj-55::obj-13" : [ "Melody Scope", "Melody Scope", 0 ], + "obj-55::obj-136" : [ "Sorted", "Sorted", 0 ], + "obj-55::obj-158" : [ "Subdivisions", "Subdivision", 0 ], + "obj-55::obj-16" : [ "Scale", "Scale", 0 ], + "obj-55::obj-206" : [ "Chordal Weight", "Chordal Weight", 0 ], + "obj-55::obj-217" : [ "Overlap", "Overlap", 0 ], + "obj-55::obj-22" : [ "Pulse Length", "Pulse Length", 0 ], + "obj-55::obj-24" : [ "Harmoniclarity", "Harmoniclarity", 0 ], + "obj-55::obj-25" : [ "Pitch Center", "Pitch Center", 0 ], + "obj-55::obj-26" : [ "Pitch Range", "Pitch Range", 0 ], + "obj-55::obj-27" : [ "Dynamics", "Dynamics", 0 ], + "obj-55::obj-28" : [ "Attenuation", "Attenuation", 0 ], + "obj-55::obj-29" : [ "Ostinato", "Ostinato", 0 ], + "obj-55::obj-47" : [ "Silent Downbeat", "Silent Downbeat", 0 ], + "obj-55::obj-5" : [ "Metriclarity", "Metriclarity", 0 ], + "obj-55::obj-52" : [ "Tonic Pitch", "Tonic Pitch", 0 ], + "obj-55::obj-77" : [ "Cohesion", "Melodic Cohesion", 0 ], + "parameterbanks" : { + "0" : { + "index" : 0, + "name" : "", + "parameters" : [ "-", "-", "-", "-", "-", "-", "-", "-" ] + } + + } +, + "parameter_overrides" : { + "obj-1::obj-1" : { + "parameter_longname" : "Outset Pulses[1]", + "parameter_range" : [ 1, 56 ] + } +, + "obj-1::obj-11" : { + "parameter_longname" : "Eventfulness[1]" + } +, + "obj-1::obj-128" : { + "parameter_longname" : "Ostinato Buffer[1]" + } +, + "obj-1::obj-13" : { + "parameter_longname" : "Melody Scope[1]", + "parameter_unitstyle" : 7 + } +, + "obj-1::obj-136" : { + "parameter_longname" : "Sorted[1]" + } +, + "obj-1::obj-206" : { + "parameter_longname" : "Chordal Weight[1]" + } +, + "obj-1::obj-217" : { + "parameter_longname" : "Overlap[1]" + } +, + "obj-1::obj-22" : { + "parameter_longname" : "Pulse Length[1]" + } +, + "obj-1::obj-24" : { + "parameter_longname" : "Harmoniclarity[1]" + } +, + "obj-1::obj-25" : { + "parameter_longname" : "Pitch Center[1]", + "parameter_unitstyle" : 8 + } +, + "obj-1::obj-26" : { + "parameter_longname" : "Pitch Range[1]", + "parameter_unitstyle" : 7 + } +, + "obj-1::obj-27" : { + "parameter_longname" : "Dynamics[1]" + } +, + "obj-1::obj-28" : { + "parameter_longname" : "Attenuation[1]" + } +, + "obj-1::obj-29" : { + "parameter_longname" : "Ostinato[1]" + } +, + "obj-1::obj-47" : { + "parameter_longname" : "Silent Downbeat[1]" + } +, + "obj-1::obj-5" : { + "parameter_longname" : "Metriclarity[1]" + } +, + "obj-1::obj-52" : { + "parameter_longname" : "Tonic Pitch[1]", + "parameter_unitstyle" : 8 + } + + } +, + "inherited_shortname" : 1 + } +, + "dependency_cache" : [ { + "name" : "AdditiveMeter2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Autobusk-µPlayer.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "DJster.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Inner-Equation.5.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Inside.3.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Mod.2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Pof_(Qi)(i=0toz-r-1).2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Pof_(Qj)(j=1toz).2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Pof_(Qz+1-k)(k=0tor).2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Qz+1-k2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Qz-r2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "TIE.7.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "Total-Internal-Equation.6.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "bytecount.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "composite-meters.txt", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "dispenser.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "djster.accum.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "dumper.2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "harmonic-energy-profile.txt", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/Profiles", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/Profiles", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "harmonicity.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/Tonality", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/Tonality", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "indigestibility.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/Tonality", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/Tonality", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "meter-subpatch.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "mxj.mxo", + "type" : "iLaX" + } +, { + "name" : "outset.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "packback.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/abstractions", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/abstractions", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "platform.js", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/javascript", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/javascript", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "primefactors.txt", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/maps/microMaps", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/maps/microMaps", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "psi-functions.txt", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "reader.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "reader2.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/dispenser", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "scalaFileBase.js", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/javascript", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/javascript", + "type" : "TEXT", + "implicit" : 1 + } +, { + "name" : "scale-subpatch-exp.maxpat", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/patchers/DJster/core", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/patchers/DJster/core", + "type" : "JSON", + "implicit" : 1 + } +, { + "name" : "scriptingname.js", + "bootpath" : "~/Documents/Max 8/Packages/MaxScore/javascript", + "patcherrelativepath" : "../../Max 8/Packages/MaxScore/javascript", + "type" : "TEXT", + "implicit" : 1 + } + ], + "autosave" : 0 + } + +} diff --git a/modulators/example.maxpat b/modulators/example.maxpat new file mode 100644 index 0000000..879f8c6 --- /dev/null +++ b/modulators/example.maxpat @@ -0,0 +1,1013 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 5, + "revision" : 6, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 112.0, 87.0, 1344.0, 869.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-31", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 45.0, 289.0, 104.0, 22.0 ], + "text" : "param 2 scale 0.5" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 45.0, 154.0, 131.0, 22.0 ], + "text" : "param 1 metriclarity 40" + } + + } +, { + "box" : { + "id" : "obj-86", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 28.0, 473.0, 115.0, 22.0 ], + "text" : "param 4 meter \"3 4\"" + } + + } +, { + "box" : { + "id" : "obj-85", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 28.0, 361.5, 139.0, 22.0 ], + "text" : "param 3 attenuation 100" + } + + } +, { + "box" : { + "id" : "obj-84", + "linecount" : 2, + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 586.0, 713.0, 89.0, 35.0 ], + "text" : "harmoniclarity 20.2" + } + + } +, { + "box" : { + "id" : "obj-80", + "linecount" : 2, + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 491.0, 713.0, 85.0, 35.0 ], + "text" : "event_length 70.2" + } + + } +, { + "box" : { + "id" : "obj-78", + "linecount" : 2, + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 385.0, 715.0, 84.0, 35.0 ], + "text" : "metriclarity 69.626659" + } + + } +, { + "box" : { + "id" : "obj-76", + "maxclass" : "newobj", + "numinlets" : 4, + "numoutlets" : 4, + "outlettype" : [ "", "", "", "" ], + "patching_rect" : [ 410.0, 671.0, 273.0, 22.0 ], + "text" : "routepass metriclarity event_length harmoniclarity" + } + + } +, { + "box" : { + "id" : "obj-75", + "linecount" : 6, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1066.052632331848145, 53.0, 99.894735336303711, 87.0 ], + "text" : "You can use Hz, seconds, ms, hh:mm:ss, or bars.beats.ticks for the period/frequency" + } + + } +, { + "box" : { + "id" : "obj-73", + "linecount" : 8, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1181.315790414810181, 40.0, 81.0, 114.0 ], + "text" : "Min and max must be ADDED to the center value to determine the true bounds. " + } + + } +, { + "box" : { + "id" : "obj-72", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 913.0, 107.0, 150.0, 60.0 ], + "text" : "center values are read only, they must be configured by an upstream value" + } + + } +, { + "box" : { + "id" : "obj-66", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 480.5, 613.0, 32.0, 22.0 ], + "text" : "print" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 13.0, + "id" : "obj-63", + "maxclass" : "newobj", + "numinlets" : 5, + "numoutlets" : 5, + "outlettype" : [ "", "", "", "", "" ], + "patching_rect" : [ 626.0, 613.0, 81.0, 23.0 ], + "text" : "route 1 2 3 4" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 684.0, 146.0, 94.0, 22.0 ], + "text" : "prepend timesig" + } + + } +, { + "box" : { + "id" : "obj-52", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 545.0, 135.0, 89.0, 22.0 ], + "text" : "prepend tempo" + } + + } +, { + "box" : { + "id" : "obj-37", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 325.0, 17.0, 55.0, 22.0 ], + "text" : "del 1000" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 485.0, 40.0, 49.0, 22.0 ], + "text" : "r reload" + } + + } +, { + "box" : { + "id" : "obj-34", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 200.0, 807.0, 51.0, 22.0 ], + "text" : "s reload" + } + + } +, { + "box" : { + "id" : "obj-32", + "maxclass" : "preset", + "numinlets" : 1, + "numoutlets" : 5, + "outlettype" : [ "preset", "int", "preset", "int", "" ], + "patching_rect" : [ 190.0, 752.0, 100.0, 40.0 ], + "pattrstorage" : "storage" + } + + } +, { + "box" : { + "id" : "obj-28", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 460.0, 789.0, 116.0, 22.0 ], + "saved_object_attributes" : { + "client_rect" : [ 903, 252, 1512, 568 ], + "parameter_enable" : 0, + "parameter_mappable" : 0, + "storage_rect" : [ 780, 524, 1380, 824 ] + } +, + "text" : "pattrstorage storage", + "varname" : "storage" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "" ], + "patching_rect" : [ 643.0, 770.0, 40.0, 22.0 ], + "restore" : [ { + "data" : { + "enumArrays" : [ [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "2", "4", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "2", "4", "2", "2", "2", "2", "2", "2", "2", "2" ], [ "scale", "meter", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ], + "enumMats" : [ [ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ], [ [ "major", "minor", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "4 4", "3 4", "7 8", "2 4", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ] ] ], + "modArrays" : [ [ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "1", "1", "1", "4", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "Sine", "SawUp", "SawUp", "Tri", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "metriclarity", "event_length", "harmoniclarity", "meter", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "0.2hz", "2s", "0:0:02", "0.5.0", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz" ], [ "-10", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "30", "100", "100", "2", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", "0", "0.5", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ], + "modCenters" : { + "1" : { + "metriclarity" : 40 + } +, + "2" : { + "scale" : 1.6 + } +, + "3" : { + "attenuation" : 100 + } +, + "4" : { + "meter" : 0.5 + } + + } + + } + + } + ], + "saved_object_attributes" : { + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "pattr", + "varname" : "u560003760" + } + + } +, { + "box" : { + "data" : { + "data" : { + "enumArrays" : [ [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "2", "4", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "2", "4", "2", "2", "2", "2", "2", "2", "2", "2" ], [ "scale", "meter", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation", "attenuation" ] ], + "enumMats" : [ [ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] ], [ [ "major", "minor", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "4 4", "3 4", "7 8", "2 4", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ], [ "param", "param", "param", "param", "param", "param", "param", "param", "param", "param" ] ] ], + "modArrays" : [ [ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ "1", "1", "1", "4", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "Sine", "SawUp", "SawUp", "Tri", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine", "Sine" ], [ "metriclarity", "event_length", "harmoniclarity", "meter", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", "NONE" ], [ "0.2hz", "2s", "0:0:02", "0.5.0", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz", "1hz" ], [ "-10", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ], [ "30", "100", "100", "2", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ], [ "0", "0", "0.5", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" ] ], + "modCenters" : { + "1" : { + "metriclarity" : 40 + } +, + "2" : { + "scale" : 1.6 + } +, + "3" : { + "attenuation" : 100 + } +, + "4" : { + "meter" : 0.5 + } + + } + + } + + } +, + "id" : "obj-25", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 4, + "outlettype" : [ "dictionary", "", "", "" ], + "patching_rect" : [ 773.0, 808.0, 166.0, 22.0 ], + "saved_object_attributes" : { + "embed" : 1, + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "dict localStorage2 @embed 1", + "varname" : "dict" + } + + } +, { + "box" : { + "id" : "obj-47", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 9, + "outlettype" : [ "int", "int", "float", "float", "float", "", "int", "float", "" ], + "patching_rect" : [ 744.815790414810181, 107.0, 103.0, 22.0 ], + "text" : "transport" + } + + } +, { + "box" : { + "id" : "obj-40", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 980.368419170379639, 702.0, 22.0, 22.0 ], + "text" : "t b" + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "dict.view", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1107.0, 573.0, 263.0, 384.0 ] + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-30", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 137.5, 440.0, 246.0, 64.0 ], + "text" : "this param is sent in its already enumerated form, so it will first be turned into a number halfway between the enumeration boundaries" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 22.0, 444.0, 115.0, 22.0 ], + "text" : "param 4 meter \"4 4\"" + } + + } +, { + "box" : { + "id" : "obj-41", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 949.0, 647.0, 156.0, 22.0 ], + "text" : "meter 3 4" + } + + } +, { + "box" : { + "id" : "obj-39", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 824.0, 647.0, 101.0, 22.0 ], + "text" : "attenuation 100" + } + + } +, { + "box" : { + "id" : "obj-35", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 662.0, 647.0, 157.0, 22.0 ], + "text" : "scale minor" + } + + } +, { + "box" : { + "id" : "obj-27", + "maxclass" : "newobj", + "numinlets" : 3, + "numoutlets" : 3, + "outlettype" : [ "", "", "" ], + "patching_rect" : [ 423.5, 588.0, 133.0, 22.0 ], + "text" : "routepass saved debug" + } + + } +, { + "box" : { + "id" : "obj-17", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 504.0, 546.5, 268.0, 33.0 ], + "text" : "we can only output symbols from jweb, so this turns them into lists" + } + + } +, { + "box" : { + "id" : "obj-10", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 423.5, 552.0, 71.0, 22.0 ], + "text" : "fromsymbol" + } + + } +, { + "box" : { + "id" : "obj-19", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 548.52631402015686, 80.0, 150.0, 33.0 ], + "text" : "see below for why we use separate names..." + } + + } +, { + "box" : { + "id" : "obj-14", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 781.0, 17.0, 150.0, 47.0 ], + "text" : "self explanatory. Warning-will overwrite whatever is saved." + } + + } +, { + "box" : { + "id" : "obj-11", + "linecount" : 7, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1261.315790414810181, 47.0, 78.0, 100.0 ], + "text" : "You can use the `phase` control to phase offset two LFOs of the same frequency" + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-7", + "linecount" : 5, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 169.0, 246.0, 197.0, 78.0 ], + "text" : "This parameter is defined in the enumerators but not the modulators. It will be enumerated and immediately output" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 45.0, 256.0, 104.0, 22.0 ], + "text" : "param 2 scale 1.6" + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-24", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 169.0, 332.5, 226.0, 64.0 ], + "text" : "This parameter is not defined by either the Modulators or Enumerators, so it will be passed directly to the output" + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-23", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 183.0, 154.0, 197.0, 64.0 ], + "text" : "This parameter is defined in the modulators, and when sent will act as the center value for that LFO" + } + + } +, { + "box" : { + "id" : "obj-21", + "linecount" : 11, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 45.0, 564.0, 254.0, 154.0 ], + "text" : "The operation runs\n\nInput > Denumeration > Modulators > Enumerators > Output\n\nA parameter from the input not established by a Modulator will be passed directly to the Enumerators\n\nLikewise, the Enumerators will pass not established parameters" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 45.0, 180.0, 131.0, 22.0 ], + "text" : "param 1 metriclarity 20" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 28.0, 331.0, 139.0, 22.0 ], + "text" : "param 3 attenuation 200" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 438.52631402015686, 69.0, 108.0, 22.0 ], + "text" : "load localStorage2" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 4, + "outlettype" : [ "dictionary", "", "", "" ], + "patching_rect" : [ 980.368419170379639, 726.0, 97.0, 22.0 ], + "saved_object_attributes" : { + "embed" : 0, + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "dict localStorage" + } + + } +, { + "box" : { + "id" : "obj-6", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 504.0, 6.0, 150.0, 33.0 ], + "text" : "required due to the asynchronous operation" + } + + } +, { + "box" : { + "id" : "obj-45", + "linecount" : 8, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 773.0, 692.0, 150.0, 114.0 ], + "text" : "Storage for the matrix. Unfortunately, jsweb dictionary handling isn't great, so we can't use it like a native dict object and need to do this wild hack for usage with pattrstorage" + } + + } +, { + "box" : { + "id" : "obj-20", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 217.0, 6.0, 58.0, 22.0 ], + "text" : "loadbang" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 700.894735336303711, 69.0, 104.0, 22.0 ], + "text" : "save localStorage" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 217.0, 69.0, 106.0, 22.0 ], + "text" : "readfile lfogui.html" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "jweb", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 402.0, 173.0, 838.631580829620361, 368.0 ], + "rendermode" : 0, + "url" : "file://lfogui.html" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-27", 0 ], + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-15", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-16", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-18", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "order" : 1, + "source" : [ "obj-20", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "order" : 0, + "source" : [ "obj-20", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "source" : [ "obj-26", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "source" : [ "obj-27", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-63", 0 ], + "source" : [ "obj-27", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-66", 0 ], + "source" : [ "obj-27", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-31", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "source" : [ "obj-32", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-16", 0 ], + "source" : [ "obj-36", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-16", 0 ], + "order" : 1, + "source" : [ "obj-37", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-47", 0 ], + "order" : 0, + "source" : [ "obj-37", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "order" : 1, + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-38", 0 ], + "order" : 0, + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "source" : [ "obj-40", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-47", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-52", 0 ], + "source" : [ "obj-47", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-52", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-35", 1 ], + "source" : [ "obj-63", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 1 ], + "source" : [ "obj-63", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-41", 1 ], + "source" : [ "obj-63", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-76", 0 ], + "source" : [ "obj-63", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-78", 1 ], + "source" : [ "obj-76", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-80", 1 ], + "source" : [ "obj-76", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-84", 1 ], + "source" : [ "obj-76", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-85", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-86", 0 ] + } + + } + ], + "dependency_cache" : [ ], + "autosave" : 0 + } + +} diff --git a/modulators/lfogui.css b/modulators/lfogui.css new file mode 100644 index 0000000..5860643 --- /dev/null +++ b/modulators/lfogui.css @@ -0,0 +1,181 @@ +html, + body { + width: 100%; + height: 100%; + margin: 0px; + border: 0; + overflow: hidden; /* Disable scrollbars */ + display: block; /* No floating content on sides */ + } + + ul { + list-style-type: none; + margin: 0; + padding: 0; + overflow: hidden; + background-color: #333333; + } + + li { + float: left; + } + + + input[type=number] { + width: 50px; + margin: 0; + padding: 0; + } + + input[type=text] { + width: 60px; + margin: 0; + padding: 0; + font-weight: bold; + } + + .timeInput { + width: 80px; + margin: 0; + padding: 0; + } + + #matrix { + background-color: aquamarine; + height: 100%; + width: 100%; + } + + .numbox-unclicked { + user-select: none; + border: solid; + font-size: 12vw; + } + + .numbox-clicked { + user-select: none; + border : solid; + font-size: 12vw; + } + + .param-input-label { + width: 93%; + font-size: 5vw; + } + + .lfo-input-label { + width: 40%; + font-size: 5vw; + } + + /* The switch - the box around the slider */ + .switch { + position: relative; + display: inline-block; + width: 30px; + height: 17px; + } + + /* Hide default HTML checkbox */ + .switch input { + opacity: 0; + width: 0; + height: 0; + } + + /* The slider */ + .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; + } + + .slider:before { + position: absolute; + content: ""; + height: 13px; + width: 13px; + left: 2px; + bottom: 2px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; + } + + input:checked + .slider { + background-color: #2196F3; + } + + input:focus + .slider { + box-shadow: 0 0 1px #2196F3; + } + + input:checked + .slider:before { + -webkit-transform: translateX(13px); + -ms-transform: translateX(13px); + transform: translateX(13px); + } + + /* Rounded sliders */ + .slider.round { + border-radius: 17px; + } + + .slider.round:before { + border-radius: 50%; + } + + h5 { + margin: 0; + padding: 0; + } + + .enum-count { + background-color: aquamarine; + } + + .label { + background-color: aliceblue; + padding: 0 4px 0 4px; + margin: 0 2px 0 2px; + border-color: #333333; + border-width: 1px; + } + + .base-val { + background-color: lightgray; + border-color: #333333; + border-width: 1px; + width: 50px; + margin-left: 2px; + margin-top: 1px; + } + + .linked { + color: red; + border-width: 1px; + width: 50px; + font-size: small; + margin-left: 2px; + margin-top: 5px; + } + + + @keyframes pulse-animation { + 0% { + color: black; + } + 100% { + color: red; + } + } + + #pulse { + animation: pulse-animation 0.2s normal; + } \ No newline at end of file diff --git a/modulators/lfogui.html b/modulators/lfogui.html new file mode 100644 index 0000000..6151e8e --- /dev/null +++ b/modulators/lfogui.html @@ -0,0 +1,29 @@ + + + + + + + + + + +
+ + + + + + + + + + + + diff --git a/modulators/lfogui.js b/modulators/lfogui.js new file mode 100644 index 0000000..ccf164f --- /dev/null +++ b/modulators/lfogui.js @@ -0,0 +1,445 @@ +// const { createElement } = require("./react"); +const DEBUG = false; +var log; +if (DEBUG) + log = console.log; +else + log = (msg) => {window.max.outlet("debug " + msg)}; + +const e = React.createElement; + +let lfos = []; +const MAXLFOS = 20; +const MAXENUMS = 20; +const MAXENUMPOINTS = 10; + + + +const ViewModes = Object.freeze({ + MOD: 0, + ENUM: 1 +}); + + +var modPhases = Array(MAXLFOS).fill(0); +var firstUpdateTime = Date.now(); + +const MODULATORLABELS = ["inst", "-type-", "---shape---", "-------param-------", "--timebase--", "-min-", "-max", "-phase-", "center"]; +const ENUMERATORLABELS = ["inst", "---parameter---", "-# points-"]; + + + + +function MasterLfoHandler(){ + + let initVisArr = Array(MAXLFOS).fill(false); + initVisArr[0] = true; + + const [viewMode, setViewMode] = React.useState(ViewModes.MOD); + const toggleViewMode = () => { + if (viewMode === ViewModes.MOD) + setViewMode(ViewModes.ENUM); + else + setViewMode(ViewModes.MOD); + }; + + /// MODULATOR ARRAYS + + const [modVisibleArr, setModVisibleArr] = React.useState(initVisArr); + const [modInstanceNumArr, setModInstanceNumArr] = React.useState(Array(MAXLFOS).fill('1')); + + const [modCenterVals, setModCenterVals] = React.useState({'1':{}, '2':{}, '3':{}, '4':{}}); + + const [bpm, setBpm] = React.useState(100); + const [beatsInMeasure, setBeatsInMeasure] = React.useState(4); + + const [shapeArr, setShapeArr] = React.useState(Array(MAXLFOS).fill('Sine')); + const [djParamArr, setDjParamArr] = React.useState(Array(MAXLFOS).fill('NONE')); + + const [freqArr, setFreqArr] = React.useState(Array(MAXLFOS).fill('1hz')); + + // const [ampArr, setAmpArr] = React.useState(Array(MAXLFOS).fill('1')); + const [minArr, setMinArr] = React.useState(Array(MAXLFOS).fill('0')); + const [maxArr, setMaxArr] = React.useState(Array(MAXLFOS).fill('1')); + + const [phaseArr, setPhaseArr] = React.useState(Array(MAXLFOS).fill('0')); + + const allModArrays = [modVisibleArr, modInstanceNumArr, shapeArr, djParamArr, freqArr, minArr, maxArr, phaseArr]; + const allModSetters = [setModVisibleArr, setModInstanceNumArr, setShapeArr, setDjParamArr, setFreqArr, setMinArr, setMaxArr, setPhaseArr]; + const modBlankVals = [true, '1', SHAPETYPES[0], MODPARAMOPTIONS[0], '1hz', '0', '1', '0']; + + + /// ENUMERATOR ARRAYS + const [enumVisibleArr, setEnumVisibleArr] = React.useState(initVisArr); + const [enumInstanceNumArr, setEnumInstanceNumArr] = React.useState(Array(MAXLFOS).fill('1')); + const [enumItemCounts, setEnumItemCounts] = React.useState(Array(MAXENUMPOINTS).fill('2')); + const [enumDjParamArr, setEnumDjParamArr] = React.useState(Array(MAXENUMPOINTS).fill('attenuation')); + + let baseEnumBreakpoints = Array(MAXENUMS).fill(0).map(x => Array(MAXENUMPOINTS+ 1).fill(0)); + for (let i = 0; i < MAXENUMS; i++){ + for (let j=0; j < MAXENUMPOINTS + 1; j++){ + baseEnumBreakpoints[i][j] = j; + } + } + const [enumBreakPoints, setEnumBreakPoints] = React.useState(baseEnumBreakpoints); + + const getBlankEnumBreakPointRow = () => { + let arr = [] + for (let i=0; i< MAXENUMPOINTS + 1; i++) + arr.push(i) + return arr; + } + + const getBlankEnumNameRow = () => {return Array(MAXENUMPOINTS).fill('param')}; + + let baseEnumNames = Array(MAXENUMS).fill(0).map(x => Array(MAXENUMPOINTS).fill('param')); + const [enumNames, setEnumNames] = React.useState(baseEnumNames); + + const allEnumArrays = [enumVisibleArr, enumInstanceNumArr, enumItemCounts, enumDjParamArr]; + const allEnumArrSetters = [setEnumVisibleArr, setEnumInstanceNumArr, setEnumItemCounts, setEnumDjParamArr]; + + const allEnumMats = [enumBreakPoints, enumNames]; + const allEnumMatSetters = [setEnumBreakPoints, setEnumNames]; + const allGetEnumMatBlankVals = [getBlankEnumBreakPointRow, getBlankEnumNameRow] + + const enumBlankVals = [true, '1', 2, MODPARAMOPTIONS[0]]; + + const [render, rerender] = React.useState(false); // BAD. I SHOULDN'T BE DOING THIS + + + + React.useEffect(() => { + function handleLoad(event) { + + window.max.getDict(event.detail, (dict) => { + + for (let i = 0; i { + window.removeEventListener('loadDict', handleLoad); + window.removeEventListener('saveDict', handleSave); + window.removeEventListener('tick', handleTick); + window.removeEventListener('param', handleParam); + window.removeEventListener('enum', handleEnum); + window.removeEventListener('tempo', handleBpm); + window.removeEventListener('timesig', handleTimeSig); + }; + }, [...allModArrays, ...allEnumArrays, ...allEnumMats, modCenterVals, render, bpm, beatsInMeasure]); + + + function CheckLinked(inst, param, checkInstArr, checkParamArr){ + for (let i = 0; i < checkInstArr.length; i++){ + if (checkInstArr[i] == inst && checkParamArr[i] == param) + return true; + } + return false; + } + + /////// + // Generate Modulators + /////// + let modContents = [] + for (var i = 0; i { + if (id < MAXLFOS - 1){ + if (modVisibleArr[id + 1]){ + + let emptyIndex = modVisibleArr.findIndex((item) => !item); + if (emptyIndex != -1){ + for (var j = 0; j < allModArrays.length; j++){ + let array = allModArrays[j]; + // remove from all arrays + array.splice(emptyIndex, 1); + // add empty item at opened index + array.splice(id + 1, 0, modBlankVals[j]); + allModSetters[j](array); + } + } + } + else { + for (var j = 0; j < allModArrays.length; j++){ // no space below, easy. + let array = allModArrays[j]; + array[id + 1] = modBlankVals[j]; + allModSetters[j](array); + } + } + rerender(!render); + } + }, + removeLfo: () => { + if (modVisibleArr.filter(x=>x).length > 1){ + let newArr = modVisibleArr.slice(); + newArr[id] = false; + setModVisibleArr(newArr); + } + + } + }, + null)); + } + + + /////// + // Generate Enumerators + /////// + let enumContents = [] + for (var i = 0; i { + if (id < MAXLFOS - 1){ + if (enumVisibleArr[id + 1]){ // if we need to open up space + let emptyIndex = enumVisibleArr.findIndex((item) => !item); + if (emptyIndex != -1){ + for (var j = 0; j < allEnumArrays.length; j++){ + let array = allEnumArrays[j]; + // remove from all arrays + array.splice(emptyIndex, 1); + // add empty item at opened index + array.splice(id + 1, 0, enumBlankVals[j]); + allEnumArrSetters[j](array); + } + + // Now do the same with matrices + + for (var j = 0; j < allEnumMats.length; j++){ + let mat = allEnumMats[j]; + mat.splice(emptyIndex, 1); + mat.splice(id + 1, 0, 0); + mat[id + 1] = allGetEnumMatBlankVals[j](); + allEnumMatSetters[j](mat); + } + } + } + else { + for (var j = 0; j < allEnumArrays.length; j++){ + let array = allEnumArrays[j]; + array[id+1] = enumBlankVals[j]; + allEnumArrSetters[j](array); + } + + // Now do the same with matrices + + for (var j = 0; j < allEnumMats.length; j++){ + let mat = allEnumMats[j]; + mat[id + 1] = allGetEnumMatBlankVals[j](); + allEnumMatSetters[j](mat); + } + } + rerender(!render); + } + }, + removeEnum: () => { + if (enumVisibleArr.filter(x=>x).length > 1){ + let newArr = enumVisibleArr.slice(); + newArr[id] = false; + setEnumVisibleArr(newArr); + } + } + }, null) + ); + } + + + var grid; + var title; + var labels; + if (viewMode === ViewModes.MOD){ + grid = modContents; + title = "MODULATORS"; + labels = MODULATORLABELS; + } + else { + grid = enumContents; + title = "ENUMERATORS"; + labels = ENUMERATORLABELS; + } + + return e('div', null, + e(Switch, {ontoggle: toggleViewMode}, null), + e('h5', null, title), + e('ul', null, ...labels.map(x => ListItem(Label(x)))), + e('div', {id: 'grid'}, ...grid) + ); +} + +if (!DEBUG){ + window.max.bindInlet("load", (dictId) => { + window.dispatchEvent(new CustomEvent('loadDict', {'detail' : dictId})); + }); + + window.max.bindInlet("save", (dictId) => { + window.dispatchEvent(new CustomEvent('saveDict', {'detail' : dictId})); + }); + + window.max.bindInlet("param", (inst, paramName, val) => { + + window.dispatchEvent(new CustomEvent('param', {'detail' : [inst, paramName, val]})); + }); + + window.max.bindInlet("tempo", (val) => { + window.dispatchEvent(new CustomEvent('tempo', {'detail' : val})); + }); + + window.max.bindInlet("timesig", (top, bottom) => { + window.dispatchEvent(new CustomEvent('timesig', {'detail' : [top, bottom]})); + }); + + setInterval(() => { + window.dispatchEvent(new CustomEvent('tick')); + }, 200); +} + + +const root = ReactDOM.createRoot(document.getElementById('lfo-container')); +root.render(e(MasterLfoHandler, null, null)); \ No newline at end of file diff --git a/modulators/modulators.js b/modulators/modulators.js new file mode 100644 index 0000000..23e7e0d --- /dev/null +++ b/modulators/modulators.js @@ -0,0 +1,122 @@ +///////////////////////// +// MODULATORS +///////////////////////// + +var SHAPETYPES = ["Sine", "SawUp", "SawDown", "Tri", "Square"]; + +var INSTANCEOPTIONS = ["1", "2", "3", "4"]; + +const MODPARAMOPTIONS = ["NONE", "stream", "pulse_length", "eventfulness", "event_length", "metriclarity", + "harmoniclarity", "melodic_cohesion", "melody_scope", "tonic_pitch", "pitch_center", "pitch_range", "dynamics", + "attenuation", "chordal_weight", "tonality-profile", "ostinato-buffer", "ostinato", "meter", "scale"]; + +function ControlType(){ + return e('select', {className: 'control-type'}, Option("LFO")); +} + + + +function LfoRow(props){ + + let linkedText = props.linked ? "-> enums" : ""; + let center = props.centerVals[props.instanceNum][props.djParam]; + if (!center) + center = 0; + + let content = e('ul', {className: 'lfo-item'}, + ListItem(DropDown({onChange: props.setInstanceNum, value:props.instanceNum, options: INSTANCEOPTIONS})), + ListItem(ControlType()), + ListItem(DropDown({onChange: props.setShape, value:props.shape, options: SHAPETYPES})), + ListItem(DropDown({onChange: props.setDjParam, value: props.djParam, options: MODPARAMOPTIONS})), + ListItem(e("input", {onChange:props.setFreq, value:props.freq, className:"timeInput"}, null)), + ListItem(e(NumberBox, {onChange:props.setMin, value:props.min, step:0.1}, null)), + ListItem(e(NumberBox, {onChange:props.setMax, value:props.max, step:0.1}, null)), + //ListItem(e(NumberBox, {onChange:props.setAmp, value:props.amp, step:0.1}, null)), + ListItem(e(NumberBox, {onChange:props.setPhase, value:props.phase, step:0.1}, null)), + ListItem(e("div", {className:"base-val"}, center.toString())), + ListItem(e("input", {type: 'range', min: 0, max: 1, step: 0.01, readonly: true, id: `slider-${props.instanceNum}-${props.djParam}`})), + ListItem(e(Button, {text:'+', onClick: props.addLfo}, null)), + ListItem(e(Button, {text:'-', onClick: props.removeLfo}, null)), + ListItem(e("div", {className:"linked"}, linkedText)), + ); + if (props.visible){ + return content + }; +} + +function indexWave(type, phase){ + switch (type){ + case "Sine": + return (Math.sin(phase * Math.PI * 2) / 2) + 0.5; + case "SawUp": + return phase; + case "SawDown": + return 1 - phase; + case "Tri": + return phase > 0.5? (1-phase) * 2 : phase * 2; + case "Square": + return +(phase > 0.5); + } +} + +function operateModulators(visibleArr, instanceNumArr, paramNames, centers, freqs, mins, maxs, waveTypes, phaseArr, currTime, bpm, beatsInMeasure){ + for (let i=0; i>>0,s=0;sWe(e)?(r=e+1,t-We(e)):(r=e,t);return{year:r,dayOfYear:n}}function Be(e,t,n){var s,i,r=qe(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+N(i=e.year()-1,t,n):r>N(e.year(),t,n)?(s=r-N(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function N(e,t,n){var s=qe(e,t,n),t=qe(e+1,t,n);return(We(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),h("w",n,u),h("ww",n,t),h("W",n,u),h("WW",n,t),Oe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=M(e)});function Je(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),h("d",n),h("e",n),h("E",n),h("dd",function(e,t){return t.weekdaysMinRegex(e)}),h("ddd",function(e,t){return t.weekdaysShortRegex(e)}),h("dddd",function(e,t){return t.weekdaysRegex(e)}),Oe(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:p(n).invalidWeekday=e}),Oe(["d","e","E"],function(e,t,n,s){t[s]=M(e)});var Qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Xe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),et=i,tt=i,nt=i;function st(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=f(this.weekdaysMin(s,"")),n=f(this.weekdaysShort(s,"")),s=f(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function it(){return this.hours()%12||12}function rt(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function at(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,it),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+it.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+it.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),rt("a",!0),rt("A",!1),h("a",at),h("A",at),h("H",n,d),h("h",n,u),h("k",n,u),h("HH",n,t),h("hh",n,t),h("kk",n,t),h("hmm",me),h("hmmss",_e),h("Hmm",me),h("Hmmss",_e),v(["H","HH"],O),v(["k","kk"],function(e,t,n){e=M(e);t[O]=24===e?0:e}),v(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),v(["h","hh"],function(e,t,n){t[O]=M(e),p(n).bigHour=!0}),v("hmm",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s)),p(n).bigHour=!0}),v("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i)),p(n).bigHour=!0}),v("Hmm",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s))}),v("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i))});i=Re("Hours",!0);var ot,ut={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Fe,monthsShort:Le,week:{dow:0,doy:6},weekdays:Qe,weekdaysMin:Ke,weekdaysShort:Xe,meridiemParse:/[ap]\.?m?\.?/i},W={},lt={};function dt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return ot}function ct(t){var e,n;if(void 0===W[t]&&"undefined"!=typeof module&&module&&module.exports&&(n=t)&&n.match("^[^/\\\\]*$"))try{e=ot._abbr,require("./locale/"+t),ft(e)}catch(e){W[t]=null}return W[t]}function ft(e,t){return e&&((t=g(t)?P(e):mt(e,t))?ot=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ot._abbr}function mt(e,t){if(null===t)return delete W[e],null;var n,s=ut;if(t.abbr=e,null!=W[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=W[e]._config;else if(null!=t.parentLocale)if(null!=W[t.parentLocale])s=W[t.parentLocale]._config;else{if(null==(n=ct(t.parentLocale)))return lt[t.parentLocale]||(lt[t.parentLocale]=[]),lt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return W[e]=new K(X(s,t)),lt[e]&<[e].forEach(function(e){mt(e.name,e.config)}),ft(e),W[e]}function P(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ot;if(!y(e)){if(t=ct(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===p(e).overflow&&(t=t[Y]<0||11He(t[D],t[Y])?S:t[O]<0||24N(r,u,l)?p(s)._overflowWeeks=!0:null!=d?p(s)._overflowWeekday=!0:(h=$e(r,a,o,u,l),s._a[D]=h.year,s._dayOfYear=h.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[D],n[D]),(e._dayOfYear>We(i)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),d=ze(i,0,e._dayOfYear),e._a[Y]=d.getUTCMonth(),e._a[S]=d.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[O]&&0===e._a[b]&&0===e._a[T]&&0===e._a[Te]&&(e._nextDay=!0,e._a[O]=0),e._d=(e._useUTC?ze:Ze).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[O]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(p(e).weekdayMismatch=!0)}}function xt(e){if(e._f===_.ISO_8601)Yt(e);else if(e._f===_.RFC_2822)Ot(e);else{e._a=[],p(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],d=l.length,h=0;he.valueOf():e.valueOf()"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=At,u.isUTC=At,u.zoneAbbr=function(){return this._isUTC?"UTC":""},u.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},u.dates=e("dates accessor is deprecated. Use date instead.",ge),u.months=e("months accessor is deprecated. Use month instead",Ie),u.years=e("years accessor is deprecated. Use year instead",Pe),u.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),u.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,t;return g(this._isDSTShifted)&&(q(e={},this),(e=Nt(e))._a?(t=(e._isUTC?l:R)(e._a),this._isDSTShifted=this.isValid()&&0 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } + } + } + function error(format) { + { + if (!suppressWarning) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } + } + } + + function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } // eslint-disable-next-line react-internal/safe-string-coercion + + + var argsWithFormat = args.map(function (item) { + return String(item); + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + + var FunctionComponent = 0; + var ClassComponent = 1; + var IndeterminateComponent = 2; // Before we know whether it is function or class + + var HostRoot = 3; // Root of a host tree. Could be nested inside another node. + + var HostPortal = 4; // A subtree. Could be an entry point to a different renderer. + + var HostComponent = 5; + var HostText = 6; + var Fragment = 7; + var Mode = 8; + var ContextConsumer = 9; + var ContextProvider = 10; + var ForwardRef = 11; + var Profiler = 12; + var SuspenseComponent = 13; + var MemoComponent = 14; + var SimpleMemoComponent = 15; + var LazyComponent = 16; + var IncompleteClassComponent = 17; + var DehydratedFragment = 18; + var SuspenseListComponent = 19; + var ScopeComponent = 21; + var OffscreenComponent = 22; + var LegacyHiddenComponent = 23; + var CacheComponent = 24; + var TracingMarkerComponent = 25; + + // ----------------------------------------------------------------------------- + + var enableClientRenderFallbackOnTextMismatch = true; // TODO: Need to review this code one more time before landing + // the react-reconciler package. + + var enableNewReconciler = false; // Support legacy Primer support on internal FB www + + var enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics. + + var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber + + var enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz + // React DOM Chopping Block + // + // Similar to main Chopping Block but only flags related to React DOM. These are + // grouped because we will likely batch all of them into a single major release. + // ----------------------------------------------------------------------------- + // Disable support for comment nodes as React DOM containers. Already disabled + // in open source, but www codebase still relies on it. Need to remove. + + var disableCommentsAsDOMContainers = true; // Disable javascript: URL strings in href for XSS protection. + // and client rendering, mostly to allow JSX attributes to apply to the custom + // element's object properties instead of only HTML attributes. + // https://github.com/facebook/react/issues/11347 + + var enableCustomElementPropertySupport = false; // Disables children for