Consolidate deck manipulation handling

Registered by Sean M. Pappalardo on 2011-10-14

Route the three 1-to-1 deck manipulation data streams (CD/vinyl time code, controller wheels, waveform dragging) to one entity (per virtual deck) that evaluates these data and has sole responsibility for effecting the manipulations. In other words, the current Scratch* COs (as well as Jog and Wheel, etc.) will be routed through this entity instead of operating directly on the deck. The vinyl control subsystem currently has the best response, so we will use its processing subsystem as the basis for this new entity.
Also make use of time stamps from sources that send them for better response.

Blueprint information

Status:
Not started
Approver:
Mixxx Release Managers
Priority:
Medium
Drafter:
Mixxx Development Team
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Not started
Milestone target:
None

Whiteboard

In preliminary discussions with RJ, a PID controller is a more flexible/generalized alpha-beta filter (what vinyl control and controller scripting use,) so that should be the first candidate for this per-deck manipulation handler.

Each input source would register itself with this handler including the parameters it needs to tweak for correct operation, then the handler would affect the deck speed for each output audio frame based on the inputs (and previously-supplied parameters) from each source.

I (Sean) took a quick look at PositionScratchController and it looks like exactly what we need. It just needs to accept external time stamps (and continue to do its internal calculations if none are supplied.) Is this a solution or am I missing something?

(?)

Work Items

Work items:
Discuss details, get approval from the PID code writers (RJ, Daniel): TODO
Implementation: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.