LFO to CV1 - solved

I’m sending LFO1, via the Modulation Matrix, to CV1. There is no Operator applied to it but when I filter it, via a simple first order low pass filter, I only get the top half of the waveform as though it has been half-wave rectified. I’ve checked the external filtering circuitry and this is performing satisfactorily.
I would have thought the LFO waveform would have swung around a half f.s.d. value.

Is this normal or am I missing something?

The LFOs are bipolar - they swing between -63 and 63

That I understand but the waveform at CV1 only seems to be the top half - the triangle waveform has a flat line instead of the negative-going portion

That’s normal. The CV output cannot produce negative voltages!

When the modulation is at 0 -> CV output is at 0V
When the modulation is at 63 -> CV output is at +5V

To do what you want to do, you need to also route an offset to the CV1 destination.

I guessed that might be so - thanks for the advice

I’ve tried adding the offset value to the LFO being applied to CV1 and I still get the triangular waveform cut off for the lower portion as with the ‘bad’ waveform shown above. Varying the offset value simply adds a DC level to the waveform but doesn’t make the lower portion appear.

Any ideas?

Cancel the last comment - have done it with the Operator ADD function, adding an offset has sorted the problem.

Many thanks

This is going to sound like a horrible hack, but can you try putting the offset before the LFO in the mod matrix (for example offset in slot 5 and LFO in slot 6)?

I tried the LFO in position 1 and the Offset in position 2 in the Mod Matrix with no improvement so I’ll try your suggestion when I can. Does the order determine how the Offset (bias?) to the LFO is evaluated?

The ADD Operator seems to have done the trick adding bias almost like a Class A amplifier - I guess I’ll need to use the second Operator to bias LFO2 in a similar way?

> Does the order determine how the Offset (bias?) to the LFO is evaluated?

Yes. It’s because the modulations are processed one after the other ; and the intermediary results cannot be negative. So you have to declare the bias before offsetting with the LFO.

It doesn’t occur with other parameters like cutoff, pwm etc. because they all have a “base value” defined in their own menu.

Putting the Offset before the LFO in the Mod Matrix works!

Many thanks

Wow… I would never have thought of that, but I guess there’s absolutely no headroom in the calculations.

Yes, there no headroom at all in the calculations. It could be improved by doing the calculations on int32_t and truncating at the end. I tried it once and there wasn’t any CPU left, but maybe some of the recent optimizations could make it work…

I seem to remember I ran into this problem before when trying to counteract the oscillator tracking by applying negative note tracking but I ran out of headroom even though the manual said it would be possible. I think you said at the time it was because it you were using int32_t when you wrote that.