@ -29,9 +29,6 @@ A [jsui] replacement for the [preset] object in Cycling'74 Max.
- `store`: send to [jsui] only
- `store`: send to [jsui] only
- The js program send a lot of message to the [pattrstorage] (patch cord not required), which makes it output a lot of messages required for the [jsui] to stay in sync. Using one of the above messages incorrectly, or sending `getslotlist`, `getslotnamelist`, or any message that will impact the presets, it might cause the [pattrstorage] to get out of sync. In case something like that happens, you can send the `resync` message to the [jsui].
- The js program send a lot of message to the [pattrstorage] (patch cord not required), which makes it output a lot of messages required for the [jsui] to stay in sync. Using one of the above messages incorrectly, or sending `getslotlist`, `getslotnamelist`, or any message that will impact the presets, it might cause the [pattrstorage] to get out of sync. In case something like that happens, you can send the `resync` message to the [jsui].
## Known bugs
- Some interactions should be ignored when no pattrstorage is linked
## Desired features (for someday)
## Desired features (for someday)
- No need for a patch cord (programmatically create a [send]/[receive] pair?)
- No need for a patch cord (programmatically create a [send]/[receive] pair?)
- Ability to lock/unlock and rename directly in the jsui without the need of external objects
- Ability to lock/unlock and rename directly in the jsui without the need of external objects
@ -210,7 +211,7 @@ function draw_slot_bubble(x, y, w, h, cont) {
// I assume rectange is faster to draw than rectangle_rounded. Btw rectangle_rounded is wacky when showing interpolation. Maybe *interp on the first slot_round could solve this?
// I assume rectange is faster to draw than rectangle_rounded. Btw rectangle_rounded is wacky when showing interpolation. Maybe *interp on the first slot_round could solve this?
"text" : "Enable to scroll through your presets! (Only work in list mode currently)"
"text" : "Enable to scroll through your presets! (Only work in list mode currently)"
}
}
@ -105,7 +93,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 360.5, 546.0, 150.0, 33.0 ],
"patching_rect" : [ 361.0, 546.0, 150.0, 33.0 ],
"text" : "Choose to display presets as a grid (0) or a list (1)!"
"text" : "Choose to display presets as a grid (0) or a list (1)!"
}
}
@ -142,7 +130,7 @@
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "int" ],
"outlettype" : [ "int" ],
"parameter_enable" : 0,
"parameter_enable" : 0,
"patching_rect" : [ 333.5, 550.0, 24.0, 24.0 ]
"patching_rect" : [ 334.0, 550.0, 24.0, 24.0 ]
}
}
}
}
@ -153,7 +141,7 @@
"numinlets" : 2,
"numinlets" : 2,
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"outlettype" : [ "" ],
"patching_rect" : [ 333.5, 583.0, 57.0, 22.0 ],
"patching_rect" : [ 334.0, 583.0, 57.0, 22.0 ],
"text" : "layout $1"
"text" : "layout $1"
}
}
@ -165,7 +153,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 858.0, 316.0, 188.0, 74.0 ],
"patching_rect" : [ 645.0, 290.0, 188.0, 74.0 ],
"text" : "Makes displayed previous active slot and interpolation status to ignore slot 0. Can be usefull when using slot 0 as a temporary step for interpolation."
"text" : "Makes displayed previous active slot and interpolation status to ignore slot 0. Can be usefull when using slot 0 as a temporary step for interpolation."
}
}
@ -178,7 +166,7 @@
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "int" ],
"outlettype" : [ "int" ],
"parameter_enable" : 0,
"parameter_enable" : 0,
"patching_rect" : [ 601.0, 261.0, 24.0, 24.0 ]
"patching_rect" : [ 388.0, 235.0, 24.0, 24.0 ]
}
}
}
}
@ -190,7 +178,7 @@
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "int" ],
"outlettype" : [ "int" ],
"parameter_enable" : 0,
"parameter_enable" : 0,
"patching_rect" : [ 858.0, 261.0, 24.0, 24.0 ]
"patching_rect" : [ 645.0, 235.0, 24.0, 24.0 ]
}
}
}
}
@ -487,7 +475,7 @@
]
]
}
}
,
,
"patching_rect" : [ 227.0, 845.0, 125.0, 22.0 ],
"patching_rect" : [ 227.5, 845.0, 125.0, 22.0 ],
"saved_object_attributes" : {
"saved_object_attributes" : {
"description" : "",
"description" : "",
"digest" : "",
"digest" : "",
@ -501,24 +489,26 @@
}
}
, {
, {
"box" : {
"box" : {
"hidden" : 1,
"id" : "obj-28",
"id" : "obj-28",
"linecount" : 2,
"linecount" : 2,
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 30.0, 523.5, 150.0, 33.0 ],
"patching_rect" : [ 34.5, 458.0, 150.0, 33.0 ],
"text" : "Usefull when making changes to the js file"
"text" : "Usefull when making changes to the js file"
}
}
}
}
, {
, {
"box" : {
"box" : {
"hidden" : 1,
"id" : "obj-17",
"id" : "obj-17",
"maxclass" : "message",
"maxclass" : "message",
"numinlets" : 2,
"numinlets" : 2,
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"outlettype" : [ "" ],
"patching_rect" : [ 29.0, 562.5, 151.0, 22.0 ],
"patching_rect" : [ 33.5, 497.0, 151.0, 22.0 ],
"text" : "loadbang, pattrstorage test"
"text" : "loadbang, pattrstorage test"
}
}
@ -541,7 +531,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 120.0, 27.0, 505.0, 100.0 ],
"patching_rect" : [ 176.0, 20.0, 505.0, 100.0 ],
"text" : "In order to use that custom jsui, you need to:\n1. bind the jsui to a named pattrstorage, either by setting the pattrstorage name as the jsui jsarguments attribute, or by sending a message to the jsui starting by \"pattrstorage\" followed by the pattrstorage name (prefered). You can re-send this message manually at any time to re-sync the jsui with the pattstorage (in case you send some messages to the pattrstorage that doesn't trigger an output). An empty \"pattrstorage\" message to the jsui will unbind it.\n2. Connect the pattrstorage outlet to the jsui inlet."
"text" : "In order to use that custom jsui, you need to:\n1. bind the jsui to a named pattrstorage, either by setting the pattrstorage name as the jsui jsarguments attribute, or by sending a message to the jsui starting by \"pattrstorage\" followed by the pattrstorage name (prefered). You can re-send this message manually at any time to re-sync the jsui with the pattstorage (in case you send some messages to the pattrstorage that doesn't trigger an output). An empty \"pattrstorage\" message to the jsui will unbind it.\n2. Connect the pattrstorage outlet to the jsui inlet."
}
}
@ -564,7 +554,7 @@
"numinlets" : 2,
"numinlets" : 2,
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"outlettype" : [ "" ],
"patching_rect" : [ 601.0, 448.0, 99.0, 22.0 ],
"patching_rect" : [ 403.0, 408.0, 99.0, 22.0 ],
"text" : "display_interp $1"
"text" : "display_interp $1"
}
}
@ -577,7 +567,7 @@
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "int" ],
"outlettype" : [ "int" ],
"parameter_enable" : 0,
"parameter_enable" : 0,
"patching_rect" : [ 601.0, 413.0, 24.0, 24.0 ]
"patching_rect" : [ 403.0, 373.0, 24.0, 24.0 ]
}
}
}
}
@ -590,7 +580,7 @@
"numoutlets" : 2,
"numoutlets" : 2,
"outlettype" : [ "", "bang" ],
"outlettype" : [ "", "bang" ],
"parameter_enable" : 0,
"parameter_enable" : 0,
"patching_rect" : [ 507.0, 414.0, 50.0, 22.0 ]
"patching_rect" : [ 309.0, 374.0, 50.0, 22.0 ]
}
}
}
}
@ -601,7 +591,7 @@
"numinlets" : 2,
"numinlets" : 2,
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"outlettype" : [ "" ],
"patching_rect" : [ 507.0, 448.0, 81.0, 22.0 ],
"patching_rect" : [ 309.0, 408.0, 81.0, 22.0 ],
"text" : "slot_round $1"
"text" : "slot_round $1"
}
}
@ -613,7 +603,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 601.0, 316.0, 241.0, 60.0 ],
"patching_rect" : [ 388.0, 290.0, 241.0, 60.0 ],
"text" : "When enabled, sends writeagain to pattrstrage when a preset has been stored/renamed/deleted/moved/(un)locked, keeping the json file always up to date"
"text" : "When enabled, sends writeagain to pattrstrage when a preset has been stored/renamed/deleted/moved/(un)locked, keeping the json file always up to date"
}
}
@ -624,7 +614,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 464.0, 316.0, 129.0, 20.0 ],
"patching_rect" : [ 251.0, 290.0, 129.0, 20.0 ],
"text" : "Lock/unlock active slot"
"text" : "Lock/unlock active slot"
}
}
@ -636,7 +626,7 @@
"numinlets" : 2,
"numinlets" : 2,
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "" ],
"outlettype" : [ "" ],
"patching_rect" : [ 464.0, 296.0, 63.0, 22.0 ],
"patching_rect" : [ 251.0, 270.0, 63.0, 22.0 ],
"text" : "setlock $1"
"text" : "setlock $1"
}
}
@ -649,7 +639,7 @@
"numoutlets" : 1,
"numoutlets" : 1,
"outlettype" : [ "int" ],
"outlettype" : [ "int" ],
"parameter_enable" : 0,
"parameter_enable" : 0,
"patching_rect" : [ 464.0, 260.0, 24.0, 24.0 ]
"patching_rect" : [ 251.0, 234.0, 24.0, 24.0 ]
}
}
}
}
@ -659,7 +649,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 350.0, 316.0, 104.0, 20.0 ],
"patching_rect" : [ 137.0, 290.0, 104.0, 20.0 ],
"text" : "Lock/unlock slot 2"
"text" : "Lock/unlock slot 2"
}
}
@ -671,7 +661,7 @@
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 2,
"numoutlets" : 2,
"outlettype" : [ "", "" ],
"outlettype" : [ "", "" ],
"patching_rect" : [ 169.0, 374.0, 29.5, 22.0 ],
"patching_rect" : [ 169.0, 559.0, 29.5, 22.0 ],
"text" : "t l l"
"text" : "t l l"
}
}
@ -683,7 +673,7 @@
"maxclass" : "comment",
"maxclass" : "comment",
"numinlets" : 1,
"numinlets" : 1,
"numoutlets" : 0,
"numoutlets" : 0,
"patching_rect" : [ 690.0, 448.0, 219.0, 74.0 ],
"patching_rect" : [ 504.0, 408.0, 230.0, 74.0 ],
"text" : "...and: bgcolor, empty_slot_color, stored_slot_color, interp_slot_color, active_slot_color, fontname, fontsize, text_bg_color, text_color\n(see the jsui attributes in the inspector)"
"text" : "...and: bgcolor, empty_slot_color, stored_slot_color, interp_slot_color, active_slot_color, fontname, fontsize, text_bg_color, text_color\n(see the jsui attributes in the inspector)"
"text" : "Pattrstorage messages that doesn't trigger output and need to be sent to the jsui instead:\n- store (send to jsui only)\n- recallmulti (send to pattrstorage first for timing accuracy, then to jsui)\n- slotname (send \"setslotname\" or \"text\" to jsui instead, will rename active slot)\n- lock (or setlock to lock/unlock of the active slot)\n- some other. I've not tested them all. "
"text" : "Pattrstorage messages that doesn't trigger output and need to be sent to the jsui instead:\n- store (send to jsui only)\n- recallmulti (send to pattrstorage first for timing accuracy, then to jsui)\n- slotname (send \"setslotname\" or \"text\" to jsui instead, will rename active slot)\n- lock (or setlock to lock/unlock of the active slot)\n- some other. I've not tested them all. "