diff --git a/docs/tc.preset.maxref.xml b/docs/tc.preset.maxref.xml index 22cf152..7ae5a17 100644 --- a/docs/tc.preset.maxref.xml +++ b/docs/tc.preset.maxref.xml @@ -185,6 +185,11 @@ When set to 1, the jsui will display the ongoing interpolation between presets when a recall message with three arguments or a recallmulti message with at least one argument are sent to the linked pattrstorage. Notice that the recallmutli message needs to be sent both the pattrstorage and the jsui. + + Drag Mode + Sets the behavior of click+drag interactions. 0 disables them, 1 (default) allows to move presets around, while 2 interpolates through presets, according to interp_mode. You can temporarily switch between modes 1 and 2 by holding option/alt. + + Edited Dot Color Defines the color of the dot shown on top of a slot when the corresponding preset is edited. See poll_edited attribute. @@ -193,6 +198,17 @@ Empty slot color Sets the empty slot color of the object in RGBA format + + Interpolation mode + Defines the interpolation behavior occuring when click+dragging while drag_mode is set to 2. If 0 (disabled), nothing happens. If 1 (in-line interp), interpolation happens across adjacent presets, even if separated by empty slots. In mode 2 (multi interp), presets are interpolated using recallmulti pattrstorage feature. The closest a preset is from the mouse cursor, the more it will be weighted, according to a gaussian distribution. See interp_multi_radius to change the way distance from mouse affects the weight. + If recall_passthrough is disabled, recall and recallmulti messages generated by dragging interactions are sent to tc.preset leftmost outlet only, letting the user to trigger custom logic before potentially re-routing them toward pattrstorage (recall) or both pattrstorage and tc.preset (recallmulti). + + + + Interp_multi Radius + Defines how distance between a preset and the mouse affects the weight of that preset when interpolating using interp_mode 2. A value of 3 means that all filled preset slots closer than roughly 3 slots in the presets grid will be part of the generated recallmulti message. + + How presets are displayed When set to 0, the jsui mimics the default preset object: slots are displayed in a grid. When set to 1, they are displayed as a vertical list, with the preset slots on the left and their name on the right. @@ -227,7 +243,7 @@ Send recall messages to pattrstorage directly - When enabled (default) recall messages triggered by clicking filled slots in tc.preset are sent directly to [pattrstorage]. When disabled, these recall messages are sent out of [tc.preset] left outlet and it's up to the user to pass them to [pattrstorage]. It can be usefull for triggering interpolations with custom logic. + When enabled (default) recall messages triggered by clicking filled slots in tc.preset, or recall and recallmulti messages resulting from a dragging interaction with drag_mode set to 2, are sent directly to [pattrstorage]. When disabled, these recall/recallmulti messages are sent out of tc.prese] left outlet and it's up to the user to pass them to [pattrstorage]. Scroll through your presets diff --git a/help/max8.tc.preset.maxhelp b/help/max8.tc.preset.maxhelp index e5a5ea5..e2689ed 100644 --- a/help/max8.tc.preset.maxhelp +++ b/help/max8.tc.preset.maxhelp @@ -10,7 +10,7 @@ } , "classnamespace" : "box", - "rect" : [ 344.0, 246.0, 899.0, 646.0 ], + "rect" : [ 344.0, 246.0, 904.0, 646.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -42,6 +42,410 @@ "assistshowspatchername" : 0, "integercoordinates" : 1, "boxes" : [ { + "box" : { + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 0, + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 8, + "minor" : 6, + "revision" : 5, + "architecture" : "x64", + "modernui" : 1 + } +, + "classnamespace" : "box", + "rect" : [ 344.0, 272.0, 904.0, 620.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "showontab" : 1, + "assistshowspatchername" : 0, + "integercoordinates" : 1, + "boxes" : [ { + "box" : { + "bubble" : 1, + "bubblepoint" : 0.0, + "id" : "obj-16", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 203.0, 499.0, 207.0, 37.0 ], + "text" : "Click and drag around to recall multiple presets with interpolation!" + } + + } +, { + "box" : { + "hidden" : 1, + "id" : "obj-15", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 186.0, 180.0, 89.0, 22.0 ], + "text" : "loadmess set 2" + } + + } +, { + "box" : { + "hidden" : 1, + "id" : "obj-13", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 44.0, 70.0, 89.0, 22.0 ], + "text" : "loadmess set 2" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "tab", + "mode" : 1, + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "int", "", "" ], + "parameter_enable" : 0, + "patching_rect" : [ 44.0, 98.0, 180.0, 24.0 ], + "tabs" : [ "off", "move", "interpolate" ] + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "tab", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "int", "", "" ], + "parameter_enable" : 0, + "patching_rect" : [ 186.0, 209.0, 150.0, 26.0 ], + "tabs" : [ "off", "in-line", "multi" ] + } + + } +, { + "box" : { + "id" : "obj-14", + "linecount" : 9, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 545.0, 367.0, 274.0, 127.0 ], + "text" : "If recall_passthrough is disabled, the recall/recallmulti messages are output from tc.preset leftmost outlet without triggering any recall. This allows to trigger custom logic before the interpolation happens.\nSimple recall messages can then be re-routed directly to pattrstorage, while recallmulti messages (happening with interp_mode 2) have to be routed to both pattrstorage and tc.preset." + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-12", + "linecount" : 6, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 338.0, 174.0, 463.0, 91.0 ], + "text" : "interp_mode defines the way interpolation through dragging behaves:\nIn mode 0, interpolating by dragging is disabled\nIn mode 1, interpolation happens across adjacent presets\nIn mode 2, interpolation happens with any filled preset around the mouse. Presets are weighted by a gaussian distribution of their distance from the mouse cursor. You can select the \"range\" of interpolated presets by changing interp_multi_radius" + } + + } +, { + "box" : { + "bubble" : 1, + "id" : "obj-11", + "linecount" : 6, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 229.0, 65.0, 485.0, 91.0 ], + "text" : "With drag_mode you can chose the behavior of a click+drag on a filled slot:\n0: Nothing happens\n1: Move preset (default)\n2: Interpolate through presets, according to interp_mode\n\nWhen mode 1 is selected, you can hold option|alt to access mode 2, and vice versa." + } + + } +, { + "box" : { + "dontreplace" : 1, + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 10.0, 514.0, 107.0, 22.0 ] + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "" ], + "patching_rect" : [ 286.0, 378.0, 40.0, 22.0 ], + "restore" : [ -0.491674737222271, -0.13386532069175, -0.202102600162062, 0.112940503294379, 0.61887056400379, 0.375818456094497, 0.691588247313825, 0.526121526460706, 0.431649499259424, -0.09358295094112, -0.001737060618565, -0.460217681717535, -0.458843066739609, -0.561134533604532, -0.46144612532222, -0.206967618908832 ], + "saved_object_attributes" : { + "parameter_enable" : 0, + "parameter_mappable" : 0 + } +, + "text" : "pattr", + "varname" : "u099005226" + } + + } +, { + "box" : { + "id" : "obj-34", + "maxclass" : "multislider", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "" ], + "parameter_enable" : 0, + "patching_rect" : [ 297.0, 405.0, 136.0, 78.0 ], + "size" : 16, + "varname" : "multislider" + } + + } +, { + "box" : { + "border" : 0, + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "interp_mode", 2 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 0 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "ui_rename", 0 ], [ "interp_multi_radius", 2 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 32 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 2 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 1 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], + "filename" : "tc.preset.js", + "id" : "obj-10", + "maxclass" : "jsui", + "numinlets" : 1, + "numoutlets" : 5, + "outlettype" : [ "", "", "", "", "" ], + "parameter_enable" : 0, + "patching_rect" : [ 10.0, 378.0, 257.0, 112.0 ] + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 10.0, 342.0, 229.0, 22.0 ], + "saved_object_attributes" : { + "client_rect" : [ 100, 172, 596, 755 ], + "parameter_enable" : 0, + "parameter_mappable" : 0, + "storage_rect" : [ 365, 44, 816, 172 ] + } +, + "text" : "pattrstorage tcpreset_help @savemode 0", + "varname" : "tcpreset_help" + } + + } +, { + "box" : { + "border" : 0, + "filename" : "helpname.js", + "id" : "obj-4", + "ignoreclick" : 1, + "jsarguments" : [ "tc.preset" ], + "maxclass" : "jsui", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 0, + "patching_rect" : [ 10.0, 10.0, 188.288009643554688, 57.599853515625 ] + } + + } +, { + "box" : { + "attr" : "interp_mode", + "id" : "obj-5", + "lock" : 1, + "maxclass" : "attrui", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 0, + "patching_rect" : [ 186.0, 242.0, 116.0, 22.0 ], + "text_width" : 87.0 + } + + } +, { + "box" : { + "attr" : "interp_multi_radius", + "id" : "obj-6", + "lock" : 1, + "maxclass" : "attrui", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 0, + "patching_rect" : [ 630.0, 267.0, 171.0, 22.0 ], + "text_width" : 121.0 + } + + } +, { + "box" : { + "attr" : "drag_mode", + "id" : "obj-7", + "lock" : 1, + "maxclass" : "attrui", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 0, + "patching_rect" : [ 44.0, 130.0, 113.0, 22.0 ], + "text_width" : 81.0 + } + + } +, { + "box" : { + "attr" : "recall_passthrough", + "id" : "obj-2", + "lock" : 1, + "maxclass" : "attrui", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "parameter_enable" : 0, + "patching_rect" : [ 545.0, 342.0, 150.0, 22.0 ], + "text_width" : 118.0 + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 1 ], + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-9", 0 ], + "hidden" : 1, + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "hidden" : 1, + "source" : [ "obj-15", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "source" : [ "obj-38", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-6", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "source" : [ "obj-9", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 462.0, 27.0, 84.0, 22.0 ], + "saved_object_attributes" : { + "description" : "", + "digest" : "", + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p interpolation", + "varname" : "behavior[1]" + } + + } +, { "box" : { "id" : "obj-19", "maxclass" : "newobj", @@ -58,7 +462,7 @@ } , "classnamespace" : "box", - "rect" : [ 0.0, 26.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -92,7 +496,7 @@ "lines" : [ ] } , - "patching_rect" : [ 756.0, 25.7999267578125, 50.0, 22.0 ], + "patching_rect" : [ 816.0, 27.0, 50.0, 22.0 ], "saved_object_attributes" : { "description" : "", "digest" : "", @@ -139,7 +543,7 @@ } , "classnamespace" : "box", - "rect" : [ 0.0, 26.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -666,7 +1070,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 0 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 0 ], [ "margin", 4 ], [ "ui_rename", 0 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "color_mode", 0 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 0 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", @@ -952,7 +1356,7 @@ } , "classnamespace" : "box", - "rect" : [ 344.0, 272.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -1520,7 +1924,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 0 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 0 ], [ "margin", 4 ], [ "ui_rename", 1 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 1 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "color_mode", 0 ], [ "click_mode", 1 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 1 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 1 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 0 ], [ "margin", 4 ], [ "click_mode", 1 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", @@ -1575,7 +1979,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 10.0, 101.0, 250.0, 87.0 ], + "patching_rect" : [ 10.0, 101.0, 254.0, 87.0 ], "text" : "Click mode sets the behavior of single clicks. In Select mode, a single click selects a stored preset without recalling it. A double click recalls the preset. It allows to drag it, set its name and lock state while keeping the last recalled preset active." } @@ -1913,7 +2317,7 @@ } , "classnamespace" : "box", - "rect" : [ 0.0, 26.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -2043,7 +2447,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 1 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 1 ], [ "margin", 4 ], [ "ui_rename", 1 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "mypat" ], [ "color_mode", 0 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "mypat" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 1 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 1 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 1 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", @@ -2185,7 +2589,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 0 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 0 ], [ "margin", 4 ], [ "ui_rename", 0 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "mypat" ], [ "color_mode", 0 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "mypat" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 0 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-2", "maxclass" : "jsui", @@ -2820,7 +3224,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 0 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 0 ], [ "margin", 4 ], [ "ui_rename", 1 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "mypat" ], [ "color_mode", 0 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "mypat" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 1 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 0 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", @@ -2929,7 +3333,7 @@ "lines" : [ ] } , - "patching_rect" : [ 687.0, 25.7999267578125, 63.0, 22.0 ], + "patching_rect" : [ 749.0, 27.0, 63.0, 22.0 ], "saved_object_attributes" : { "description" : "", "digest" : "", @@ -2959,7 +3363,7 @@ } , "classnamespace" : "box", - "rect" : [ 0.0, 26.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -3119,7 +3523,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 1 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 1 ], [ "margin", 4 ], [ "ui_rename", 0 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "color_mode", 0 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 0 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 1 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 1 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", @@ -3414,7 +3818,7 @@ ] } , - "patching_rect" : [ 468.0, 26.7999267578125, 82.0, 22.0 ], + "patching_rect" : [ 551.0, 27.0, 82.0, 22.0 ], "saved_object_attributes" : { "description" : "", "digest" : "", @@ -3444,7 +3848,7 @@ } , "classnamespace" : "box", - "rect" : [ 0.0, 26.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -5085,7 +5489,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 0 ], [ "use_uid", 1 ], [ "timestamp", 1 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 0 ], [ "margin", 4 ], [ "ui_rename", 0 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "colors" ], [ "color_mode", 1 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "colors" ], [ "interp_mode", 1 ], [ "timestamp", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 0 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 1 ], [ "bubblesize", 14 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", @@ -5288,7 +5692,7 @@ ] } , - "patching_rect" : [ 567.0, 26.7999267578125, 112.0, 22.0 ], + "patching_rect" : [ 635.0, 27.0, 112.0, 22.0 ], "saved_object_attributes" : { "description" : "", "digest" : "", @@ -5318,7 +5722,7 @@ } , "classnamespace" : "box", - "rect" : [ 0.0, 26.0, 899.0, 620.0 ], + "rect" : [ 0.0, 26.0, 904.0, 620.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 13.0, @@ -5539,7 +5943,7 @@ , { "box" : { "border" : 0, - "embedstate" : [ [ "spacing", 4 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "recall_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "min_rows", 10 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "nbslot_edit", 1 ], [ "send_name", "none" ], [ "layout", 0 ], [ "use_uid", 0 ], [ "timestamp", 0 ], [ "autoname", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "scrollable", 0 ], [ "margin", 4 ], [ "ui_rename", 0 ], [ "fontsize", 13 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "bubblesize", 14 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "display_interp", 1 ], [ "poll_edited", 0 ], [ "slot_round", 0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "color_mode", 0 ], [ "click_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "menu_mode", 0 ], [ "select_mode", 0 ], [ "ignoreslotzero", 1 ], [ "unique_names", 0 ], [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "autowriteagain", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ], + "embedstate" : [ [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], [ "fontname", "Arial" ], [ "pattrstorage", "tcpreset_help" ], [ "interp_mode", 1 ], [ "timestamp", 0 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "menu_mode", 0 ], [ "ignoreslotzero", 1 ], [ "autoname", 0 ], [ "select_mode", 0 ], [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], [ "poll_edited", 0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "spacing", 4 ], [ "unique_names", 0 ], [ "display_interp", 1 ], [ "slot_round", 0 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], [ "ui_rename", 0 ], [ "interp_multi_radius", 1.5 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "send_name", "none" ], [ "use_uid", 0 ], [ "bubblesize", 14 ], [ "scrollable", 0 ], [ "store_passthrough", 1 ], [ "drag_mode", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "recall_passthrough", 1 ], [ "margin", 4 ], [ "click_mode", 0 ], [ "min_rows", 10 ], [ "color_mode", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "fontsize", 13 ], [ "nbslot_edit", 1 ], [ "layout", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "autowriteagain", 0 ] ], "filename" : "tc.preset.js", "id" : "obj-10", "maxclass" : "jsui", diff --git a/help/max9.tc.preset.maxhelp b/help/max9.tc.preset.maxhelp index 96276d7..4d3dcac 100644 --- a/help/max9.tc.preset.maxhelp +++ b/help/max9.tc.preset.maxhelp @@ -3,17 +3,335 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 322.0, 100.0, 900.0, 648.0 ], + "rect": [ 239.0, 100.0, 902.0, 650.0 ], "showrootpatcherontab": 0, "showontab": 0, "integercoordinates": 1, "boxes": [ + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 0, + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 239.0, 126.0, 902.0, 624.0 ], + "showontab": 1, + "integercoordinates": 1, + "boxes": [ + { + "box": { + "bubble": 1, + "bubblepoint": 0.0, + "id": "obj-9", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 203.0, 499.0, 207.0, 37.0 ], + "text": "Click and drag around to recall multiple presets with interpolation!" + } + }, + { + "box": { + "id": "obj-14", + "linecount": 9, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 587.0, 346.0, 274.0, 127.0 ], + "text": "If recall_passthrough is disabled, the recall/recallmulti messages are output from tc.preset leftmost outlet without triggering any recall. This allows to trigger custom logic before the interpolation happens.\nSimple recall messages can then be re-routed directly to pattrstorage, while recallmulti messages (happening with interp_mode 2) have to be routed to both pattrstorage and tc.preset." + } + }, + { + "box": { + "id": "obj-12", + "linecount": 6, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 198.0, 230.0, 346.0, 87.0 ], + "text": "In mode 0, interpolating by dragging is disabled\nIn mode 1, interpolation happens across adjacent presets\nIn mode 2, interpolation happens with any filled preset around the mouse. Presets are weighted by a gaussian distribution of their distance from the mouse cursor. You can select the \"range\" of interpolated presets by changing interp_multi_radius" + } + }, + { + "box": { + "id": "obj-11", + "linecount": 6, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 88.0, 102.0, 456.0, 87.0 ], + "text": "You can chose the behavior of a click+drag on a filled slot:\n0: Nothing happens\n1: Move preset (default)\n2: Interpolate through presets, according to interp_mode\n\nWhen mode 1 is selected, you can hold option|alt to access mode 2, and vice versa." + } + }, + { + "box": { + "dontreplace": 1, + "id": "obj-3", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 10.0, 514.0, 107.0, 22.0 ] + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ "", "", "" ], + "patching_rect": [ 286.0, 378.0, 40.0, 22.0 ], + "restore": [ -0.714285714285714, -0.714285714285714, -0.6, -0.542857142857143, -0.457142857142857, -0.342857142857143, -0.171428571428571, -0.028571428571429, 0.028571428571428, 0.142857142857143, 0.228571428571429, 0.371428571428571, 0.485714285714286, 0.571428571428571, 0.714285714285714, 0.8 ], + "saved_object_attributes": { + "parameter_enable": 0, + "parameter_mappable": 0 + }, + "text": "pattr", + "varname": "u099005226" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "multislider", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "parameter_enable": 0, + "patching_rect": [ 297.0, 405.0, 136.0, 78.0 ], + "size": 16, + "varname": "multislider" + } + }, + { + "box": { + "border": 0, + "embed": 0, + "embedstate": [ + [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], + [ "autoname", 0 ], + [ "autowriteagain", 0 ], + [ "bgcolor", 0.125, 0.125, 0.125, 1 ], + [ "bubblesize", 32 ], + [ "click_mode", 1 ], + [ "color_1", 0.743, 0.41, 0.501, 1 ], + [ "color_2", 0.679, 0.405, 0.669, 1 ], + [ "color_3", 0.527, 0.459, 0.756, 1 ], + [ "color_4", 0.367, 0.542, 0.712, 1 ], + [ "color_5", 0.283, 0.606, 0.559, 1 ], + [ "color_6", 0.316, 0.616, 0.377, 1 ], + [ "color_mode", 0 ], + [ "display_interp", 1 ], + [ "drag_mode", 2 ], + [ "edited_color", 1, 0.49, 0.263, 1 ], + [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], + [ "fontname", "Arial" ], + [ "fontsize", 13 ], + [ "ignoreslotzero", 0 ], + [ "interp_mode", 2 ], + [ "interp_multi_radius", 2 ], + [ "interp_slot_color", 1, 1, 1, 0.8 ], + [ "layout", 0 ], + [ "margin", 4 ], + [ "menu_mode", 0 ], + [ "min_rows", 10 ], + [ "nbslot_edit", 1 ], + [ "pattrstorage", "tcpreset_help" ], + [ "poll_edited", 0 ], + [ "recall_passthrough", 1 ], + [ "scrollable", 0 ], + [ "select_mode", 0 ], + [ "send_name", "none" ], + [ "slot_round", 0 ], + [ "spacing", 4 ], + [ "store_passthrough", 1 ], + [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], + [ "text_color", 0.85, 0.85, 0.85, 1 ], + [ "timestamp", 0 ], + [ "ui_rename", 0 ], + [ "unique_names", 0 ], + [ "use_uid", 0 ] + ], + "filename": "tc.preset.js", + "id": "obj-10", + "maxclass": "v8ui", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ "", "", "", "", "" ], + "parameter_enable": 0, + "patching_rect": [ 10.0, 378.0, 257.0, 112.0 ], + "textfile": { + "filename": "tc.preset.js", + "flags": 0, + "embed": 0, + "autowatch": 0 + } + } + }, + { + "box": { + "id": "obj-1", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 10.0, 342.0, 229.0, 22.0 ], + "saved_object_attributes": { + "client_rect": [ 100, 172, 596, 755 ], + "parameter_enable": 0, + "parameter_mappable": 0, + "storage_rect": [ 365, 44, 816, 172 ] + }, + "text": "pattrstorage tcpreset_help @savemode 0", + "varname": "tcpreset_help" + } + }, + { + "box": { + "border": 0, + "embed": 0, + "filename": "helpname.js", + "id": "obj-4", + "ignoreclick": 1, + "jsarguments": [ "tc.preset" ], + "maxclass": "v8ui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 10.0, 10.0, 188.2880096435547, 57.599853515625 ], + "textfile": { + "filename": "helpname.js", + "flags": 0, + "embed": 0, + "autowatch": 1 + } + } + }, + { + "box": { + "attr": "interp_mode", + "id": "obj-5", + "lock": 1, + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 184.0, 206.0, 203.0, 22.0 ], + "text_width": 87.0 + } + }, + { + "box": { + "attr": "interp_multi_radius", + "id": "obj-6", + "lock": 1, + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 373.0, 321.0, 171.0, 22.0 ], + "text_width": 121.0 + } + }, + { + "box": { + "attr": "drag_mode", + "id": "obj-7", + "lock": 1, + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 74.0, 78.0, 174.0, 22.0 ], + "text_width": 81.0 + } + }, + { + "box": { + "attr": "recall_passthrough", + "id": "obj-2", + "lock": 1, + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 587.0, 321.0, 150.0, 22.0 ] + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-10", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 1 ], + "source": [ "obj-10", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-10", 0 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-34", 0 ], + "source": [ "obj-38", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-10", 0 ], + "source": [ "obj-5", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-10", 0 ], + "source": [ "obj-6", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-10", 0 ], + "source": [ "obj-7", 0 ] + } + } + ] + }, + "patching_rect": [ 433.0, 28.0, 84.0, 22.0 ], + "text": "p interpolation", + "varname": "behavior[1]" + } + }, { "box": { "id": "obj-1", @@ -24,13 +342,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [ @@ -70,6 +388,7 @@ { "box": { "border": 0, + "embed": 0, "filename": "helpname.js", "id": "obj-8", "ignoreclick": 1, @@ -120,8 +439,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -143,6 +462,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -158,11 +478,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -177,6 +500,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -265,8 +589,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -277,6 +601,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -292,11 +617,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -311,6 +639,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -387,8 +716,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -400,45 +729,49 @@ "box": { "border": 0, "embedstate": [ - [ "slot_round", 0 ], - [ "click_mode", 0 ], - [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], - [ "ignoreslotzero", 1 ], - [ "edited_color", 1, 0.49, 0.263, 1 ], - [ "select_mode", 0 ], - [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], - [ "color_1", 0.743, 0.41, 0.501, 1 ], - [ "ui_rename", 0 ], - [ "color_6", 0.316, 0.616, 0.377, 1 ], - [ "timestamp", 0 ], - [ "layout", 0 ], - [ "spacing", 4 ], - [ "display_interp", 1 ], - [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], - [ "min_rows", 10 ], - [ "use_uid", 0 ], [ "poll_edited", 0 ], - [ "unique_names", 0 ], - [ "recall_passthrough", 1 ], - [ "text_color", 0.85, 0.85, 0.85, 1.0 ], - [ "autowriteagain", 0 ], - [ "color_5", 0.283, 0.606, 0.559, 1 ], - [ "bubblesize", 14 ], - [ "nbslot_edit", 1 ], - [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], - [ "color_2", 0.679, 0.405, 0.669, 1 ], - [ "scrollable", 0 ], [ "margin", 4 ], - [ "menu_mode", 0 ], - [ "color_mode", 0 ], + [ "min_rows", 10 ], + [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "fontsize", 13 ], - [ "send_name", "none" ], - [ "interp_slot_color", 1, 1, 1, 0.8 ], + [ "unique_names", 0 ], + [ "select_mode", 0 ], + [ "use_uid", 0 ], + [ "store_passthrough", 1 ], + [ "ignoreslotzero", 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "fontname", "Arial" ], + [ "edited_color", 1, 0.49, 0.263, 1 ], [ "pattrstorage", "mypat" ], - [ "autoname", 0 ] + [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], + [ "autoname", 0 ], + [ "bubblesize", 14 ], + [ "drag_mode", 1 ], + [ "timestamp", 0 ], + [ "color_mode", 0 ], + [ "color_5", 0.283, 0.606, 0.559, 1 ], + [ "slot_round", 0 ], + [ "nbslot_edit", 1 ], + [ "menu_mode", 0 ], + [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], + [ "color_1", 0.743, 0.41, 0.501, 1 ], + [ "spacing", 4 ], + [ "recall_passthrough", 1 ], + [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], + [ "color_6", 0.316, 0.616, 0.377, 1 ], + [ "interp_mode", 1 ], + [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], + [ "click_mode", 0 ], + [ "layout", 0 ], + [ "color_2", 0.679, 0.405, 0.669, 1 ], + [ "display_interp", 1 ], + [ "ui_rename", 0 ], + [ "scrollable", 0 ], + [ "interp_slot_color", 1, 1, 1, 0.8 ], + [ "send_name", "none" ], + [ "interp_multi_radius", 1.5 ], + [ "autowriteagain", 0 ] ], "filename": "tc.preset", "id": "obj-1", @@ -519,7 +852,7 @@ ], "lines": [] }, - "patching_rect": [ 632.0, 27.7999267578125, 85.0, 22.0 ], + "patching_rect": [ 717.0, 28.0, 85.0, 22.0 ], "text": "p compatibility", "varname": "compatibility" } @@ -563,19 +896,19 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [], "lines": [] }, - "patching_rect": [ 838.0, 28.7999267578125, 50.0, 22.0 ], + "patching_rect": [ 923.0, 29.0, 50.0, 22.0 ], "text": "p ?", "varname": "q_tab" } @@ -605,13 +938,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [ @@ -1056,6 +1389,7 @@ { "box": { "border": 0, + "embed": 0, "filename": "helpname.js", "id": "obj-4", "ignoreclick": 1, @@ -1077,6 +1411,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -1092,11 +1427,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -1111,6 +1449,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -1360,13 +1699,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 322.0, 126.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [ @@ -1405,8 +1744,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -1750,6 +2089,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -1765,11 +2105,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -1784,6 +2127,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -1828,6 +2172,7 @@ { "box": { "border": 0, + "embed": 0, "filename": "helpname.js", "id": "obj-4", "ignoreclick": 1, @@ -1853,7 +2198,7 @@ "maxclass": "comment", "numinlets": 1, "numoutlets": 0, - "patching_rect": [ 10.0, 101.0, 253.0, 87.0 ], + "patching_rect": [ 10.0, 101.0, 254.0, 87.0 ], "text": "Click mode sets the behavior of single clicks. In Select mode, a single click selects a stored preset without recalling it. A double click recalls the preset. It allows to drag it, set its name and lock state while keeping the last recalled preset active." } }, @@ -2139,13 +2484,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [ @@ -2169,8 +2514,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -2193,45 +2538,49 @@ "box": { "border": 0, "embedstate": [ - [ "slot_round", 0 ], - [ "click_mode", 0 ], - [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], - [ "ignoreslotzero", 1 ], - [ "edited_color", 1, 0.49, 0.263, 1 ], - [ "select_mode", 0 ], - [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], - [ "color_1", 0.743, 0.41, 0.501, 1 ], - [ "ui_rename", 0 ], - [ "color_6", 0.316, 0.616, 0.377, 1 ], - [ "timestamp", 0 ], - [ "layout", 0 ], - [ "spacing", 4 ], - [ "display_interp", 1 ], - [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], - [ "min_rows", 10 ], - [ "use_uid", 0 ], [ "poll_edited", 0 ], - [ "unique_names", 0 ], - [ "recall_passthrough", 1 ], - [ "text_color", 0.85, 0.85, 0.85, 1.0 ], - [ "autowriteagain", 0 ], - [ "color_5", 0.283, 0.606, 0.559, 1 ], - [ "bubblesize", 14 ], - [ "nbslot_edit", 1 ], - [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], - [ "color_2", 0.679, 0.405, 0.669, 1 ], - [ "scrollable", 0 ], [ "margin", 4 ], - [ "menu_mode", 0 ], - [ "color_mode", 0 ], + [ "min_rows", 10 ], + [ "text_color", 0.85, 0.85, 0.85, 1.0 ], [ "fontsize", 13 ], - [ "send_name", "none" ], - [ "interp_slot_color", 1, 1, 1, 0.8 ], + [ "unique_names", 0 ], + [ "select_mode", 0 ], + [ "use_uid", 0 ], + [ "store_passthrough", 1 ], + [ "ignoreslotzero", 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "fontname", "Arial" ], + [ "edited_color", 1, 0.49, 0.263, 1 ], [ "pattrstorage", "mypat" ], - [ "autoname", 0 ] + [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1.0 ], + [ "autoname", 0 ], + [ "bubblesize", 14 ], + [ "drag_mode", 1 ], + [ "timestamp", 0 ], + [ "color_mode", 0 ], + [ "color_5", 0.283, 0.606, 0.559, 1 ], + [ "slot_round", 0 ], + [ "nbslot_edit", 1 ], + [ "menu_mode", 0 ], + [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1.0 ], + [ "color_1", 0.743, 0.41, 0.501, 1 ], + [ "spacing", 4 ], + [ "recall_passthrough", 1 ], + [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1.0 ], + [ "color_6", 0.316, 0.616, 0.377, 1 ], + [ "interp_mode", 1 ], + [ "bgcolor", 0.125, 0.125, 0.125, 1.0 ], + [ "click_mode", 0 ], + [ "layout", 0 ], + [ "color_2", 0.679, 0.405, 0.669, 1 ], + [ "display_interp", 1 ], + [ "ui_rename", 0 ], + [ "scrollable", 0 ], + [ "interp_slot_color", 1, 1, 1, 0.8 ], + [ "send_name", "none" ], + [ "interp_multi_radius", 1.5 ], + [ "autowriteagain", 0 ] ], "filename": "tc.preset", "id": "obj-1", @@ -2352,8 +2701,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -2402,6 +2751,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -2417,11 +2767,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 1 ], [ "margin", 4 ], @@ -2436,6 +2789,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -2530,8 +2884,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -2542,6 +2896,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -2557,11 +2912,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -2576,6 +2934,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -2793,8 +3152,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -2837,8 +3196,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -3104,6 +3463,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -3119,11 +3479,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -3138,6 +3501,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -3246,7 +3610,7 @@ ], "lines": [] }, - "patching_rect": [ 719.0, 27.7999267578125, 63.0, 22.0 ], + "patching_rect": [ 804.0, 28.0, 63.0, 22.0 ], "text": "p snippets", "varname": "snippet" } @@ -3261,13 +3625,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [ @@ -3367,6 +3731,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -3382,11 +3747,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 1 ], [ "margin", 4 ], @@ -3401,6 +3769,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], @@ -3445,6 +3814,7 @@ { "box": { "border": 0, + "embed": 0, "filename": "helpname.js", "id": "obj-4", "ignoreclick": 1, @@ -3672,7 +4042,7 @@ } ] }, - "patching_rect": [ 434.0, 27.7999267578125, 82.0, 22.0 ], + "patching_rect": [ 519.0, 28.0, 82.0, 22.0 ], "text": "p appearance", "varname": "appearance" } @@ -3687,13 +4057,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "showontab": 1, "integercoordinates": 1, "boxes": [ @@ -3828,8 +4198,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -3881,8 +4251,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -4275,8 +4645,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -4588,8 +4958,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -4763,8 +5133,8 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, @@ -4987,6 +5357,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -5002,11 +5373,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 1 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -5021,6 +5395,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 1 ], @@ -5202,7 +5577,7 @@ } ] }, - "patching_rect": [ 518.0, 27.7999267578125, 112.0, 22.0 ], + "patching_rect": [ 603.0, 28.0, 112.0, 22.0 ], "text": "p \"slot colors & uid\"", "varname": "slot colors" } @@ -5217,13 +5592,13 @@ "fileversion": 1, "appversion": { "major": 9, - "minor": 1, - "revision": 4, + "minor": 2, + "revision": 0, "architecture": "x64", "modernui": 1 }, "classnamespace": "box", - "rect": [ 0.0, 26.0, 900.0, 622.0 ], + "rect": [ 0.0, 26.0, 902.0, 624.0 ], "default_fontsize": 13.0, "gridsize": [ 5.0, 5.0 ], "showontab": 1, @@ -5323,12 +5698,12 @@ "box": { "bubble": 1, "id": "obj-24", - "linecount": 10, + "linecount": 12, "maxclass": "comment", "numinlets": 1, "numoutlets": 0, - "patching_rect": [ 511.0, 305.0, 368.0, 156.0 ], - "text": "tc.preset handles the same user interactions as the regular preset object, plus a few useful ones:\n\n- RECALL (or SELECT if select_mode enabled): click\n- STORE: shift+click\n- DELETE: shift-(option|alt)-click\n- LOCK/UNLOCK: shift+control+click\n- RENAME: control+click (requires a [textedit] connected to third outlet)\n- MOVE: click and drag presets to reorganize them" + "patching_rect": [ 511.0, 289.0, 368.0, 185.0 ], + "text": "tc.preset handles the same user interactions as the regular preset object, plus a few useful ones:\n\n- RECALL (or SELECT if select_mode enabled): click\n- STORE: shift+click\n- DELETE: shift-(option|alt)-click\n- LOCK/UNLOCK: shift+control+click\n- RENAME: control+click (requires a [textedit] connected to third outlet)\n- MOVE: click and drag presets to reorganize them\n- INTERPOLATE: (option|alt)+drag. See drag_mode and interp_mode for different behavior" } }, { @@ -5384,6 +5759,7 @@ { "box": { "border": 0, + "embed": 0, "embedstate": [ [ "active_slot_color", 0.618934978328545, 0.744701397656435, 0.953750108255376, 1 ], [ "autoname", 0 ], @@ -5399,11 +5775,14 @@ [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "color_mode", 0 ], [ "display_interp", 1 ], + [ "drag_mode", 1 ], [ "edited_color", 1, 0.49, 0.263, 1 ], [ "empty_slot_color", 0.221327066888467, 0.221327006361825, 0.221327022178404, 1 ], [ "fontname", "Arial" ], [ "fontsize", 13 ], [ "ignoreslotzero", 1 ], + [ "interp_mode", 1 ], + [ "interp_multi_radius", 1.5 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "margin", 4 ], @@ -5418,6 +5797,7 @@ [ "send_name", "none" ], [ "slot_round", 0 ], [ "spacing", 4 ], + [ "store_passthrough", 1 ], [ "stored_slot_color", 0.458595350062755, 0.458595237564901, 0.458595266962388, 1 ], [ "text_color", 0.85, 0.85, 0.85, 1 ], [ "timestamp", 0 ], diff --git a/javascript/tc.preset.js b/javascript/tc.preset.js index 725332e..f5cd161 100644 --- a/javascript/tc.preset.js +++ b/javascript/tc.preset.js @@ -79,10 +79,10 @@ var scrollable = 0; // Defines weither the object can be scrolled or not var min_rows = 10; // Minimum number of rows to display if scrollable is enabled var color_mode = 0; // Change the way the filled slots (stored presets) color is handeld. 0: stored_slot_color. 1: looping through color_1 to color_6. 2: Freely assign colors 1 to 6. 3: Set any color to any preset var select_mode = 0; // 0: single click to select and recall the slot. 1: single click to select the slot, double click to recall it. -var click_mode = 0; // Sets the behavior of single clicks. 0: normal (recall), 1: select, 2: store, 3: delete -var drag_mode = 1; // Sets the behavior of drag operations. 0: disabled, 1: move preset (default), 2: in-line interpolation, 3: zone interpolation -var drag_interp_radius = 1; // In use with drag_mode 3 -var interp_rolloff = 6; +var click_mode = 0; // Set the behavior of single clicks. 0: normal (recall), 1: select, 2: store, 3: delete +var drag_mode = 1; // Set the behavior of drag operations. 0: disabled, 1: move preset (default), 2: Interp (see interp_mode) +var interp_mode = 1; // Set interpolation behavior when dragging. 0: off, 1: in-line interpolation, 2: multi interpolation +var interp_multi_radius = 1.5; // In use with drag_mode 3 var send_name = "none"; // The global name to send presets dict name to (received by the [receive] object) var unique_names = false; // When enabled, force names to be unique when renaming slots by appending "bis" to them. Gets applied only to subsequently renamed presets. var autoname = false; // Automatically name new presets when created as "Preset" followed by the slot id @@ -584,7 +584,7 @@ function paint() // } // Hovered slot - if ((last_hovered > -1) && ((drag_mode < 2) || (drag_mode >= 2 && !is_dragging))) { + if ((last_hovered > -1) && !is_dragging) { // Slot border if (slots[last_hovered].filled === false || (slots[last_hovered].filled === true && !control_hold)) { @@ -1195,9 +1195,6 @@ function recallmulti() { active_slot_edited = 0; run_edited_poll_task(); mgraphics.redraw(); - - outlet(0, "recallmulti", args); - } function store(v) { @@ -1871,146 +1868,140 @@ ondblclick.local = 1; function ondrag(x,y,but,cmd,shift,capslock,option,ctrl) { if (pattrstorage_name != null) { - y -= y_offset; - if (drag_mode === 1) { - if (is_dragging === 0 && last_hovered > 0 && slots[last_hovered].filled === true) { - // To prevent mistakes, is_dragging is set to 1 only when dragging for more than 10 pixels - var dist_from_start = Math.sqrt((x-last_x)*(x-last_x)+(y-last_y)*(y-last_y)); - if (dist_from_start > 10) { - is_dragging = 1; - drag_slot = last_hovered; - paint_base(); // We repaint the base with the dragged slot removed from the grid - } - - } else if (is_dragging == 1) { - last_hovered = get_slot_index(x, y); - last_hovered_is_preset_slot = scrollable && nbslot_edit && last_hovered > (true_slots_count_display - 2) ? false : true; - if (!last_hovered_is_preset_slot) { - last_hovered = 0; - } - if (!but) { - // When the button is released, the dragging ceases - if (last_hovered > 0 && last_hovered != drag_slot && last_hovered_is_preset_slot) { - move(drag_slot, last_hovered); - } else { - // Drag released but not somewhere we can throw a slot in - is_dragging = 0; - drag_slot = -1; - paint_base(); + y -= y_offset; + if (drag_mode > 0 && !cmd && !shift && !ctrl) { + switch (is_dragging) { + case 0: // Not dragging yet + var dist_from_start = Math.sqrt((x - last_x) * (x - last_x) + (y - last_y) * (y - last_y)); + if ((drag_mode === 1 && !option) || (drag_mode === 2 && option)) { + if (last_hovered > 0 && slots[last_hovered].filled === true && ((drag_mode === 1 && !option) || (drag_mode === 2 && option))) { + // To prevent mistakes, is_dragging is set to 1 only when dragging for more than 10 pixels + if (dist_from_start > 10) { + is_dragging = 1; + drag_slot = last_hovered; + paint_base(); // We repaint the base with the dragged slot removed from the grid + } + } + } else if (interp_mode > 0 && ((drag_mode === 2 && !option) || (drag_mode === 1 && option))) { + if (dist_from_start > 3) { + is_dragging = 2; + } } - } else { - // Click still hold, we keep dragging - if (scrollable) { - // Auto-scroll if mouse out of bounds - if (y+y_offset < 0 && y-(last_y-drag_scroll) < 0) { - drag_scroll = 2; - } else if (y+y_offset > ui_height && y-(last_y-drag_scroll) > 0) { - drag_scroll = -2; + break; + case 1: // Moving preset + last_hovered = get_slot_index(x, y); + last_hovered_is_preset_slot = scrollable && nbslot_edit && last_hovered > (true_slots_count_display - 2) ? false : true; + if (!last_hovered_is_preset_slot) { + last_hovered = 0; + } + if (!but) { + // When the button is released, the dragging ceases + if (last_hovered > 0 && last_hovered != drag_slot && last_hovered_is_preset_slot) { + move(drag_slot, last_hovered); } else { - drag_scroll = 0; + // Drag released but not somewhere we can throw a slot in + is_dragging = 0; + drag_slot = -1; + paint_base(); } - y_offset += drag_scroll; - y_offset = Math.min(y_offset, 0); - y_offset = Math.max(y_offset, -1 * (bg_height - ui_height)); + } else { + // Click still hold, we keep dragging + if (scrollable) { + // Auto-scroll if mouse out of bounds + if (y + y_offset < 0 && y - (last_y - drag_scroll) < 0) { + drag_scroll = 2; + } else if (y + y_offset > ui_height && y - (last_y - drag_scroll) > 0) { + drag_scroll = -2; + } else { + drag_scroll = 0; + } + y_offset += drag_scroll; + y_offset = Math.min(y_offset, 0); + y_offset = Math.max(y_offset, -1 * (bg_height - ui_height)); + } + + mgraphics.redraw(); } - - mgraphics.redraw(); - } - last_x = x; - last_y = y; - } - } else if (drag_mode === 2) { - // Drag to interpolate across adjacent (previous and next) presets - if (is_dragging == 0) { - var dist_from_start = Math.sqrt((x-last_x)*(x-last_x)+(y-last_y)*(y-last_y)); - if (dist_from_start > 3) { - is_dragging = 2; - } - } - // last_hovered retains the slot where the drag began - if (is_dragging === 2 && last_hovered > -1) { - var relative_dist_from_start = - layout === 0 ? (x - slots[last_hovered].center.x) / (slot_size + spacing) : - (y - slots[last_hovered].center.y) / (slot_size + spacing); - var current_slot = Math.max(Math.round(last_hovered - 0.5 + relative_dist_from_start), 1); - var prev_filled_slot = -1; - var next_filled_slot = -1; - for (var i = 0; i < filled_slots.length; i++) { - var p = filled_slots[i]; - if (p <= current_slot) { - if (prev_filled_slot === -1 || p > prev_filled_slot) { - prev_filled_slot = p; + last_x = x; + last_y = y; + break; + case 2: // Interpolating + if (interp_mode === 1) { + var relative_dist_from_start = + layout === 0 ? (x - slots[last_hovered].center.x) / (slot_size + spacing) : + (y - slots[last_hovered].center.y) / (slot_size + spacing); + var current_slot = Math.max(Math.round(last_hovered - 0.5 + relative_dist_from_start), 1); + var prev_filled_slot = -1; + var next_filled_slot = -1; + for (var i = 0; i < filled_slots.length; i++) { + var p = filled_slots[i]; + if (p <= current_slot) { + if (prev_filled_slot === -1 || p > prev_filled_slot) { + prev_filled_slot = p; + } + } else if (p > current_slot) { + if (next_filled_slot === -1 || p < next_filled_slot) { + next_filled_slot = p; + } + } } - } else if (p > current_slot) { - if (next_filled_slot === -1 || p < next_filled_slot) { - next_filled_slot = p; + var interp_amount = 0; + if (prev_filled_slot === -1) { + prev_filled_slot = next_filled_slot; + interp_amount = 1; + } else if (next_filled_slot === -1) { + next_filled_slot = prev_filled_slot; + interp_amount = 1; + } else if (prev_filled_slot > 0 && next_filled_slot > 0) { + interp_amount = (last_hovered + relative_dist_from_start - prev_filled_slot) / (next_filled_slot - prev_filled_slot); + interp_amount = Math.min(interp_amount, Math.max(interp_amount, 0), 1); + } + if (prev_filled_slot !== -1 || next_filled_slot !== -1) { + if (recall_passthrough) { + to_pattrstorage("recall", prev_filled_slot, next_filled_slot, interp_amount); + } else { + outlet(0, "recall", prev_filled_slot, next_filled_slot, interp_amount); + } + } + last_x = x; + last_y = y; + if (!but) { + is_dragging = 0; + } + } else if (interp_mode === 2) { + var nearby_slots = []; + var accum = 0; + for (var i = 0; i < filled_slots.length; i++) { + // Interpolating only through displayed slots; + if (filled_slots[i] <= slots_count_display) { + var s_pos = slots[filled_slots[i]].center; + var dist_from_mouse = Math.sqrt((x - s_pos.x) * (x - s_pos.x) + (y - s_pos.y) * (y - s_pos.y)) / (slot_size + spacing); + var interp_factor = Math.exp(-Math.pow(dist_from_mouse / (0.5 * interp_multi_radius), 2)); + if (interp_factor > 0.01) { + nearby_slots.push([filled_slots[i], interp_factor]); + accum += interp_factor; + } + } + } + for (var i = 0; i < nearby_slots.length; i++) { + nearby_slots[i] = nearby_slots[i][0] + Math.min(nearby_slots[i][1] / accum, 0.99); + } + if (nearby_slots.length) { + var args = ["recallmulti"].concat(nearby_slots); + // .apply(nul, args): ES5 notation for spread operator ...args + if (recall_passthrough) { + to_pattrstorage.apply(null, args); + recallmulti.apply(null, nearby_slots); + } + outlet(0, args); + } + last_x = x; + last_y = y; + if (!but) { + is_dragging = 0; } } - } - var interp_amount = 0; - if (prev_filled_slot === -1) { - prev_filled_slot = next_filled_slot; - interp_amount = 1; - } else if (next_filled_slot === -1) { - next_filled_slot = prev_filled_slot; - interp_amount = 1; - } else if (prev_filled_slot > 0 && next_filled_slot > 0) { - interp_amount = (last_hovered + relative_dist_from_start - prev_filled_slot) / (next_filled_slot - prev_filled_slot); - interp_amount = Math.min(interp_amount, Math.max(interp_amount, 0), 1); - } - if (prev_filled_slot !== -1 || next_filled_slot !== -1) { - to_pattrstorage("recall", prev_filled_slot, next_filled_slot, interp_amount); - } - last_x = x; - last_y = y; - if (!but) { - is_dragging = 0; - } - } - } else if (drag_mode === 3) { - // Drag to interpolate across adjacent (previous and next) presets - if (is_dragging == 0) { - var dist_from_start = Math.sqrt((x-last_x)*(x-last_x)+(y-last_y)*(y-last_y)); - if (dist_from_start > 3) { - is_dragging = 3; - } - } - // last_hovered retains the slot where the drag began - if (is_dragging === 3 && last_hovered > -1) { - var nearby_slots = []; - var max_dist = 0; - var pow = interp_rolloff / (20 * Math.log(2) / Math.log(10)); - var accum = 0; - for (var i = 0; i < filled_slots.length; i++) { - // Interpolating only through displayed slots; - if (filled_slots[i] <= slots_count_display) { - var s_pos = slots[filled_slots[i]].center; - var dist_from_mouse = Math.sqrt((x - s_pos.x) * (x - s_pos.x) + (y - s_pos.y) * (y - s_pos.y)) / (slot_size + spacing); - if (dist_from_mouse < drag_interp_radius) { - var interp_factor = 1 / Math.pow(dist_from_mouse + 0.00001, pow); - nearby_slots.push([filled_slots[i], interp_factor]); - accum += Math.pow(interp_factor, 2); - // var interp_factor = Math.min(Math.pow(((dist_from_mouse / drag_interp_radius) - 1), 4), 0.9999999); - // nearby_slots.push(filled_slots[i] + interp_factor); - // if (max_dist < dist_from_mouse) max_dist = dist_from_mouse; - } - } - } - accum = 1 / Math.sqrt(accum); - for (var i = 0; i < nearby_slots.length; i++) { - nearby_slots[i] = nearby_slots[i][0] + Math.min(nearby_slots[i][1] * accum, 0.9999999); - } - if (nearby_slots.length) { - var args = ["recallmulti"].concat(nearby_slots); - // .apply(nul, args): ES5 notation for spread operator ...args - to_pattrstorage.apply(null, args); - recallmulti.apply(null, nearby_slots); - } - last_x = x; - last_y = y; - if (!but) { - is_dragging = 0; - } + break; } } } @@ -2369,9 +2360,11 @@ function setselect_mode(v) { } setselect_mode.local = 1; -declareattribute("drag_mode", null, null, 1, { style: "enumindex", enumvals: ["Disabled", "Move", "In-Line Interp", "Interp"], default: 1, label: "Drag Mode", paint: 1 }); +declareattribute("drag_mode", null, null, 1, { style: "enumindex", enumvals: ["Disabled", "Move", "Interpolate"], default: 1, label: "Drag Mode", paint: 1 }); -declareattribute("drag_interp_radius", null, null, 1, { type: "float", min: 1, default: 1, label: "Drag Interpolation Radius" }); +declareattribute("interp_mode", null, null, 1, { style: "enumindex", enumvals: ["Disabled", "In-Line Interp", "Multi Interp"], default: 1, label: "Drag Mode"}); + +declareattribute("interp_multi_radius", null, null, 1, { type: "float", min: 1, default: 1.5, label: "Interp Multi Radius" }); declareattribute("color_mode", null, "setcolor_mode", 1, {type: "long", min: 0, max: 3, style: "enumindex", enumvals: ["Classic", "Cycle", "Select", "Custom"], label: "Color Mode", category: "Appearance"}); function setcolor_mode(v){