Befaco modules development blog

well, Roland and Sequential invented it. Don’t know how much blame to give Yamaha. Oh, heck, why not.

3 Likes

I guess it’s hard to tell what is aliasing and what is just sidebands of an agressive carrier and modulation signal. What I can say is the spectrum looks no different at x16 oversampled than x4 (or whatever it was in the above screengrab), and I would expect the spectrum to be “busy” regardless. Below shows a comparison with WT VCO (mid) and hardware (bottom):

@officialdjglitch - do you mean filter the carrier wave pre-modulation (somehow) or post?

1 Like

Post, definitely. Even if the wavefolder itself doesn’t alias, running it through other modules (like filters) with that much frequency content that high up could maybe cause further aliasing. I’m definitely not a DSP guru, this is just my observation after having used Rack for so many years.

One thing I see discussed regarding plugin aliasing is using oversampling plus an ultrasonic filter (such as AirWindows Ultrasonic) after each stage that could alias. It’s a naïve approach but perhaps it could work?

FabienTDR (of Tokyo Dawn Labs) shares a lot of good info about methods for dealing with aliasing on Gearspace.

Mm I’m not sure I agree, I think there is a risk of conflating aliasing (producing high frequency content that cannot be represented with current sample rate which creates artifacts) and high frequency content in general. If aliasing occurs then it’s already too late to do anything about it, so the 19kHz filter wouldn’t help. Even if it did, I think that would be annoying (say) if I used a 88.2kHz card and my VCO arbitrarily cut out way earlier.

What is true is that if you pass high frequency content from Pony VCO into (say) another module with nonlinearity then depending on that modules implementation you might then get that module to alias, but that’s another issue (which can be resolved with intermediate filtering). As there are many great filters in VCV, I think letting the user apply this (in the modular spirit) is the correct solution.

In this implementation I’m using two strategies to minimise effect of aliasing (oversampling and ADAA) - hopefully if implemented correctly this should be enough.

1 Like

Thanks to @Squinky for some great (ongoing) feedback that has improved the module (and actually others that use oversampling in the Befaco collection).

Unofficial builds are available for early testing here: Releases · hemmer/Befaco · GitHub

I still don’t really understand the part about sync, the implementation probably isn’t quite right. @baconpaul - if the sync clock is arbitrary (as is the case here) rather than a known oscillator that runs alongside the main osc (as is the case in surge) is there any hope beyond the naive approach I’m doing here? I’m hoping the averaging you describe and light oversampling is enough.

2 Likes

the averaging plus 2x was enough for us in surge except in the most extreme sync cases and we shipped it happily yes.

The trick is: when the sync clock turns over you actually know your prior phases so you can write a differentiable form for a turn-over-at-half-way-through but then you get a constant DC offset growing in your integrated signal basically. And the math is tricky for the non saw shape. When I finally get around to writing my DFAM-like voice with real inter-saw hard sync I will figure out the algebra :slight_smile:

2 Likes

Given you are on the topic of sync, can I give my annual nudge about the non-functioning sync input on Even VCO please? :slight_smile:

4 Likes

side note: yes please :slight_smile:

2 Likes

If I understand correctly, the ultrasonic filter helps prevent further aliasing when more harmonics are generated in the future since it removes ultrasonic frequencies, creating more “headroom” (especially at higher sample rates). As Chris says, “Drop it into your (preferably 96k or 192k) digital mix and it will clean up anything nonlinear that goes after it (emphasis added).” This could be especially useful for (say) multi-stage waveshaping? To your (good) point about a modular approach that gives users control, it would be nice if Rackwindows implemented Ultrasonic. In the case of multi-stage waveshaping and other multi-stage processes, they don’t have the opportunity to insert a filter in the middle.

1 Like

Ha, this marks the passing of time. I will say for those who don’t know, I haven’t ever contributed any code to EvenVCO (that was before my time) and is a bit hairy with the poly simd code. I also don’t have a hardware unit so, e.g., don’t know what part of the waveform the sync resets to (minor point but I’m a details person!).

That said my head is now in a oscillator space so may be good time to revisit. I will say it’s not trivial (phase = 0.f), and in fact might be easier with a completely overhauled EvenVCO. Never say never…

7 Likes

A new module from Molten Modular x Befaco has been added to the collection: Motion MTR. If you’re interested and want to have a play, builds can be found here: Release Development Build · hemmer/Befaco · GitHub

Motion MTR

Motion MTR allow you to mix, attenuate and invert signals while having clear visual feedback of their levels. Each channel can function as:

  • Audio level control with VU meter
  • CV attenuator with voltage meter
  • CV inverter with voltage meter

Each input is normalled to 10V, so you can use each of them to generate fixed voltages. Also, the outputs of channels 1 and 2 are summed into Out 3 to be used as a mixer. Patch it wildly to make it work as an attenuverter with offset, as a mixer, a VU meter or a combination of them all! This module is our first collaboration with Robin Vincent from Molten modular.

The only difference from hardware is the following: MotionMTR optionally doesn’t use the 10V normalling on inputs if in audio mode to avoid acidentally adding unwanted DC to audio signals, see context menu. E.g. if you temporarily unpatch an audio source whilst using it it mixer mode, you get 10V DC suddenly and a nasty pop.

27 Likes

Looks awesome, thanks Hemmer!

1 Like

Greetings ! Why does tzfm change the frequency and not just the timbre? There is no such thing on the neoni.

I’m sorry I don’t understand the question. Neoni is a different module which made different design choices. TZFM (thru zero frequency modulation) should change the frequency, and this will affect how the module sounds - is this what you mean by timbre?

If I take a pony oscillator connect it, for example through a vca, which is controlled by a slightly short envelope and connect it in pony fm, by changing the frequency of the second oscillator the fundamental frequency will change, but in the neoni it will not change. That’s what tzfm is for, to change the timbre but not the fundamental frequency. At the same time, if you feed a continuous waveform without envelopes, everything works fine.

Is it possible this is an FM vs phase mod thing? True fm is rarely used, as it easily goes out of tune with a little DC on the fm.

Like Bruce hints at above, the modulator input needs a DC-blocker for it to work properly, and Neoni has that but maybe not Pony?

I used to have a long and boring article about this. But here’s the money shot, On top is the Fundamental VCO putting out a sawtooth. We all know there is a bug in fundamental that puts DC on the output. The second row is what happens if you use this for FM. The third row is the same, but with phase modulation. You can see everything you would expect - FM goes out of tune if there is any DC at all, and PM has a lot more harmonics.

3 Likes

Just to clarify a few things before we get into the details:

  • none of the pure (unmodulated) PonyVCO waveforms should exhibit DC, if so let me know
  • PonyVCO has a DC blocker on the TZFM input (default on) - you can turn this off to experiment (e.g. try a different DC blocker)

OK good this is useful. So what you’re saying is when you feed a burst of modulation into the TZFM input, you don’t get the same timbral properties as a continous tone? It sounds like the DC blocker is perhaps reacting to the input signal? Depending on your modulator settings, a short envelope could well introduce a bit of DC into that signal which the input filter reacts to. Do you get the same with DC blocking turned off (see Hardware Compatibility context menu)?

If you have a Neoni example patch that would be useful.

1 Like