You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
TFLCL 9c5a750832 minor fix 10 months ago
code add checkmark to umenu 10 months ago
docs help file, demo, authoring 10 months ago
extras Proper launch patcher 10 months ago
help minor fix 10 months ago
init Max package: file reorganization 10 months ago
patchers Proper launch patcher 10 months ago
snippets Max package: file reorganization 10 months ago
.gitignore authoring 10 months ago
README.md readme update 10 months ago
package-info.json Proper launch patcher 10 months ago

README.md

tc.preset

A [jsui] replacement for the [preset] object in Cycling'74 Max.

Features

  • Same click + modifier key behavior as the vanilla object to store and delete presets
  • Drag and drop presets to re-organize
  • Display presets as a grid or a list
  • Scrollable list layout (requires Max 8.6.2)
  • Shows active preset even if recalled directly from pattrstorage
  • Shows previously active preset, with the ability to ignore preset 0 if it being used as an intermediary step
  • Shows presets being interpolated (using recall or recallmulti)
  • Shows preset name and lock state
  • Outputs active preset name and lock state from third and fourth outlet
  • Ability to rewrite json file automatically every time a preset is stored/moved/deleted/renamed/(un)locked
  • Helps keeping in sync a umenu with the list of stored slotstlet
  • More look customization
  • Dynamically adapts to resize both in Edit and Presentation mode
  • Select mode: simple click selects the slot, double click recalls it (allows for organizing presets without recalling them)
  • Color mode: ability to color sstored presets with 6 customizable colors (currently colors are only assigned automatically depending on slot number)

How to install

  • Download this repository (and please consider donating on the gumroad page if you like this package)
  • Unzip the downloaded file and place the tc.preset folder in your Max Library package.
  • Restart Max

How to use

  • In your Max patch, reate a [tc.preset] object (or a more lenghty [jsui @filename tc.preset.js])
  • Connect the [pattrstorage] outlet to the [jsui] inlet
  • Set the jsui attribute named "pattrstorage" to the name of the pattrstorage you just connected (or send a message like "pattrstorage my_pattrstorage_name")

Limitations

  • Due to the way [pattrstorage] works, some pattrstorage-specific messages should be sent to the [jsui] instead of the [pattrstorage]. Some to both:
    • recall: send to [pattrstorage] only
    • recallmulti, slotname: send to [pattrstorage] first (for better timing), then to the [jsui]
    • store: send to [jsui] only
  • Some messages to pattrstorage causes the jsui to be out of sync (insert, lockall, read, readagain, remove, renumber). If you use any of these messages, make sure to then send a resync to the jsui.
  • The js program send a lot of message to the [pattrstorage] (using maxobj.message()syntax, so without patch cord), which in return send (using a patch cord) 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 might cause the [pattrstorage] to get out of sync. In case something like that happens, you can send the resync message to the [jsui].

Desired features (for someday, if ever)

  • 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 target a [pattrstorage] in a different patcher level

Known bugs

  • With slot_round > 0, interpolation visualization is a bit wacky

License

GPL-3.0-or-later

Copyright (C) 2024 Théophile Clet contact@tflcl.xyz - https://tflcl.xyz.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

See https://www.gnu.org/licenses/gpl-3.0.txt.