3 ms·
DAW is so challeging! But in terms of audio effect plugins, I think EGUI is usable already. Here is a Dattorro reverb VST plugin written in Rust with egui and g
by chaosprint 3y ago
DAW is so challeging! But in terms of audio effect plugins, I think EGUI is usable already. Here is a Dattorro reverb VST plugin written in Rust with egui and glicol_synth:
https://youtu.be/DLFO4dXzKsg https://youtu.be/DLFO4dXzKsg
Since EGUI can be used almost every where, I also made an experimental front end for Glicol music language with EGUI: https://glicol-egui.netlify.app/ https://glicol-egui.netlify.app/
There are many features missing, compared with HTML/CSS: https://glicol.org/ https://glicol.org/
The biggest issue with EGUI is that the style seems to be quite fixed. The default style looks great for some customisation would be more ideal in some context.
although we are not there yet, it's great to see more and more attempts for audio /gui in rust. And I really feel that Rust is the best choice for the audio backend now.
- andrewmcwatters 3y agoI don't think you can meaningfully use immediate-mode GUIs for anything related to compositing work. If you're creating debug UIs or basic UIs at best, you're fine. That might actually work out alright for DAWs, but if you want sophisticated user-interfaces where you can add effects to things, you need to start retaining graphics data, and so many people advocating for these old school immediate-mode GUI libraries just don't get that.
- truckerbill 3y agoCan you explain this point a bit more? I've always hated retained mode GUI systems and im-guis seem so much nicer to work with. But I've not made something huge with them. What do you mean by compositing in this context?
- pkphilip 3y agoImmediate mode gui - psuedocode where volumeSlider is a slider used for setting the audio volume and spectrograph includes a bar which displays the volume visually: function volumeSlider_onChange() { audioEngine.setVolume(volumeSlider.value); spectrograph.setVolume(volumeSlider.value); } function stopButton_onClick() { audioEngine.getCurrentTrack().stop(); } function audioEngine_statusCallback(Track track) { spectrograph.update(track.status); } To do something like this in a declarative UI, you will need some sort of a state machine, that state machine will then need to have a bunch of state variables, callbacks/hooks, providers/notifiers etc. And you have to have this managed for each variable. That is, there will be a LOT more code that needs to be run before updates flow from the GUI to the engine or from the engine back to the GUI. Why would you think that declarative UI will be more efficient?
- rerdavies 3y agoNot beautiful. That is not something that makes you want to use egui. (My plugins: https://github.com/rerdavies/ToobAmp https://github.com/rerdavies/ToobAmp using a web interface; I'm currently weighing options for GUI backend for a Linux native interface. LV2 plugins infamously cannot use GTK or QT). Current leading choices: cairo2, or embedding a browser control.