Show newer

After failing in two attempts to make a nice and versatile layout algorithm for the widgets, I went and used the "morphorm" crate. It's the same layout engine that Tuix and VIZIA use, and I had a good experience with it. After a day of work, here it is. Works really nice.

Added a layer system now to HexoTK to manage floating things better in combination with live per frame updated widgets.

Worked a lot on HexoTk the last days. I implemented a basic horizontal (and vertical) layout algorithm now that will suit my needs for reimplementing the HexoSynth GUI. I hope I can show the results before the end of the year!

I started another GUI rewrite, and this time the last one. I'll revive HexoTK and rewrite it's whole internals. It turned out that my coding style is not compatible with VIZIA. Also I am not patient enough to let my development get stalled because I wait for someone else to do work for me.

I didn't want to dive in further, but here I am, calling the fast float "sin" function of the Pico from rp-hal (Rust crate) and generating a 440Hz sine wave. It's even audible on headphones!

I've also started work on a new RGB LED lamp for 3D printing. Here is the first step for prototyping an M4 screw mount to connect two 3D printed parts. The quick iterations are really fun with a 3D printer.

I toyed a bit around with the PWM functionality of the Pico to make a DAC with a little two pole low pass filter. It seems to work fine on first sight. I'm not really into hardware DSP yet, I'll continue with the LEDs in future. This was just a short excursion and experiment.

The WBlockDSP GUI can now display the AST dump. I can now walk the AST from WLambda and transform it into anything I like. Next steps will be to either work on the JIT backend, or on subroutines.

Finally received my Raspberry Pi Pico boards! I quickly soldered a few pins onto one, and wires for the SWD interface to the second one, and ran a Rust program on them! It's amazing that I can use Rust on these tiny micro controllers!

This project has been sitting on my workspace floor for over 7 months now. Mostly because my color generation VM on the Arduino did not work out like I wanted. There is simply not enough RAM in an Arduino Nano (atmega328) to drive 300 neo pixels and an interpreter. I ordered a few Raspberry Pico boards now with an rp2040 microcontroller,and it's a lot beefier and will drive this project easily!

BTW I have been compiling a large list of resources for learning audio DSP, if anyone is interested:

github.com/BillyDM/Awesome-Aud

I hooked the current BlockCodeEditor and the WichText widget up to a WLambda API. The idea is to make the language definition and compilation scriptable using a "language template" written in WLambda. The goal is to have this editor application be able to target other languages than just WBlockDSP too!

The WBlockDSP GUI has now a BlockCodeEditor widget, which implements a basic generic workflow for visual programming with the given BlockLanguage (which defines all possible blocks and available variables).

The WichText widget also needed a way to display data graphs. Mostly for showing waveforms and signal/time diagrams for documentation. I also need them for debugging for WBlockDSP.

Any multiline text widget needs scrolling! So here it is. You can pan with middle mouse button or use the scroll wheel. And the text fragments which are outside the visible area are not rendered anymore. And I got a scroll indicator on the right.

The rich text widget now supports different font sizes and also active text fragments. That means you can click on a piece of text if it is marked as active, bascially like a hyper link, but with any kind of functionality linked to that piece of text.

For debugging and other purposes I've started to implement a very basic rich text widget for Tuix. I just need to display the generated code for the next steps.

I resorted to automated testing again for the graph to abstract syntax tree compiler. Without these it's hard to catch all the corner cases and make sure they are held in check while modifying the code in future.

Show older
Mastodon

A newer server operated by the Mastodon gGmbH non-profit