This project exists explore how different Rust GUI / App frameworks work in the context of building audio applications.
Each app includes a simple UI for the freeverb processor, and where possible includes a realtime visualization of the processed audio.
Each app should:
- ...be written idiomatically for the specific framework, while making use of the parameters exposed by the freeverb module.
- ...have roughly the same overall layout (although there's no need to make them look identical).
- ...be simple enough to follow as an introduction to the framework.
Supporting crates used by the various app projects.
The apps/ directory contains subdirectories for each framework.
See each app's README.md for more information.
A cargo xtask command is included that currently defers to nih_plug::xtask for bundling plugins.
| Framework | Version | Desktop | iPhone | Android | Web | Plugin |
|---|---|---|---|---|---|---|
| Dioxus | 0.17 |
✅ | ✅ | ✅ | ✅ | ❌ |
| egui | 0.33 |
✅ | ✅ | ✅ | ✅ | ✅ |
| iced | 0.13.1 |
✅ | ❌ | ❌ | ❌ | ❌ |
| Vizia | c0ada337a |
✅ | ❌ | ❌ | ❌ | ❌ |
- Desktop builds have only been tested so far on macOS.
- Android builds require a minimum of API 26.
- Plugin support is currently underdeveloped.
nih_plugcurrently supports older versions ofegui,iced, andvizia. Plugin support foreguiis enabled via a fork ofnih_plugthat supportsv0.33. Support foricedandviziashould be possible, but will either require further patching.
Contributions are very welcome!
- If a framework isn't represented here then it would be great to include it.
- Updates for new framework versions are very welcome.
- Testing on various platforms is valuable.
- Documentation to make the examples easier to understand for newcomers is very welcome.