Can someone explain what is happening to this waveform in Zebra vs Serum?

How to make that sound...
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi!. I'm trying to make an asymmetrical waveform in Zebra and match the waveform in Serum. Why is the waveform in Zebra being offset but not in Serum? I can't figure this out for the life of me:

Zebra:
Screen Shot 2023-12-02 at 5.25.07 PM.png
Screen Shot 2023-12-02 at 5.25.52 PM.png
Serum:
Screen Shot 2023-12-02 at 5.27.12 PM.png
Screen Shot 2023-12-02 at 5.27.40 PM.png
You do not have the required permissions to view the files attached to this post.

Post

FYI it looks like DC offset? Does this happen anytime you create a waveform in Zebra?

Post

DC offset is not audible.

Looks like one balances peak to peak, the other balances energy being equal on both sides of the axis. Both are valid approaches.
We are the KVR collective. Resistance is futile. You will be assimilated. Image
My MusicCalc is served over https!!

Post

BertKoor wrote: Sun Dec 03, 2023 9:15 am DC offset is not audible.

Looks like one balances peak to peak, the other balances energy being equal on both sides of the axis. Both are valid approaches.
Thanks Bert! I also noticed that Serum doesn't cause DC offset but Zebra does when looking at a PWM. I know it's not audbile but doesn't if matter when it comes to distortion and EQs and speakers?

Also, would you mind elaborating your answer? Thanks!

Post

Distortion: yes.
EQ & speakers: no.

Energy is the circumfence of those triangles. Think of it as peak versus RMS level normalization.
We are the KVR collective. Resistance is futile. You will be assimilated. Image
My MusicCalc is served over https!!

Post

Zebra2 oscillators indeed remove DC offset from the waveforms. Asymmetric waveforms then often have a higher peak value in one direction than in the other, but the areas covered above and below the middle line is the same.

Post

Urs wrote: Sun Dec 03, 2023 10:15 am Zebra2 oscillators indeed remove DC offset from the waveforms. Asymmetric waveforms then often have a higher peak value in one direction than in the other, but the areas covered above and below the middle line is the same.
Thank you Urs. So what is Serum doing differently that makes the waveforms appear symmetrical?

Post

To be clear, the Serum waveform in the pictures has a DC offset as it has more energy below the middle line than above. The Zebra2 waveforms has DC offset in the editor, but no DC offset when rendered.

Typically you'd want to have a DC removal at some point in the signal chain. Otherwise DC builds up when playing multiple voices (or when using Osc unison). When DC builds up, you lose headroom in the mix, and I guess whole books have been written about how not-so-good it is.

I decided to DC-filter in Zebra2 on oscillator level because it is possible to create sounds with the oscillator alone. If a synth typically runs through a filter section, one might not need to DC filter on oscillator level because many filter algorithms (and accurately modelled analogue filters) have built-in DC filtering.

Today though I'd probably design the oscillator like Serum's and make DC removal an additional user choice.

Post

Urs wrote: Sun Dec 03, 2023 10:26 am To be clear, the Serum waveform in the pictures has a DC offset as it has more energy below the middle line than above. The Zebra2 waveforms has DC offset in the editor, but no DC offset when rendered.

Typically you'd want to have a DC removal at some point in the signal chain. Otherwise DC builds up when playing multiple voices (or when using Osc unison). When DC builds up, you lose headroom in the mix, and I guess whole books have been written about how not-so-good it is.

I decided to DC-filter in Zebra2 on oscillator level because it is possible to create sounds with the oscillator alone. If a synth typically runs through a filter section, one might not need to DC filter on oscillator level because many filter algorithms (and accurately modelled analogue filters) have built-in DC filtering.

Today though I'd probably design the oscillator like Serum's and make DC removal an additional user choice.
Very interesting, thank you for responding. Why would you choose to not remove DC offset like Serum now?

Post

Also, I just removed the DC offset from the Serum waves and now it looks just like Zebra...that's hilarious because I thought Zebra was the one with DC offset!

Post

I would not necessarily remove DC offset anymore because that aligns more with user expectation. I think this thread is more about that than about the technicality behind it. Serum delivers the expected result, Zebra2's is unexpected.

As I said, in by far most cases it does not matter because somewhere down the path is a DC blocker. However, nowadays people interface with Eurorack and stuff, so they sometimes *want* the pure waveform unfiltered from the oscillator. Hence, I'd offer DC-removal as a choice.

Post

Urs wrote: Sun Dec 03, 2023 10:53 am I would not necessarily remove DC offset anymore because that aligns more with user expectation. I think this thread is more about that than about the technicality behind it. Serum delivers the expected result, Zebra2's is unexpected.

As I said, in by far most cases it does not matter because somewhere down the path is a DC blocker. However, nowadays people interface with Eurorack and stuff, so they sometimes *want* the pure waveform unfiltered from the oscillator. Hence, I'd offer DC-removal as a choice.
Ah that makes sense, yea. That's why I was so confused why the Zebra waveform wasn't just outputting what I was doing in the editor. I thought I was doing something wrong.

This may be something you don't want to get into but why does Serum OSC effects (or any really) cause DC offset in the first place? I thought DC offset had to do with amplitude, but even a PWM wave introduces DC offset right? Even thought the positive and negative values are the same...that's what's confusing me.

Post

Well, take an extreme PWM example. Let's draw a super small pulse into a 2048 sample wavetable (which I assume is what Serum does). You'd have 1 sample at +1, and you have 2047 samples at -1. Obviously, the overall energy leans heavily towards -1.

DC offset is the average of the sum of samples in such a wavetable. In this case it is (1 - 2047)/2048, which is almost -1. So this wavetable has a vast DC-offset.

To remove the DC offset, the most simply way is to add its inverse to each sample: Simply add "almost 1" to each sample. So the first sample becomes almost 2 and all other samples are about -0.0005. Now you'd get roughly (2 - 2047 * 0.0005)/2048, and that's a DC of 0.

The peak in this example shifts up a lot, but the DC is gone.

Post

Super interesting. Thanks.

Post Reply

Return to “Sound Design”