Yeah my me too e-mail runs along the lines that your repsonsiveness is
limited by your latency, which is n*buffer size, for some smallish
integer n (2-5 let's say).

Another bad issue is that you're stretching or bending the audio or
whatever and doing this in non-buffer size things is probably hard.

But assuming you deal with that you basically just reduce n by 1 I
think which isn't so helpful.

Adam

2008/4/30 Albert Santoni <[EMAIL PROTECTED]>:
> Hi Dan,
>
>
>  On Tue, 2008-04-29 at 21:40 -0400, Dan Gendreau wrote:
>  > Albert Santoni wrote:
>  > > Hi guys,
>  > >
>  > > I did a new vinyl control demo video this morning, this time showing off
>  > > the improvements I've been making to the linear interpolation code over
>  > > the last week.
>  > Hi Albert,
>  > Looks Nice. I am looking at the VinylControlXwax code for my MsPinky
>  > implementation.
>  >
>  > Am I reading it wrong, or are you only updating the vinyl position and
>  > velocity information once per buffer?
>
>  No, you read correctly, I only update the pitch/position controls once
>  per buffer. The primary reason for this is that they're controlled
>  through Mixxx's ControlObject framework, and those changes only ever get
>  synchronized to the playback engine once per buffer. Everything in Mixxx
>  only gets sync'ed once per buffer like that.
>
>  I don't think it would improve responsiveness to sync more often. (I may
>  be wrong here, so anyone should feel free to point out any flaws in my
>  logic.) If, for example, we were to sync the ControlObjects twice per
>  buffer, the second update of the position/pitch wouldn't do anything
>  because the audio callback would likely be past the time/pitch
>  stretching code, which really drives the whole playback engine. If both
>  syncs were before the time/pitch stretch, then the first pitch/position
>  update would simply get overwritten by the second.
>
>  So the way we do it now (and I think this is the de facto way to do it
>  in audio apps) is to "do everything" once per buffer.
>
>  Please feel free to ask for clarification on anything, my explanation
>  may not have been very clear.
>
>
>  >
>  > I would think there should be some way to send a stream of updates (at
>  > something like 500-1000Hz?) to the Player engine so it can track the
>  > vinyl more smoothly within a given output buffer. MsPinky gives
>  > position
>  > and velocity updates every 32 samples for example.
>  
>  Serato uses a 1000 Hz carrier wave (stereo), and the pitch can be
>  determined by looking at a similar number of samples. In both cases,
>  you're still limited by the latency (buffer size) of your soundcard. I
>  should also mention that input and output occur synchronously (at least
>  within PortAudio) - If the soundcard asks you for 1024 samples, it will
>  give you 1024 samples from the input channels at the same time. That's
>  the audio that gets fed into all the Xwax timecoder stuff (or the
>  corresponding scratchlib code).
>
>  Again, a practical way to do sub-latency pitch/position changes isn't
>  immediately obvious to me. That being said, I'm open to suggestions
>  here, although I think we're going to be limited by the latency no
>  matter what. (This is why you need a good soundcard/fast CPU for vinyl
>  control.) I'm also open to suggestions on all of the vinyl control code.
>  It's an area of Mixxx that hasn't seen much peer-review, and I think
>  there's lots of room for improvement there.
>
>  Thanks,
>  Albert
>
>
>
>
>
>  -------------------------------------------------------------------------
>  This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
>  Don't miss this year's exciting event. There's still time to save $100.
>  Use priority code J8TL2D2.
>  
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
>  _______________________________________________
>  Mixxx-devel mailing list
>  [email protected]
>  https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to