Shiva Preset Manager is a sophisticated preset module (OSC template) that can be added to your existing TouchOSC control surface to save, load and manage presets of your control settings. Check out the detailed feature list below!
If you like this software, and use it frequently or in a commercial context, please consider supporting the project with a small donation! Check out the Donations section at the end of this Readme. Thank you! 🙂
License note: Please note that starting with version v0.2 the license for this repository has changed from MIT to GPL-3.0. Thank you!
-
Select controls by:
-
MIDI message attached
-
OSC message attached
-
Special string prefixes at start of a control's tag field value:
To explicitly include or exclude single controls or a whole group, add either the string "shiva" or "noshiva" to the start of the control or group tag!
-
-
Optionally limit preset to a certain base group, so multiple preset modules can be added to a surface, e.g. one on every pager page.
-
Saves the controls'
x
,y
, andtext
values into the preset. -
Extended Manager mode
The default mode. Switch between modes by tapping the toggle icon on the title bar.
-
Direct Access mode
Easy and quick access to all saved presets through navigation buttons, or by intuitive swiping through preset pages.
-
Small collapsed mode
Tap on heading to switch between collapsed and normal mode.
-
Copy, paste, and delete presets between preset slots through context menu.
The context menu is invoked when you long-tap (hold) on:
- The small selected preset no. display in Extended Manager mode, or
- Any of the preset buttons in Direct Access mode.
-
Preset name editor
- Tap on the bigger multi-line name display to edit the currently active preset name.
-
Interactive settings
Settings can be changed on-the-fly in the running TouchOS surface:
- Long-tap (hold) the toggle icon on the title bar to open the settings page.
- When choosing the control select mode in the settings, the number of recognized controls is indicated, and all selected controls are blinked shortly.
-
Fail-safe load and save by requiring "Save" or "Load" function select.
-
Automatic and manual preset crossfading
-
"Randomize all controls now!" option (available in the interactive settings).
-
Last preset is automatically loaded on surface startup.
-
Auto-detect and indicate if controls have been modified since last preset loading.
- Tap on the single-line preset info display to blink all controls that currently differ from preset values.
-
Restore controls working state cache with 10 undo steps, if you accidently loaded a preset and want to revert to a previous working state.
-
A basic skin settings config group in TouchOSC Editor view, to allow quick changes to colors, borders, backgrounds, etc. of elements, and apply those changes at startup.
-
...
A short demonstration is available on YouTube:
Performance test with 200 controls:
- Fast PC, good performance:
- Cheap, 4 year old tablet ..well, it doesn't crash ;)
-
Extended panel
Fail-safe loading and saving requires function select before tapping "ENTER".
- Direct Access panel
- Fully collapsed (tap on heading)
- Fader
Selecting a duration.
- Fader active
- Copy-and-Paste menu
-
Interactive settings
Settings can be changed on-the-fly.
Long-tap (hold) the toggle icon on the title bar to open settings.
- Preset name entry
-
Large keyboard
Large keyboard can be selected in interactive settings.
- Preset manager module in TouchOSC editor view:
- Preset manager module offers some basic skin setting in editor views:
- To change colors or borders, open the "skinSettings" group, and edit colors or borders on the right:
- Download and open the preset module
.tosc
file in the TouchOSC editor. - Copy and paste the control into your surface.
- Go to the "config" group inside the module, and adjust the "Preset root control" setting.
- Enjoy!
The on-screen keyboard (control group groupKeyboard
) used in the preset
manager is self-contained and re-useable. If you want to use it separately in
your control surfaces, you can copy just the groupKeyboard
to anywhere in your
surface.
The keyboard control will set itself to visible and interactive upon receiving a notify() message, and hide itself again upon closing.
Short demo video on how to copy and use it in your template:
LUA script for using the keyboard group with arbitrary controls: (click to expand)
-
From your label or text control, use a lua script to send a
notify()
message to the keyboard group:-- reference to the keyboard control local kbd = self.parent.children.groupKeyboard function onValueChanged(k) -- send on toucch relase if k == 'touch' and not self.values.touch then -- it sends its own ID and its text value kbd:notify(self.ID, self.values.text) end end function onReceiveNotify(cmd, text) -- receive the updated text back from keyboard control self.values.text = text end
Check the Releases section.
Please file an issue in the Issues section.
As this is just a hobby project in my freetime, I cannot promise I will get to any of them, but nevertheless, suggestions and bug reports are welcome! 🙂
If you have any ideas or want to contribute to the project yourself, feel free to fork it and submit the changes back to me.
- Support send/receive presets over MIDI SysEx, for persistent storage e.g. in a MIDI Librarian, or for live sharing over MIDI with other users that use the same OSC template for their gear :). See discussion and MidiHax repo with the code snippets for handling MIDI SysEx encoding/decoding in TouchOSC templates.
- Place the presets table globally, as a sibling to the preset module. This will allow upgrading the preset manager module without losing your presets :)
- Add a "Save" option to context menu in Direct Access mode, to allow saving the current modified state to a new preset slot.
- ...
This is an Open Source software and free to use for everyone in any which way possible! :)
Many Thanx and Enjoy!