HexoSynth Modular Synthesizer in Rust - Devlog #12: Documentation for me and you
The HexoSynth modular synthesizer (programmed in Rust) has a proper introduction and reference documentation now.
If you don't want to dig through the detailed log:
TLDR: Skip to the Devlog 12 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 12 Conclusion Section.
HexoSynth: Started integrating the Markdown to WichText translator into the help texts.
HexoTK/HexoSynth: I rooted out some remaining layout issues with the Markdown translator. It already looks very promising. Going to turn more text parts into properly formatted Markdown now:
HexoDSP: Today I finished reformatting the help texts for all the nodes in HexoDSP. They are now adhering to the formatting convention of node names, parameter names and values. So that HexoSynth is using a consistent visual language in it's help texts.
HexoSynth: Afterwards I started with the still in progress rewrite of the general introduction to HexoSynth. As you can see, the manual comes with images to explain things in HexoSynth. I hope this makes it easier for new users to find into HexoSynth.
HexoSynth: Today I've made lots of screenshots about how to use the Cell Matrix in HexoSynth. Next I will add them to the introduction text in the "Help" dialog:
HexoSynth: The mouse gesture documentation was finished today. I also put some extra effort into a mouse cheat sheet as an overview of the mouse gestures. I want to include that directly into the main GUI as reference eventually.
After some thinking, I decided to put the introduction documentation into the right panel:
I was working on a good starting patch for HexoSynth, when I was noticing
Ad envelope did not behave properly when being retriggered too fast.
It would cause discontinuities in the output signal.
So I started to work on the
Ad envelope in HexoDSP. I started to use the
envelope generator I wrote in synfx-dsp. And notices some gaps in it's API
synfx-dsp: Today I worked a bit on the envelope generator stuff in synfx-dsp. I stumbled across the fact that retriggering the attack stage will take equally long, regardless of how close the current value is already to the target value.
Today I refactored the
Ad envelope out into
synfx_dsp::EnvRetrigAD. That makes it
easier reusable once I want to add it to synfx-dsp-jit.
HexoSynth: I've also finished the first initial demo patch for HexoSynth, which shows a partially self playing patch. There is also a second signal path in that patch for MIDI input. This way the user can directly see and hear what HexoSynth does. And has something to play around. The initial demo patch can be loaded later using the "Demo" button:
HexoSynth: Made a small but important fix and refactor in the top menu: "Load" and "Demo" now ask for confirmation before deleting your patch.
HexoDSP: I've made a big breaking change, and replaced a lot of the gain knobs with proper parameters that are either a volume knob (-90dB to +18dB) or a gain knob (-24dB to +24dB). This change hopefully brings more sanity in volume control into HexoSynth.
HexoDSP: The volume/gain knob handling was refined today to feel nicer to adjust. The tests in the HexoDSP repository have also been fixed.
HexoSynth: Updated the screenshot in the README, aswell as noted the breaking change in the CHANGELOG.
HexoSynth: Documented the top menu buttons with some descriptions.
HexoTK/HexoSynth: For helping myself with writing tests, I added a mode where I can click somewhere and get a dump of the widgets at that position. This might help me setting up tests in future:
Aside from that I factored out the debug panel popup into it's own file. I'll slowly
try to refactor the big
main.wl GUI WLambda file into smaller better grouped
files. For this a finished test suite is necessary though, so the refactor does not
do any damage.
HexoSynth: Today I implemented help texts for the matrix context menus.
YouTube Sound Demos
Devlog 12 Conclusion
The last two weeks have been dedicated to improve the onboarding of new users. I've invested into a Markdown to Wichtext translator, which enables me (and other potential developers) to write Documentation easier. Word wrapping is now done automatically and does not have to be done when writing the documentaiton. Also the DSP node built-in documentation was simplified for the author.
Next I fixed the
Ad envelope node for retriggering and with that I built a better
demo patch for when you open a new patch. I also worked on the volume/gain handling
and made those knobs actually work in dB units now. I hope this sanitizes volume and gain
control a little bit more.
With all that these items are off the list:
- Rewrite the online help.
- Add a getting started tutorial.
That means HexoSynth now has a proper introduction and usage reference online. The matrix mouse controls are in a very prominent spot, so that new users can't overlook these and can immediately get into the usage.
I've refined my immediate TODO list for the next HexoSynth release a bit:
- Improve patch saving/loading with a file management.
- Add more automated test cases for the UI workflow.
I'm going to put these on hold for now:
- Add inserting DSP chains that are to be pre-defined. And also inserting random DSP chains for a more explorative/experimental workflow.
- Add back editing CV widgets.
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:#firstname.lastname@example.org.