Show newer

The main hard drive decided to die a slow but certain death. So I'm forced to do some system administration instead these days. No data is lost due to proper backups being in place. And my projects are on multiple servers and backup disks anyways. It's just annoying.

Thanks to Linux for being such an amazing platform for handling these hardware problems so nicely. ❤️ smartmontools ❤️ dd ❤️ rsync ❤️

Getting started implementing some real nodes. Starting with one of the more complex ones: A simple sampler. It means I'll have to implement a sample loader and a UI. The UI in the screenshot is still a mockup. We are by far not there yet, we're just getting started!

As promised, I factored out the audio engine of HexoSynth into it's own (Rust) library. You'll find it on Github. Once I implemented the modules every Rust programmer is able to quickly develop his own fixed or modular synthesizer. My own main focus remains the same: Make HexoSynth fluently useable, so I can finally make music with it.

Looking back at the done TODO items of the HexoSynth project. Looking back I invested quite some work into it already. I started this project on the 14th February 2021. And the core parts of the audio engine are finally done.

Another leap, I added output port feedback indicators in the arrows that represent the module/node connections. Still have to implement a filter that smoothes the LED flickering a bit.

Made a bigger leap today.The DSP graph is now automatically and correctly ordered. And two types of errors can be caught now: Crossing outputs at an input and creating cycles in the module/node graph. For feedback you are supposed to use specialized feedback delay nodes in HexoSynth.

There are not many chances to implement at least half fancy algorithms. But I got the chance now to implement Kahn's algorithm and depth first search for ordering nodes in my DSP graph and detecting cycles for new module connections. As usual: automatically tested.

I worked this week on the core of HexoSynth again and plan to refactor it's core into an extra library. I take an extra effort for documenting what is mostly an internal API. One of the most important rules for documentation: Documentation must contain at least an example of how to actually use what you are describing. Code says more than 2 paragraphs of prose. Write your own StackOverflow to copy from, your future self will thank you.

Working on the WAvrVM firmware, today I finally got around to implement an op code parser for the serial protocol between the and the via a HC-05 bluetooth module. The program already takes more than 50% of the available flash and SRAM.But I think everything will fit nicely.

I took the time to document the operations I implemented for my control software WAvrVM. That is a little VM that runs in an with an instruction set to calculate and set the pixel colors in an RGB LED strip. Joined with the bluetooth module HC-05 a or can then upload new animations or just change the colors.

For the big LED panel project I finally found the time to cut the strip into 45 parts. Each 5 LEDs long. Also removed the adhesive pads of them, because it does not stick to 3D printed parts well. Going to use hot glue for this.

For spin off projects I plan to make the DSP part of HexoSynth reuseable, that means it will be split up into an extra Rust crate and provide an API that is not tied to the hexagonal layout. So I shuffled around the code into separate files today.

First sound demo of the built-in tracker. Envelope and pitch is both done by the tracker sequencer. It's really just a primitive demo, there are no other sound shaping modules yet unfortunately.

Finally there is a very basic way to load and save initial patches. This makes debugging so much easier. You also see the tracker sequencer in action there. Still need to debug the clock input of it. But in principle you see that the sequencer is working well already.

Prototyping a new project idea: A DIY hardware interface for HexoSynth. The idea of patching HexoSynth with real cables and using real knobs for controlling the parameters totally got me. Now I'm researching how to realize this cost and work effective.

Show older
Mastodon

This is a brand new server run by the main developers of the project as a spin-off of mastodon.social 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!