ampfaaaametaptch<_mx@c]{ "patcher" : { "fileversion" : 1, "rect" : [ 276.0, 44.0, 639.0, 613.0 ], "bglocked" : 0, "defrect" : [ 276.0, 44.0, 639.0, 613.0 ], "openrect" : [ 0.0, 0.0, 0.0, 169.0 ], "openinpresentation" : 1, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 5.0, 5.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 1000, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "fontname" : "Arial Bold", "fontsize" : 16.0, "frgb" : [ 0.239216, 0.643137, 0.709804, 1.0 ], "id" : "obj-45", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 301.420258, 593.346008, 220.0, 25.0 ], "presentation" : 1, "presentation_rect" : [ 104.366508, 146.436462, 58.0, 25.0 ], "text" : "es.org", "textcolor" : [ 0.239216, 0.643137, 0.709804, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 18.0, "frgb" : [ 1.0, 1.0, 1.0, 1.0 ], "id" : "obj-44", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 292.21933, 593.346008, 253.0, 27.0 ], "presentation" : 1, "presentation_linecount" : 2, "presentation_rect" : [ 101.882828, 123.462372, 66.723625, 48.0 ], "text" : "..............", "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] } } , { "box" : { "fontface" : 1, "fontname" : "Arial", "fontsize" : 20.0, "frgb" : [ 0.360784, 0.360784, 0.360784, 1.0 ], "id" : "obj-43", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 287.872894, 593.346008, 284.0, 29.0 ], "presentation" : 1, "presentation_rect" : [ 102.059402, 137.848175, 72.513161, 29.0 ], "text" : "14circl", "textcolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "frgb" : [ 0.211765, 0.066667, 0.12549, 1.0 ], "id" : "obj-39", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 280.421844, 593.346008, 150.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 107.471107, 134.018051, 52.515362, 18.0 ], "text" : "patches", "textcolor" : [ 0.211765, 0.066667, 0.12549, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "frgb" : [ 1.0, 1.0, 1.0, 1.0 ], "id" : "obj-38", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 221.434311, 593.346008, 150.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 117.405853, 132.155289, 53.136284, 18.0 ], "text" : "max4live", "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] } } , { "box" : { "fontface" : 1, "fontname" : "Arial Bold", "fontsize" : 16.0, "frgb" : [ 0.678431, 0.819608, 0.819608, 1.0 ], "id" : "obj-37", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 292.106445, 593.346008, 225.0, 25.0 ], "presentation" : 1, "presentation_rect" : [ 104.987419, 123.841461, 58.593105, 25.0 ], "text" : "create", "textcolor" : [ 0.678431, 0.819608, 0.819608, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 20.0, "frgb" : [ 1.0, 0.337255, 0.619608, 1.0 ], "id" : "obj-35", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 330.09552, 593.346008, 260.0, 29.0 ], "presentation" : 1, "presentation_rect" : [ 101.882812, 135.259903, 73.40789, 29.0 ], "text" : "tool~", "textcolor" : [ 1.0, 0.337255, 0.619608, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 20.0, "frgb" : [ 0.545098, 0.85098, 0.592157, 1.0 ], "id" : "obj-34", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 257.95578, 593.346008, 268.0, 29.0 ], "presentation" : 1, "presentation_rect" : [ 107.471107, 124.704239, 67.030724, 29.0 ], "text" : "14circ", "textcolor" : [ 0.545098, 0.85098, 0.592157, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "frgb" : [ 0.082353, 0.25098, 0.431373, 1.0 ], "id" : "obj-33", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 293.803619, 593.346008, 150.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 110.914497, 133.552612, 45.0, 18.0 ], "text" : "tool~", "textcolor" : [ 0.082353, 0.25098, 0.431373, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 18.0, "frgb" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "id" : "obj-29", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 308.803619, 593.346008, 230.0, 27.0 ], "presentation" : 1, "presentation_rect" : [ 102.914497, 124.552612, 71.868416, 27.0 ], "text" : "cles.o", "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "frgb" : [ 0.278431, 0.921569, 0.639216, 1.0 ], "id" : "obj-27", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 322.623383, 593.346008, 150.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 125.914497, 138.552612, 49.0, 18.0 ], "text" : "http://", "textcolor" : [ 0.278431, 0.921569, 0.639216, 1.0 ] } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "Clear the Kontrol parameter.", "hint" : "Clear the Kontrol parameter.", "id" : "obj-20", "maxclass" : "live.button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "parameter_enable" : 1, "patching_rect" : [ 426.0, 24.0, 15.0, 15.0 ], "presentation" : 1, "presentation_rect" : [ 107.0, 107.0, 15.0, 15.0 ], "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "clear", "parameter_modmax" : 127.0, "parameter_longname" : "clear", "parameter_modmin" : 0.0, "parameter_linknames" : 0, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 1.0, "parameter_invisible" : 0, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "off", "on" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_type" : 2, "parameter_initial_enable" : 0 } } , "varname" : "clear" } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "Mute the Kontrol parameter.", "hint" : "Mute the Kontrol parameter.", "id" : "obj-19", "maxclass" : "live.toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "parameter_enable" : 1, "patching_rect" : [ 372.0, 17.0, 15.0, 15.0 ], "presentation" : 1, "presentation_rect" : [ 107.0, 84.0, 15.0, 15.0 ], "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "mute", "parameter_modmax" : 127.0, "parameter_longname" : "mute", "parameter_modmin" : 0.0, "parameter_linknames" : 0, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 1.0, "parameter_invisible" : 0, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "off", "on" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_type" : 2, "parameter_initial_enable" : 0 } } , "varname" : "mute" } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "Enable arm rec before start to record movements of the mapped parameter.", "hint" : "Enable arm rec before start to record movements of the mapped parameter.", "id" : "obj-16", "maxclass" : "live.toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "parameter_enable" : 1, "patching_rect" : [ 311.0, 15.0, 15.0, 15.0 ], "presentation" : 1, "presentation_rect" : [ 107.0, 60.0, 15.0, 15.0 ], "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "arm_rec", "parameter_modmax" : 127.0, "parameter_longname" : "arm_rec", "parameter_modmin" : 0.0, "parameter_linknames" : 0, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 1.0, "parameter_invisible" : 0, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "off", "on" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_type" : 2, "parameter_initial_enable" : 0 } } , "varname" : "arm_rec" } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "Open help and about box for current patch.", "appearance" : 1, "automation" : "Arm", "automationon" : "Trigger", "hint" : "Open help and about box for current patch.", "id" : "obj-28", "maxclass" : "live.text", "mode" : 0, "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "parameter_enable" : 1, "patching_rect" : [ 58.0, 352.0, 40.0, 16.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 150.0, 40.0, 16.0 ], "prototypename" : "trigger.label", "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "help", "parameter_modmax" : 127.0, "parameter_longname" : "help", "parameter_modmin" : 0.0, "parameter_linknames" : 0, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 1.0, "parameter_invisible" : 0, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "val1", "val2" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_type" : 2, "parameter_initial_enable" : 0 } } , "text" : "Help", "texton" : "Trig", "varname" : "help" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-26", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 470.0, 100.0, 20.0 ], "text" : "pcontrol" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-11", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 58.0, 424.0, 50.0, 18.0 ], "text" : "open" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-24", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 0, "patcher" : { "fileversion" : 1, "rect" : [ 895.0, 182.0, 290.0, 520.0 ], "bglocked" : 0, "defrect" : [ 895.0, 182.0, 290.0, 520.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 1, "default_fontsize" : 12.0, "default_fontface" : 0, "default_fontname" : "Arial", "gridonopen" : 0, "gridsize" : [ 5.0, 5.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "visible" : 1, "boxes" : [ { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-11", "linecount" : 8, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 65.0, 400.0, 151.0, 117.0 ], "presentation" : 1, "presentation_linecount" : 5, "presentation_rect" : [ 5.0, 395.0, 268.069977, 75.0 ], "text" : "All patches are protected by Creative Commons License.\nYou can modify patch. But you cannot sell it without my permission and you are not allowed to remove acknowledgment text." } } , { "box" : { "fontface" : 2, "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-9", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 120.0, 375.0, 150.0, 20.0 ], "presentation" : 1, "presentation_rect" : [ 5.0, 360.0, 113.700005, 20.0 ], "text" : "info@14circles.org" } } , { "box" : { "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], "bgoncolor" : [ 0.54902, 0.54902, 0.54902, 0.0 ], "bgovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "bgoveroncolor" : [ 0.501961, 0.501961, 0.501961, 0.0 ], "border" : 0, "bordercolor" : [ 1.0, 1.0, 1.0, 0.0 ], "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-4", "maxclass" : "textbutton", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "", "", "int" ], "patching_rect" : [ 162.0, 454.0, 140.060547, 21.798828 ], "presentation" : 1, "presentation_rect" : [ 5.110602, 297.0, 131.949951, 21.798828 ], "rounded" : 19.0, "text" : "http://14circles.org/tool/", "textoncolor" : [ 1.0, 0.0, 0.0, 1.0 ], "textoveroncolor" : [ 0.0, 0.298039, 1.0, 1.0 ], "underline" : 1 } } , { "box" : { "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ], "bgcolor2" : [ 1.0, 1.0, 1.0, 1.0 ], "fontname" : "Verdana", "fontsize" : 10.0, "gradient" : 1, "hidden" : 1, "id" : "obj-7", "linecount" : 3, "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 177.0, 448.0, 216.0, 41.0 ], "presentation" : 1, "presentation_linecount" : 3, "presentation_rect" : [ 18.0, 523.0, 139.0, 41.0 ], "text" : ";\rmax launch_browser http://14circles.org/tool/", "textcolor" : [ 0.709804, 0.709804, 0.709804, 1.0 ] } } , { "box" : { "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], "bgoncolor" : [ 0.54902, 0.54902, 0.54902, 0.0 ], "bgovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "bgoveroncolor" : [ 0.501961, 0.501961, 0.501961, 0.0 ], "border" : 0, "bordercolor" : [ 1.0, 1.0, 1.0, 0.0 ], "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-70", "maxclass" : "textbutton", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "", "", "int" ], "patching_rect" : [ 456.0, 87.0, 120.0, 19.0 ], "presentation" : 1, "presentation_rect" : [ 1.0, 496.0, 156.0, 19.0 ], "rounded" : 19.0, "text" : "http://14circles.org/donate/", "textoncolor" : [ 1.0, 0.0, 0.0, 1.0 ], "textoveroncolor" : [ 0.0, 0.298039, 1.0, 1.0 ], "underline" : 1 } } , { "box" : { "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ], "bgcolor2" : [ 1.0, 1.0, 1.0, 1.0 ], "fontname" : "Verdana", "fontsize" : 10.0, "gradient" : 1, "hidden" : 1, "id" : "obj-71", "linecount" : 3, "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 459.0, 145.0, 216.0, 41.0 ], "presentation" : 1, "presentation_linecount" : 4, "presentation_rect" : [ 12.317314, 517.52533, 139.0, 53.0 ], "text" : ";\rmax launch_browser http://14circles.org/donate/", "textcolor" : [ 0.709804, 0.709804, 0.709804, 1.0 ] } } , { "box" : { "fontface" : 1, "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-6", "linecount" : 2, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 19.0, 290.0, 162.0, 34.0 ], "presentation" : 1, "presentation_rect" : [ 5.0, 477.0, 273.0, 20.0 ], "text" : "If you like my patches or music please donate\n" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-5", "linecount" : 4, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 34.0, 62.0, 150.0, 62.0 ], "presentation" : 1, "presentation_linecount" : 3, "presentation_rect" : [ 5.0, 315.0, 250.0, 48.0 ], "text" : "\nContact me if you need any help or just want to say hi." } } , { "box" : { "comment" : "", "id" : "obj-10", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 301.0, 20.0, 25.0, 25.0 ] } } , { "box" : { "fontface" : 1, "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-3", "linecount" : 26, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 4.0, 55.0, 165.0, 365.0 ], "presentation" : 1, "presentation_linecount" : 19, "presentation_rect" : [ 5.0, 30.0, 256.0, 269.0 ], "text" : "Kontrol lets you record movements of any knob or slider during live session on fly. \n\nInstruction:\n\n1) Map the knob or slider.\n2) Click \"arm rec\" toggle.\n3) Move \"kontrol\" knob. Now all movements are being recorded.\n4) Movements playback starts when the \"kontrol\" knob is released.\n5) \"arm_rec\" switches off automatically.\n\nMute - mute the knob movements' playback\n\nClear - clear recorded movements. \n\nCheck my other Max for Live patches " } } , { "box" : { "fontface" : 1, "fontname" : "Arial", "fontsize" : 18.0, "id" : "obj-1", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 4.0, 3.0, 231.0, 27.0 ], "presentation" : 1, "presentation_rect" : [ 5.0, 0.0, 130.0, 27.0 ], "text" : "Kontrol v1.1" } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-7", 0 ], "hidden" : 1, "midpoints" : [ ], "source" : [ "obj-4", 1 ] } } , { "patchline" : { "destination" : [ "obj-71", 0 ], "hidden" : 1, "midpoints" : [ ], "source" : [ "obj-70", 1 ] } } ] } , "patching_rect" : [ 40.0, 505.0, 100.0, 20.0 ], "saved_object_attributes" : { "default_fontsize" : 12.0, "fontname" : "Arial", "globalpatchername" : "", "fontface" : 0, "fontsize" : 12.0, "default_fontface" : 0, "default_fontname" : "Arial" } , "text" : "p help" } } , { "box" : { "color" : [ 0.239216, 0.643137, 0.709804, 1.0 ], "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-36", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patcher" : { "fileversion" : 1, "rect" : [ 25.0, 69.0, 356.0, 218.0 ], "bglocked" : 0, "defrect" : [ 25.0, 69.0, 356.0, 218.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 0, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 8.0, 8.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-3", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 64.0, 160.0, 61.0, 18.0 ], "text" : "Restore ID" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-2", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 144.0, 64.0, 49.0, 18.0 ], "text" : "Store ID" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-28", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 80.0, 96.0, 58.5, 18.0 ], "text" : "gate" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-27", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "int", "bang", "bang" ], "patching_rect" : [ 80.0, 40.0, 46.0, 18.0 ], "text" : "t 1 b b" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-26", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "bang", "int", "int" ], "patching_rect" : [ 80.0, 16.0, 79.0, 18.0 ], "text" : "live.thisdevice" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-45", "linecount" : 6, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 160.0, 120.0, 165.0, 75.0 ], "text" : "< The blue live.object object has its \"Save Mapping in Live Set\" attribute enabled, which means that it will retain the ID of the parameter which is selected when you save the Live set." } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-81", "linecount" : 2, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 160.0, 16.0, 88.0, 29.0 ], "text" : "< Bang when the device is loaded" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-82", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 160.0, 96.0, 163.0, 18.0 ], "text" : "< Store ID (but not when restoring)" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-91", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 96.0, 34.0, 16.0 ], "text" : "getid" } } , { "box" : { "color" : [ 0.239216, 0.643137, 0.709804, 1.0 ], "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-93", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 120.0, 59.0, 18.0 ], "saved_object_attributes" : { "_persistence" : 1 } , "text" : "live.object" } } , { "box" : { "comment" : "", "id" : "obj-18", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 120.0, 64.0, 18.0, 18.0 ] } } , { "box" : { "comment" : "", "id" : "obj-34", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 40.0, 160.0, 18.0, 18.0 ] } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-28", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-18", 0 ] } } , { "patchline" : { "destination" : [ "obj-27", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-28", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-27", 0 ] } } , { "patchline" : { "destination" : [ "obj-34", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-27", 2 ] } } , { "patchline" : { "destination" : [ "obj-91", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-27", 1 ] } } , { "patchline" : { "destination" : [ "obj-93", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-28", 0 ] } } , { "patchline" : { "destination" : [ "obj-93", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-91", 0 ] } } , { "patchline" : { "destination" : [ "obj-34", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-93", 0 ] } } ] } , "patching_rect" : [ 486.0, 307.0, 85.0, 18.0 ], "saved_object_attributes" : { "default_fontsize" : 10.0, "fontname" : "Arial Bold", "globalpatchername" : "", "fontface" : 0, "fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold" } , "text" : "patcher StoreID" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-25", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 414.0, 467.0, 103.0, 18.0 ], "text" : "substitute iterate id" } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "If the \"Once\" option is set to on, the Map function will be auto-disabled as soon as a parameter is selected to avoid unwanted further selections.", "automation" : "off", "automationon" : "on", "id" : "obj-23", "maxclass" : "live.text", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "parameter_enable" : 1, "patching_rect" : [ 462.0, 259.0, 40.0, 16.0 ], "prototypename" : "onoff", "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "MapOnce", "parameter_modmax" : 127.0, "parameter_longname" : "MapOnce", "parameter_modmin" : 0.0, "parameter_linknames" : 1, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 0.0, "parameter_invisible" : 1, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "off", "on" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_initial" : [ 1 ], "parameter_type" : 2, "parameter_initial_enable" : 1 } } , "text" : "Once", "texton" : "Once", "varname" : "MapOnce" } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "When Map is turned on, the next Live parameter clicked on will be selected as a target and the menus will be modified accordingly.", "automation" : "off", "automationon" : "on", "hint" : "When Map is turned on, the next Live parameter clicked on will be selected as a target and the menus will be modified accordingly.", "id" : "obj-31", "maxclass" : "live.text", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "parameter_enable" : 1, "patching_rect" : [ 406.0, 259.0, 40.0, 16.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 130.0, 87.0, 15.0 ], "prototypename" : "onoff", "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "Map", "parameter_modmax" : 127.0, "parameter_longname" : "Map", "parameter_modmin" : 0.0, "parameter_linknames" : 1, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 0.0, "parameter_invisible" : 2, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "off", "on" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_initial" : [ 0.0 ], "parameter_type" : 2, "parameter_initial_enable" : 0 } } , "text" : "Map", "texton" : "Map", "varname" : "Map" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-32", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "int" ], "patcher" : { "fileversion" : 1, "rect" : [ 447.0, 54.0, 265.0, 357.0 ], "bglocked" : 0, "defrect" : [ 447.0, 54.0, 265.0, 357.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 0, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 8.0, 8.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "comment" : "", "id" : "obj-4", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 96.0, 288.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-5", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 88.0, 312.0, 39.0, 18.0 ], "text" : "Set ID" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-2", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 48.0, 168.0, 52.0, 18.0 ], "text" : "deferlow" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-3", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 48.0, 191.0, 67.0, 18.0 ], "text" : "substitute 0" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-58", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 144.0, 256.0, 22.0, 18.0 ], "text" : "t 0" } } , { "box" : { "comment" : "", "id" : "obj-56", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 144.0, 288.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-57", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 136.0, 312.0, 38.0, 18.0 ], "text" : "Map" } } , { "box" : { "id" : "obj-53", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 144.0, 48.0, 18.0, 18.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-54", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 168.0, 16.0, 49.0, 18.0 ], "text" : "Auto-off" } } , { "box" : { "comment" : "", "id" : "obj-55", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 144.0, 16.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-50", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 144.0, 232.0, 32.5, 18.0 ], "text" : "gate" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-38", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "bang", "bang", "" ], "patching_rect" : [ 32.0, 72.0, 67.0, 18.0 ], "text" : "select 1 0" } } , { "box" : { "id" : "obj-34", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 32.0, 48.0, 18.0, 18.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-32", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 56.0, 16.0, 38.0, 18.0 ], "text" : "Map" } } , { "box" : { "comment" : "", "id" : "obj-27", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 32.0, 16.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-21", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 56.0, 96.0, 32.5, 16.0 ], "text" : "path" } } , { "box" : { "color" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-14", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 32.0, 143.0, 51.0, 18.0 ], "text" : "live.path" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-17", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 32.0, 120.0, 192.0, 16.0 ], "text" : "path live_set view selected_parameter" } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-2", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-14", 1 ] } } , { "patchline" : { "destination" : [ "obj-14", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-3", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-2", 0 ] } } , { "patchline" : { "destination" : [ "obj-14", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-21", 0 ] } } , { "patchline" : { "destination" : [ "obj-34", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-27", 0 ] } } , { "patchline" : { "destination" : [ "obj-4", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-3", 1 ] } } , { "patchline" : { "destination" : [ "obj-50", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-3", 1 ] } } , { "patchline" : { "destination" : [ "obj-38", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-34", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-38", 0 ] } } , { "patchline" : { "destination" : [ "obj-21", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-38", 1 ] } } , { "patchline" : { "destination" : [ "obj-58", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-50", 0 ] } } , { "patchline" : { "destination" : [ "obj-50", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-53", 0 ] } } , { "patchline" : { "destination" : [ "obj-53", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-55", 0 ] } } , { "patchline" : { "destination" : [ "obj-56", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-58", 0 ] } } ] } , "patching_rect" : [ 406.0, 283.0, 75.0, 18.0 ], "saved_object_attributes" : { "default_fontsize" : 10.0, "fontname" : "Arial Bold", "globalpatchername" : "", "fontface" : 0, "fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold" } , "text" : "patcher Map" } } , { "box" : { "args" : [ "parameter" ], "id" : "obj-40", "maxclass" : "bpatcher", "name" : "M4L.Chooser.maxpat", "numinlets" : 2, "numoutlets" : 2, "offset" : [ -9.0, -9.0 ], "outlettype" : [ "", "" ], "patching_rect" : [ 414.0, 427.0, 91.0, 31.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 95.0, 90.0, 31.0 ] } } , { "box" : { "args" : [ "device", "@observe", 1 ], "id" : "obj-41", "maxclass" : "bpatcher", "name" : "M4L.Chooser.maxpat", "numinlets" : 2, "numoutlets" : 2, "offset" : [ -9.0, -9.0 ], "outlettype" : [ "", "" ], "patching_rect" : [ 414.0, 387.0, 91.0, 31.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 60.0, 90.0, 33.0 ] } } , { "box" : { "args" : [ "track" ], "id" : "obj-42", "maxclass" : "bpatcher", "name" : "M4L.Chooser.maxpat", "numinlets" : 2, "numoutlets" : 2, "offset" : [ -9.0, -9.0 ], "outlettype" : [ "", "" ], "patching_rect" : [ 414.0, 347.0, 91.0, 31.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 25.0, 90.0, 31.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-4", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patcher" : { "fileversion" : 1, "rect" : [ 415.0, 44.0, 289.0, 312.0 ], "bglocked" : 0, "defrect" : [ 415.0, 44.0, 289.0, 312.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 0, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 8.0, 8.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-11", "linecount" : 3, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 144.0, 48.0, 125.0, 41.0 ], "text" : "< Don't trigger a Live API event directly in response to parameter value recall" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-7", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 72.0, 48.0, 52.0, 18.0 ], "text" : "deferlow" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-24", "linecount" : 6, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 152.0, 120.0, 117.0, 75.0 ], "text" : "< Turn mapping on or off: if it's on, set the ID of the Live parameter which is selected in the menus, if its off, set the (no mapping)." } } , { "box" : { "blinkcolor" : [ 0.921569, 0.94902, 0.05098, 1.0 ], "id" : "obj-9", "maxclass" : "button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 96.0, 144.0, 18.0, 18.0 ] } } , { "box" : { "blinkcolor" : [ 0.921569, 0.94902, 0.05098, 1.0 ], "id" : "obj-8", "maxclass" : "button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 72.0, 144.0, 18.0, 18.0 ] } } , { "box" : { "id" : "obj-3", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 120.0, 200.0, 18.0, 18.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-31", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 88.0, 72.0, 24.0, 18.0 ], "text" : "1/0" } } , { "box" : { "id" : "obj-26", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 72.0, 72.0, 18.0, 18.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-6", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 120.0, 264.0, 20.0, 18.0 ], "text" : "ID" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-5", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 16.0, 16.0, 20.0, 18.0 ], "text" : "ID" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-4", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 96.0, 16.0, 40.0, 18.0 ], "text" : "On/off" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-2", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "int", "int" ], "patching_rect" : [ 72.0, 96.0, 67.0, 18.0 ], "text" : "trigger i i" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-1", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 120.0, 232.0, 34.5, 18.0 ], "text" : "gate" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-52", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 40.0, 176.0, 37.0, 18.0 ], "text" : "zl reg" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-43", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 96.0, 176.0, 30.5, 16.0 ], "text" : "id 0" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-34", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "bang", "bang", "" ], "patching_rect" : [ 72.0, 120.0, 66.0, 18.0 ], "text" : "select 1 0" } } , { "box" : { "comment" : "", "id" : "obj-53", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 16.0, 18.0, 18.0 ] } } , { "box" : { "comment" : "", "id" : "obj-57", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 72.0, 16.0, 18.0, 18.0 ] } } , { "box" : { "comment" : "", "id" : "obj-60", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 96.0, 264.0, 18.0, 18.0 ] } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-60", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-1", 0 ] } } , { "patchline" : { "destination" : [ "obj-3", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-2", 1 ] } } , { "patchline" : { "destination" : [ "obj-34", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-2", 0 ] } } , { "patchline" : { "destination" : [ "obj-2", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-3", 0 ] } } , { "patchline" : { "destination" : [ "obj-8", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-34", 0 ] } } , { "patchline" : { "destination" : [ "obj-9", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-34", 1 ] } } , { "patchline" : { "destination" : [ "obj-60", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-43", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-52", 0 ] } } , { "patchline" : { "destination" : [ "obj-52", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-53", 0 ] } } , { "patchline" : { "destination" : [ "obj-7", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-57", 0 ] } } , { "patchline" : { "destination" : [ "obj-26", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-7", 0 ] } } , { "patchline" : { "destination" : [ "obj-52", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-8", 0 ] } } , { "patchline" : { "destination" : [ "obj-43", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-9", 0 ] } } ] } , "patching_rect" : [ 414.0, 531.0, 83.0, 18.0 ], "saved_object_attributes" : { "default_fontsize" : 10.0, "fontname" : "Arial Bold", "globalpatchername" : "", "fontface" : 0, "fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold" } , "text" : "patcher Enable" } } , { "box" : { "activebgoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "Enable/disable the mapping action on the parameter.", "automation" : "off", "automationon" : "on", "id" : "obj-30", "maxclass" : "live.text", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "parameter_enable" : 1, "patching_rect" : [ 478.0, 507.0, 31.0, 15.0 ], "presentation" : 1, "presentation_rect" : [ 49.0, 5.0, 31.0, 15.0 ], "prototypename" : "onoff", "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "Enable", "parameter_modmax" : 127.0, "parameter_longname" : "Enable", "parameter_modmin" : 0.0, "parameter_linknames" : 1, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 0.0, "parameter_invisible" : 0, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_enum" : [ "off", "on" ], "parameter_exponent" : 1.0, "parameter_unitstyle" : 10, "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_initial" : [ 1 ], "parameter_type" : 2, "parameter_initial_enable" : 1 } } , "text" : "Off", "texton" : "On", "varname" : "Enable" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "frgb" : [ 0.3, 0.34, 0.4, 1.0 ], "id" : "obj-7", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 438.0, 507.0, 40.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 5.0, 40.0, 18.0 ], "text" : "Target", "textcolor" : [ 0.3, 0.34, 0.4, 1.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-15", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 447.0, 8.0, 48.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 125.0, 107.0, 44.144569, 18.0 ], "text" : "Clear" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-14", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 370.0, -11.0, 41.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 125.0, 83.0, 44.144569, 18.0 ], "text" : "Mute" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-13", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 292.0, -4.0, 51.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 125.0, 59.435528, 47.257896, 18.0 ], "text" : "Arm rec" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-17", "maxclass" : "newobj", "numinlets" : 3, "numoutlets" : 2, "outlettype" : [ "", "" ], "patcher" : { "fileversion" : 1, "rect" : [ 428.0, 79.0, 852.0, 610.0 ], "bglocked" : 0, "defrect" : [ 428.0, 79.0, 852.0, 610.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 0, "default_fontsize" : 12.0, "default_fontface" : 0, "default_fontname" : "Arial", "gridonopen" : 0, "gridsize" : [ 15.0, 15.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "comment" : "", "id" : "obj-3", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 636.0, 566.0, 25.0, 25.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-91", "linecount" : 11, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 555.0, 75.0, 159.0, 158.0 ], "text" : "This subpatch made for start record when mouse button is pressed and recorder arm (by arm_rec toggel)\n\noutput 1: message to mtr\noutput 2: message \"0\" to arm_rec toggle\n\nMade by Anton Golota\n" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-90", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 606.0, 532.0, 50.0, 18.0 ], "text" : "0" } } , { "box" : { "id" : "obj-89", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 652.0, 471.0, 20.0, 20.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-87", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 607.0, 504.0, 100.0, 20.0 ], "text" : "gate" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-84", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 653.0, 444.0, 117.0, 18.0 ], "text" : "if $f1 == 0 then 1 else 0" } } , { "box" : { "id" : "obj-81", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 49.0, 136.0, 32.0, 32.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-82", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 5, "outlettype" : [ "int", "int", "int", "int", "int" ], "patching_rect" : [ 43.0, 107.0, 73.0, 18.0 ], "text" : "mousestate" } } , { "box" : { "comment" : "", "id" : "obj-1", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 43.0, 552.0, 25.0, 25.0 ] } } , { "box" : { "id" : "obj-167", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 146.0, 293.0, 20.0, 20.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-20", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 96.0, 256.0, 34.0, 20.0 ], "text" : "gate" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-11", "maxclass" : "number", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "int", "bang" ], "patching_rect" : [ 76.0, 206.0, 50.0, 18.0 ] } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-12", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 69.0, 185.0, 128.0, 18.0 ], "text" : "if $f1 == $f2 then 1 else 0" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-9", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "bang", "bang" ], "patching_rect" : [ 154.0, 353.0, 34.0, 20.0 ], "text" : "t b b" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-6", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 360.0, 435.0, 32.5, 18.0 ], "text" : "10" } } , { "box" : { "id" : "obj-47", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 245.0, 248.0, 20.0, 20.0 ] } } , { "box" : { "comment" : "", "id" : "obj-45", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 324.0, 55.0, 25.0, 25.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-21", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 120.0, 143.0, 69.0, 20.0 ], "text" : "mousefilter" } } , { "box" : { "comment" : "", "id" : "obj-4", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 496.0, 39.0, 25.0, 25.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-2", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 385.0, 346.0, 37.0, 18.0 ], "text" : "clear" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-50", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 189.0, 476.0, 32.5, 18.0 ], "text" : "0" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-49", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 222.0, 472.0, 32.5, 18.0 ], "text" : "1" } } , { "box" : { "id" : "obj-46", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 212.0, 507.0, 20.0, 20.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-40", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 231.0, 550.0, 34.0, 20.0 ], "text" : "gate" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-39", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 276.0, 483.0, 60.0, 20.0 ], "text" : "loadbang" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-36", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 303.0, 551.0, 41.0, 20.0 ], "text" : "metro" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-35", "maxclass" : "number", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "int", "bang" ], "patching_rect" : [ 337.0, 510.0, 66.0, 20.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-33", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "float", "" ], "patching_rect" : [ 316.0, 457.0, 37.0, 20.0 ], "text" : "timer" } } , { "box" : { "comment" : "", "id" : "obj-31", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 252.0, 31.0, 25.0, 25.0 ] } } , { "box" : { "id" : "obj-28", "maxclass" : "button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 262.0, 329.0, 20.0, 20.0 ] } } , { "box" : { "id" : "obj-29", "maxclass" : "button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 240.0, 329.0, 20.0, 20.0 ] } } , { "box" : { "id" : "obj-26", "maxclass" : "button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 243.0, 391.0, 20.0, 20.0 ] } } , { "box" : { "id" : "obj-25", "maxclass" : "button", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "bang" ], "patching_rect" : [ 178.0, 384.0, 20.0, 20.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-24", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "bang", "" ], "patching_rect" : [ 171.0, 320.0, 52.0, 20.0 ], "text" : "select 1" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-23", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "bang", "bang", "" ], "patching_rect" : [ 239.0, 300.0, 62.0, 20.0 ], "text" : "select 1 0" } } , { "box" : { "id" : "obj-22", "maxclass" : "toggle", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "int" ], "patching_rect" : [ 242.0, 107.0, 20.0, 20.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-18", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 292.0, 357.0, 51.0, 18.0 ], "text" : "unmute" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-17", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 249.0, 359.0, 37.0, 18.0 ], "text" : "mute" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-15", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 250.0, 447.0, 33.0, 18.0 ], "text" : "play" } } , { "box" : { "fontname" : "Arial", "fontsize" : 12.0, "id" : "obj-14", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 181.0, 411.0, 45.0, 18.0 ], "text" : "record" } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-20", 1 ], "hidden" : 0, "midpoints" : [ 85.5, 239.5, 120.5, 239.5 ], "source" : [ "obj-11", 0 ] } } , { "patchline" : { "destination" : [ "obj-11", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-12", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "hidden" : 0, "midpoints" : [ 190.5, 475.5, 52.5, 475.5 ], "source" : [ "obj-14", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "hidden" : 0, "midpoints" : [ 259.5, 493.5, 52.5, 493.5 ], "source" : [ "obj-15", 0 ] } } , { "patchline" : { "destination" : [ "obj-24", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-167", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "hidden" : 0, "midpoints" : [ 258.5, 449.5, 52.5, 449.5 ], "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "hidden" : 0, "midpoints" : [ 301.5, 448.5, 52.5, 448.5 ], "source" : [ "obj-18", 0 ] } } , { "patchline" : { "destination" : [ "obj-1", 0 ], "hidden" : 0, "midpoints" : [ 394.5, 443.0, 52.5, 443.0 ], "source" : [ "obj-2", 0 ] } } , { "patchline" : { "destination" : [ "obj-167", 0 ], "hidden" : 0, "midpoints" : [ 105.5, 284.0, 155.5, 284.0 ], "source" : [ "obj-20", 0 ] } } , { "patchline" : { "destination" : [ "obj-12", 1 ], "hidden" : 0, "midpoints" : [ 129.5, 173.5, 187.5, 173.5 ], "source" : [ "obj-21", 0 ] } } , { "patchline" : { "destination" : [ "obj-20", 0 ], "hidden" : 0, "midpoints" : [ 251.5, 191.0, 105.5, 191.0 ], "source" : [ "obj-22", 0 ] } } , { "patchline" : { "destination" : [ "obj-21", 0 ], "hidden" : 0, "midpoints" : [ 251.5, 134.5, 129.5, 134.5 ], "source" : [ "obj-22", 0 ] } } , { "patchline" : { "destination" : [ "obj-28", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-23", 1 ] } } , { "patchline" : { "destination" : [ "obj-29", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-23", 0 ] } } , { "patchline" : { "destination" : [ "obj-26", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-24", 1 ] } } , { "patchline" : { "destination" : [ "obj-9", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-24", 0 ] } } , { "patchline" : { "destination" : [ "obj-14", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-33", 1 ], "hidden" : 0, "midpoints" : [ 187.5, 430.0, 343.5, 430.0 ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-33", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-50", 0 ], "hidden" : 0, "midpoints" : [ 187.5, 439.5, 198.5, 439.5 ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-15", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-33", 1 ], "hidden" : 0, "midpoints" : [ 252.5, 433.5, 343.5, 433.5 ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-33", 0 ], "hidden" : 0, "midpoints" : [ 252.5, 433.5, 325.5, 433.5 ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-39", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-49", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-18", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-28", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-29", 0 ] } } , { "patchline" : { "destination" : [ "obj-22", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-31", 0 ] } } , { "patchline" : { "destination" : [ "obj-35", 0 ], "hidden" : 0, "midpoints" : [ 325.5, 493.0, 346.5, 493.0 ], "source" : [ "obj-33", 0 ] } } , { "patchline" : { "destination" : [ "obj-36", 1 ], "hidden" : 0, "midpoints" : [ 346.5, 540.0, 334.5, 540.0 ], "source" : [ "obj-35", 0 ] } } , { "patchline" : { "destination" : [ "obj-40", 1 ], "hidden" : 0, "midpoints" : [ 312.5, 580.0, 284.0, 580.0, 284.0, 540.0, 255.5, 540.0 ], "source" : [ "obj-36", 0 ] } } , { "patchline" : { "destination" : [ "obj-36", 0 ], "hidden" : 0, "midpoints" : [ 285.5, 526.5, 312.5, 526.5 ], "source" : [ "obj-39", 0 ] } } , { "patchline" : { "destination" : [ "obj-49", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-39", 0 ] } } , { "patchline" : { "destination" : [ "obj-82", 0 ], "hidden" : 0, "midpoints" : [ 285.5, 512.0, 17.0, 512.0, 17.0, 97.0, 52.5, 97.0 ], "source" : [ "obj-39", 0 ] } } , { "patchline" : { "destination" : [ "obj-2", 0 ], "hidden" : 0, "midpoints" : [ 505.5, 204.5, 394.5, 204.5 ], "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-50", 0 ], "hidden" : 0, "midpoints" : [ 505.5, 269.5, 198.5, 269.5 ], "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-6", 0 ], "hidden" : 0, "midpoints" : [ 505.5, 249.0, 369.5, 249.0 ], "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-15", 0 ], "hidden" : 0, "midpoints" : [ 240.5, 579.0, 250.0, 579.0, 250.0, 437.0, 259.5, 437.0 ], "source" : [ "obj-40", 0 ] } } , { "patchline" : { "destination" : [ "obj-47", 0 ], "hidden" : 0, "midpoints" : [ 333.5, 163.5, 254.5, 163.5 ], "source" : [ "obj-45", 0 ] } } , { "patchline" : { "destination" : [ "obj-40", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-46", 0 ] } } , { "patchline" : { "destination" : [ "obj-84", 0 ], "hidden" : 0, "midpoints" : [ 221.5, 536.0, 442.0, 536.0, 442.0, 434.0, 662.5, 434.0 ], "source" : [ "obj-46", 0 ] } } , { "patchline" : { "destination" : [ "obj-23", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-47", 0 ] } } , { "patchline" : { "destination" : [ "obj-46", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-49", 0 ] } } , { "patchline" : { "destination" : [ "obj-46", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-50", 0 ] } } , { "patchline" : { "destination" : [ "obj-35", 0 ], "hidden" : 0, "midpoints" : [ 369.5, 481.0, 346.5, 481.0 ], "source" : [ "obj-6", 0 ] } } , { "patchline" : { "destination" : [ "obj-12", 0 ], "hidden" : 0, "midpoints" : [ 58.5, 176.0, 78.5, 176.0 ], "source" : [ "obj-81", 0 ] } } , { "patchline" : { "destination" : [ "obj-81", 0 ], "hidden" : 0, "midpoints" : [ 52.5, 130.0, 58.5, 130.0 ], "source" : [ "obj-82", 0 ] } } , { "patchline" : { "destination" : [ "obj-89", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-84", 0 ] } } , { "patchline" : { "destination" : [ "obj-90", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-87", 0 ] } } , { "patchline" : { "destination" : [ "obj-87", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-89", 0 ] } } , { "patchline" : { "destination" : [ "obj-87", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-89", 0 ] } } , { "patchline" : { "destination" : [ "obj-2", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-9", 1 ] } } , { "patchline" : { "destination" : [ "obj-25", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-9", 0 ] } } , { "patchline" : { "destination" : [ "obj-3", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-90", 0 ] } } ] } , "patching_rect" : [ 323.0, 57.0, 135.0, 20.0 ], "saved_object_attributes" : { "default_fontsize" : 12.0, "fontname" : "Arial", "globalpatchername" : "", "fontface" : 0, "fontsize" : 12.0, "default_fontface" : 0, "default_fontname" : "Arial" } , "text" : "patcher ---mousebutton" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-66", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 321.0, 93.0, 57.5, 18.0 ], "text" : "mtr" } } , { "box" : { "activedialcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], "annotation" : "Control mapped parameter", "hint" : "Control mapped parameter", "id" : "obj-3", "maxclass" : "live.dial", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "float" ], "parameter_enable" : 1, "patching_rect" : [ 218.0, 63.0, 44.0, 47.0 ], "presentation" : 1, "presentation_rect" : [ 112.0, 7.0, 56.114468, 47.0 ], "saved_attribute_attributes" : { "valueof" : { "parameter_shortname" : "Kontrol", "parameter_modmax" : 127.0, "parameter_longname" : "kontrol", "parameter_modmin" : 0.0, "parameter_linknames" : 0, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 1.0, "parameter_invisible" : 0, "parameter_steps" : 0, "parameter_annotation_name" : "", "parameter_exponent" : 1.0, "parameter_unitstyle" : 0, "parameter_mmax" : 127.0, "parameter_mmin" : 0.0, "parameter_initial" : [ 64 ], "parameter_type" : 0, "parameter_initial_enable" : 1 } } , "varname" : "kontrol" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-9", "maxclass" : "newobj", "numinlets" : 3, "numoutlets" : 3, "outlettype" : [ "", "", "" ], "patching_rect" : [ 155.0, 276.0, 177.0, 18.0 ], "text" : "M4L.api.DeviceParameterRemote", "varname" : "M4L.api.DeviceParameterRemote" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-18", "maxclass" : "newobj", "numinlets" : 6, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 217.0, 219.0, 86.5, 18.0 ], "text" : "scale 0 127 0. 1." } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-2", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "signal", "signal" ], "patching_rect" : [ 715.0, 149.0, 53.0, 18.0 ], "text" : "plugout~" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-1", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 2, "outlettype" : [ "signal", "signal" ], "patching_rect" : [ 715.0, 69.0, 53.0, 18.0 ], "text" : "plugin~" } } , { "box" : { "bgcolor" : [ 0.0, 0.760784, 0.168627, 0.301961 ], "id" : "obj-8", "maxclass" : "panel", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 181.623383, 593.346008, 128.0, 128.0 ], "presentation" : 1, "presentation_rect" : [ 104.0, 3.0, 72.840782, 126.0 ] } } , { "box" : { "bgcolor" : [ 0.0, 0.760784, 0.168627, 0.301961 ], "id" : "obj-5", "maxclass" : "panel", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 196.623383, 593.346008, 128.0, 128.0 ], "presentation" : 1, "presentation_rect" : [ 6.128948, 3.0, 96.0, 164.0 ] } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-2", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-1", 1 ] } } , { "patchline" : { "destination" : [ "obj-2", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-1", 0 ] } } , { "patchline" : { "destination" : [ "obj-26", 0 ], "hidden" : 0, "midpoints" : [ 67.5, 455.5, 49.5, 455.5 ], "source" : [ "obj-11", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 0 ], "hidden" : 0, "midpoints" : [ 320.0, 43.0, 332.5, 43.0 ], "source" : [ "obj-16", 0 ] } } , { "patchline" : { "destination" : [ "obj-16", 0 ], "hidden" : 0, "midpoints" : [ 448.5, 86.0, 384.25, 86.0, 384.25, 5.0, 320.0, 5.0 ], "source" : [ "obj-17", 1 ] } } , { "patchline" : { "destination" : [ "obj-66", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-17", 0 ] } } , { "patchline" : { "destination" : [ "obj-9", 1 ], "hidden" : 0, "midpoints" : [ 226.5, 252.0, 243.5, 252.0 ], "source" : [ "obj-18", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 1 ], "hidden" : 0, "midpoints" : [ 381.0, 44.0, 390.5, 44.0 ], "source" : [ "obj-19", 0 ] } } , { "patchline" : { "destination" : [ "obj-17", 2 ], "hidden" : 0, "midpoints" : [ 435.0, 47.5, 448.5, 47.5 ], "source" : [ "obj-20", 0 ] } } , { "patchline" : { "destination" : [ "obj-32", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-23", 0 ] } } , { "patchline" : { "destination" : [ "obj-36", 0 ], "hidden" : 0, "midpoints" : [ 423.5, 497.0, 585.5, 497.0, 585.5, 295.0, 495.5, 295.0 ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-4", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-24", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-26", 0 ] } } , { "patchline" : { "destination" : [ "obj-11", 0 ], "hidden" : 0, "midpoints" : [ 67.5, 395.5, 67.5, 395.5 ], "source" : [ "obj-28", 0 ] } } , { "patchline" : { "destination" : [ "obj-18", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-3", 0 ] } } , { "patchline" : { "destination" : [ "obj-66", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-3", 0 ] } } , { "patchline" : { "destination" : [ "obj-4", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-30", 0 ] } } , { "patchline" : { "destination" : [ "obj-32", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-31", 0 ] } } , { "patchline" : { "color" : [ 0.494118, 0.556863, 0.607843, 1.0 ], "destination" : [ "obj-31", 0 ], "hidden" : 0, "midpoints" : [ 471.5, 310.0, 443.5, 310.0, 443.5, 249.0, 415.5, 249.0 ], "source" : [ "obj-32", 1 ] } } , { "patchline" : { "destination" : [ "obj-42", 1 ], "hidden" : 0, "midpoints" : [ 415.5, 323.5, 495.5, 323.5 ], "source" : [ "obj-32", 0 ] } } , { "patchline" : { "destination" : [ "obj-42", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-36", 0 ] } } , { "patchline" : { "destination" : [ "obj-9", 2 ], "hidden" : 0, "midpoints" : [ 423.5, 558.0, 373.0, 558.0, 373.0, 266.0, 322.5, 266.0 ], "source" : [ "obj-4", 0 ] } } , { "patchline" : { "destination" : [ "obj-25", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-40", 0 ] } } , { "patchline" : { "destination" : [ "obj-40", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-41", 1 ] } } , { "patchline" : { "destination" : [ "obj-40", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-41", 0 ] } } , { "patchline" : { "destination" : [ "obj-41", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-42", 1 ] } } , { "patchline" : { "destination" : [ "obj-41", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-42", 0 ] } } , { "patchline" : { "destination" : [ "obj-3", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-66", 1 ] } } ], "parameters" : { "obj-42::obj-25" : [ "ListItems[2]", "ListItems", 0 ], "obj-40::obj-25" : [ "ListItems", "ListItems", 0 ], "obj-31" : [ "Map", "Map", 0 ], "obj-30" : [ "Enable", "Enable", 0 ], "obj-20" : [ "clear", "clear", 0 ], "obj-19" : [ "mute", "mute", 0 ], "obj-28" : [ "help", "help", 0 ], "obj-3" : [ "kontrol", "Kontrol", 0 ], "obj-23" : [ "MapOnce", "MapOnce", 0 ], "obj-41::obj-25" : [ "ListItems[1]", "ListItems", 0 ], "obj-16" : [ "arm_rec", "arm_rec", 0 ], "obj-9::obj-37::obj-14" : [ "live-path[1]", "live-path", 0 ] } , "latency" : 0 } } { "patcher" : { "fileversion" : 1, "rect" : [ 43.0, 83.0, 817.0, 599.0 ], "bglocked" : 0, "defrect" : [ 43.0, 83.0, 817.0, 599.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 0, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 8.0, 8.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "maxclass" : "comment", "text" : "-->", "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 184.0, 392.0, 21.0, 18.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-76" } } , { "box" : { "maxclass" : "newobj", "text" : "t l l", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 2, "fontsize" : 10.0, "outlettype" : [ "", "" ], "patching_rect" : [ 504.0, 328.0, 100.5, 18.0 ], "id" : "obj-75" } } , { "box" : { "maxclass" : "newobj", "text" : "live.remote~", "fontname" : "Arial Bold", "numinlets" : 2, "color" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 208.0, 392.0, 69.0, 18.0 ], "id" : "obj-74", "saved_object_attributes" : { "lastindex" : -1 } } } , { "box" : { "maxclass" : "comment", "text" : "device parameter id", "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 312.0, 136.0, 101.0, 18.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-30" } } , { "box" : { "maxclass" : "comment", "text" : "-->", "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 64.0, 328.0, 21.0, 18.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-34" } } , { "box" : { "maxclass" : "newobj", "text" : "scale 0. 1.", "fontname" : "Arial Bold", "numinlets" : 6, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 208.0, 248.0, 89.5, 18.0 ], "id" : "obj-35" } } , { "box" : { "maxclass" : "comment", "text" : "< every time the live.object is set to a new id we also issue a \"getpath\" message and save this path into this patcher \n\nOn load it is restored to recall the parameter assignment.", "linecount" : 7, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 536.0, 488.0, 149.0, 87.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-36" } } , { "box" : { "maxclass" : "newobj", "varname" : "M4L.api.SaveLivePath[1]", "text" : "M4L.api.SaveLivePath", "fontname" : "Arial Bold", "numinlets" : 1, "color" : [ 0.545098, 0.85098, 0.592157, 1.0 ], "numoutlets" : 2, "fontsize" : 10.0, "outlettype" : [ "", "" ], "patching_rect" : [ 408.0, 520.0, 116.0, 18.0 ], "id" : "obj-37" } } , { "box" : { "maxclass" : "message", "text" : "getpath", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 440.0, 328.0, 47.0, 16.0 ], "id" : "obj-38" } } , { "box" : { "maxclass" : "message", "text" : "help live.object", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 640.0, 336.0, 83.0, 16.0 ], "bgcolor" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "id" : "obj-39" } } , { "box" : { "maxclass" : "newobj", "text" : "pcontrol", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 640.0, 360.0, 50.0, 18.0 ], "hidden" : 1, "id" : "obj-40" } } , { "box" : { "maxclass" : "comment", "text" : " at first we have to initialise this patch by sending in a parameter id \n\nit will set the live.object and the live.remote~ to this parameter and ask for its min and max values for conversion and output them", "linecount" : 9, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 640.0, 224.0, 135.0, 110.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-42" } } , { "box" : { "maxclass" : "newobj", "text" : "clip 0. 1.", "fontname" : "Arial Bold", "numinlets" : 3, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 208.0, 192.0, 66.0, 18.0 ], "id" : "obj-44" } } , { "box" : { "maxclass" : "comment", "text" : "bang outputs value", "linecount" : 3, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 24.0, 328.0, 44.0, 41.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-45" } } , { "box" : { "maxclass" : "newobj", "text" : "clip 0. 1.", "fontname" : "Arial Bold", "numinlets" : 3, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 136.0, 248.0, 66.0, 18.0 ], "id" : "obj-57" } } , { "box" : { "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 344.0, 496.0, 18.0, 18.0 ], "id" : "obj-58", "comment" : "min" } } , { "box" : { "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 376.0, 496.0, 18.0, 18.0 ], "id" : "obj-59", "comment" : "max" } } , { "box" : { "maxclass" : "newobj", "text" : "route value min max path", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 5, "fontsize" : 10.0, "outlettype" : [ "", "", "", "", "" ], "patching_rect" : [ 312.0, 424.0, 147.0, 18.0 ], "id" : "obj-60" } } , { "box" : { "maxclass" : "newobj", "text" : "route bang", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 2, "fontsize" : 10.0, "outlettype" : [ "", "" ], "patching_rect" : [ 88.0, 192.0, 67.0, 18.0 ], "id" : "obj-62" } } , { "box" : { "maxclass" : "message", "text" : "get value", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 88.0, 328.0, 58.0, 16.0 ], "id" : "obj-63" } } , { "box" : { "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 312.0, 496.0, 18.0, 18.0 ], "id" : "obj-64", "comment" : "value out" } } , { "box" : { "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 208.0, 160.0, 18.0, 18.0 ], "id" : "obj-65", "comment" : "raw value [0...1]" } } , { "box" : { "maxclass" : "message", "text" : "get min", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 312.0, 328.0, 50.0, 16.0 ], "id" : "obj-66" } } , { "box" : { "maxclass" : "message", "text" : "get max", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 376.0, 328.0, 52.0, 16.0 ], "id" : "obj-67" } } , { "box" : { "maxclass" : "newobj", "text" : "t b b b l", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 4, "fontsize" : 10.0, "outlettype" : [ "bang", "bang", "bang", "" ], "patching_rect" : [ 312.0, 288.0, 210.5, 18.0 ], "id" : "obj-68" } } , { "box" : { "maxclass" : "newobj", "text" : "live.object", "fontname" : "Arial Bold", "numinlets" : 2, "color" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 312.0, 392.0, 211.0, 18.0 ], "id" : "obj-69" } } , { "box" : { "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 312.0, 160.0, 18.0, 18.0 ], "id" : "obj-70", "comment" : "parameter id" } } , { "box" : { "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 88.0, 160.0, 18.0, 18.0 ], "id" : "obj-71", "comment" : "bang to output value, float to set value" } } , { "box" : { "maxclass" : "comment", "text" : "a float in here will be scaled below and set the value ", "linecount" : 3, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 160.0, 128.0, 128.0, 41.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-72" } } , { "box" : { "maxclass" : "comment", "text" : "a float in here will directly set the value", "linecount" : 2, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 40.0, 128.0, 107.0, 29.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-73" } } , { "box" : { "maxclass" : "comment", "text" : "we use live.remote~ to set the value to get a better timing. It lso will not generate any UNDO steps.", "linecount" : 4, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 40.0, 384.0, 144.0, 52.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-29" } } , { "box" : { "maxclass" : "message", "text" : "help live.remote~", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 432.0, 92.0, 16.0 ], "bgcolor" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "id" : "obj-18" } } , { "box" : { "maxclass" : "newobj", "text" : "pcontrol", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 456.0, 50.0, 18.0 ], "hidden" : 1, "id" : "obj-24" } } , { "box" : { "maxclass" : "comment", "prototypename" : "ML.patcher-summary", "text" : "This patch represents a device parameter.", "fontname" : "Arial Bold Italic", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 11.0, "patching_rect" : [ 320.0, 32.0, 231.0, 19.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-49" } } , { "box" : { "maxclass" : "comment", "prototypename" : "ML.subpatcher-title", "text" : "Device Parameter Remote", "fontname" : "Arial Bold Italic", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 24.0, "patching_rect" : [ 16.0, 16.0, 305.0, 34.0 ], "textcolor" : [ 0.3, 0.34, 0.4, 1.0 ], "frgb" : [ 0.3, 0.34, 0.4, 1.0 ], "id" : "obj-33" } } , { "box" : { "maxclass" : "comment", "prototypename" : "ML.patcher-story", "text" : "This patch represents a Ableton Live device aprameter. It accepts a paramter id as input and can set and get values in unscaled and raw format and output it's min/max values. This version will use a live.remote~ object to set the values which makes it possible to operate in audio rate which is much faster than message rate but also way more resource hungry.", "linecount" : 4, "fontname" : "Arial Italic", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 11.0, "patching_rect" : [ 16.0, 48.0, 558.0, 57.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-50" } } ], "lines" : [ { "patchline" : { "source" : [ "obj-18", 0 ], "destination" : [ "obj-24", 0 ], "hidden" : 1, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-37", 0 ], "destination" : [ "obj-68", 0 ], "hidden" : 0, "midpoints" : [ 417.5, 545.0, 783.0, 545.0, 783.0, 264.0, 321.5, 264.0 ] } } , { "patchline" : { "source" : [ "obj-39", 0 ], "destination" : [ "obj-40", 0 ], "hidden" : 1, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-65", 0 ], "destination" : [ "obj-44", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-62", 0 ], "destination" : [ "obj-63", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-62", 1 ], "destination" : [ "obj-57", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-63", 0 ], "destination" : [ "obj-69", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-66", 0 ], "destination" : [ "obj-69", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-71", 0 ], "destination" : [ "obj-62", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-68", 1 ], "destination" : [ "obj-67", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-70", 0 ], "destination" : [ "obj-68", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-68", 0 ], "destination" : [ "obj-66", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-68", 2 ], "destination" : [ "obj-38", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-38", 0 ], "destination" : [ "obj-69", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-67", 0 ], "destination" : [ "obj-69", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-60", 0 ], "destination" : [ "obj-64", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-60", 3 ], "destination" : [ "obj-37", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-69", 0 ], "destination" : [ "obj-60", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-60", 2 ], "destination" : [ "obj-35", 4 ], "hidden" : 0, "color" : [ 0.082353, 0.431373, 0.411765, 1.0 ], "midpoints" : [ 385.5, 478.0, 633.700012, 478.0, 633.700012, 215.0, 273.899994, 215.0 ] } } , { "patchline" : { "source" : [ "obj-60", 1 ], "destination" : [ "obj-35", 3 ], "hidden" : 0, "color" : [ 0.470588, 0.113725, 0.545098, 1.0 ], "midpoints" : [ 353.5, 463.0, 617.650024, 463.0, 617.650024, 224.0, 259.799988, 224.0 ] } } , { "patchline" : { "source" : [ "obj-44", 0 ], "destination" : [ "obj-35", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-60", 1 ], "destination" : [ "obj-58", 0 ], "hidden" : 0, "color" : [ 0.470588, 0.113725, 0.545098, 1.0 ], "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-60", 2 ], "destination" : [ "obj-59", 0 ], "hidden" : 0, "color" : [ 0.082353, 0.431373, 0.411765, 1.0 ], "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-60", 1 ], "destination" : [ "obj-57", 1 ], "hidden" : 0, "color" : [ 0.470588, 0.113725, 0.545098, 1.0 ], "midpoints" : [ 353.5, 463.0, 617.25, 463.0, 617.25, 224.0, 169.0, 224.0 ] } } , { "patchline" : { "source" : [ "obj-60", 2 ], "destination" : [ "obj-57", 2 ], "hidden" : 0, "color" : [ 0.082353, 0.431373, 0.411765, 1.0 ], "midpoints" : [ 385.5, 478.0, 633.0, 478.0, 633.0, 215.0, 192.5, 215.0 ] } } , { "patchline" : { "source" : [ "obj-75", 0 ], "destination" : [ "obj-69", 1 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-75", 1 ], "destination" : [ "obj-74", 1 ], "hidden" : 0, "midpoints" : [ 595.0, 368.5, 267.5, 368.5 ] } } , { "patchline" : { "source" : [ "obj-68", 3 ], "destination" : [ "obj-75", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-35", 0 ], "destination" : [ "obj-74", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-57", 0 ], "destination" : [ "obj-74", 0 ], "hidden" : 0, "midpoints" : [ ] } } ], "parameters" : { "obj-37::obj-14" : [ "live-path[1]", "live-path", 0 ] } } } { "patcher" : { "fileversion" : 1, "rect" : [ 70.0, 91.0, 474.0, 360.0 ], "bglocked" : 0, "defrect" : [ 70.0, 91.0, 474.0, 360.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 0, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 8.0, 8.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "maxclass" : "outlet", "prototypename" : "M4L.Arial10", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 232.0, 320.0, 18.0, 18.0 ], "id" : "obj-2", "comment" : "path out" } } , { "box" : { "maxclass" : "comment", "text" : "< we only want the value to be sent out once when the patch is loaded to avoid loops", "linecount" : 4, "fontname" : "Arial", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 10.0, "patching_rect" : [ 184.0, 168.0, 114.0, 52.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-5" } } , { "box" : { "maxclass" : "newobj", "text" : "t l b", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 2, "fontsize" : 10.0, "outlettype" : [ "", "bang" ], "patching_rect" : [ 112.0, 216.0, 32.5, 18.0 ], "id" : "obj-9" } } , { "box" : { "maxclass" : "message", "text" : "1", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 112.0, 168.0, 32.5, 16.0 ], "id" : "obj-8" } } , { "box" : { "maxclass" : "message", "text" : "0", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 72.0, 168.0, 32.5, 16.0 ], "id" : "obj-7" } } , { "box" : { "maxclass" : "newobj", "text" : "gate", "fontname" : "Arial Bold", "numinlets" : 2, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 112.0, 192.0, 32.5, 18.0 ], "id" : "obj-6" } } , { "box" : { "maxclass" : "newobj", "text" : "loadbang", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "bang" ], "patching_rect" : [ 112.0, 144.0, 55.0, 18.0 ], "id" : "obj-4" } } , { "box" : { "maxclass" : "outlet", "prototypename" : "M4L.Arial10", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 112.0, 320.0, 18.0, 18.0 ], "id" : "obj-52", "comment" : "id out" } } , { "box" : { "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 176.0, 104.0, 18.0, 18.0 ], "id" : "obj-1", "comment" : "" } } , { "box" : { "maxclass" : "comment", "prototypename" : "ML.patcher-summary", "text" : "This patch is used to store a path in a LiveSet.", "fontname" : "Arial Bold Italic", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 11.0, "patching_rect" : [ 200.0, 32.0, 254.0, 19.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-49" } } , { "box" : { "maxclass" : "comment", "prototypename" : "ML.subpatcher-title", "text" : "Save Live Path", "fontname" : "Arial Bold Italic", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 24.0, "patching_rect" : [ 16.0, 16.0, 184.0, 34.0 ], "textcolor" : [ 0.3, 0.34, 0.4, 1.0 ], "frgb" : [ 0.3, 0.34, 0.4, 1.0 ], "id" : "obj-33" } } , { "box" : { "maxclass" : "comment", "prototypename" : "ML.patcher-story", "text" : "accepts a path WITHOUT a \"path\" attribute in front, stores it in a pattr - on patcher load it will recall it, set a live.path object to it and output the corresponding id", "linecount" : 2, "fontname" : "Arial Italic", "numinlets" : 1, "numoutlets" : 0, "fontsize" : 11.0, "patching_rect" : [ 16.0, 48.0, 437.0, 32.0 ], "frgb" : [ 0.0, 0.0, 0.0, 1.0 ], "id" : "obj-50" } } , { "box" : { "maxclass" : "newobj", "text" : "prepend path", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 1, "fontsize" : 10.0, "outlettype" : [ "" ], "patching_rect" : [ 112.0, 256.0, 74.0, 18.0 ], "id" : "obj-29" } } , { "box" : { "maxclass" : "newobj", "text" : "live.path", "fontname" : "Arial Bold", "numinlets" : 1, "color" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "numoutlets" : 3, "fontsize" : 10.0, "outlettype" : [ "", "", "" ], "patching_rect" : [ 112.0, 296.0, 51.0, 18.0 ], "id" : "obj-18" } } , { "box" : { "maxclass" : "newobj", "varname" : "live-path", "text" : "pattr live-path", "fontname" : "Arial Bold", "numinlets" : 1, "numoutlets" : 3, "fontsize" : 10.0, "outlettype" : [ "", "", "" ], "patching_rect" : [ 176.0, 144.0, 77.0, 18.0 ], "id" : "obj-14", "restore" : [ 0.0 ], "saved_object_attributes" : { "parameter_enable" : 1 } , "saved_attribute_attributes" : { "valueof" : { "parameter_steps" : 0, "parameter_exponent" : 1.0, "parameter_invisible" : 1, "parameter_unitstyle" : 10, "parameter_annotation_name" : "", "parameter_mmax" : 127.0, "parameter_mmin" : 0.0, "parameter_type" : 3, "parameter_initial_enable" : 0, "parameter_shortname" : "live-path", "parameter_modmax" : 127.0, "parameter_longname" : "live-path", "parameter_modmin" : 0.0, "parameter_linknames" : 0, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 0.0 } } } } ], "lines" : [ { "patchline" : { "source" : [ "obj-9", 0 ], "destination" : [ "obj-29", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-29", 0 ], "destination" : [ "obj-18", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-18", 0 ], "destination" : [ "obj-52", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-9", 1 ], "destination" : [ "obj-7", 0 ], "hidden" : 0, "midpoints" : [ 135.0, 241.0, 64.0, 241.0, 64.0, 160.0, 81.5, 160.0 ] } } , { "patchline" : { "source" : [ "obj-6", 0 ], "destination" : [ "obj-9", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-7", 0 ], "destination" : [ "obj-6", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-8", 0 ], "destination" : [ "obj-6", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-4", 0 ], "destination" : [ "obj-8", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-14", 0 ], "destination" : [ "obj-6", 1 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-1", 0 ], "destination" : [ "obj-14", 0 ], "hidden" : 0, "midpoints" : [ ] } } , { "patchline" : { "source" : [ "obj-29", 0 ], "destination" : [ "obj-2", 0 ], "hidden" : 0, "midpoints" : [ ] } } ], "parameters" : { "obj-14" : [ "live-path", "live-path", 0 ] } } } { "patcher" : { "fileversion" : 1, "rect" : [ 34.0, 44.0, 598.0, 466.0 ], "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], "bglocked" : 0, "defrect" : [ 34.0, 44.0, 598.0, 466.0 ], "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], "openinpresentation" : 1, "default_fontsize" : 10.0, "default_fontface" : 0, "default_fontname" : "Arial Bold", "gridonopen" : 0, "gridsize" : [ 8.0, 8.0 ], "gridsnaponopen" : 0, "toolbarvisible" : 1, "boxanimatetime" : 200, "imprint" : 0, "enablehscroll" : 1, "enablevscroll" : 1, "devicewidth" : 0.0, "boxes" : [ { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-5", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 64.0, 224.0, 35.0, 18.0 ], "text" : "Items" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-4", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 400.0, 256.0, 30.0, 18.0 ], "text" : "<----" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-3", "linecount" : 3, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 424.0, 256.0, 136.0, 41.0 ], "text" : "Double click the js object to open the javascript source file in an editor window." } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-2", "linecount" : 2, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 24.0, 64.0, 129.0, 29.0 ], "text" : "Send a bang automatically when the device is loaded." } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-1", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 336.0, 304.0, 41.0, 18.0 ], "text" : "Type >" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-38", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 285.0, 193.0, 62.0, 18.0 ], "text" : "route done" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-37", "linecount" : 2, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 272.0, 392.0, 168.0, 29.0 ], "text" : "< It is assumed that we will connect to the next M4L.Chooser in a chain." } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-36", "linecount" : 5, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 224.0, 96.0, 120.0, 64.0 ], "text" : "- Argument (required): \nthe object type\n- Attributes (optional): \nobserve 1/0, mixer 1/0, master 1/0, returns 1/0" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-12", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 24.0, 176.0, 61.0, 18.0 ], "text" : "Refresh list" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-11", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 336.0, 328.0, 67.0, 18.0 ], "text" : "< Menu sync" } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-6", "linecount" : 2, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 160.0, 64.0, 91.0, 29.0 ], "text" : "Messages: parent ID, bang..." } } , { "box" : { "fontname" : "Arial Bold Italic", "fontsize" : 11.0, "id" : "obj-178", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 24.0, 32.0, 366.0, 19.0 ], "text" : "List Live objects (e.g. tracks, devices, clips...) and store a selection" } } , { "box" : { "fontname" : "Arial Bold Italic", "fontsize" : 18.0, "frgb" : [ 0.301961, 0.337255, 0.403922, 1.0 ], "id" : "obj-176", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 24.0, 8.0, 125.0, 27.0 ], "text" : "M4L.Chooser", "textcolor" : [ 0.301961, 0.337255, 0.403922, 1.0 ] } } , { "box" : { "fontname" : "Arial", "fontsize" : 10.0, "id" : "obj-47", "linecount" : 7, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 400.0, 96.0, 160.0, 87.0 ], "text" : "< Restore path/ID. If this chooser is the first in the chain, it may be left unconnected (assuming that no restoration or local restoration are desired). Otherwise, it should be connected to the 2nd outlet of the M4L.Chooser above it." } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-31", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 40.0, 120.0, 46.0, 16.0 ], "text" : "gettype" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-29", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "bang", "int", "int" ], "patching_rect" : [ 40.0, 96.0, 79.0, 18.0 ], "text" : "live.thisdevice" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-27", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 248.0, 360.0, 83.0, 18.0 ], "text" : "prepend iterate" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-16", "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "patching_rect" : [ 232.0, 168.0, 72.0, 18.0 ], "text" : "patcherargs" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-20", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 376.0, 280.0, 39.0, 16.0 ], "text" : "set $1" } } , { "box" : { "fontname" : "Arial Bold", "fontsize" : 10.0, "id" : "obj-21", "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 376.0, 304.0, 88.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 6.0, 9.0, 73.0, 18.0 ], "text" : "None" } } , { "box" : { "comment" : "Restore path/ID", "id" : "obj-18", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 376.0, 96.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "comment" : "Menu sync", "id" : "obj-14", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 312.0, 328.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "comment" : "Parent ID, bang...", "id" : "obj-49", "maxclass" : "inlet", "numinlets" : 0, "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 184.0, 96.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "comment" : "Iterate IDs", "id" : "obj-52", "maxclass" : "outlet", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 248.0, 392.0, 18.0, 18.0 ], "prototypename" : "M4L.Arial10" } } , { "box" : { "annotation" : "Select an item.", "bgcolor" : [ 0.094118, 0.113725, 0.137255, 0.0 ], "border" : 1, "grad2" : [ 0.415686, 0.454902, 0.52549, 1.0 ], "id" : "obj-51", "maxclass" : "panel", "numinlets" : 1, "numoutlets" : 0, "patching_rect" : [ 40.0, 240.0, 80.0, 17.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 24.0, 87.0, 16.0 ], "rounded" : 0 } } , { "box" : { "annotation" : "List all available items.", "automation" : "arm", "automationon" : "trigger", "fontface" : 0, "fontsize" : 9.0, "hint" : "List all available items.", "id" : "obj-25", "maxclass" : "live.text", "mode" : 0, "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "" ], "parameter_enable" : 1, "patching_rect" : [ 40.0, 192.0, 24.0, 16.0 ], "presentation" : 1, "presentation_rect" : [ 76.0, 11.0, 20.0, 12.0 ], "prototypename" : "numbers.default", "saved_attribute_attributes" : { "valueof" : { "parameter_enum" : [ "arm", "trigger" ], "parameter_exponent" : 1.0, "parameter_invisible" : 2, "parameter_unitstyle" : 10, "parameter_annotation_name" : "", "parameter_mmax" : 1.0, "parameter_mmin" : 0.0, "parameter_initial" : [ 0.0 ], "parameter_type" : 2, "parameter_initial_enable" : 0, "parameter_shortname" : "ListItems", "parameter_modmax" : 127.0, "parameter_longname" : "ListItems", "parameter_modmin" : 0.0, "parameter_linknames" : 1, "parameter_modmode" : 0, "parameter_info" : "", "parameter_units" : "", "parameter_order" : 0, "parameter_defer" : 0, "parameter_speedlim" : 0.0, "parameter_steps" : 0 } } , "text" : "list", "texton" : "list", "varname" : "ListItems" } } , { "box" : { "color" : [ 0.984314, 0.819608, 0.05098, 1.0 ], "fontname" : "Arial Bold", "fontsize" : 12.0, "id" : "obj-39", "maxclass" : "newobj", "numinlets" : 2, "numoutlets" : 4, "outlettype" : [ "", "", "", "" ], "patching_rect" : [ 184.0, 256.0, 211.0, 20.0 ], "text" : "js M4L.chooser.js #1", "varname" : "List&Select" } } , { "box" : { "annotation" : "When no item has been selected, the menu font is italic. When an item is selected, the menu displays in non-italics. Clicking the buttons clears the menus, sets the font to italic, and deselects any previously selected mapping. ", "arrowcolor" : [ 0.494118, 0.556863, 0.607843, 1.0 ], "fontface" : 2, "fontname" : "Arial Bold", "fontsize" : 10.0, "framecolor" : [ 0.572549, 0.615686, 0.658824, 0.0 ], "id" : "obj-41", "items" : "", "maxclass" : "umenu", "numinlets" : 1, "numoutlets" : 3, "outlettype" : [ "int", "", "" ], "patching_rect" : [ 40.0, 239.0, 80.0, 18.0 ], "presentation" : 1, "presentation_rect" : [ 9.0, 23.0, 87.0, 18.0 ], "rounded" : 0, "textcolor" : [ 0.094118, 0.113725, 0.137255, 1.0 ], "textcolor2" : [ 0.094118, 0.113725, 0.137255, 1.0 ], "togcolor" : [ 0.568627, 0.619608, 0.662745, 1.0 ], "types" : [ ], "varname" : "Chooser" } } ], "lines" : [ { "patchline" : { "destination" : [ "obj-38", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-16", 1 ] } } , { "patchline" : { "destination" : [ "obj-39", 1 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-18", 0 ] } } , { "patchline" : { "destination" : [ "obj-21", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-20", 0 ] } } , { "patchline" : { "destination" : [ "obj-39", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-25", 0 ] } } , { "patchline" : { "destination" : [ "obj-52", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-27", 0 ] } } , { "patchline" : { "destination" : [ "obj-31", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-29", 0 ] } } , { "patchline" : { "destination" : [ "obj-39", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-31", 0 ] } } , { "patchline" : { "destination" : [ "obj-39", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-38", 1 ] } } , { "patchline" : { "destination" : [ "obj-14", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-39", 2 ] } } , { "patchline" : { "destination" : [ "obj-20", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-39", 3 ] } } , { "patchline" : { "destination" : [ "obj-27", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-39", 1 ] } } , { "patchline" : { "destination" : [ "obj-41", 0 ], "hidden" : 0, "midpoints" : [ 193.5, 285.0, 32.5, 285.0, 32.5, 229.0, 49.5, 229.0 ], "source" : [ "obj-39", 0 ] } } , { "patchline" : { "destination" : [ "obj-39", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-41", 0 ] } } , { "patchline" : { "destination" : [ "obj-39", 0 ], "hidden" : 0, "midpoints" : [ ], "source" : [ "obj-49", 0 ] } } ], "parameters" : { "obj-25" : [ "ListItems", "ListItems", 0 ] } } } // M4L.chooser.js, menu control backend for the Poletti Chooser // Jeremy Bernstein (jeremy@cycling74.com) // © 2011 Cycling '74 autowatch = 1; inlets = 2; outlets = 4; var MenuTypes = { none : { fun: null, name: "None", container: null }, chain: { fun: null, name: "Chain", container: ["chains"], filterfun: filter_chain }, // only internal clip : { fun: iterate_clips_for_id, name: "Clip", container: ["clip_slots"] }, clipaudio : { fun: iterate_audioclips_for_id, name: "Audio clip", container: ["clip_slots"] }, clipmidi : { fun: iterate_midiclips_for_id, name: "MIDI clip", container: ["clip_slots"] }, clipslot : { fun: iterate_clipslots_for_id, name: "Clip slot", container: ["clip_slots"], filterfun: filter_clipslot }, cuepoint : { fun: iterate_cuepoints, name: "Cue point", container: ["cue_points", "live_set"], toplevel: true }, device : { fun: iterate_devices_for_id, name: "Device", container: ["devices", "mixer_device", "return_tracks", "master_track"], filterfun: filter_device }, parameter : { fun: iterate_parameters_for_id, name: "Parameter", container: ["parameters", "mixer_device\\s+\\S+"] }, fparam : { fun: iterate_fparameters_for_id, name: "Param (float)", container: ["parameters", "mixer_device\\s+\\S+"], filterfun: filter_fparam }, mixerparam : { fun: iterate_parameters_for_id, name: "Parameter", container: ["parameters", "mixer_device\\s+\\S+"] }, scene : { fun: iterate_scenes, name: "Scene", container: ["scenes", "live_set"], toplevel: true }, send : { fun: null, name: "Send", container: ["sends"] }, // only internal track : { fun: iterate_tracks, name: "Track", container: ["tracks", "master_track", "live_set"], filterfun: filter_track, toplevel: true }, trackaudio : { fun: iterate_audiotracks, name: "Audio track", container: ["tracks", "master_track", "live_set"], filterfun: filter_track, toplevel: true }, trackmidi : { fun: iterate_miditracks, name: "MIDI track", container: ["tracks", "master_track", "live_set"], filterfun: filter_track, toplevel: true }, trackreturn : { fun: iterate_returntracks, name: "Return tracks", container: ["return_tracks", "live_set"], filterfun: filter_track, toplevel: true }, }; // NOTE "live_set master_track crossfader" & "live_set master_track cue_volume" result in "get path: error calculating the path" errors // NOTE Observed device additions don't work (the new device appears with id 0, which is fairly useless). This appears to be a bug in Live, but I'm waiting for info. var Root = "live_set"; var Listener = null; var MenuAPI = null; // set a default type. useful in some cases. var LastType = jsarguments.length ? ((MenuTypes[jsarguments[1]]) ? MenuTypes[jsarguments[1]] : MenuTypes.none) : MenuTypes.none; var LastArgs = undefined; var LastData = undefined; var observe = 1; declareattribute("observe"); var master = 1; declareattribute("master"); var mixer = 1; declareattribute("mixer"); var returns = 1; declareattribute("returns"); var autoloadtoplevel = 1; declareattribute("autoloadtoplevel"); var TempAPI = new LiveAPI(); // uninitialized ///////////////////////////////////////// // USER FUNCTIONS // for these to work, the menu has to know what kind of menu it is, and what data it contains function path(inpath) { if (arguments.length > 1) { // join args if necessary var arr = arrayfromargs(arguments); inpath = arr.join(" "); } if (!MenuAPI || !MenuAPI.menudata.length) { do_iterate(); if ((!MenuAPI || !MenuAPI.menudata.length) && LastType != MenuTypes.none) { // we couldn't iterate, apparently // fallback code // analyze the path: does it contain a previous term that we _can_ iterate? var regexp = "^(.* \\d+).*?(" + LastType.container.join("|") + ").*?$"; var re = new RegExp(regexp); var m = re.exec(inpath); if (m) { // we have a valid path TempAPI.path = m[1]; do_iterate(TempAPI.id); // iterate on the previous term } } } //post("path: " + inpath + "\n"); if (MenuAPI) { // we already have contents, and therefore a type var regexp = "^(.*(" + MenuAPI.mtype.container.join("|") + ")( \\d+)?)(.*?)$" var re = new RegExp(regexp); var m = re.exec(inpath); var match = false; if (m) { // it matches our type var localpath = m[1]; //post("m[1]: " + m[1] + "\n"); for (var i = 0; i < MenuAPI.menudata.length; i++) { if (MenuAPI.menudata[i].path == localpath) { //post("matches index " + i + " of our menu\n"); outlet(0, i); // this will trigger a reset of the menu below us, in fact if (!m[m.length-1].match(/^\s*?$/)) { // pass the path on, there's more to parse outlet(2, "path", inpath); } else { //don't reset again -- we sent a reset with the outlet(0) call above //clear any objects below us //outlet(2, "reset"); //send downstream to next M4L.chooser } match = true; break; } } } if (!match) { if (inpath.match(/tracks/)) { inpath = tracks_to_scenes(inpath); } else if (inpath.match(/scenes/)) { inpath = scenes_to_tracks(inpath); } else { post("no match: " + inpath + "\n"); return; } if (inpath != null) { path(inpath); } } } } function reset() { id(0); } function id(inid) { if (inid == 0 && (!LastType.toplevel || (LastType.toplevel == true && autoloadtoplevel == 0))) { menu_clear(MenuAPI); outlets_clear(); LastData = undefined; return; } if (inid != 0) { TempAPI.id = inid; // no need to force iteration here. // the fallback code in path() will now find the parent of this "menu" and iterate it, if necessary. path(dequote(TempAPI.path)); } } function msg_int(i) { if (MenuAPI) { if (i >= 0 && i < MenuAPI.menudata.length && MenuAPI.menudata[i].id != null) { //post("msg_int: " + MenuAPI.menudata[i].path + ", id: " + MenuAPI.menudata[i].id + " (" + parseInt(MenuAPI.menudata[i].id) + ")\n"); outlet(2, "reset"); //send downstream outlet(1, parseInt(MenuAPI.menudata[i].id)); menu_checks(MenuAPI, i); } } } function gettype() { outlet(3, LastType.name); } // generic iterate based on last (or default) type function iterate(args) { do_iterate(args); // below is disabled -- not relevant for normal usage /* var cld = LastData; do_iterate(args); if (cld !== undefined) { for (var i = 0; i < MenuAPI.menudata.length; i++) { if (MenuAPI.menudata[i].id == cld.id) { if (MenuAPI.menudata[i].name == "This Track" && MenuAPI.menudata[i].name != cld.name) continue; menu_set(MenuAPI, i); break; } } } */ } function do_iterate(args) { var fun; if (LastType != MenuTypes.none) { fun = LastType.fun; } else return; outlets_clear(); LastArgs = args; fun(args); } do_iterate.local = 1; function bang() { if (LastType != MenuTypes.none) { LastData = undefined; do_iterate(LastArgs); } } function iterate_tracks() { LastArgs = undefined; MenuAPI = new LiveAPIMenu(MenuTypes.track, Root); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_audiotracks() { LastArgs = undefined; MenuAPI = new LiveAPIMenu(MenuTypes.trackaudio, Root); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_miditracks() { LastArgs = undefined; MenuAPI = new LiveAPIMenu(MenuTypes.trackmidi, Root); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_returntracks() { LastArgs = undefined; MenuAPI = new LiveAPIMenu(MenuTypes.trackreturn, Root); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_devices_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.device, "id " + id); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_parameters_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.parameter, "id " + id); if (MenuAPI) { if (MenuAPI.path.match(/mixer_device/)) { MenuAPI.mtype = MenuTypes.mixerparam; // this is a special case } iterate_internal(MenuAPI, observe); } } function iterate_fparameters_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.fparam, "id " + id); if (MenuAPI) { if (MenuAPI.path.match(/mixer_device/)) { MenuAPI.mtype = MenuTypes.mixerparam; // these are all floats, no additional filter necessary } iterate_internal(MenuAPI, observe); } } function iterate_scenes() { LastArgs = undefined; MenuAPI = new LiveAPIMenu(MenuTypes.scene, Root); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_clips_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.clip, "id " + id); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_audioclips_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.clipaudio, "id " + id); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_midiclips_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.clipmidi, "id " + id); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_clipslots_for_id(id) { if (id == 0 || id === undefined) return; LastArgs = arrayfromargs(arguments); MenuAPI = new LiveAPIMenu(MenuTypes.clipslot, "id " + id); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } function iterate_cuepoints() { LastArgs = undefined; MenuAPI = new LiveAPIMenu(MenuTypes.cuepoint, Root); if (MenuAPI) { iterate_internal(MenuAPI, observe); } } ///////////////////////////////// // INTERNAL FUNCTIONS function get_name(api) { var name = api.get("name"); if (name == "" || name == undefined || !name) { name = "unnamed"; } return name; } get_name.local = 1; var thistrack = true; function add_header(api) { if (thistrack == true && (api.mtype === MenuTypes.track || api.mtype === MenuTypes.trackaudio || api.mtype === MenuTypes.trackmidi || api.mtype === MenuTypes.trackreturn)) { // This Track api.path = "this_device canonical_parent"; api.menudata.push({id: api.id, name: "This Track", path: dequote(api.path)}); menu_separator(api); return true; } return false; } add_header.local = 1; function add_footer(api) { var name; var rv = false; if (api.mtype === MenuTypes.track) { if (returns) { // hack var blt = LastType; var ret = new LiveAPIMenu(MenuTypes.trackreturn, Root, false); if (ret) { thistrack = false; iterate_internal_guts(ret, 0); thistrack = true; } if (ret.menudata.length) { menu_separator(api); api.menudata = api.menudata.concat(ret.menudata); } LastType = blt; ret.id = 0; // shut it down rv = true; } if (master) { if (api.menudata.length) { menu_separator(api); } api.path = Root + " master_track"; api.menudata.push({id: api.id, name: api.get("name"), path: Root + " master_track"}); rv = true; } return true; } else if (api.mtype === MenuTypes.device) { if (mixer && api.get("has_audio_output") == 1) { var path = dequote(api.path); if (api.menudata.length) { menu_separator(api); } api.path = path + " mixer_device"; api.menudata.push({id: api.id, name: "Mixer", path: dequote(api.path)}); rv = true; } } return rv; } add_footer.local = 1; function iterate_internal_mixerparam(api, obs) { var target = dequote(api.path); var name; menu_clear(api); var children = api.children; ////// hack to fix ableton broken output for k_epii_PathChildren var re = new RegExp(/.*?canonical_parent (.*?)$/) var m = re.exec(children.join(" ")); if (m) children = m[1].split(" "); // this won't work for quoted terms, though, but it's a hack anyway ////// end hack for (var i = 0; i < children.length; i++) { if (children[i] == "canonical_parent") continue; if (children[i] == "sends") { // have to iterate // hack var blt = LastType; var ret = new LiveAPIMenu(MenuTypes.send, target, false); if (ret) { iterate_internal_guts(ret, 0); for (var j = 0; j < ret.menudata.length; j++) { ret.menudata[j].name = "Send " + ret.menudata[j].name; } api.menudata = api.menudata.concat(ret.menudata); } LastType = blt; ret.id = 0; // shut it down continue; } api.path = target + " " + children[i]; name = (children[i].charAt(0).toUpperCase() + children[i].slice(1)).replace(/_/g, " "); api.menudata.push({id: api.id, name: name, path: target + " " + children[i]}); } menu_output(api); } iterate_internal_mixerparam.local = 1; function iterate_internal_clip(api, obs) { var target = dequote(api.path); var path; menu_clear(api); if (Listener == null) { Listener = new LiveAPI(cb); } if (obs == 1) { Listener.mtype = api.mtype; Listener.property = ""; Listener.path = target; Listener.property = api.mtype.container[0]; } else { if (add_header(api) === true) { api.path = target; } var count = api.getcount(api.mtype.container[0]); //post(count + " " + api.mtype.name + "\n"); for (var i = 0; i < count; i++) { path = target + " " + api.mtype.container[0] + " " + i; api.path = path; if (api.get("has_clip") == 1) { api.path = path + " clip"; if ((api.mtype === MenuTypes.clipaudio && api.get("is_audio_clip") == 1) || (api.mtype === MenuTypes.clipmidi && api.get("is_midi_clip") == 1) || api.mtype === MenuTypes.clip) { var name = get_name(api); api.menudata.push({id: api.id, name: name, path: target + " " + api.mtype.container[0] + " " + i}); } } } api.path = target; add_footer(api); menu_output(api); } } iterate_internal_clip.local = 1; function iterate_internal_guts(api, obs) { var target = dequote(api.path); if (Listener == null) { Listener = new LiveAPI(cb); } if (obs == 1) { Listener.mtype = api.mtype; Listener.property = ""; Listener.path = target; Listener.property = api.mtype.container[0]; return false; } else { if (add_header(api) === true) { api.path = target; } var count = api.getcount(api.mtype.container[0]); //post(count + " " + api.mtype.name + "\n"); for (var i = 0; i < count; i++) { api.path = target + " " + api.mtype.container[0] + " " + i; if (api.mtype.filterfun && api.mtype.filterfun(api) == false) continue; var name = get_name(api); api.menudata.push({id: api.id, name: name, path: target + " " + api.mtype.container[0] + " " + i}); } api.path = target; add_footer(api); } return true; } iterate_internal_guts.local = 1; function iterate_internal(api, obs) { if (api.mtype === MenuTypes.clip || api.mtype === MenuTypes.clipaudio || api.mtype === MenuTypes.clipmidi) { return iterate_internal_clip(api, obs); } else if (api.mtype === MenuTypes.mixerparam) { return iterate_internal_mixerparam(api, obs); } menu_clear(api); if (iterate_internal_guts(api, obs) == true) { menu_output(api); } } iterate_internal.local = 1; function filter_track(api) { if ((api.mtype === MenuTypes.trackaudio && api.get("has_audio_input") == 1) || (api.mtype === MenuTypes.trackmidi && api.get("has_midi_input") == 1) || api.mtype === MenuTypes.track || api.mtype === MenuTypes.trackreturn) { return true; } return false; } filter_track.local = 1; function filter_clipslot(api) { var target = dequote(api.path); var name = parseInt(target.match(/.*?(\d+)$/)[1]) + 1; api.menudata.push({id: api.id, name: name, path: target}) return false; } filter_clipslot.local = 1; // this is an abuse of the filter functionality, but what the hell // we're going to use this to add device chains to the menu, if they exist var DeviceIter = 0; // ugly global variable usage here. function filter_device(api) { var children = api.children; if (!children.join(" ").match(/\s+?chains\s+/)) { return true; // no chains, no problem } var blt = LastType; var target = dequote(api.path); var chains = new RecursiveAPIMenu(MenuTypes.chain, target); if (chains) { api.menudata.push({id: api.id, name: api.get("name"), path: target}); DeviceIter++; iterate_internal_guts(chains, 0); DeviceIter--; if (DeviceIter == 0) { for (var i = 0; i < chains.menudata.length; i++) { var iter = chains.menudata[i].path.match(/\s+?chains\s+/g); var spacing = ""; for (var j = 0; j < iter.length; j++) { spacing += "-"; } if (spacing != "") spacing += " "; chains.menudata[i].name = /*'"' +*/ spacing + chains.menudata[i].name /*+ '"'*/; } } api.menudata = api.menudata.concat(chains.menudata); RecursiveAPIMenuDispose(chains); } LastType = blt; return false; } filter_device.local = 1; function filter_chain(api) { var children = api.children; if (!children.join(" ").match(/\s*?devices\s*?/)) { return true; // no devices, no problem } var blt = LastType; var devs = new RecursiveAPIMenu(MenuTypes.device, dequote(api.path)); if (devs) { var bmx = mixer; mixer = 0; iterate_internal_guts(devs, 0); mixer = bmx; api.menudata = api.menudata.concat(devs.menudata); RecursiveAPIMenuDispose(devs); } LastType = blt; return false; // don't add the chains themselves, just the devices } filter_chain.local = 1; function filter_fparam(api) { if (api.get("is_quantized") == 0) { return true; } return false; } filter_fparam.local = 1; function dequote(string) { return string.replace(/\"/g, ""); } dequote.local = 1; function menu_separator(api) { api.menudata.push({id: null, name: "-", path: ""}); } menu_separator.local = 1; function menu_clear(api) { outlet(0, "clear"); outlet(0, "fontface","italic"); outlet(0, "textcolor", 0.42, 0.45, 0.53, 1.); if (api) { api.menudata.splice(0, api.menudata.length); } //LastData = undefined; } menu_clear.local = 1; function menu_output(api) { for (var i = 0; i < api.menudata.length; i++) { outlet(0, "append", api.menudata[i].name); } } menu_output.local = 1; function menu_checks(api, i) { if (api) { outlet(0, "fontface", "regular"); outlet(0, "textcolor", 0.09, 0.11, 0.14, 1.); outlet(0, "clearchecks"); outlet(0, "checkitem", i); LastData = api.menudata[i]; } } menu_checks.local = 1; function menu_set(api, i) { outlet(0, "set", i); menu_checks(api, i); } menu_set.local = 1; function outlets_clear() { outlet(2, "reset"); //send downstream outlet(1, 0); // we just got cleared, send id 0 } outlets_clear.local = 1; function cb(args) { var a = arrayfromargs(args); if (a[0] === "id") { //post("got id " + a[1] + "\n"); } else { //post("'" + this.mtype.container[0] + "'" + "\n"); //post("'" + a + "'" + "\n"); if (a[0] === this.mtype.container[0]) { // just to be sure var cld = LastData; MenuAPI = new LiveAPIMenu(this.mtype, "id " + this.id); // replace contents if (MenuAPI) { iterate_internal(MenuAPI, 0); } if (cld !== undefined) { for (i = 0; i < MenuAPI.menudata.length; i++) { if (MenuAPI.menudata[i].id == cld.id) { if (MenuAPI.menudata[i].name == "This Track" && MenuAPI.menudata[i].name != cld.name) continue; menu_set(MenuAPI, i); break; } } } } } } cb.local = 1; // these two functions take a path to a clip and convert it into the "other direction" function tracks_to_scenes(inpath, inid) { inpath = dequote(inpath); var re = new RegExp(/(.*?)tracks (\d+) clip_slots (\d+) clip/); var m = re.exec(inpath); if (m == null) { return null; } else { var outpath = m[1] + "scenes " + m[3] + " clip_slots " + m[2] + " clip"; if (inid) { // if we want to be sure that it's there TempAPI.path = outpath; if (TempAPI.id == inid) { return outpath; } } else return outpath; } return null; } tracks_to_scenes.local = 1; function scenes_to_tracks(inpath, inid) { inpath = dequote(inpath); var re = new RegExp(/(.*?)scenes (\d+) clip_slots (\d+) clip/); var m = re.exec(inpath); if (m == null) { return null; } else { var outpath = m[1] + "tracks " + m[3] + " clip_slots " + m[2] + " clip"; if (inid) { // if we want to be sure that it's there TempAPI.path = outpath; if (TempAPI.id == inid) { return outpath; } } else return outpath; } return null; } scenes_to_tracks.local = 1; var GlobalAPIMenu = new LiveAPI(); // uninitialized GlobalAPIMenu.menudata = new Array(); var TempAPIMenu = new LiveAPI(); // uninitialized TempAPIMenu.menudata = new Array(); var TempRecursiveAPIMenu = new Array(); // don't populate unless needed var TempRecursiveAPIMenuLevel = 0; function RecursiveAPIMenu(type, path) { var api; // get the next item in the recursive array if (TempRecursiveAPIMenuLevel < TempRecursiveAPIMenu.length) { api = TempRecursiveAPIMenu[TempRecursiveAPIMenuLevel]; } else { api = new LiveAPI(); api.menudata = new Array(); TempRecursiveAPIMenu[TempRecursiveAPIMenuLevel] = api; } TempRecursiveAPIMenuLevel++; if (api) { // check for an "id" path -- we can't use it directly var id = /^id (\d+)$/.exec(path); if (id) { api.id = parseInt(id[1]); } else { api.path = path; } api.mtype = type; LastType = type; api.menudata.splice(0, api.menudata.length); } return api; } function RecursiveAPIMenuDispose(api) { if (TempRecursiveAPIMenuLevel <= 0) return; if (TempRecursiveAPIMenu[TempRecursiveAPIMenuLevel-1] == api) { api.id = 0; api.menudata.splice(0, api.menudata.length); TempRecursiveAPIMenuLevel--; } } function LiveAPIMenu(type, path, global) { var api; if (global == true || global === undefined) { api = GlobalAPIMenu; } else { api = TempAPIMenu; } if (api) { // check for an "id" path -- we can't use it directly var id = /^id (\d+)$/.exec(path); if (id) { api.id = parseInt(id[1]); } else { api.path = path; } api.mtype = type; LastType = type; api.menudata.splice(0, api.menudata.length); } return api; } dlst8direhtype JSONfnamkontrol.amxdsz32 ]of32 vers flag mdat D]diretype JSONfnam0M4L.api.DeviceParameterRemote.maxpatsz32 Fof32 ]vers flag mdat Ɍ/direttype JSONfnam$M4L.api.SaveLivePath.maxpatsz32 of32 vers flag mdat Ɍ/direltype JSONfnamM4L.Chooser.maxpatsz32 5of32 ďvers flag mdat @Ndirehtype TEXTfnamM4L.chooser.jssz32 bof32 fvers flag mdat ɯ