{"id":17788884,"url":"https://github.com/moebiussurfing/ofxsurfingsmooth","last_synced_at":"2025-07-20T21:34:36.077Z","repository":{"id":56735718,"uuid":"369113306","full_name":"moebiussurfing/ofxSurfingSmooth","owner":"moebiussurfing","description":"Live smoothing to grouped (int/float) ofParameter's. Different modes, GUI and plotting panel.","archived":false,"fork":false,"pushed_at":"2023-01-19T10:46:18.000Z","size":12776,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-02T04:15:33.227Z","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":null,"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":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-20T07:04:33.000Z","updated_at":"2024-10-25T17:10:25.000Z","dependencies_parsed_at":"2023-01-31T21:16:13.881Z","dependency_job_id":null,"html_url":"https://github.com/moebiussurfing/ofxSurfingSmooth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/moebiussurfing/ofxSurfingSmooth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingSmooth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingSmooth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingSmooth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingSmooth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moebiussurfing","download_url":"https://codeload.github.com/moebiussurfing/ofxSurfingSmooth/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingSmooth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266204641,"owners_count":23892366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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:29.556Z","updated_at":"2025-07-20T21:34:36.060Z","avatar_url":"https://github.com/moebiussurfing.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ofxSurfingSmooth\n\n## OVERVIEW\n\nAn **openFrameworks** add-on to do different styles of timed **Smoothing** to grouped ```ofParameters```.\n\n## Based on the ofxDataStream engine \n\nThis add-on is extremely based on:  \nhttps://github.com/turowskipaul/ofxDataStream  \nCopyright (C) 2015, [Paul Turowski](http://paulturowski.com).  \n  \n\n**ofxSurfingSmooth** is just a kind of `helper` with the **ofxDataStream** engine, ```ofParameters``` bridge, plottings, easy integration `workflow`, `GUI`, and `settings` management.  \n\n## SCREENSHOTS\n\n\u003cimg src=\"docs/readme_images/ofxSurfingSmooth.gif\" width=\"80%\" height=\"80%\"\u003e\n\n### Example: Audio analyzer App\n![](ofxSurfingBeatSync.jpeg)\n\n## FEATURES\n\n- Different `detectors` to apply to the smoothed signals.\n  - Trig bangs as events to be used after.\n- 2 Smoothing Algorithms: **Accumulator** and **Slide**.\n- 3 Mean types: **Arithmetic**, **Geometric** and **Harmonic**.\n- Only `Float` and `Int` types yet.\n- Scalable and draggable plots.\n- Auto `Store/Recall` all the settings.\n- **ImGui** based GUI ready to integrate.\n\n## USAGE\n- Just pass your `ofParameterGroup` parameters containsser.\n- Another smoothed `ofParameterGroup` will be created with the same parameters structure.\n\n**ofApp.h**\n\n```.cpp\n#include \"ofxSurfingSmooth.h\"\n\nofxSurfingSmooth data;\n\nofParameterGroup params; // main container\nofParameter\u003cfloat\u003e lineWidth;\nofParameter\u003cfloat\u003e separation;\nofParameter\u003cfloat\u003e speed;\nofParameter\u003cint\u003e amount;\nofParameter\u003cint\u003e shapeType;\n```\n\n**ofApp.cpp**\n\n```.cpp\nvoid ofApp::setup() \n{\n    params.setName(\"paramsGroup\");\n    params.add(lineWidth.set(\"lineWidth\", 0.5, 0.0, 1.0));\n    params.add(separation.set(\"separation\", 50.0, 1.0, 100.0));\n    params.add(speed.set(\"speed\", 0.5, 0.0, 1.0));\n    params.add(amount.set(\"amount\", 1, 1, 10));\n    params.add(shapeType.set(\"shapeType\", 0, 0, 3));\n\n    data.setup(params);\n}\n\nvoid ofApp::update() \n{\n    // Get the smoothed parameters:\n    float _lineWidth = data.get(lineWidth);\n    float _separation = data.get(separation);\n    float _speed = data.get(speed);\n    int _amount = data.get(amount);\n    int _shapeType = data.get(shapeType);\n\n    // We can get the smoothed params using other approaches.\n    // Look on the example-Basic for more helping snippets \n}\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eDEPENDENCIES\u003c/summary\u003e\n  \u003cp\u003e\n\nClone these add-ons and include them in the **OF**** PROJECT GENERATOR** to allow compile your projects or the examples:\n\n* [ofxHistoryPlot](https://github.com/moebiussurfing/ofxHistoryPlot) / FORK\n* [ofxImGui](https://github.com/Daandelange/ofxImGui/) / FORK\n* [ofxSurfingHelpers](https://github.com/moebiussurfing/ofxSurfingHelpers)  \n* [ofxWindowApp](https://github.com/moebiussurfing/ofxWindowApp) / Only for **example-Advanced**  \n* [ofxMidiParams](https://github.com/moebiussurfing/ofxMidiParams) / FORK / **Only for example-Advanced**\n\n*Thanks a lot to all these ofxAddons coders.*  \n  \u003c/p\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTESTED SYSTEMS\u003c/summary\u003e\n  \u003cp\u003e\n\n- **Windows 10** / **VS 2017** / **OF ~0.11**\n  \n  \u003c/p\u003e\n  \u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTODO\u003c/summary\u003e\n  \u003cp\u003e\n\n+ Simplify API getters.\n+ Add more types: 2D/3D vectors and colors. Using templates [?] ...  \n  [ _**ANY HELP/PULL ON THIS IS REALLY APPRECIATED!**_ ]\n+ Add \"real\" nested sub-groups with tree levels. Now the params are recreated on one depth level only. This could help when duplicating names or indenting sub-groups on a GUI too.\n+ Add independent thresholds/onSet for each parameter/channel and make it functional. Add callbacks to trig other events...\n+ Add a global parameter to calibrate max history/speed.\n  \u003c/p\u003e\n\u003c/details\u003e\n\n## FILTER ALTERNATIVE\n\nThere's another more powerful but complex filtering add-on that you can check too:  \nhttps://github.com/bensnell/ofxFilter\n\n## AUTHORS\n\nOriginal **ofxDataStream** engine author:  \nPaul Turowski. http://paulturowski.com  \nThanks @**turowskipaul** !  \n\nAn add-on by **@moebiusSurfing**  \n*( ManuMolina ) 2022*  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxsurfingsmooth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoebiussurfing%2Fofxsurfingsmooth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxsurfingsmooth/lists"}