Lykos153 / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4 stars 4 forks source link

Sampler refinements #14

Open eigengrau opened 6 years ago

eigengrau commented 6 years ago

So, I don’t know how many samplers most Mixxx users expect, but it occurred to me I could do with fewer samplers, and instead might like to see support for using hot cue markers in samples. We currently have 16 samplers, but the UI shows only four by default. So without better support for sampler banks this isn’t too convenient either.

I could imagine mapping only the top four performance pads of each deck/side to actual samplers, and then use the lower four pads to trigger hot-cues. This would make it easier to use uncut songs as samples and simply jump to hot-cued phrases.

One could implement a notion of focus for samplers (long press sampler button = set focus), but for ease of implementation one could start out by triggering the hot-cue controls for the first or all currently playing samplers. Alternatively, one could use a long press of one of the top four pads as a focus indicator, so that «hold pad₁ + press pad₅» would jump to the first hot-cue in sampler 1.

eigengrau commented 6 years ago

Also, since Mixxx sadly doesn’t have a Serato-style slicer, one could implement an input mode of some sort.

Lykos153 commented 6 years ago

We could use the layers (#5). Eg.

eigengrau commented 6 years ago

I wondered whether, at some point, we might eventually be able to implement a slicer, after all. I ran some experiments last weekend: while mixxx doesn’t give us exact positions of the beat grid (though there’s a bug open for more access on the JS side), it’s possible to connect a callback to beat_active and create a jump table to playback positions.

This allows jumping back to played beats using the pads, but doesn’t allow jumping ahead yet. For this, one would either need more support from the engine, or one would need to compute beat positions based on BPM.

From what I could tell from videos, the Serato slicer functionality appears to be pretty straightforward. When pressing a pad, it enables slip mode, jumps to the beat position, enables a short loop of param beats length (1, ½, ¼, etc.). When the the pad is released, slip mode is disabled.

It also looks like there’s two slicer modes. In one mode, enabling the slicer mode toggles an 8 beat loop first, so the slices that are mapped to the pads remain static. In the other mode, the slicer also toggles an 8 beat loop, but if the playback cursor is ever allowed to touch the end of the loop (i.e., when no pad is triggered during the last beat), the loop window is moved 8 beats forward.

Be-ing commented 6 years ago

The DDJ-SX mapping has implemented some slicer functionality but it has some limitations. For example, it assumes a constant beat grid. Also, there is no indication of the available slices on the waveforms like Serato has. If you're interested in implementing slicer mode, I encourage you to implement it in Mixxx instead of a controller mapping. That way it would be easy to map for any controller and would not have those limitations.

github-actions[bot] commented 3 years ago

This issue is marked as stale because it has been open 90 days with no activity.