As xwax does support Mixvibes DVS Vinyls, shouldn't Mixxx too?

Bug #1064411 reported by Dario Ernst
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Low
Dario Ernst

Bug Description

Hello,

i've recently checked out and built Mixx from bzr branch 1.11, revno: 3428 (timestamp: Fri 2012-10-05 20:31:03 -0400). There you can see in lib/xwax/timecoder.c that xwax does support Mixvibes DVS. What would need to be done so Mixxx can support Mixvibes DVS too? If it is a simple matter, i'd love to see this in 1.11 ;P. Currently there is no way to select "Mixvibes DVS" or something similar in the Preferences / Vinyl Control tab.

Best Regard and thanks for this great Project!
- Dario Ernst

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

I haven't added support for mixvibes because I don't have a copy of the vinyl. If you're comfortable with compiling Mixxx yourself, we can chat on IRC and I can help get it working.

Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

I would be comfortable with compiling it myself and/or testing it so it could be integrated in upstream. What is your nickname on IRC? I'm already there as "Nebukadneza".

Thanks for your quick reply - Regards
- Dario

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

I'll try to get on IRC later today, like 1pm Eastern -- nickname is ywwg.

Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

Hey,

sorry i couldn't be there yesterday ;(. Bad timing. Anyways, i've started to toy around and have added MIXXX_VINYL_MIXVIBESDVS accordingly in:
src/vinylcontrol/vinylcontrolxwax.cpp
src/vinylcontrol/vinylcontrolproxy.cpp
src/vinylcontrol/vinylcontrol.h
src/dlgprefvinyl.cpp

And simply set
timecode = (char*)"mixvibes_v2";
in vinylcontrolxwax.cpp, so as to receive this xwax definition:
    {
        .name = "mixvibes_v2",
        .desc = "MixVibes V2",
        .resolution = 1300,
        .flags = SWITCH_PHASE,
        .bits = 20,
        .seed = 0x22c90,
        .taps = 0x00008,
        .length = 950000,
        .safe = 710000,
        .lookup = false
    },
defined in timercoder.c.

As i now have the selection in the preferences i selected, plugged my soundcard in and gave it ago. In the vinyl preferences tab i have that signal quality scope thingy, where i know see the green dots (apart from very little noise) resembling the coordinate-system-axis (so i get a "cross", like ✛). As i don't know mixxx yet i don't know what that signal quality scope *should* look like. Testing with a song and all vinyl-control modes there are, its either stuck or continuously plays, with no control on the vinyl whatsoever.

Now, where should we go from there? :)

Best Regards and many thanks!
- Dario

Revision history for this message
jus (jus) wrote :

This chart might be helpful to read the timecode signal quality widget.

Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

Behold and watch my friends, it seems that my Mixvibes DVS vinyl now does work on Mixxx. As i'm still a bit busy with my bachelor thesis i haven't really tested but only checked whether the signal looked okay, moved the vinyl a bit ... basically it does seem to work. See the attached screenshot.

More details - and certainly more questions - to come :P.

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

Well a red circle is a start, but if it was totally working it'd be green. A red circle usually indicates incorrect choice of vinyl type -- there are two mixvibes definitions, one of which is mixvibes_v2 and the other is mixvibes_7inch. Make sure you try both. Also try them at 33RPM and see if that makes a difference.

Once we get that circle looking green, I'll need to have you do some debugging to find the correct numbers for the end of the timecode track. xwax's numbers (in that snippet you posted) are usually wrong.

Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

Like so?

I accidentally had the 7inch entered. Dummy me ;P. If someone can tell me how i can convince bzr to wrap up a patch-file i can attach it here so you can check how badly i messed up your code. (only used to git. I could look myself into it tommorow though…)

So what exactly is this about those begin and end tags that are wrong in xwax, what values exactly are those, where do i find them in the code, and how do i survey the correct value? If you point me to a portion of code i can do some reading myself...

Thanks a bunch~

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

Awesome! To get the correct values, you want to uncomment line 252 of vinylcontrol/vinylcontrolxwax.cpp, which is:

//qDebug() << m_group << id << iPosition << when << dVinylPitch;

Actually it's easiest for you if it just reads:

qDebug() << m_group << iPosition;

A question I have is, does mixvibes have a "control track" area of the vinyl? On Serato and Traktor, there's an inner ring of the vinyl that's used to scroll through the library and select tracks. (You can see the gap in this image toward the center of the record:http://www.evsound.be/images/catalogus/serato-vinyl-red.jpg)

As you play the vinyl in Mixxx, you'll see timecode numbers printed out on the command line. I need to know what numbers are associated with the area of the record right before the control track area, or if there isn't a control track, the numbers that are printed as the needle is reaching the end of the playable part of the groove. In other words, be a little on the conservative side and give me a lower number rather than waiting for the needle to hit the end of the record. This number will be used to tell Mixxx when the needle has hit the end of the record and needs to engage the end-of-vinyl mode

Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

Hey,

sorry for the late reply. It seems the mixvibes vinyls do have a control track at the end of the timecode track. I've tried to get the last number possible before the needle leaving the timecode track as well as the first value i've found. These are:
Debug [VinylControlXwax 7]: "[Channel2]" 8 334 0.000204082 0.227177
Debug [VinylControlXwax 2]: "[Channel2]" 2 659837 0.000612245 0.989895

So, uh, you were right, the length from Xwax was probably wrong.

Thanks for your help so far ;P

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

Can you edit mixxx/lib/xwax/timecoder.c and timecoder_win32.cpp and change the "safe" value for Mixvibes V2 to 655000? That should cause the end-of-track mode to be activated near the end of the track. If you play a long track and mixxx reaches the end of the track, the vinyl indicator should start blinking orange. When that happens, you should be able to move the needle back and drop it anywhere on the vinyl and mixxx should continue playing back without interruption.

Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

Hey,

sorry for the late reply, but i'm currently drowning in work for my bachelor thesis. I'll try to kick up some time later to finally test this to the end ;)

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

Looks like Owen committed some code to enable MixVibes support based on your work Dario. Thanks!

Could you test and verify the latest builds work with MixVibes?
http://builds.mixxx.org/builds/release-1.11.x/r3455/

We should update the wiki and manual where necessary to indicate MixVibes support is back.

Changed in mixxx:
milestone: none → 1.11.0
importance: Undecided → Low
status: New → In Progress
status: In Progress → Fix Committed
assignee: nobody → Dario Ernst (n-launchpad-nebuk-de)
Revision history for this message
Dario Ernst (n-launchpad-nebuk-de) wrote :

Hey,

i'm really really sorry i can't look into this stuff properly right now ;(. I'm working > 14 hours per day for my thesis right now, so its kinda hard to properly test.

Just now i've baked r3461 (on the basis that the commit would be in there too...?) and tried it out. I've had strange "stutters" which i still have to investigate that i haven't had when i first tried (but then i had time to figure out how to build with CPU-optimization ..., forgot that today). I then started a song thats longer than the vinyl on 45rpm, and let it run. At the end of the vinyl the song just continued playing, and when i dropped the needle somewhere in the "playable" area again, and it just kept playing. Is that the expected result?

Thank you so much for your support and fixing this! Regards
- Dario

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

Yes, the music should keep playing. Sounds good! (Any stuttering issues are unlikely to be xwax-related)

Revision history for this message
jus (jus) wrote :

Does Mixvibes DVS support in Mixxx 1.11 includes both Mixvibes CD and Vinyl timecode media?
Need that info for documentation purposes.
Thanks

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

From a code perspective there is only one option in xwax for both media, so I'm tempted to say yes. However I'd like confirmation from a user before claiming support for the CD media.

Revision history for this message
jus (jus) wrote :

Currently have no CDJ or turntable at my disposal, but did some testing with timecoded CD's loaded into VLC and routed as Vinyl control input into latest lp:mixxx/1.11.

Result:
Serato CD: Works as expected
Mixvibes Control CD V2B: Playback works, but plays way too fast, even if changed to 45 RPM

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

The red color indicates that we're not getting a timecode signal. xwax only lists support for "mixvibes_v2" and "mixvibes 7 inch" -- so I guess the CD format is not supported

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

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.