The Orvillain DSP Thread

Laugh at me.

Spent a day chasing some oscillations in my BBD delay. What the fuck is going on? All this code is the same as my prototype project?! All I've done is expose more parameters and add oversampling? FUUCCCCCKKKK WAAAAAATTTT...



.... oh yeah, my feedback filters... the Q was originally 0.5f, but in the reimplementation (same code!) 0.707f ..... which for a Butterworth style filter, is theorhetically completely flat. But actually, gives a little bump around the cutoff.... thus, my filters were adding signal around 10kHz, resulting in high frequency shit-sounding oscillations, rather than nice ones.

Absolute fucking cunt of a day, because of a different floating point value in two places that took me 16 hours to spot.

IDIOT. FUCKING IDIOT. TWAT. IDIOT.
 
Laugh at me.

Spent a day chasing some oscillations in my BBD delay. What the fuck is going on? All this code is the same as my prototype project?! All I've done is expose more parameters and add oversampling? FUUCCCCCKKKK WAAAAAATTTT...



.... oh yeah, my feedback filters... the Q was originally 0.5f, but in the reimplementation (same code!) 0.707f ..... which for a Butterworth style filter, is theorhetically completely flat. But actually, gives a little bump around the cutoff.... thus, my filters were adding signal around 10kHz, resulting in high frequency shit-sounding oscillations, rather than nice ones.

Absolute fucking cunt of a day, because of a different floating point value in two places that took me 16 hours to spot.

IDIOT. FUCKING IDIOT. TWAT. IDIOT.
Shit like that is the fucking worst, painful.
I love when it happens in a workplace and some management luddites input is…. So it took 8 hours to change like 2 characters in the code?
 
Thinking Think GIF by Rodney Dangerfield
 
1762033148495.jpeg


What I get from my modulated 2-phase BBD clock generator.

And this is amusing:
1762033196325.jpeg


I can generate a 65.5kHz clock-rate (rendered as a test sine tone here)
 
Huh....

1762093382786.png


I've set the DM-101 up for the 2nd output mode:
When a plug is inserted into the OUTPUT A/B jacks:
The effect sound (L ch + R ch) is output from the OUTPUT A jack, and the direct sound is output from the OUTPUT B jack.

When a plug is inserted into the OUTPUT A jack only:
The effect sound (L ch + R ch) is output from the OUTPUT A jack.

The above is an image of the signal coming out of output jack A, with the delay level rolled all the way off to minimum.

I've got the delay time up at maximum. We're seeing a full-band signal bleed through, even though I have changed the mode so that in effect, it is 100% wet. That is weird.

This one:
1762093630123.jpeg


This is modern mode, with the delay time up full, the intensity at minimum, and the delay level up full.

You can see we get our sweep, which starts off at the bottom, and sweeps all the way up to 24kHz. That's the big thick chunky line that goes right to the top right corner.

Everything else around it is a combination of input/feedback/output clipping stages, and zero-order hold behaviour at the input and output, causing these wrap around reflections.

You can also see where the sweep hits the top or bottom and reflects back, the anti-aliasing filters kicking in.
 
Man, I give you a lot of credit for this stuff. I love delays but this is a whole new level of delay love. I don’t think I have the aptitude to dig this far down, but I’ll gladly take advantage of you doing so!!!
 
Sticking my head above the parapet to say this looks fascinating but I don't really know what I'm seeing.
Is okay. I will do an explain.

You can think of any effect processor as a system. It takes an input, does something to it, and produces an output.

Simplistically put, systems have properties in the frequency domain, the phase domain, and the dynamic domain.

in order to measure the frequency response of a system, there are a range of ways you can do so:

1 - Run a single sample click (called a dirac impulse) through the system
2 - Run a sine-sweep through the system - you get to decide the start and end frequencies, but 20hz-20kHz is typical.
3 - Run a series of impulses (called an impulse train) through the system.
4 - Run a solid sine-tone through the system.

Each one of these can reveal diferent bits of information, which you can analyse to figure out what a system is doing. I will not go through all of them in detail right now. Let's focus on the sine-sweep, as that is what I'm doing.

I'm using a program called PluginDoctor, which can run test signals through any VST plugin you have, but it can also do the same with a pair of hardware ins and outs - ie; you can run the same test signals through a pedal, or a rack unit, or anything else that takes and input and feeds an output.

So, in effect for each delay pedal I'm sending a 10hz-24kHz linear sine-sweep through each pedal. This shows us how the pedal responds to every audible frequency, plus a bit of headroom either side for harmonics we can't hear but nonetheless exist.

Take the Boss DD-3:
1762272172047.png


The input sweep goes from the bottom left corner to the top right corner. If you look closely, it is the one with the brightest centre line.

Now, because the DD3 doesn't have wet-only, I wasn't able to isolate the delay only signal. But if you look right at the start of the graph, there is a blue section, then all of a sudden a vertical wall of green line. That blue gap?? That's your delay time. Feedback was at zero, so we don't get any additional echoes. It literally just delays the entire incoming signal by an amount.

The steeper lines that start from the bottom and rise faster to the top, then kind of bounce off it and reflect down? Those are harmonics. The fact it bounces off the top and fades away as it reflects down? That's a sign of anti-aliasing filters.

Now the more zig-zaggy criss-crossing ones in the background?? Those are pure aliasing, or perhaps intermodulation distortion.

In the digital realm we have sampling theory which states:
A continuous-time signal can be perfectly reconstructed from its samples if and only if it contains no frequency components higher than half the sampling rate.

Meaning, if you've got a sample-rate of 44.1khz, then your nyquist is half that - 22.05 kHz. If you try to represent any frequecies above that, they will wrap around, which is why we see frequencies hit the top, reflect downward, and also create those criss-crossing lines.

Also, to note, the colour in the spectrogram represents the volume of the frequency; plainly put. Mapped against dB Full Scale in PluginDoctor.

It is likely the DD-3 has an internal sample rate of 24kHz or 32kHz, as many older devices did. Which means nyquist is either 12kHz, or 16kHz.

If I run my sine-sweep at 48kHz, but the DD-3 is designed for 32kHz, that means we have two independent sample rates. Each has their own Nyquist limit. But essentially I end up exciting frequencies that the pedal simply cannot ever represent.

But that's not all. If the DD-3 uses an older approach for sample interpolation, linear interpolation for example. That can be a source of aliasing too.

Now I will say, I'm hitting these devices with a line level signal. I wasn't really thinking at the time, and I didn't use my reamp box. So that absolutely matters, because I'm pushing far more signal into the DD3 for example, than it was designed for.


Now... why bother doing this? Well.... did you ever wonder why you might prefer the sound of the DD-3 over the sound of the Meris LVX, or Source Audio Nemesis ??? Maybe this is part of it. Who knows.

More investigations as and when I get time.
 
What's crazy is, look at how ultimate and optimized that Nemesis ADT plot is. I've never seen a non-software delay come out like that.
 
I spent 8 hours diagnosing a bug today. Not really DSP related, was more in the data model for a thing I'm working on for a client. But I wanted to vent, because I'm properly pissed off at my own ineptitude! :rofl
 
Is okay. I will do an explain.

You can think of any effect processor as a system. It takes an input, does something to it, and produces an output.

Simplistically put, systems have properties in the frequency domain, the phase domain, and the dynamic domain.

in order to measure the frequency response of a system, there are a range of ways you can do so:

1 - Run a single sample click (called a dirac impulse) through the system
2 - Run a sine-sweep through the system - you get to decide the start and end frequencies, but 20hz-20kHz is typical.
3 - Run a series of impulses (called an impulse train) through the system.
4 - Run a solid sine-tone through the system.

Each one of these can reveal diferent bits of information, which you can analyse to figure out what a system is doing. I will not go through all of them in detail right now. Let's focus on the sine-sweep, as that is what I'm doing.

I'm using a program called PluginDoctor, which can run test signals through any VST plugin you have, but it can also do the same with a pair of hardware ins and outs - ie; you can run the same test signals through a pedal, or a rack unit, or anything else that takes and input and feeds an output.

So, in effect for each delay pedal I'm sending a 10hz-24kHz linear sine-sweep through each pedal. This shows us how the pedal responds to every audible frequency, plus a bit of headroom either side for harmonics we can't hear but nonetheless exist.

Take the Boss DD-3:
View attachment 54190

The input sweep goes from the bottom left corner to the top right corner. If you look closely, it is the one with the brightest centre line.

Now, because the DD3 doesn't have wet-only, I wasn't able to isolate the delay only signal. But if you look right at the start of the graph, there is a blue section, then all of a sudden a vertical wall of green line. That blue gap?? That's your delay time. Feedback was at zero, so we don't get any additional echoes. It literally just delays the entire incoming signal by an amount.

The steeper lines that start from the bottom and rise faster to the top, then kind of bounce off it and reflect down? Those are harmonics. The fact it bounces off the top and fades away as it reflects down? That's a sign of anti-aliasing filters.

Now the more zig-zaggy criss-crossing ones in the background?? Those are pure aliasing, or perhaps intermodulation distortion.

In the digital realm we have sampling theory which states:
A continuous-time signal can be perfectly reconstructed from its samples if and only if it contains no frequency components higher than half the sampling rate.

Meaning, if you've got a sample-rate of 44.1khz, then your nyquist is half that - 22.05 kHz. If you try to represent any frequecies above that, they will wrap around, which is why we see frequencies hit the top, reflect downward, and also create those criss-crossing lines.

Also, to note, the colour in the spectrogram represents the volume of the frequency; plainly put. Mapped against dB Full Scale in PluginDoctor.

It is likely the DD-3 has an internal sample rate of 24kHz or 32kHz, as many older devices did. Which means nyquist is either 12kHz, or 16kHz.

If I run my sine-sweep at 48kHz, but the DD-3 is designed for 32kHz, that means we have two independent sample rates. Each has their own Nyquist limit. But essentially I end up exciting frequencies that the pedal simply cannot ever represent.

But that's not all. If the DD-3 uses an older approach for sample interpolation, linear interpolation for example. That can be a source of aliasing too.

Now I will say, I'm hitting these devices with a line level signal. I wasn't really thinking at the time, and I didn't use my reamp box. So that absolutely matters, because I'm pushing far more signal into the DD3 for example, than it was designed for.


Now... why bother doing this? Well.... did you ever wonder why you might prefer the sound of the DD-3 over the sound of the Meris LVX, or Source Audio Nemesis ??? Maybe this is part of it. Who knows.

More investigations as and when I get time.

Thanks for the Orvsplaining. I understand what I'm seeing now. I really need to do some of this stuff with Fuzz pedals with different transistors.
 
Back
Top