Compare commits
	
		
			2 Commits
		
	
	
		
			6b07a8e90b
			...
			cc3bf58117
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cc3bf58117 | |||
| a3f5769a6a | 
@@ -2,42 +2,27 @@
 | 
			
		||||
	"patcher" : 	{
 | 
			
		||||
		"fileversion" : 1,
 | 
			
		||||
		"appversion" : 		{
 | 
			
		||||
			"major" : 8,
 | 
			
		||||
			"minor" : 6,
 | 
			
		||||
			"revision" : 4,
 | 
			
		||||
			"major" : 9,
 | 
			
		||||
			"minor" : 1,
 | 
			
		||||
			"revision" : 0,
 | 
			
		||||
			"architecture" : "x64",
 | 
			
		||||
			"modernui" : 1
 | 
			
		||||
		}
 | 
			
		||||
,
 | 
			
		||||
		"classnamespace" : "box",
 | 
			
		||||
		"rect" : [ 391.0, 289.0, 483.0, 443.0 ],
 | 
			
		||||
		"bglocked" : 0,
 | 
			
		||||
		"openinpresentation" : 0,
 | 
			
		||||
		"default_fontsize" : 12.0,
 | 
			
		||||
		"default_fontface" : 0,
 | 
			
		||||
		"default_fontname" : "Arial",
 | 
			
		||||
		"gridonopen" : 1,
 | 
			
		||||
		"rect" : [ 371.0, 273.0, 483.0, 443.0 ],
 | 
			
		||||
		"gridsize" : [ 15.0, 15.0 ],
 | 
			
		||||
		"gridsnaponopen" : 1,
 | 
			
		||||
		"objectsnaponopen" : 1,
 | 
			
		||||
		"statusbarvisible" : 2,
 | 
			
		||||
		"toolbarvisible" : 0,
 | 
			
		||||
		"lefttoolbarpinned" : 2,
 | 
			
		||||
		"toptoolbarpinned" : 2,
 | 
			
		||||
		"righttoolbarpinned" : 2,
 | 
			
		||||
		"bottomtoolbarpinned" : 2,
 | 
			
		||||
		"toolbars_unpinned_last_save" : 15,
 | 
			
		||||
		"tallnewobj" : 0,
 | 
			
		||||
		"boxanimatetime" : 200,
 | 
			
		||||
		"enablehscroll" : 0,
 | 
			
		||||
		"enablevscroll" : 0,
 | 
			
		||||
		"devicewidth" : 0.0,
 | 
			
		||||
		"description" : "",
 | 
			
		||||
		"digest" : "",
 | 
			
		||||
		"tags" : "",
 | 
			
		||||
		"style" : "",
 | 
			
		||||
		"subpatcher_template" : "",
 | 
			
		||||
		"assistshowspatchername" : 0,
 | 
			
		||||
		"commentary" : "",
 | 
			
		||||
		"showcommentary" : 0,
 | 
			
		||||
		"boxes" : [ 			{
 | 
			
		||||
				"box" : 				{
 | 
			
		||||
					"hidden" : 1,
 | 
			
		||||
@@ -60,7 +45,7 @@
 | 
			
		||||
					"numinlets" : 1,
 | 
			
		||||
					"numoutlets" : 0,
 | 
			
		||||
					"patching_rect" : [ 166.5, 373.0, 150.0, 47.0 ],
 | 
			
		||||
					"text" : "GPL 3.0\n© Théophile Clet, 2024\nClick here to support",
 | 
			
		||||
					"text" : "GPL 3.0\n© Théophile Clet, 2025\nClick here to support",
 | 
			
		||||
					"textcolor" : [ 0.0, 0.0, 0.0, 0.5 ],
 | 
			
		||||
					"textjustification" : 1
 | 
			
		||||
				}
 | 
			
		||||
@@ -80,7 +65,7 @@
 | 
			
		||||
			}
 | 
			
		||||
, 			{
 | 
			
		||||
				"box" : 				{
 | 
			
		||||
					"embedstate" : [ [ "spacing", 4 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "text_bg_color", 1, 1, 1, 0.5 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "select_mode", 0 ], [ "scrollable", 0 ], [ "bubblesize", 14 ], [ "margin", 4 ], [ "fontsize", 14 ], [ "color_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "ignoreslotzero", 1 ], [ "min_rows", 10 ], [ "stored_slot_color", 0.502, 0.502, 0.502, 1 ], [ "fontname", "Arial" ], [ "empty_slot_color", 0.349, 0.349, 0.349, 1 ], [ "text_color", 0.129, 0.129, 0.129, 1 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "display_interp", 1 ], [ "bgcolor", 0.2, 0.2, 0.2, 1 ], [ "slot_round", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "active_slot_color", 0.808, 0.898, 0.91, 1 ], [ "autowriteagain", 0 ], [ "layout", 1 ] ],
 | 
			
		||||
					"embedstate" : [ [ "margin", 4 ], [ "bgcolor", 0.2, 0.2, 0.2, 1 ], [ "scrollable", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "autowriteagain", 0 ], [ "display_interp", 1 ], [ "text_bg_color", 1, 1, 1, 0.5 ], [ "select_mode", 0 ], [ "color_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "empty_slot_color", 0.349, 0.349, 0.349, 1 ], [ "ignoreslotzero", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.129, 0.129, 0.129, 1 ], [ "spacing", 4 ], [ "slot_round", 0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "active_slot_color", 0.808, 0.898, 0.91, 1 ], [ "menu_mode", 0 ], [ "bubblesize", 14 ], [ "min_rows", 10 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "fontsize", 14 ], [ "send_name", "none" ], [ "stored_slot_color", 0.502, 0.502, 0.502, 1 ], [ "fontname", "Arial" ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ],
 | 
			
		||||
					"filename" : "tc.preset",
 | 
			
		||||
					"id" : "obj-8",
 | 
			
		||||
					"maxclass" : "jsui",
 | 
			
		||||
@@ -113,8 +98,8 @@
 | 
			
		||||
					"numinlets" : 2,
 | 
			
		||||
					"numoutlets" : 1,
 | 
			
		||||
					"outlettype" : [ "" ],
 | 
			
		||||
					"patching_rect" : [ 9.0, 274.0, 129.0, 22.0 ],
 | 
			
		||||
					"text" : "load tc.preset.maxhelp"
 | 
			
		||||
					"patching_rect" : [ 9.0, 274.0, 165.0, 22.0 ],
 | 
			
		||||
					"text" : "loadunique tc.preset.maxhelp"
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
@@ -134,7 +119,7 @@
 | 
			
		||||
			}
 | 
			
		||||
, 			{
 | 
			
		||||
				"box" : 				{
 | 
			
		||||
					"embedstate" : [ [ "spacing", 4 ], [ "color_3", 0.527, 0.459, 0.756, 1 ], [ "text_bg_color", 1, 1, 1, 0.5 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "select_mode", 0 ], [ "scrollable", 0 ], [ "bubblesize", 14 ], [ "margin", 4 ], [ "fontsize", 14 ], [ "color_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "ignoreslotzero", 1 ], [ "min_rows", 10 ], [ "stored_slot_color", 0.502, 0.502, 0.502, 1 ], [ "fontname", "Arial" ], [ "empty_slot_color", 0.349, 0.349, 0.349, 1 ], [ "text_color", 0.129, 0.129, 0.129, 1 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "display_interp", 1 ], [ "bgcolor", 0.2, 0.2, 0.2, 1 ], [ "slot_round", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "active_slot_color", 0.808, 0.898, 0.91, 1 ], [ "autowriteagain", 0 ], [ "layout", 0 ] ],
 | 
			
		||||
					"embedstate" : [ [ "margin", 4 ], [ "bgcolor", 0.2, 0.2, 0.2, 1 ], [ "scrollable", 0 ], [ "interp_slot_color", 1, 1, 1, 0.8 ], [ "layout", 0 ], [ "color_4", 0.367, 0.542, 0.712, 1 ], [ "autowriteagain", 0 ], [ "display_interp", 1 ], [ "text_bg_color", 1, 1, 1, 0.5 ], [ "select_mode", 0 ], [ "color_mode", 0 ], [ "color_5", 0.283, 0.606, 0.559, 1 ], [ "empty_slot_color", 0.349, 0.349, 0.349, 1 ], [ "ignoreslotzero", 1 ], [ "color_1", 0.743, 0.41, 0.501, 1 ], [ "text_color", 0.129, 0.129, 0.129, 1 ], [ "spacing", 4 ], [ "slot_round", 0 ], [ "color_6", 0.316, 0.616, 0.377, 1 ], [ "active_slot_color", 0.808, 0.898, 0.91, 1 ], [ "menu_mode", 0 ], [ "bubblesize", 14 ], [ "min_rows", 10 ], [ "color_2", 0.679, 0.405, 0.669, 1 ], [ "fontsize", 14 ], [ "send_name", "none" ], [ "stored_slot_color", 0.502, 0.502, 0.502, 1 ], [ "fontname", "Arial" ], [ "color_3", 0.527, 0.459, 0.756, 1 ] ],
 | 
			
		||||
					"filename" : "tc.preset",
 | 
			
		||||
					"id" : "obj-3",
 | 
			
		||||
					"maxclass" : "jsui",
 | 
			
		||||
@@ -205,8 +190,8 @@
 | 
			
		||||
 ],
 | 
			
		||||
		"dependency_cache" : [ 			{
 | 
			
		||||
				"name" : "tc.preset.js",
 | 
			
		||||
				"bootpath" : "~/Documents/Max 8/Packages/tc.preset/code",
 | 
			
		||||
				"patcherrelativepath" : "../code",
 | 
			
		||||
				"bootpath" : "~/Documents/Max 9/Packages/tc.preset/javascript",
 | 
			
		||||
				"patcherrelativepath" : "../javascript",
 | 
			
		||||
				"type" : "TEXT",
 | 
			
		||||
				"implicit" : 1
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -782,61 +782,60 @@ function text() {
 | 
			
		||||
 | 
			
		||||
function recall() {
 | 
			
		||||
	var args = arrayfromargs(arguments);
 | 
			
		||||
	if (args.length == 1) {
 | 
			
		||||
        previous_active_slot = active_slot;
 | 
			
		||||
        is_interpolating = 0;
 | 
			
		||||
        set_active_slot(args[0]);
 | 
			
		||||
        outlet(0, 'recall', args[0]);
 | 
			
		||||
	} else if (args.length == 3) {
 | 
			
		||||
        var src_slot = args[0];
 | 
			
		||||
        var trg_slot = args[1];
 | 
			
		||||
    var val, src_slot, trg_slot, interp;
 | 
			
		||||
    if (args.length == 1) {
 | 
			
		||||
        val = Math.abs(args[0]);
 | 
			
		||||
        src_slot = Math.floor(val);
 | 
			
		||||
        interp = val % 1;
 | 
			
		||||
        trg_slot = interp == 0 ? src_slot : src_slot + 1;
 | 
			
		||||
    } else if (args.length == 3) {
 | 
			
		||||
        src_slot = Math.abs(args[0]);
 | 
			
		||||
        trg_slot = Math.abs(args[1]);
 | 
			
		||||
        interp = Math.min( 1, Math.max(0, args[2]));
 | 
			
		||||
    }
 | 
			
		||||
    for (var i = 0; i < filled_slots.length; i++) {
 | 
			
		||||
        slots[filled_slots[i]].interp = -1;
 | 
			
		||||
    }
 | 
			
		||||
    if (slots[src_slot].name != null && slots[trg_slot].name != null) {
 | 
			
		||||
 | 
			
		||||
        for (var i = 0; i < filled_slots.length; i++) {
 | 
			
		||||
            slots[filled_slots[i]].interp = -1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (slots[src_slot].name != null && slots[trg_slot].name != null) {
 | 
			
		||||
 | 
			
		||||
            if (ignore_slot_zero == 1 && src_slot == 0) {
 | 
			
		||||
                // Set src_slot as if we were interpolating from the last recalled preset different than 0
 | 
			
		||||
                // This way we can monitor which preset we come from even if we used preset 0 as intermediary preset
 | 
			
		||||
                if (previous_target != active_slot) {
 | 
			
		||||
                    // If the last target preset was through interpollation or direct recall
 | 
			
		||||
                    src_slot = previous_active_slot;
 | 
			
		||||
                } else {
 | 
			
		||||
                    src_slot = active_slot;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            var interp = Math.min( 1, Math.max(0, args[2]));
 | 
			
		||||
            if (interp == 0.0) {
 | 
			
		||||
                slots[src_slot].interp = -1;
 | 
			
		||||
                slots[trg_slot].interp = -1;
 | 
			
		||||
                is_interpolating = 0;
 | 
			
		||||
                if (previous_target != active_slot) {
 | 
			
		||||
                    previous_active_slot = active_slot;
 | 
			
		||||
                } else if (args[0] != 0) {
 | 
			
		||||
                    previous_active_slot = args[0];
 | 
			
		||||
                } else {
 | 
			
		||||
                    previous_active_slot = previous_target;
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                set_active_slot(src_slot);
 | 
			
		||||
            } else if (interp == 1.0) {
 | 
			
		||||
                slots[src_slot].interp = -1;
 | 
			
		||||
                slots[trg_slot].interp = -1;
 | 
			
		||||
                is_interpolating = 0;
 | 
			
		||||
                previous_target = trg_slot;
 | 
			
		||||
                set_active_slot(trg_slot);
 | 
			
		||||
                
 | 
			
		||||
        if (ignore_slot_zero == 1 && src_slot == 0) {
 | 
			
		||||
            // Set src_slot as if we were interpolating from the last recalled preset different than 0
 | 
			
		||||
            // This way we can monitor which preset we come from even if we used preset 0 as intermediary preset
 | 
			
		||||
            if (previous_target != active_slot) {
 | 
			
		||||
                // If the last target preset was through interpollation or direct recall
 | 
			
		||||
                src_slot = previous_active_slot;
 | 
			
		||||
            } else {
 | 
			
		||||
                slots[src_slot].interp = 1 - interp;
 | 
			
		||||
                slots[trg_slot].interp = interp;
 | 
			
		||||
                is_interpolating = 1;
 | 
			
		||||
                active_slot = 0;
 | 
			
		||||
                src_slot = active_slot;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            outlet(0, "recall", src_slot, trg_slot, interp);
 | 
			
		||||
        }
 | 
			
		||||
        if (interp == 0.0) {
 | 
			
		||||
            slots[src_slot].interp = -1;
 | 
			
		||||
            slots[trg_slot].interp = -1;
 | 
			
		||||
            is_interpolating = 0;
 | 
			
		||||
            if (previous_target != active_slot) {
 | 
			
		||||
                previous_active_slot = active_slot;
 | 
			
		||||
            } else if (src_slot != 0) {
 | 
			
		||||
                previous_active_slot = src_slot;
 | 
			
		||||
            } else {
 | 
			
		||||
                previous_active_slot = previous_target;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            set_active_slot(src_slot);
 | 
			
		||||
        } else if (interp == 1.0) {
 | 
			
		||||
            slots[src_slot].interp = -1;
 | 
			
		||||
            slots[trg_slot].interp = -1;
 | 
			
		||||
            is_interpolating = 0;
 | 
			
		||||
            previous_target = trg_slot;
 | 
			
		||||
            set_active_slot(trg_slot);
 | 
			
		||||
            
 | 
			
		||||
        } else {
 | 
			
		||||
            slots[src_slot].interp = 1 - interp;
 | 
			
		||||
            slots[trg_slot].interp = interp;
 | 
			
		||||
            is_interpolating = 1;
 | 
			
		||||
            active_slot = 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        outlet(0, "recall", src_slot, trg_slot, interp);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	mgraphics.redraw();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user