Status: There is a branch which has most of these features implemented. Testing is still needed.
Mixxx has BPM detection but not beat detection. Beat detection would allow us to do man cool tricks including:
There is currently a branch at https://code.launchpad.net/~mixxxdevelopers/mixxx/features_beatcontrol.
Current Status:
Most of these features use Engine Controls which interact and communicate amongst each other. Beat loops, for instance, are done by querying the track's beats and then setting the loop in and loop out positions with that information.
I use both a straight [ChannelN],beatloop CO which will take the argument in set as the number of beats the loop should have. Fractional and negative values work.
The behaviour of beat loops varies whether or not the value is above or below zero (absolute) and whether it is positive or negative.
Beat seeking is done by calling the [ChannelN],beatseek CO and setting the value to the number of beats to jump. The jump will occur on the next beat.
I have added a new Engine Control; QuantizeControl, which has the following CO's:
It also has a pushbutton, for skins; [ChannelN],quantize_enable.
These CO's are then queried when setting up loop points and cues. If quantization is enabled, ie: [ChannelN],quantize == 1.0, then the function queries [ChannelN],quantize_beat and uses that as it's new position instead of the current play position.
| Group | Name | Parameter | Values | Notes |
|---|---|---|---|---|
| [ChannelN] | beatloop | The number of beats to loop over | N/A | Loops from next beat to N backwards if negative. works with fractions. |
| [ChannelN] | beatloop_X | (Push Button) | N/A | Loop over set number of beats, for X = { 0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16, 32, 64 } |
| [ChannelN] | quantize | Enable or disable | Enabled? | Boolean for turning on/off quantize mode |
| [ChannelN] | quantize_beat | Next Beat to Quantize to | Frame | Returns the Frame offset for the next beat. |
| Group | Name | Parameter | Values | Notes |
|---|---|---|---|---|
| [ChannelN] | loop_double | On/Off(PushButton) | boolean? | Double the loop_size, as of now can go beyond track limit(and overflow), but safely degrade by playing logic |
| [ChannelN] | loop_halve | ON/Off(PUshButton) | boolean? | Halfs the loop_size, hardcoded limit on 1/64 of tracks beat size |
| [ChannelN] | loop_resize | Scale real to resize current loop | float | Can be used from scripting |
None that I know of (madjester).