HexoSynth Modular Synthesizer in Rust - Devlog #13: Files, ADSR and VA Filters
The HexoSynth modular synthesizer (programmed in Rust) got an ADSR envelope and virtual analog filters.
If you don't want to dig through the detailed log:
TLDR: Skip to the Devlog 13 Conclusion Section
This is the day by day log of my progress. If this is too verbose for your interest, please skip down to the Devlog 13 Conclusion Section.
HexoSynth: Loading the demo patch or any patch now automatically selects a node. In case of the demo patch, the VOsc node is automatically selected. Eventually the selected node will become part of the saved state of the patch. But at this point I decided to fake it.
HexoSynth: Implemented more GUI tests to detect the correct working of the hover help/tips for the buttons in the top menu and context menus.
HexoTK: Started work on a List widget. I want to use it to build a file browser, for samples and for patches. For this I want a list of scrollable lines of text.
HexoTK: Slow but steady progress, the List widget can scroll already and refer to a selected item. I'll be glad once this is implemented and I can use it for the sample selector and the patch file manager.
HexoTK: Still slow progress. Today I added the scroll algorithm from the pattern editor to the list widget. This way gets rid of some complicated edge cases. Even though the list widget behaves differently than in other applications.
HexoSynth: I prototyped the integration of the list widget into HexoSynth. Discovered and fixed some bugs in the list widget. WLambda API integration worked well and was straight forward.
On Friday the Ubuntu upgrade to 22.04 sadly decided to kill the whole system installation byitself because of some Python library messup at some point. The installation was not salvageable. But that gave me the chance to order my first SSD drive and reinstall a fresh system. A day later and I got my system back up now.
That means, I've not been able to work on HexoSynth the last days. And it will probably take a bit more to get completely back due to some other real life stuff.
HexoSynth: I finally got back to HexoSynth. I continue work on the patches
and samples file browsers now. Today I only added the
HexoSynth: Implemented the first prototype of the file selector. I need to work on the list widget behavior more next.
HexoSynth: More work on the file selector today. Added sorting by name, and a directory name on top of the file list.
The coming week from 2022-10-01 to 2022-10-06 I was on vacation and did not do much on HexoSynth.
HexoDSP: Fredemus from the Rust Audio community developed a virtual analog filter, which I was eager to add to HexoSynth. Here is a quick demo of filtering white noise using that filter:
HexoDSP: Started implementing an ADSR envelope today:
Shortly afterwards the visualization of the envelope was done too:
HexoDSP: Implemented more automated tests for the ADSR envelope.
YouTube Sound Demos
More demos of the
FVaFilt node. First off the gritty and dirty overdrive
of the filter, which is amazing:
This one demonstrates the overdrive and some possible bugs:
Devlog 13 Conclusion
I'm still in the middle of improving patch and sample file dialogs.
I also got a bit distracted by implementing the
FVaFilt node with the
filter algorithms that Fredemus contributed. And then I wanted to have
an ADSR envelope, which is mostly done but still needs some finishing.
I also got derailed a bit by the new policies/guidelines of This Week in
Rust. Recent changes in their guidelines don't want this Devlog on there
anymore, due to missing
Rust coding examples. That is unfortunate for me, as
it was a good motivation to finish this Devlog in time and have it get at least
some attention. I will keep writing this Devlog mostly for me then for now, as
I don't have a clue where to post it instead. This very Devlog #13 very likely
will have some release delay.
There have still been other projects' posts with similar "non Rust specific content" since then. So I might try to sneak in another update below their new guidelines (see https://github.com/rust-lang/this-week-in-rust/issues/3639).
The TODO list now contains the following:
FVaFiltnode implementation and automated tests.
- Improve patch saving/loading with a file management.
- Add more automated test cases for the UI workflow.
In case you find this project interesting or have questions,
you can reach me via Discord these days, check out the
in the Rust Audio Discord. Optionally I'm also online
on IRC (via Matrix) in the Linux Audio Developer channel
#lad (nickname 'wct')
on Libera.Chat: irc:#email@example.com.