Independent sound engine processing

Registered by Sean M. Pappalardo

Rework Mixxx's core sound generation engine to operate on a fixed real-time interval (not related to the latency setting,) rendering to a temporary (ring) buffer (which size would be affected by the latency setting) from which each sound card can pull at its own pace. This would completely eliminate problems with sound card sync, provide excellent control manipulation response even at high latencies (and scratching with high-resolution controllers,) allow for time-sensitive effects, and provide other benefits.

Blueprint information

Status:
Complete
Approver:
RJ Skerry-Ryan
Priority:
Medium
Drafter:
RJ Skerry-Ryan
Direction:
Needs approval
Assignee:
William Good
Definition:
Drafting
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
Sean M. Pappalardo
Completed by
Sean M. Pappalardo

Whiteboard

Portable nanosleep(): http://lists.apple.com/archives/darwin-development/2002/apr/msg00408.html
Why not nanosleep(): http://lists.libsdl.org/pipermail/sdl-libsdl.org/2000-April/007804.html

So I'm afraid we might be stuck with busy-wait using select() in a real-time thread in order to get the <10ms accuracy and predictability we need. Considering Mixxx is meant to be a foreground application, that's not the end of the world.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.