{"id":17788867,"url":"https://github.com/moebiussurfing/ofxpresetsmanager","last_synced_at":"2026-01-29T10:03:20.706Z","repository":{"id":50725061,"uuid":"232358911","full_name":"moebiussurfing/ofxPresetsManager","owner":"moebiussurfing","description":"Handle presets of ofParameter's into multiple ofParameterGroup containers. Powered with ImGui and a complete user workflow.","archived":false,"fork":false,"pushed_at":"2022-08-03T13:08:28.000Z","size":45479,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T20:18:28.356Z","etag":null,"topics":["openframeworks","openframeworks-addon"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moebiussurfing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-07T15:48:23.000Z","updated_at":"2022-08-01T04:40:57.000Z","dependencies_parsed_at":"2022-08-03T07:45:16.589Z","dependency_job_id":null,"html_url":"https://github.com/moebiussurfing/ofxPresetsManager","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/moebiussurfing/ofxPresetsManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxPresetsManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxPresetsManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxPresetsManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxPresetsManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moebiussurfing","download_url":"https://codeload.github.com/moebiussurfing/ofxPresetsManager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxPresetsManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28875446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T09:47:23.353Z","status":"ssl_error","status_checked_at":"2026-01-29T09:47:19.357Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openframeworks","openframeworks-addon"],"created_at":"2024-10-27T10:24:25.603Z","updated_at":"2026-01-29T10:03:20.681Z","avatar_url":"https://github.com/moebiussurfing.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"ofxPresetsManager\n=============================\n\n# Overview\n\nAn **openFrameworks** add-on to handle presets of `ofParameter`'s nested into single or multiple `ofParameterGroup` containers. Also powered with a nice GUI, many Helpers, and a complete user workflow.\n\n#### NOTE  \n_If you don't need multiple and independent and linkable groups,_  \n_then I recommend using my simpler add-on [ofxSurfingPresets](https://github.com/moebiussurfing/ofxSurfingPresets)._  \n\n## Features\n\n- **Easy** to integrate.\n- Auto-generates a **GUI** to tweak all the parameters.\n- GUI based on **Dear ImGui**.\n- Clone, Copy, Swap, and **Organize Presets**.\n- Handle **Many Groups** independently. \n  - **Browse** multi Groups and Presets by **arrows keys**.\n- **BPM Timed Randomizer** Players to switch between presets independently for each group.\n- Tweaking for **probabilities** and **Short** or **Long** time **durations**.\n- Two **Types of Presets**\n  - **Favorite**: Fast clickable boxes/key-trigged presets.  \n  - **Standalone**: Archived and named presets that we can load into and from favorites.  \n- **Undo** history engine.\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n## Usage\n\n1. Set up your scene and **initialize** the related **ofParameter**'s.\n2. Add the parameters to the **ofParameterGroup** container.\n3. Add the group to the add-on. \n4. Set **how many** presets you want for the group, and **what keys** to associate as triggers.\n5. Done! Just Play with the addon GUI\n\n## Examples\n\n### 1_Basic (only one group)\n\nIllustrates how to handle some `ofParameter`'s bundled into one `ofParameterGroup` used as a container.  \n\n![](Examples/1_Basic/Capture.PNG)  \n\n\u003cdetails\u003e\n  \u003csummary\u003eCODE\u003c/summary\u003e\n  \u003cp\u003e\n\n**ofApp.h**\n\n```.c++\n#include \"ofxPresetsManager.h\"\n\nofxPresetsManager presetsManager;\n\nofParameterGroup params; \nofParameter\u003cint\u003e shapeType;\nofParameter\u003cint\u003e amount;\n```\n\n**ofApp.cpp**\n\n```.c++\nofApp::setup()\n{\n    // Set the parameters \n    // and add to the ofParameterGroup container. \n    params.setName(\"sceneParamsGroup\");    \n    params.add(shapeType.set(\"shapeType\", 1, 1, 2));\n    params.add(amount.set(\"amount\", 10, 1, 24));\n\n    // Add the Group to the Preset Manager\n    // Set the amount of Presets and each Key Trigger \n    presetsManager.add(params, { 'a', 'b', '0', '1', '2', '3' });\n    presetsManager.setup();\n}\n\nofApp::draw()\n{\n    // Gui\n    presetsManager.draw();\n}\n\n// Done! Nothing more!\n```\n\u003c/p\u003e\n\u003c/details\u003e\n\n### 2_MultiGroup\n\nHelps to learn how to handle multiple `ofParameterGroup`'s.  \n\n![](Examples/2_MultiGroup/Capture.PNG)\n\nWhen adding individually multiple `ofParameterGroup` we can handle them independently.  \nWe can use **arrow keys** to browse the Groups (up/down) and their **Selectors** (left/right).  \nAlso, we will have an extra **Global Selector** called **GROUP_LINK**, which groups all the other group Selectors indexes:  \n\n\u003cdetails\u003e\n  \u003csummary\u003eCODE\u003c/summary\u003e\n  \u003cp\u003e\n\n```.cpp\n// Group 0\npresetsManager.add(params0, { 'q', 'w', 'e', 'r', 't' });\n// Group 1\npresetsManager.add(params1, { 'a', 's', 'd', 'f' });\n// Group 2\npresetsManager.add(params2, { 'z', 'x', 'c' });\n// Group 3\npresetsManager.add(params3, { 'b', 'n', 'm', ',', '.' });\n\npresetsManager.setup();\n```\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eExamplesAdvanced\u003c/summary\u003e\n  \u003cp\u003e\n\n#### 3A_example-LinkServer and 3B_example-LinkClient:\n\nBoth examples run linked together using **ofxRemoteParameters**.  \nThis allows you to control the presets on the **Client OF_App**.  \nThe **Server OF_App** draws your scene using the *linked/received* parameters from the **Client OF_App**.  \nThis is useful because in some scenarios could help to improve the performance or the compiling time reducing dependencies. [OUTDATED VIDEO](http://www.youtube.com/watch?v=kV-t8lIdNRg \"VIDEO\") \n\u003c/p\u003e\n\u003c/details\u003e\n\n## Dependencies\n\n* [ofxImGui](https://github.com/Daandelange/ofxImGui/tree/jvcleave) / _Fork from  @Daandelange_\n* [ofxSurfingHelpers](https://github.com/moebiussurfing/ofxSurfingHelpers)  \n* [ofxRemoteParameters](https://github.com/c-mendoza/ofxRemoteParameters) / _Not required. For the examples 3A-3B_  \n\n## Thanks\n_Thanks to all the above add-ons coders!_  \n_Special Thanks 1 goes to **Nicola Pisanti** for the original https://github.com/npisanti/ofxGuiPresetSelector  \nwhich inspired this add-on a lot. Some of his code is also used here._\n_Special Thanks 2 goes to **@Daandelange**_ for his work to the DEFINITIVE **ofxImGui** repository. Thanks, **Daan**!  \n\n## Tested Systems\n- **Windows10** / **VS2017** / **OF ~0.11+**\n- Should work on **macOS** too.  \n\n## Author\nAn add-on by **@moebiusSurfing**  \n*( ManuMolina ) 2019-2022*\n\n## License\n*MIT License*\n\n\u003cdetails\u003e\n  \u003csummary\u003eIDEAS / TODO\u003c/summary\u003e\n  \u003cp\u003e\n\n* A Better performant version without using hard disk files.  \n* **Memory Mode**, using a vector of XML/JSON instead of files.\n* Improve (silent) de-serialization and ofParameter callbacks / triggering to improve speed.\n* Add params tweening or filtering to ease transitions between presets when switching.\n* Add a minimal/lite class to play compatible preset files but without any GUI or using a tiny **ofxGui**/**ImGui** version.\n* More ideas noted into **ofxPresetsManager.h**.   \n* **Feedback**, **Issues**, **PR**'s, and any kind of help are very welcome!\n  \u003c/p\u003e\n  \u003c/details\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxpresetsmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoebiussurfing%2Fofxpresetsmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxpresetsmanager/lists"}