Weird Constructor / Posts / HexoSynth Modular Synthesizer in Rust - Devlog #13: Files, ADSR and VA Filters

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

Detailed Log

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.

2022-09-15

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.

2022-09-16

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.

2022-09-18

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.

2022-09-20

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 list widget prototype

2022-09-22

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.

2022-09-23

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.

2022-09-25

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.

2022-09-27

HexoSynth: I finally got back to HexoSynth. I continue work on the patches and samples file browsers now. Today I only added the hx:get_directory_patches[] and hx:get_directories_samples[] WLambda functions.

2022-09-28

HexoSynth: Implemented the first prototype of the file selector. I need to work on the list widget behavior more next.

HexoSynth file selector prototype

2022-09-30

HexoSynth: More work on the file selector today. Added sorting by name, and a directory name on top of the file list.

2022-10-01

The coming week from 2022-10-01 to 2022-10-06 I was on vacation and did not do much on HexoSynth.

2022-10-06

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:

2022-10-07

HexoDSP: Started implementing an ADSR envelope today:

HexoSynth Adsr Node Prototype
HexoSynth Adsr Node Prototype

Shortly afterwards the visualization of the envelope was done too:

HexoSynth ADSR envelope visualization
HexoSynth ADSR envelope visualization

2022-10-10

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.

This Week In Rust - No HexoSynth No More Okay
This Week In Rust - No HexoSynth No More Okay

(Source: https://github.com/rust-lang/this-week-in-rust/pull/3650)

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:

  • Finish FVaFilt node implementation and automated tests.
  • Finish Adsr node.
  • Improve patch saving/loading with a file management.
  • Add more automated test cases for the UI workflow.

Contact

In case you find this project interesting or have questions, you can reach me via Discord these days, check out the #hexosynth channel 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:#lad@irc.libera.chat.

Links

Weird Constructor Avatar
Weird Constructor

Nice end 30 y/o guy, geek and F(L)OSS developer that messes with: Linux, Windows, Networking, Interpreters/Compilers, Games, Audio, Music, GUIs, C/C++, Rust, Scheme/Lisp, 3D printing, electronics and more.


For updates follow me on Mastodon

All the F(L)OSS development on my projects happens in my spare time. If you find what I do useful, entertaining or just want to support me, you can do this via Liberapay:

Donate using Liberapay