Using EQ Kill / Right Click Reset Introduces Pops + Clicks

Bug #1439160 reported by Daniel Hams
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Medium
Daniel Schürmann

Bug Description

OS: Arch Linux
CPU: Intel Core2 Quad Q6700, 2.66ghz,
Kernel: 3.19.2-1-ARCH, performance governor selected
Video HW: Nvidia with proprietary drivers
Sound HW: NVIDIA Corporation MCP55 High Definition Audio
Jack: jackdmp 1.9.10
Sound Setup: 48k, 1024 frames, 2 periods
Mixx Version 1.12.0-alpha x64 from 01/04/2015, build master r5315

Problem Description:

Using the EQ and the EQ kill switches introduces half-square waves under certain conditions that are evident as cross spectrum transients.

The issue is most evident with a source sound file containing only low frequency content.

Reproduction scenario:

* Generate 60 seconds of 60 hz sine using Audacity
* Load into Deck and adjust gain downwards
* Make a loop of the entire file
* Press play
* Adjust gain back up to get less than clipping
* Set Low Pass Kill on deck
* Play with mid pass and high pass kill in decks, turning them on and off

Additional scenario last step:

* Leave mid/high EQ unkilled, and move EQ gain to far left
* Right click to reset to center

Speculation:

Mixxx seems to have some signal cascade through the EQ stages - when (I believe) each of the EQ bands should be individually attenuated/amplified and re-mixed together. Using the Kill switches on a particular band should only ask for -INF attenuation rather than performing some kind of signal on/off or bypass to another cascaded EQ section.

Revision history for this message
Daniel Schürmann (daschuer) wrote :
Changed in mixxx:
status: New → Confirmed
Revision history for this message
Daniel Schürmann (daschuer) wrote : Re: [Bug 1439160] [NEW] Using EQ Kill / Right Click Reset Introduces Pops + Clicks

The bug happens due to the special Lipshitz/Vanderkooy mix oft the two
Bessel EQs.
The filtered signal is added or subtracted from a delayed dry signal.

https://github.com/mixxxdj/mixxx/blob/master/src/effects/native/bessel8lvmixeqeffect.cpp

For performance reasons we stop processing the not required filters. This
should happens at unity and produces a bit-perfect sound. It turns out that
it also happens in you kill use case. After re-anabling a filter path, we
have to deal with silence until we are at the desired delay and the filter
is settled.
In the case you disable midi Kill, we have the transaction from the high
low bass stage to the low low pass stage.
Since the low low pass stage is not settled, some low samples are slipping
though.

The Linkwith-Riley type does not have the issue and works like you expect.

I will have a look how we can fix this issue.

Revision history for this message
Daniel Hams (daniel-hams) wrote :

Thanks Daniel,

Your explanation has made it clear why I'm seeing this.

I'll keep the speculation out of any future submissions :-)

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

A fix can be reviewed here:
https://github.com/mixxxdj/mixxx/pull/544

Changed in mixxx:
importance: Undecided → Medium
milestone: none → 1.12.0
assignee: nobody → Daniel Schürmann (daschuer)
status: Confirmed → In Progress
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/7937

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

Remote bug watches

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