EQ is not perfect

Bug #1206683 reported by Ferran Pujol
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Wishlist
Daniel Schürmann

Bug Description

I've run white noise while tweaking the shelf's frequencies with all three EQ knobs at twelve o'clock. The filters' resonance "generates" subtle but noticeable gain at shelf's frequencies. It is easily noticeable when sweeping the shelf's frequencies while playing white noise. In other words: when all the 3 knobs are centered, the EQ does not have a full flat response.

Picture 1 shows the frequency spectrum that results from sweeping the EQ high shelf's frequency (the same happens with low shelf) while playing white noise.

Also, static EQ has a different sound color than non-static EQ, when all three knobs are at 12 o'clock. I don't know if it's in fact the same problem.

Picture 2 shows the frequency spectrum that results from playing white noise with non-static EQ, switching to static EQ, and switching back again.

Tags: eq
Revision history for this message
Ferran Pujol (ferranpujol) wrote :
Revision history for this message
Ferran Pujol (ferranpujol) wrote :
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Hey Ferran,

Now that we have a standard way to interpolate when settings change we should consider disabling the EQs when they are at unity and fading them in when they change.

These non-uniformities may be bugs or they may just be properties of our filter choices. The two filters we have (bessel and butterworth) are a trade-off of quality and speed. EQ processing is the #1 CPU drain within the engine callback so we can't afford changing our defaults to a higher quality filter. We should however give users more choices. I've personally always wanted to see RBJ filters in Mixxx (and Mixxx 1.0 had RBF filters! ) so it would be good to add them (and other choices) back in.

The current IIR parameters for our bessel (static) EQs were hand-crafted by someone (I think John Sully) back in 2007-ish based on an analysis of a Pioneer DJM-800.

tags: added: eq
Changed in mixxx:
status: New → Confirmed
importance: Undecided → Wishlist
Revision history for this message
Daniel Schürmann (daschuer) wrote :

The eq bypass bug is here: Bug #978298

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Ferran,

I have two alternative EQs as pullrequests.

Bessel LV Mix Eq, wich is bit perfect at unity and has an allmost constant group-delay when tweaking:
https://github.com/mixxxdj/mixxx/pull/305
The frequency corners can be tweaked in steps only.
I think this does what you have requested.

The alternative type is a Linkwitz-Riley crossover EQ.
https://github.com/mixxxdj/mixxx/pull/299
It features an inaudible linear group-delay. It is not bit-perfect at unity, but has a flat responds.
It hes a steeper roll-off and a better kill then the on above.
It also allows continuous corner shifting.
Draws more CPU.

These EQs are intended to become the Mixxx standard mixing EQs.

It would be really nice if you find time for test them out.

Thank you very much!

Daniel

Changed in mixxx:
assignee: nobody → Daniel Schürmann (daschuer)
status: Confirmed → In Progress
milestone: none → 1.12.0
Revision history for this message
Ferran Pujol (ferranpujol) wrote :

I'll be able to test this starting this weekend. I've still got some problems with my build environment but hopefully I'll be able to fix that in an evening.

Revision history for this message
Ferran Pujol (ferranpujol) wrote :

I'm sorry it took so long to get back to you, shall I still test this?

Revision history for this message
Daniel Schürmann (daschuer) wrote :

If you have time, I am happy about an other professional opinion.

Currently I am struggling what is the right Zoo of EQs that suits to Mixxx, giving it a unique sound footprint and allows all common use-cases.

This could be a possible set as Mixing EQ:
LinkwitzRiley8 -> sharp 48 dB/ Oct rolloff | continuously settable corners | liner group delay | kill
BesselLV8 -> soft 48 dB/ Oct rolloff | corners steps | const group delay | bit perfect at unity | kill
BesselLV4 -> soft 24 dB/ Oct rolloff | corners steps | const group delay | bit perfect at unity | kill
Todo:
BequadShelving3Band -> soft 12 dB/ Oct rolloff | continuously settable corners | bit perfect at unity (3 band version of Grapic EQ)
Probably: a Xoon92 4 Band clone:
BesselLV2 + 2 Bands Be-quad -> soft 12 dB/ Oct rolloff | corners steps | bit perfect at unity | kill for HP and LP

Is this overdone, or something missing?
What is your favorite?
Would you like to adopt a todo?

Thank you,

Daniel

Revision history for this message
Ferran Pujol (ferranpujol) wrote : Re: [Bug 1206683] Re: EQ is not perfect

Are this currently testable from mixxx/trunk?

Right now I'm still learning signal theory. It shouldn't take me too long,
but right now I can only dedicate 40 minutes a day + sundays to Mixxx, so
expect several weeks until I can do something productive.

2014-09-27 11:16 GMT+02:00 Daniel Schürmann <email address hidden>:

> If you have time, I am happy about an other professional opinion.
>
> Currently I am struggling what is the right Zoo of EQs that suits to
> Mixxx, giving it a unique sound footprint and allows all common use-
> cases.
>
> This could be a possible set as Mixing EQ:
> LinkwitzRiley8 -> sharp 48 dB/ Oct rolloff | continuously settable corners
> | liner group delay | kill
> BesselLV8 -> soft 48 dB/ Oct rolloff | corners steps | const group delay |
> bit perfect at unity | kill
> BesselLV4 -> soft 24 dB/ Oct rolloff | corners steps | const group delay |
> bit perfect at unity | kill
> Todo:
> BequadShelving3Band -> soft 12 dB/ Oct rolloff | continuously settable
> corners | bit perfect at unity (3 band version of Grapic EQ)
> Probably: a Xoon92 4 Band clone:
> BesselLV2 + 2 Bands Be-quad -> soft 12 dB/ Oct rolloff | corners steps |
> bit perfect at unity | kill for HP and LP
>
> Is this overdone, or something missing?
> What is your favorite?
> Would you like to adopt a todo?
>
> Thank you,
>
> Daniel
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1206683
>
> Title:
> EQ is not perfect
>
> Status in Mixxx:
> In Progress
>
> Bug description:
> I've run white noise while tweaking the shelf's frequencies with all
> three EQ knobs at twelve o'clock. The filters' resonance "generates"
> subtle but noticeable gain at shelf's frequencies. It is easily
> noticeable when sweeping the shelf's frequencies while playing white
> noise. In other words: when all the 3 knobs are centered, the EQ does
> not have a full flat response.
>
> Picture 1 shows the frequency spectrum that results from sweeping the
> EQ high shelf's frequency (the same happens with low shelf) while
> playing white noise.
>
> Also, static EQ has a different sound color than non-static EQ, when
> all three knobs are at 12 o'clock. I don't know if it's in fact the
> same problem.
>
> Picture 2 shows the frequency spectrum that results from playing white
> noise with non-static EQ, switching to static EQ, and switching back
> again.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/mixxx/+bug/1206683/+subscriptions
>

--
Ferran Pujol Camins

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

The bug title isn't very descriptive (when will they ever be perfect?) -- can we re-word and mark it fixed now that Daniel's work is merged or shall we kick this out of 1.12.0?

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Now all three EQ Types have a flat responds at unity.
This was the main issue of this bug and it is fixed now.

Changed in mixxx:
status: In Progress → Fix Committed
RJ Skerry-Ryan (rryan)
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/7126

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.