Monday, December 3, 2007

Quick Vinyl Control Video, SSE optimizations

A few nights ago I captured a video while doing a quick test mix using Mixxx's vinyl control.



Not my best transition ever, but it works. :)

I've been trying to do some tweaking to get the latency down and one of the biggest improvements came from compiling Mixxx with SSE and MMX optimizations. The tricky part with turning on these optimizations is that they'll only work on post-Pentium III CPUs. That's fine for our Windows and OS X builds, but it's a problem for our Ubuntu package because we can't assume any specific CPU architecture. One possible solution for this is to disable SSE/MMX optimizations in the package that lives in the Ubuntu repositories and host a different (SSE/MMX optimized) Ubuntu package on our website.

In the meantime, I still have lots of work to do on fixing up the library. Busy, busy!

6 comments:

  1. oooh man. We really DO want to get our hands on that, cant wait ! Keep up the work !

    ReplyDelete
  2. if i remember correctly, vlc and mplayer have runtime cpu detection and only enable sse and the like if it's available on the machine they're executed on.
    but i'm not a dev and don't know how this works, or if this is possible in mixxx.

    greetings
    sepp

    ReplyDelete
  3. sepp:

    VLC and mplayer have inline assembly code written to use SSE, which is what they can toggle on/off at runtime. I was actually referring to compiler optimizations using SSE, nothing that fancy... Good thinking though!

    ReplyDelete
  4. How does this work? I guess you have to use some kind of vinyls with a steady repeating beat or something?

    Final Scratch in FOSS form? :)

    ReplyDelete
  5. Sorry about that, maybe I should learn to read the wiki before I ask questions? ;)

    ReplyDelete
  6. You could abstract the useful code into a library, and build it both with and without SSE optimization. Then let the Mixxx program choose the right one on startup.

    ReplyDelete