Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Biquad EQ with full kill feature #1164

Merged
merged 10 commits into from Feb 4, 2017
Merged

Conversation

daschuer
Copy link
Member

This is an attempt to build a new default EQ for Mixxx. It combines an standard Biquad Equalizer with an Isolator to reach full kill. This should suite to gentle tweak the sound around unity and It allows to full kill a band when doing a transition.

Features:

  • Boost: +12 dB
  • Kill: -Infinity
  • Bit perfect at unity
  • No CPU load at unity
  • Up medium CPU load when killing Mid
  • Gentle rounded cut-off

I am curious to read your results from listening.

std::unique_ptr<EngineFilterBessel4Low> m_low2;
std::unique_ptr<EngineFilterDelay<kMaxDelay2>> m_delay2;
std::unique_ptr<EngineFilterDelay<kMaxDelay2>> m_delay3;
CSAMPLE* m_pLowBuf;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't you use SampleBuffer to avoid the manual alloc()/free()?

@Be-ing
Copy link
Contributor

Be-ing commented Jan 31, 2017

This colors the sound in a way that is similar to the Linkwitz-Riley ISO but not as prominent. I think there is some value to having the default EQ be full kill, so this would make a good default. Personally I prefer the transparency of the plain Biquad EQ. They all sure sound better than the Bessel ISOs.

@Be-ing
Copy link
Contributor

Be-ing commented Jan 31, 2017

Perhaps when we announce 2.1 beta there can be a poll on the blog asking what EQ users like best.

@daschuer
Copy link
Member Author

daschuer commented Feb 1, 2017

Personally I prefer the transparency of the plain Biquad EQ.

Can you explain more with which settings this EQ is less transparent? May goal was to achieve the same sound around unity and "just" expand the -23 dB kill to -Infinity dB

Maybe we can tweak some settings it to be more transparent, in critical settings.

Perhaps when we announce 2.1 beta there can be a poll on the blog asking what EQ users like best.

Good idea, we should also allow to wish additional types, to get a clue what is important.

I am just afraid that the ISO users will vote for the LR8 and the EQ users will vote for the plain Biquad EQ.
I assume that the majority of users has not a strong opinion to that. So my idea was to add this as a default, and cover both use-cases plus bit-perfect at unity if a user does not need EQs.

@Be-ing
Copy link
Contributor

Be-ing commented Feb 1, 2017

Can you explain more with which settings this EQ is less transparent? May goal was to achieve the same sound around unity and "just" expand the -23 dB kill to -Infinity dB

I start to notice slight coloration if I listen closely around the 10 o'clock position. At and near center it sounds transparent. Like the Linkwitz-Riley, the coloration does not sound bad, but it it does sound different from the original track.

I don't understand how the EQ and isolator are working together, so I'm not sure if this makes sense, but maybe you could change it so the isolator doesn't activate until the knob is closer to all the way down?

Good idea, we should also allow to wish additional types, to get a clue what is important.

Yeah, including an "other" option is a good idea.

I am just afraid that the ISO users will vote for the LR8 and the EQ users will vote for the plain Biquad EQ.

My main concern about the validity of the results would be if most users just vote for the default that we set for the beta and don't bother testing the various options. Btw, why is Loudness Contour marked as an EQ effect?

@daschuer
Copy link
Member Author

daschuer commented Feb 1, 2017

The right knob side is the same as the Biquad EQ. 0 .. 12 dB
The left side has three regions
12:00 ... 10:00 pure Biquad EQ 0 ... -8 dB
10:00 ... 8:30 Biquad EQ -8 ... -23dB; Bessel4 0 .. -28 dB = -8 ... -51 dB
8:30 ... 7:30 Biquad EQ -23dB; Bessel4 -28 .. -Inf dB = -51 ... -inf dB

The pure Biquad EQ has a linear dB scale and has -12 dB @ 9:15 and -23 dB @ 7:30

@daschuer
Copy link
Member Author

daschuer commented Feb 1, 2017

OK, I think I have Improved the situation. I have moved the ISO start region to 9:00 and -12 dB. Now we have a symmetric +-12 dB pure biquad range, like our Graphic EQ. The rest of the scale is a combination of ISO and EQ. The EQ scale is stretched to void the change of resolution, like in the previous version.

Do you like it?

@Be-ing
Copy link
Contributor

Be-ing commented Feb 2, 2017

It is better. I wouldn't be opposed to it being the default, but I still prefer the Biquad and the Linkwitz-Riley. Would it be possible to combine those for a full kill effect? I presume the phase shift of the Linkwitz-Riley would present a challenge to work with another effect that does not produce a phase shift.

@daschuer
Copy link
Member Author

daschuer commented Feb 2, 2017

Technical you could combine a Biquad EQ with a Linkwitz-Riley. As you can chain them together in a effect rack. But I am in doubt if that makes sense, because both types are just doing the opposite . The LR with it straight slopes and the BQ with its rounded curves.

Reading your test results again, I wonder why you was able to hear the 10:00 position in the first version and you are sensitive with the original Bessel around unity.
From the theory, the Bessel is enabled there, but it should not alter the sound compared to the Bq which is already at -8 dB, so I assume, there must be an issue the ramping code.

How is your buffer size setting in setting hardware preferences? Which band is effected the most?

Please test the following:

  • load the Bessel4 into a effect rack
  • Try to toggle the most effected band between 0.5 and 0.48 using one click on the mouse Wheel. Do you hear a difference? Do you hear the ramp?
  • move most effected Band to parameter = 0.48 (one Mouse wheel click)
  • Toggle the effect enable button. Do you hear a difference? Do you hear the ramp?
  • Now do the same test with all bands to parameter = 0.48. Results?

Thank you.

@Be-ing
Copy link
Contributor

Be-ing commented Feb 3, 2017

I can't hear any difference between exact center and moving my mouse wheel once. But even with all knobs at center, enabling either the Bessel4 or Bessel8 produces an audible artifact. Same with the Linkwitz-Riley. Those are issues that should be fixed, but that's not what I was referring to in my previous comment. That little pop sound when enabling the effects is different from the coloration this effect produces.

@daschuer
Copy link
Member Author

daschuer commented Feb 3, 2017

I am already working on the pop issue.

Which band is effected the most by coloring? What is the clock position you are starting to hear it in the Bq EQ/ISO?

@daschuer
Copy link
Member Author

daschuer commented Feb 3, 2017

The pop and click issues are gone now.
I have made this one the default, until we know better.

Ready for merge?

@Be-ing
Copy link
Contributor

Be-ing commented Feb 3, 2017

Which band is effected the most by coloring?

I think that depends on the track.

What is the clock position you are starting to hear it in the Bq EQ/ISO?

Around 9 o'clock.

The pop and click issues are gone now.

Yes, they are for the Bessel ISOs, but the Linkwitz-Riley still pops when enabled.

I have made this one the default, until we know better.

Sure, we can solicit more feedback from the 2.1 betas.

@Be-ing
Copy link
Contributor

Be-ing commented Feb 3, 2017

I noticed this in my console output. I do not know what I was doing when it was printed:

Warning [Engine]: DEBUG ASSERT: "pInput != pOutput" in function void LVMixEQEffectGroupState<LPF>::processChannelAndPause(const CSAMPLE*, CSAMPLE*, int) [with LPF = EngineFilterBessel4Low; CSAMPLE = float] at src/effects/native/lvmixeqbase.h:163

@daschuer
Copy link
Member Author

daschuer commented Feb 3, 2017

Ups, thats a leftover and must be removed.
The clicking in the Linkwitz-Riley is a separate issue.

What is the clock position you are starting to hear it in the Bq EQ/ISO?

Around 9 o'clock.

Interesting, that the point where the we switch from one EQ to ISO scale.
The ISO part Itself is still not notable there, proved in your earlier test, with the Bessel around unity.

@Be-ing
Copy link
Contributor

Be-ing commented Feb 3, 2017

To clarify, it's not very notable around 9 o'clock. That's where I start to hear it if I'm listening for it.

@daschuer
Copy link
Member Author

daschuer commented Feb 4, 2017

Ah, OK, that means it normal, a coloring is expected since the filter slope moves a bit like a filter effect when coming into action.

@daschuer
Copy link
Member Author

daschuer commented Feb 4, 2017

Thank you for review!

@daschuer daschuer merged commit 7501d1b into mixxxdj:master Feb 4, 2017
@ronso0
Copy link
Member

ronso0 commented Feb 22, 2017

I just checked out this new EQ mode, but I can't hear any effect. Biquad without Kill works fine.
Filed a bug here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants