Timecode tracking problem: Sticker drift

Bug #1720462 reported by Ambrosio Barceló
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mixxx
Confirmed
High
Unassigned

Bug Description

Manual needle up & drop reveals that Mixxx doesn't mind the rotation position and keeps playing from the last song track position. Other software mind it (so the song track is always following the vinyl rotation position) and I think this is a better behaviour. Besides, this may be related to the fast backspins bug (https://bugs.launchpad.net/mixxx/+bug/1714366)

I recorded a comparison between Traktor 2, Cross and Mixxx to show the difference:

https://www.youtube.com/watch?v=EH73r8gWHLg

Tags: vinylcontrol
tags: added: timecode vinylcontrol
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Thanks for the report Ambrosio, I know it's been a while, but can you confirm whether you were using absolute or relative mode? I think this is the intended behavior in relative mode.

Changed in mixxx:
importance: Undecided → Low
status: New → Incomplete
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Or maybe, you're saying that even in relative mode in Traktor 2 / Cross, they handle needle up & drop in an "absolute" fashion?

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

Oh nevermind, I see there's much more description in Bug #1714366. Thanks for the report and videos!

Changed in mixxx:
status: Incomplete → Confirmed
Revision history for this message
Ambrosio Barceló (bronxio) wrote :

You're welcome! I think tomorrow I will be able to test Xwax in Ubuntu with another sound card that I have now, I'll give it a try.

If you need any test result more, just let me know! It would be awesome if Mixxx works for beat juggling as well! :)

tags: removed: timecode
Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :
Changed in mixxx:
importance: Low → High
summary: - timecode tracking problem
+ Timecode tracking problem: Sticker drift
Revision history for this message
Ambrosio Barceló (bronxio) wrote :

I guess Mixxx is "hearing" the analog wave only (direction + speed) and ignoring the digital one (timecode position). I mean, observing the propietary DVS behaviour, they keep the spin position always, so they must "hear" the digital one as well, even in relative mode (I guess this is the key). In this way, drifting (with or without the needle on the record) will never happen.

I guess this is a Xwax problem, but this software seems to be not in development anymore (8 days to go for 3 years after last release).

And I'm surprised that Ms. Pinky is not included in the supported formats in Xwax... being the only timecode signal with SDK from the very original developers: https://mspinky.com/software/software-developers-kit/ It may be easier to fix the bug with this format, having this?

Anyway, I just wanted to point that I can make tests with Serato and MixVibes timecode vinyls (and Ms Pinky if you need it, I'll try to get a pair as soon as possible). Please do not hesitate to ask me for testing alfas or anything 🙂

Revision history for this message
Be (be.ing) wrote :

The Ms Pinky SDK is proprietary, so that doesn't help.

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

The main obstacle to fix this issue might be that none of the active developers is familiar with the DVS/xwax code in Mixxx. I took a quick glance at the code and don't think I will touch it ;)

Revision history for this message
ronso0 (ronso0) wrote :

@bronxio This may be a stupid question, but I don't see it answered clearly, yet, neither here nor in lp:1714366, since you talked a lot about Cross and Traktor.

you are you aware Mixxx also provides 3 modes for vinyl control?
absolute, relative, const
And what you describe sounds like you are stuck in relative mode.

Revision history for this message
Ambrosio Barceló (bronxio) wrote :

Hi: yes, I'm aware. What is more, as you can see in the post #9 in the bug #1714366, I've wrote: "(...) By the way, I realized that fast backspins fail in absolute mode as well (...)" Anyway, as far as I know, scratch DJ's tend to use relative mode.

I don't want to bother anyone talking about other DJ software, I just wanted to show examples of real world without this bug: drifting is a big problem for spinning long distances and looking for the mark/sticker (for example, doing beat-juggling). Anyway, I understand that Mixxx is mainly focused for mixing, not scratching (I know most DJ's just want to mix). Unfortunately, my knowledge about programming is limited, so I understand that this won't be fixed, unless a programmer interested in DVS comes in, so I left the message there if that happens.

And please be aware that I feel very grateful to have Mixxx as it is nowadays: scratch beginners can use DVS with open source software! That's amazing, and I've showed how to make a cheap DVS with Mixxx in another of my YouTube channels, and I know for comments that people succeeded without paying hundreds of $/€. Fixing this bug is just reaching the next level (when it can compete with proprietary DVS for exhaustive scratching)

Cheers!

Revision history for this message
Owen Williams (ywwg) wrote :

Mixxx uses xwax's vinyl code. For that reason, any fixes for things like sticker drift would probably have to be made in xwax first, and then mixxx could benefit. For context, I wrote the vinyl control code. I know it's not pretty :).

It might be possible to reduce sticker drift with a combination of using relative and absolute timecodes, but it would be a very complex data processing task. I think it would work something like this:

* keep track of the absolute position, even in relative mode -- record the offset between actual track position and timecode position
* If that offset starts to drift higher or lower, nudge the velocity of the track so it gets back in sync
* In cases of high speeds (spinbacks), be more aggressive about resyncing the vinyl position to restore the originally-recorded offset.

The trick would be to make sure the nudges are not audible, and that we still handle end-of-track loops, record skips, etc.

Revision history for this message
Owen Williams (ywwg) wrote :

If someone wanted a nicely contained programming project, cleaning up vinyl control, writing tests (!!!!) for it, and upgrading the processing would be really lovely to have. It should even be possible to make tests that run entirely apart from the rest of the mixxx code, which would make our vinyl control code much more robust.

Revision history for this message
Owen Williams (ywwg) wrote :

For the other developers, although DJs usually use relative mode, in order to scratch properly the relative position of the record with the track should not "drift" over time. Unfortunately the pitch information from DVS is too noisy and inaccurate for this to work without a lot of clever code.

Revision history for this message
Ambrosio Barceló (bronxio) wrote :

Thanks, Owen! Your suggestion to fix it sounds really good, but I understand the problem of working with a code not written by oneself (not being clever).

The thing about being a very complex data processing task makes sense. Mixxx has an incredible advantage as it is right now against proprietary DVS software: the DVS works smoothly in old computers with less than 3 ms of audio buffer! (This is necessary for advanced scratching in external mixer mode -fast chirp scratches, for example- requiring a fast coordination between disc -DVS- and crossfader -fast response, not depending on the computer) I've tested it even in a AMD Athlon II 240e under Windows 7 about one year ago, and this is unconceivable for actual proprietary DVS software.

So, in case the DVS module would be improved in the future, I would suggest a (not default) option for working like it does nowadays (with the relative timecode only), just in case the user needs to work in a machine or environment with few resources: in this case, better losing the absolute timecode precision than too much latency or clicking in the audio stream.

Revision history for this message
Be (be.ing) wrote :

An issue with the licensing of xwax has come up so we'll probably be rewriting vinyl control from scratch for Mixxx 2.4: https://github.com/mixxxdj/mixxx/pull/3476

Revision history for this message
Ambrosio Barceló (bronxio) wrote :

Ah, licenses and laws, that "human environment programming"... I guess it is necessary as well.

I know this could sound crazy, but I just want to drop it then: if you consider making a full open source DVS (with SDK and own timecode signal), I've seen providers that offers reasonable prices for pressing vinyls (1 unit available, not 100 or more). So, in case you will go for it, after testing the timecode signal in a digital file (or even CD, but I haven't CDJ at this moment), I could create my own copies on vinyl for testing.

But I will be happy to test with the control vinyls I already have anyway 😁 Serato, MixVibes, Traktor MkII... and surely will have more in the future (Rekordbox, Ms Pinky, and perhaps VirtualDJ and Traktor MkI) Serato, Traktor MkII and Rekordbox are the only ones available in mainstream distribution shops nowadays (the other ones, only from their own websites, or unavailable)

Revision history for this message
Be (be.ing) wrote :

There's no need to make our own timecode format. Serato's is fine and widely available.

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/8944

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.