{"id":26772850,"url":"https://github.com/tiagolr/ripplerx","last_synced_at":"2025-04-12T22:31:43.885Z","repository":{"id":276238951,"uuid":"928623889","full_name":"tiagolr/ripplerx","owner":"tiagolr","description":"A physically modeled synth","archived":false,"fork":false,"pushed_at":"2025-03-13T01:01:49.000Z","size":1260,"stargazers_count":298,"open_issues_count":5,"forks_count":7,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-05T02:01:57.715Z","etag":null,"topics":["au-plugin","dsp","juce","lv2","physical-modeling","synth","synthesizer","vst","vst3"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tiagolr.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-07T00:05:12.000Z","updated_at":"2025-04-02T17:41:01.000Z","dependencies_parsed_at":"2025-03-13T02:29:13.167Z","dependency_job_id":null,"html_url":"https://github.com/tiagolr/ripplerx","commit_stats":null,"previous_names":["tiagolr/ttt","tiagolr/ripplerx"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiagolr%2Fripplerx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiagolr%2Fripplerx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiagolr%2Fripplerx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiagolr%2Fripplerx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tiagolr","download_url":"https://codeload.github.com/tiagolr/ripplerx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248640332,"owners_count":21138019,"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":["au-plugin","dsp","juce","lv2","physical-modeling","synth","synthesizer","vst","vst3"],"created_at":"2025-03-29T01:29:15.504Z","updated_at":"2025-04-12T22:31:43.850Z","avatar_url":"https://github.com/tiagolr.png","language":"C++","funding_links":[],"categories":["Instruments"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"doc/logo.png\" width=\"200\" style=\"padding: 5px;\" /\u003e\n  \u003cbr\u003e\n\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Windows Support](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white)](https://github.com/tiagolr/ripplerx/releases)\n[![Ubuntu Support](https://img.shields.io/badge/Linux-E95420?style=for-the-badge\u0026logo=linux\u0026logoColor=white)](https://github.com/tiagolr/ripplerx/releases)\n[![Mac Support](https://img.shields.io/badge/MACOS-adb8c5?style=for-the-badge\u0026logo=macos\u0026logoColor=white)](https://github.com/tiagolr/ripplerx/releases)\n\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub package.json version](https://img.shields.io/github/v/release/tiagolr/ripplerx?color=%40\u0026label=latest)](https://github.com/tiagolr/ripplerx/releases/latest)\n![GitHub issues](https://img.shields.io/github/issues-raw/tiagolr/ripplerx)\n![GitHub all releases](https://img.shields.io/github/downloads/tiagolr/ripplerx/total)\n![Github license](https://img.shields.io/github/license/tiagolr/ripplerx)\n\n\u003c/div\u003e\n\nRipplerX is a physically modeled synth, capable of sounds similar to AAS Chromaphone and Ableton Collision.\n\n\u003cdiv align=\"center\"\u003e\n\n![Screenshot](./doc/ripplerx.png)\n\n![Screenshot](./doc/ripplerx-dark.png)\n\n\u003c/div\u003e\n\n## Features\n\n  * **Cross-platform** available on Windows, Linux and macOS.\n  * **Dual resonators** with serial and parallel coupling.\n  * **9 Models** of acoustic resonators: String, Beam, Squared, Membrane, Drumhead, Plate, Marimba, Open tube and Closed tube.\n  * **Inharmocity, Tone, Ratio and Material** sliders to shape the timbre.\n  * **Noise and mallet** generators.\n  * Up to **64 partials** per resonator.\n  * Built with **JUCE**.\n\n## Download\n\n* [Download latest release](https://github.com/tiagolr/ripplerx/releases)\n* Current builds include VST3 and LV2 for Windows, Linux and macOS plus AU for macOS.\n* Clap is planned when there is official [JUCE support](https://juce.com/blog/juce-roadmap-update-q3-2024/).\n\n## About\n\nRipplerX is a port of [Rippler2](https://github.com/tiagolr/tilr_jsfx?tab=readme-ov-file#rippler-2)\nfor the Reaper DAW, it started as a research project into physically modelled drums and ended up a\nsynth heavily based on AAS Chromaphone and Sai'ke [Partials](https://github.com/JoepVanlier/JSFX?tab=readme-ov-file#partials---modal-synthesis-effect).\n\nThe first version was based off Partials since it is one the few open source modal synths I could find, from there\nthe main reference became Chromaphone and Collision, the controls and models are almost a one to one match.\n\nRipplerx has additional controls for Inharmonicity and model Ratio and a distinct sound,\nChromaphone is a more complete synth with more features, it has a more sophisticated mallet generator, physics based serial coupling, a better UI, etc..\nIf you like this synth you should definetly check it out.\n\nThe value of RipplerX is as an open source alternative to AAS plugins,\nit also provides an entry point for developers or researchers into physical modelling.\n\nA final note on Chromaphone, what really sets it appart is its coupling system, I don't think I will be able to figure it out judging by the time I spent on that already, the AAS plugin remains unparallel in that aspect.\n\n**Acknowledgments**\n\n* Saike for the open source Partials synth which the original Rippler was based on.\n* AAS for Chromaphone synth and manual with hints about the models and parameters used.\n* Nathan Ho and others for articles about [modal synthesis](https://nathan.ho.name/posts/exploring-modal-synthesis).\n* DSP coders like Tale and Scott Stillwell for providing open source JSFXs and libs.\n\n## MacOS\n\nMacOS builds are untested and unsigned, please let me know of any issues by opening a ticket, don't expect a promptly fix as I don't have access to that OS.\n\nBecause the builds are unsigned you may have to run the following commands:\n\n```bash\nsudo xattr -dr com.apple.quarantine /path/to/your/plugins/RipplerX.component\nsudo xattr -dr com.apple.quarantine /path/to/your/plugins/RipplerX.vst3\nsudo xattr -dr com.apple.quarantine /path/to/your/plugins/RipplerX.lv3\n```\n\nThe commands above will recursively remove the quarantine flag from the plugins.\n\n## Audio In\n\nFrom version 1.4.0 Rippler supports Audio In, this means that you can feed an audio signal into the plugin resonators and excite them when pressing keys.\n\nThis feature works in many DAWs *but not all*, here are some working examples:\n\n- **Reaper** - Play an audio clip in the same track as Rippler, the sound will only go through when pressing keys.\n- **Ableton Live** - Add an audio clip, on the mixer click the button bellow **Audio to** and send it to the plugin.\n- **Bitwig** - Add an audio clip, on the Rippler device window click **Show plug-in sidechain** and select the clip track.\n- **Cubase** - This is done by track sidechaining, unfortunately I can no longer find the video for this tutorial.\n- **Logic** - Track sidechaining should also work for AU version.\n\nBecause not all DAWs support this feature (Looking at you *FL Studio*) an FX version may be added in the future. Meanwhile sidechaning into the synth is the simplest way to use this.\n\n## Microtuning\n\nMicrotuning is supported via MTS-ESP, you can install a player like [MTS-ESP MINI](https://oddsound.com/mtsespmini.php) and run it along side RipplerX, the two plugins will communicate and automatically tune Rippler to the config file loaded.\n\nTuning files can be found for example at https://www.huygens-fokker.org/docs/scales.zip\n\nFor more details and a list of players also check this section of [surge tuning guide](https://surge-synthesizer.github.io/tuning-guide/#mts-esp).\n\n## Build\n\n```bash\ngit clone --recurse-submodules https://github.com/tiagolr/ripplerx.git\n\n# windows\ncmake -G \"Visual Studio 17 2022\" -DCMAKE_BUILD_TYPE=Release -S . -B ./build\n\n# linux\nsudo apt update\nsudo apt-get install libx11-dev libfreetype-dev libfontconfig1-dev libasound2-dev libxrandr-dev libxinerama-dev libxcursor-dev\ncmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -S . -B ./build\ncmake --build ./build --config Release\n\n# macOS\ncmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=\"x86_64;arm64\" -S . -B ./build\ncmake --build ./build --config Release\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftiagolr%2Fripplerx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftiagolr%2Fripplerx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftiagolr%2Fripplerx/lists"}