HexoSynth 2022 - Devlog #4 - The Tracker Sequencer is Back
The HexoSynth modular synthesizer (programmed in Rust) got it's pattern editor back.
This week was mostly about adding back the online help and porting the pattern editor back into HexoSynth. This was the result of a bit of playing around with HexoSynth' tracker sequencer in the pattern editor:
- HexoSynth: Cleaned up the main git repository to contain the current development version.
- HexoSynth: The movement of nodes and clusters of nodes did not move the focus cell position. Fixed this and wrote tests for this.
- HexoTK: WichText got a default color markup:
[t18:]for setting the default color of everything following.
- HexoSynth: Added a floating button bar as menu for opening texts:
- HexoSynth: Added back the old help text, which is unfortunately deprecated. Also I decided to add images to explain mouse gestures eventually. Generally worked a bit on my task list today and noted down things that need to be done.
- HexoSynth: Implemented a little help button in the status text help panel. It jumps directly to the reference documentation of the corresponding node the description belongs to. Also implemented an automated test for the existence and working of this button.
- HexoSynth: Added a trigger button to the GUI.
- HexoTK: Pattern editor has been ported and integrated into HexoTK:
- HexoTK: Fixed a but in the nested widget drawing in case the widgets were cached.
- HexoTK: The pattern editor is now properly updated when the play head changes the rows. The cursor can then be enabled to follow the play head and you can play notes and enter values.
- HexoSynth: Today the first task was to integrate the pattern editor widget into HexoSynth. For this I quickly implemented the WLambda API. To test if it works at all, I placed the pattern editor as panel on the right of the HexoSynth window. I want to make that pattern editor panel slideable, like the node picker. And also give it multiple tabs. For this I need to develop a proper abstraction for the panel first.
- HexoSynth: The tracker keyboard help is now added back too. For now with a crude button at the top that calls up the tracker keyboard help.
- HexoSynth: The pattern editor is nearly done now. You can edit patterns properly now, and the panel can be hidden now just like the node picker panel.
- HexoDSP: For those Windows developers out there, I
cpal_demo_node_apiexample, which utilizes
jackto push out samples to the audio device. With that example it might be easier to get a tone out of HexoDSP on Windows.
- HexoSynth: Also quickly applied the
cpalcode I wrote for HexoDSP to HexoSynth. And now you also got
- HexoSynth: The pattern editor has it's working playhead back! See the Youtube videos at the start of this blog entry.
WBlockDSP - Visual Programming Language for Audio DSP
WBlockDSP: A side project I started in end of 2021 was also WBlockDSP a visual programming language for audio related custom DSP functions.
The idea was to allow the user to build their own custom but limited nodes with a few mouse clicks. Mostly for simple CV signal changes or custom waveshapers this can be interesting.
As core the JIT compiler Cranelift is used. It's easy to compile into any Rust project and thus easy to deploy. It has code generators for x86-64 and aarch64 (ARM64), which should cover most platforms WBlockDSP would be relevant for I guess.
However, today (2022-07-08) I dusted off the old code and started to finish the first prototype of the internal JIT engine:
This functionality requires a lot more work. But the basic parts are there, which is already worth a lot. I have no clue if I will ever get to include this into HexoSynth. There are lots of little usability issues that have to be figured out first. Time will tell if I get back to this.
YouTube Sound Demos
First demo is about the trigger button in the parameter panel. With it you can easily trigger musical events from the GUI now again:
And second the video from the beginning of this page with the little demonstration of the pattern editor:
Devlog 4 Conclusion
Like I said last week, the pattern sequencer is back now. A modular synthesizer without a sequencer is hard to make sound pretty. There are more types of sequencers coming, but before I dive into new features, I want to bring back the old ones first. And then improve the online help for the brave people who want to try it out in it's current state.
The online help is also mostly back, unfortunately the matrix grid gestures are not accurate anymore. And those are which I got to reimplement soon too.
A minor thing is, that I also added a CPAL standalone version for HexoSynth now. Also HexoDSP got a CPAL example. CPAL is a low level audio device abstraction written in Rust. With that it's maybe easier to get a the sound working on systems without Jack.
The more or less immediate tasks I want to get done are:
- Show input/output signal graphs of the selected DSP node.
- Implement more graph/matrix grid editing mouse gestures to the DSP matrix.
- Implement a basic sample browser to load samples in the Sampl node.
- Add back editing CV widgets.
- Rewrite the online help.
I really miss the old signal views, and those are likely the ones that we will see next reintegrated into HexoSynth. The graph/matrix grid gestures are also very important to reimplement. But I'm also eager to get sample loading back. I will let my mood decide what it's gonna be next.
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.