ZEBRA Ring mod

Official support for: u-he.com
RELATED
PRODUCTS

Post

The ringmod in Zebra 2 requires the two osc's to be on separate lanes :tu:
If you don't do that you'll likely end up looking like a fool creating a thread like this one 8)
Screenshot shows saw-square ringmodded , first filtered ( tyrell filter ) , then dry , notice the absence of negative energy , and that's because I didn't put the osc's on separate lanes .

Image
Last edited by gentleclockdivider on Thu Jul 06, 2023 11:13 am, edited 3 times in total.
Eyeball exchanging
Soul calibrating ..frequencies

Post

Ringmod is multiplication. If both signals have the same phase, the result is always positive. Any identical frequency in each input will contribute to DC, but it can be positive or negative depending on phase.

When both inputs are detuned, there is no DC. However, the lowest frequency is lower than any frequency in the input signals, and it's the beating frequency (no beating = phase lock = DC).

That is simply a property of Ring Modulation, of the simple digital implementation anyway.

I guess if I were to implement it again, I'd probably add a DC blocker, or at least an option for it. When I added DC blockers in later software, people asked to have an option to switch it off.

Post

Oh I know that ringmod is multiplication it's just that zebra behaves like that .
NO issues in reaktor and other synths , even when havng the same phase , two slightly detuned saws multiplied (reaktor ) , reaktor
Image
Image
And here two slightly detuned saws in zebra
Image
Eyeball exchanging
Soul calibrating ..frequencies

Post

I guess those other synths add DC blockers then.

Post

Urs wrote: Wed Jul 05, 2023 9:23 am I guess those other synths add DC blockers then.
Reaktor most def. does not block DC , because I manually insert HP filters when needed .
Following screenshots show an ADSR envelope (dc signal ) routed straight to the audio ouput and an osc with an offset of 0.5 ( positive phase only ) in reaktor .
Image
Image
Eyeball exchanging
Soul calibrating ..frequencies

Post

Hmmm, you lost me here, I don't understand how this relates?

Post

I had a look at the code, the two sources are literally just oversampled to twice the samplerate and then just multiplied before being downsampled again. It's a textbook example of how it's done digitally.

It is by far the most simple audio processing algorithm there is in Zebra, I'm having a hard time spotting any flaw in it.

Post

Urs wrote: Wed Jul 05, 2023 8:49 pm Hmmm, you lost me here, I don't understand how this relates?
You replied that some synths might use automatic dc adjustment when I showed you multiplication in reaktor .
THe last screenshots I posted was to show you that reaktor does not use automatic dc adjustment that why I posted a picture of a pure dc signal (envelope ) going to the output .
Eyeball exchanging
Soul calibrating ..frequencies

Post

Urs wrote: Wed Jul 05, 2023 8:49 pm Hmmm, you lost me here, I don't understand how this relates?
You replied that some synths might use automatic dc adjustment when I showed you multiplication in reaktor ( my third post ).
THe last screenshots I posted was to show you that reaktor does not use automatic dc adjustment , that why I posted a picture of a pure dc signal (envelope ) going to the output , an oscilator with 0.5 offset , result is a positive signal only and thus no auto.dc adjustment
I have no idea why mulitplication of 2 bipolar signals ( in reaktor ) does not give the same result as in zebra .
Eyeball exchanging
Soul calibrating ..frequencies

Post

Could you share that Zebra2 patch where you get this offset output?
I'm trying here by following your description but I'm not getting a DC offset like you describe.

Thanks

Post

gentleclockdivider wrote: Thu Jul 06, 2023 8:36 am I have no idea why mulitplication of 2 bipolar signals ( in reaktor ) does not give the same result as in zebra .
I, too, have no idea.

I also don't read Reaktor well, I have no idea what its Ringmodulator does internally, I wouldn't even be able to identify it as a Ringmodulator on your screenshot.

In any case, and hopefully concluding, here is the relevant DSP Code right out of Zebra2's sources:

Code: Select all

float outL = AM_Polyphase::process( d1L * d2L, out1L );
float outR = AM_Polyphase::process( d1R * d2R, out1R );
where d1L...d2R are the plain input samples, left and right for both channels multiplied and the Polyphase call along with the objects out1L/R is the downsampling stage I mentioned previously. The results are then written into the buffers that the input samples were taken from.

It is an utterly plain and simple process, and as the Polyphase thing is used in literally all our current plug-ins, I can't even identify the slightest chance of a bug here.

If you spot a bug, please let me know. If not, maybe try to widen the search with a broader range of references, both within Zebra and within the ecosystem of software synthesisers.

Post

gentleclockdivider wrote: Tue Jul 04, 2023 9:41 pm The ringmod in Zebra 2 alway bothered me because the output is positive energy only which obviously produces dc offset when playing poly .
Just verified with a simple patch - two detuned sine oscillators. No DC Offset. Your statement "the output is positive energy only" its definitely wrong. Whatever you're doing differently, you should consider the possibility of user error in the tone you set in these kinds of findings.

Post

Urs wrote: Thu Jul 06, 2023 10:03 am
gentleclockdivider wrote: Tue Jul 04, 2023 9:41 pm The ringmod in Zebra 2 alway bothered me because the output is positive energy only which obviously produces dc offset when playing poly .
Just verified with a simple patch - two detuned sine oscillators. No DC Offset. Your statement "the output is positive energy only" its definitely wrong. Whatever you're doing differently, you should consider the possibility of user error in the tone you set in these kinds of findings.
Can you post a screenshot please or upload preset ?
Here are two sine osc's with different pitches +20.5 ; the other -11,5
This is the result , both in zebra and zebra HZ , the output never goes beneath the zerocrossing line .
Tested in renoise and studio one
Edit , do you mean by tone the way I reported it ?
If so this has to be a communication error , where do you think I misbehaved ?
Image
Image
Image
Studio one
Image
Last edited by gentleclockdivider on Thu Jul 06, 2023 10:56 am, edited 1 time in total.
Eyeball exchanging
Soul calibrating ..frequencies

Post

You need to have the two oscillators on two separate lanes, otherwise you're RM-ing the sum of osc1+2 with the sum of osc1+2, so with itself.

Post

Viktor [TUC] wrote: Thu Jul 06, 2023 10:52 am You need to have the two oscillators on two separate lanes, otherwise you're RM-ing the sum of osc1+2 with the sum of osc1+2, so with itself.
And now I feel like a complete Idiot
Last edited by gentleclockdivider on Thu Jul 06, 2023 11:01 am, edited 1 time in total.
Eyeball exchanging
Soul calibrating ..frequencies

Post Reply

Return to “u-he”