New Faselunare Vega firmware and the next Ciaramella

Posted by Stefano at 22/11/2023, 06:31:48 UTC.

While we're still recovering from our intense trip to Turin and London, I wanted to update you on what we disclosed there (see previous post).

Faselunare Vega firmware 2.0

At SoundMiT 2023 we announced our collaboration with Faselunare for the upcoming 2.0 version of the Vega firmware. The Vega is a 6 HP Eurorack module with 4 independent voices, based on an ARM Cortex chip. It contains a sample playback engine and algorithms to synthesize kick, snare, and hi-hat sounds.

They requested us new synthesis algorithms for the kick, snare, and hi-hats, each with 8 independent parameters. We immediately realized this would have been a perfect real-world testbed for Brickworks.

Long story short, we were able to come up with original designs and implement them in less than one week! Each new module is made of about 200-250 lines of code, with the processing part taking about 40-50 lines of code. The total amount of code needed for each module instead consists of about 8500-9500 lines of code. No optimizations were required. If we had to code everything from scratch this project could have easily taken us 2 to 4 weeks and we would have probably reached worse results in terms of behavior or robustness.

I call this a total win!

The next Ciaramella

Paolo has been working hard on the next iteration of Ciaramella, as you can see in Zampogna's dev brach.

It is a total rewrite and, in short, it will have:

  • 3 data types (float32, int32, and bool) with strong typing and required explicit casts;
  • explicit representation of variable-sized memory blocks (which allows to implement, e.g., circular buffer and delay lines);
  • a couple of "signal properties" to represent and manipulate initial states and sample rate;
  • inclusion of other files (yeah, that was not there yet);
  • and, best of all, importing of Brickworks-style C code (via a JSON description of the imported API)!

This last one is, IMO, an absolute killer feature, as it allows to also use Ciaramella as a composition language for C-coded modules, thus having the compiler generate and maintain boilerplate and housekeeping code for you. In our preliminary tests, this reduced code size by about two-thirds. I expect the Brickworks + Ciaramella combo to skyrocket our productivity.

Our plan is to re-implement all functionality that was already there (if I'm not mistaken, we still lack conditionals and a bunch of output templates), improve the tooling and ecosystem, and write a formal specification before reaching a first stable release. At the moment, despite what we wished earlier this year, we don't have a precise roadmap yet and we'll be quite busy with other things until January at least (sorry).

Random pics from our trip

Our stand at SoundMiT
Me and Paolo checking our demo setup at SoundMiT
Me giving a talk on Faselunare Vega + Brickworks at SoundMiT
Blank look during my talk at ADC23