Befaco modules development blog

The neoni is special in that it drops it’s own frequency to 0 when switched to TZFM, which results in the perceived pitch being the pitch of the modulator. If you drop the pitch of a different TZFM oscillator to 0 using a large negative voltage on the pitch input, it should yield somewhat similar results.


Let’s complicate things a bit and add gritty noise to the FM input of the oscillators and you can clearly see in the patch how they differently reflect the tzfm. But it seems that in the comment above Schabbes answered correctly why this happens ) pony&neoni.vcv (3.0 KB)

Little update!

Befaco Visit I visited Befaco HQ in Barcelona. It was super cool to see the workshop, hear about all the upcoming projects they have planned and nerd out about gear :nerd_face: . There’s some neat stuff in the pipeline, only some can be talked about so far!

Midi Thing 2 Befaco are releasing an updated version of Midi Thing (a hardware module that converts Midi to gates, CV and much more including oscillators). We plan to add VCV Rack version that will act as a bridge over MIDI, i.e. allowing 12 channels of CV from VCV Rack to the hardware.

Pony VCO Polyphonic version I’ve been working on adding polyphony to PonyVCO, there is a build available for those who want to give it a test drive: Releases · hemmer/Befaco · GitHub

This may be of technical interest as the mono version uses Differentiated Polynomial Waveforms. However it required double precision otherwise the finite difference approximation breaks down at low frequencies (the phase increment becomes tiny, and you divide by a tiny number). For poly versions to be performant we typically want to use simd but this is just float precision. So as a compromise, this version uses float_4 then switches over to “naive” waveforms below ~40Hz or so (depends on sample rate, oversampling etc). The logic being that aliasing is not an issue as there are no audible harmonics at Nyquist at those (or below) frequencies. This seems to work well but keen ears welcome.

Uh oh, DPW method with floats breaks down at lower frequencies - this is technically a square wave :S image

EvenVCO hard sync The Pony VCO work is a precursor to overhauling the EvenVCO module, specifically fixing sync, which I’m very slowly working on.


I saw the Midi Thing 2 mentioned during Superbooth and that’s got me very interested as I’ve moved back to primarily using the DAW (plus VCV plugin) to drive sequencing most things in my eurorack rather than hardware sequencing or using mostly generative modules, I’m moving back to making music more in an intentional way but with some added pseudo-randomness to keep things fresh.

Do you know if there is a release date yet?

Mm not sure - Juno reckons late Aug?

That’s sooner than I expected. Good news, cheers!

I know that this is something you won’t be emulating (!), but their new 7U case looks rather tasty. Did you see one?

Yeah it looks great, really sturdy and io on the back. Only thing missing in my mind is an easy way to sit it at 45 degrees (like I have my mantis 99% of the time) - there’s the vesa mount but that’s overkill for just propping it up. I’m sure a 3D printed stand would work though

1 Like

£10 from Amazon :slight_smile: I reckon it’s sturdy enough!


EvenVCO Improvements

I’ve been long meaning to fix the missing Hard Sync on EvenVCO. The first option was to modify the existing implementation to use minBlep, but there are actually a few more issues that I’d like to fix so a re-write seemed like a better option. minBlep also has to be applied serially so not so good for polyphony/simd efficiencies.

Issues with existing implementation

  1. hard sync not implemented

  2. FM triangle with high index produces voltages well outside standard range

  3. minBlep seems to have an odd bug where for the duration of the correction, there is a subtraction relative to the main wave, once the LUT runs out. Compare: image


  4. At low frequencies (LFO limit really, so not a huge deal), triangle becomes rounded off, and lower amplitude. (it’s due to it being an integral of the square, and therefore producing integration error I think) image


Given I’ve implemented a relatively efficient DPW (differentiated polynomial waveforms) implementation for Pony, I’ve looked to re-use parts of this for EvenVCO. I’ve temporarily added this as a new module EvenVCO (beta) to allow people to test/compare. If approved we would just keep one obviously. Still outstanding:

  • work out from Befaco (or anyone with the hardware) at which point in the waveform does it reset to with sync
  • more testing / comparison
  • currently sync is handled in a naive way (averaging across the discontinuity that occurs in the core waveform but not accounting for the fact that the voltage at the sync point can vary). Oversampling helps here too, x2 by default. There is a more correct way to do this that I’m working on but good to have a flag in the sand now.

Re aliasing - I would say it handles this reasonably well, with similar CPU usage. You get a slight drop off in higher harmonics due to the DPW method.

Beta builds in the usual place: Releases · hemmer/Befaco · GitHub


Excellent - very happy to see this!

I was just thinking the other day if it was time for the annual nudge :slight_smile:


I logged the bug with VCV’s weird SIMD offset many years ago.

1 Like

Out of interest did you get to the bottom of it (work out a fix) or just spot it?

It causes a dc output on the saw that goes up with frequency. In my vcos that use it I subtract out the resulting DC. I didn’t notice any obvious audio frequency errors.

And example would be in the implementation of your EV3, right Bruce?

Yeah anything that uses the dsp::MinBlepGenerator probably has this:

I’m surprised there isn’t a bigger effect on the spectrum to be honest.

I was thinking of Bruce’s comment about DC in the saw output, which is reduced in EV3 but not gone.

Ah maybe you’ve not updated recently, this should have been addressed somewhat (green trace). DC is even lower in the re-written version (pink trace):

1 Like

Oh great! I’m just running on the latest version in the library.

1 Like

I also wanted to share that Burst has been added as well (beta phase, still testing etc):