On Sun, 2013-07-07 at 18:26 +0200, petah wrote:

> Yes; the specific problem I'm trying to solve is interfacing my
> "homegrown" CDJ timecode program with Mixxx, "xwax-style". If I could
> pass a high resolution time position to Mixxx's internals then tempo,
> pitch bend, FF/REW, cue recall, etc, are all implicitly handled with
> one single message and the driver will be simple. I'd just need to
> loopback from my app to Javascript using a MIDI SysEx or HID message
> (or a MIDI "bundle").

Ah ok now your questions make more sense.  

Just having a time position isn't enough.  If you were to pass time
positions but not rate values, Mixxx wouldn't know to scale the audio
and you'd just hear horrific noise as the track reseeks constantly.
Seek operations should never be used during playback except for loop
boundaries, cues, and other actual seeks.  Trying to match up mixxx's
position with a sample-accurate playback position from CDJ is a recipe
for disaster and headache.

CDJ doesn't really drift so that's a non-issue.

What you want is exactly what Mixxx already has in its vinyl control
API, which is rate and position.  There is a lot of ugly hard-coding of
vinyl control, but it should be possible to create an interface with
your javascript.


> 
> However, if I cannot send an absolute time position, I'll need a slew
> of different messages for tempo, pitch bend, FF/REW, etc., synthesized
> on my end, which is likely to be much less precise, then pass those
> individual messages to Javascript. 

A rate parameter should be enough to get you all four of those messages.
Really, rate and position are all you need.

> This would be much more complex, less reliable and because the CDJ
> track position will drift from Mixxx's track position could even hit a
> CD track boundaries at which point it's stuck.

yes, this is a known problem, and I wrote a lot of code to crate an "end
of timecode" mode (CONST mode) so that playback wouldn't stop when this
happens.  On commercial Serato, if you use CDJ and your tracks are
longer than 15 minutes, they just stop!
> 
> Btw I did look at xwax but due to its focus it's lacking some features
> that Mixxx has, so I'm between a rock and a hard place.

look instead at vinylcontrolxwax.cpp.  It has CD-specific code which
makes it more precise than regular vinyl.
> 
> >Is there something wrong with how
> >absolute position playback is working?
> 
> AFAIK there currently is no absolute position playback. The closest is
> the "playPosition" message but the position is normalized over the
> track's length, i.e. I'd have to retrieve the track length from Mixxx
> and "unscale" my absolute position but that doesn't tell me how much
> resolution comes through, i.e. if a pitch bend on the CDJ would even
> be registered by Mixxx.

I meant absolute mode in vinylcontrolxwax.cpp.



------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to