Maybe some of you know, I’m running the Eurorack-blocks project, which aims to develop your own custom Eurorack module (that is with its own custom front panel), with no knowledge in hardware engineering, and basic soldering skills, in a prototype environment that allows you to test the module before you even manufacture it (that is in VCV Rack). It is using the Daisy Patch Submodule.
Before it was C++ only, but we just added a first iteration for Faust integration. And your feedback is important!
I recently fired up your project - pretty slick. My goal is to use faust to write some-what portable DSP things and eventually get it onto a patch.Init(). I’ve been following the handy Eurorack-blocks faust integration guide but seem to have hit a snag while running erbb build simulator:
$ erbb build simulator
make: Entering directory '/data/eurorack-blocks/samples/faust/artifacts/simulator'
ACTION Faust
ACTION UI
ACTION VCV Rack
warning: non mapped checkbox /FLANGER/0x00/Bypass
warning: non mapped checkbox /FLANGER/0x00/Invert_Flange_Sum
warning: non mapped hslider /FLANGER/Delay_Controls/Flange_Delay
warning: non mapped hslider /FLANGER/Delay_Controls/Delay_Offset
warning: non mapped hslider /FLANGER/0x00/Flanger_Output_Level
warning: non mapped hbargraph /FLANGER/0x00/Flange_LFO
CXX plugin_vcvrack.cpp
It looks like it installs okay, but when I fire up Rack and try and add the Flanger module it segfaults on me.
Any clues? I imagine those warnings would be the first place to look, right?
Ok, I had a bit of a dig this evening, I think the non mapped warnings are harmless. I built a debug version and fired up Rack in gdb - I see this:
Thread 1 "Rack" received signal SIGSEGV, Segmentation fault.
0x00007ffff573e318 in mydsp::instanceClear (this=0x1fb1408) at ../module_faust.h:132
132 fRec1[l1] = 0.0f;
(gdb) bt
#0 0x00007ffff573e318 in mydsp::instanceClear (this=0x1fb1408) at ../module_faust.h:132
#1 0x00007ffff573e495 in mydsp::instanceInit (this=0x1fb1408, sample_rate=48014) at ../module_faust.h:156
#2 0x00007ffff573f530 in Flanger::init (this=0x1fb1068) at ../Flanger_erbb.hpp:82
Some weirdness in initialization?
So I took a peek, and added the dsp.memoryCreate(); call to the init function in erbb/generators/faust/code_template.hpp:
No worries, I’ve got a working install, and I’m really enjoying messing around with Eurorack-blocks. In fact, this weekend I managed to get a kind of shimmer greyhole verb up and running on the Patch.Init(), which is fun.
Here’s something else I knocked up. I borrowed a bunch of Faust filter models - Diode ladder, moog Ladder, Korg35, 2nd order SallenKey, Oberheim SVF, plus some stuff from the physical modelling libs, like the Formant Filter bank and finally some comb filters.
All of them run in parallel, and I can change the model by a push button or via CV, which I think is neat. Here’s a quick run through of the sounds:
Hey @ohthepain ! I think I made the panel in Illustrator, and then imported it in Inkscape to generate a SVG file that is suitable for the limited SVG implementation of VCV Rack that is used to simulate the Eurorack module on your desktop.
The board it uses is kivu12 and it’s made using KiCad
The project is here if you want to give it a run. I’ve been out of it for quite some time because of work, but I’m going to get back to it during December, and in particular fixing a hardware flaw to handle triggers properly when another module has very short triggers.
There’s also related memoryDestroy function that is supposed to be called after patch finishes running to release that memory. That’s not very relevant on MCU where it runs forever, but otherwise you might end up with a memory leak in VCV.