Sound quality issues with Vinyl Emulation Mode

Bug #513130 reported by Sean M. Pappalardo on 2010-01-27
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Owen Williams
Owen Williams

Bug Description

Trunk r2354, when using "Vinyl Emulation" pitch mode, something's goofy with the resampling because if I have my sound device set to 48kHz, the output sounds noisy, almost like a dirty record, or 32kHz sampled sibilance. 44.1kHz sounds better on the exact same source file.

Pitch-independent time stretch mode does not have any of these problems, so there might be a problem in the linear interpolation code (enginebufferscalelinear.cpp,) according to Albert.

The below issue is fixed. (shame on me for not reporting a separate bug)

Trunk r2279. I get:

ASSERT: "unscaled_samples_needed >= 0" in file src\engine\enginebufferscalelinear.cpp, line 126

...when I try to play or fast forward a track with latency at 1ms. The analyzer still runs in the background since the overview waveform shows up eventually. Anything 2ms or above works fine.

Changed in mixxx:
importance: Undecided → High
milestone: none → 1.8.0
RJ Skerry-Ryan (rryan) wrote :

At 1ms latency, the buffer size is smaller than RATE_LERP_LENGTH, which causes the assert to fire. Also I found a problem with EngineBufferScaleLinear that could be the problem behind your audio quality issues.

Changed in mixxx:
status: New → Confirmed
importance: High → Medium
assignee: nobody → RJ Ryan (rryan)
RJ Skerry-Ryan (rryan) wrote :

I fixed the problems in EBSL, but Sean says it doesn't really sound better. I don't really know what to say. There isn't any anti-aliasing done in EBSL so it won't sound awesome anyway.

summary: - Sound quality issues and ASSERT with Vinyl Emulation pitch mode
+ Sound quality issues with Vinyl Emulation Mode

These fixes helped compared to 1.7, but something still remains. It's worse with lower latency, and I noticed that if I set the latency high (185ms,) I hear clicks with each waveform update. Also if you slow the pitch down you can hear it more noticeably. Attached is a sound file that is at 48kHz with VE mode first, and PITS second at 1ms using the ASIO API.

Here's another at 48Khz, 2ms, pitched down to -52.05% in VE mode.

And finally, a sample of Mixxx 1.6.1: same file, 48Khz, 2ms, -52.05% pitch in VE mode.

I just stumbled on a good test sound that shows the problem clearly at 0%: the Scratch Live time code sound.
Must be all the transients that make up the bit stream.

The problem is more noticeable at 10ms than 1, FYI.

description: updated

This might be related to / dependent on bug #533477.

Changed in mixxx:
milestone: 1.8.0 → none
jus (jus) wrote :

Same issues here using trunk with Vinyl Emulation Mode on MacOSX.
Latency 11ms 44/48khz

Just a note:
The crash fix I made in 1.8.1 will have an effect on the audio quality
of vinyl emulation. Might be better, might be worse. The algorithm
isn't even close to being correct though, so don't expect any drastic
improvement. I'd be curious if anyone can notice the difference

On Sun, Oct 17, 2010 at 10:23 PM, RJ Ryan <email address hidden> wrote:
> ** Changed in: mixxx/1.8
>    Milestone: 1.8.1 => 1.8.2
> --
> Sound quality issues with Vinyl Emulation Mode
> You received this bug notification because you are a member of Mixxx
> Development Team, which is subscribed to Mixxx.

Albert Santoni (gamegod) wrote :

Owen's patch (in trunk) helps improve the situation with this a lot.

 The downside is that the code still isn't correct, and consumes frames slightly too fast.

This is fixed in features_xwax2 as of r2550.

Changed in mixxx:
assignee: RJ Ryan (rryan) → Owen Williams (ywwg)
status: Confirmed → In Progress
milestone: none → 1.10.0
RJ Skerry-Ryan (rryan) on 2011-04-17
Changed in mixxx:
status: In Progress → Fix Committed
milestone: 1.10.0 → none
RJ Skerry-Ryan (rryan) on 2011-12-25
Changed in mixxx:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers