lp:~mixxxdevelopers/mixxx/fixes_soundcardSync

Created by Sean M. Pappalardo and last modified

This branch aims to fix problems with synchronization between multiple sound cards (due to different clocks and the resulting drift) by implementing resampling.

It cannot fully realize this goal due to the lack of a timer-powered engine. For now, it at least locks to the master output card so it doesn't skip. (If no master out is specified, then it locks to one of the direct deck output cards.)

Get this branch:
bzr branch lp:~mixxxdevelopers/mixxx/fixes_soundcardSync
Members of Mixxx Development Team can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Mixxx Development Team
Project:
Mixxx
Status:
Merged

Recent revisions

2553. By Phillip Whelan

Merging from the 1.9 branch in preparation for merging into the 1.9 release.

2552. By Sean M. Pappalardo

Cleaned up syncing to master output card (direct deck output fallback) fix for release

2551. By Sean M. Pappalardo

- Fixed segfaults
- Now calculate and use the sample rate difference between the cards, with SoundTouch but it doesn't sound pretty (see mailing list message)
- Can easily disable the SoundTouch code by changing the IF clause above it to 'if (true) {' resulting in the same behavior as r2549 of this branch, which at least fixes the master output

Further improvement may require implementing the master engine timer idea RJ has talked about. (See mailing list message.)
I'm suspending work on this branch as a result since that's way outside the scope.

2550. By Sean M. Pappalardo

BROKEN: Hacked up SoundManager in an attempt to solve the second half of the problem. Trying to use SoundTouch to scale the output buffer to compensate for each sound card's clock drift from the master.
I tried just hard coding ST to unity rate for testing and am getting segfaults when latency is lower than 85ms.
Help me please!

2549. By Sean M. Pappalardo <pegasus@presariolaptop>

- Removed SoundCardSync timer. QTimers are not accurate enough for this. Moved functionality into SoundManager::requestBuffer()
- Mixxx now uses the clock of the sound card selected for the Master Output as the reference clock and new sound buffers are only generated in time with this. This fixes half of the problem, as now there are no skips on the master output.

2548. By Sean M. Pappalardo <pegasus@presariolaptop>

Merging from trunk

2547. By Sean M. Pappalardo <pegasus@presariolaptop>

Whoops, forgot to disconnect the timer signal when stopping it

2546. By Sean M. Pappalardo <pegasus@presariolaptop>

Added calculation of clock skew. (Quick-n-dirty for now.)

2545. By Sean M. Pappalardo <pegasus@presariolaptop>

Added card frames/sec measurement. Prints to the console/log every half second.

2544. By William Good

Allow the same input samples to go to multiple places accepting input in
Mixxx (beneficial to both vinyl control and external input passthrough).

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:~mixxxdevelopers/mixxx/trunk
This branch contains Public information 
Everyone can see this information.