Feature request: Scripting
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Confirmed
|
Wishlist
|
Unassigned |
Bug Description
Internal scripting engine to perform automation of almost any Mixxx task.
Scripts should define what, where, when.
What and where, are simply defined by actions (such as Load, play, stop) and control names (the same names used by controller scripting).
The key concept would be "when", defined by Time marker labels.
Time marker labels could be placed anywhere in a script with the role of track related time stamps, defining when to trigger one or more sequenced actions.
The values to assign to such labels would be taken directly from Mixxx when clicking on a point of a loaded waveform.
This concept is similar to CUE points but maybe more flexible.
Examples of time markers:
[03:02:323:A]
which means 03 minutes, 02 seconds, 323 milliseconds, and A means that this value refers to the beginning of the track loaded on Deck A
In the example below, the time marker is not absolute but relative (+20ms) to the latest absolute time marker.
+[0:00:20:A]
Even if you have no wizards, you can perform some tests manually and, if they sound good, enclose them in a script which can be loaded and executed any time manually, or included in a sequence of AutoDJ.
Some examples:
'this is script_1.txt with some verbosity added for better understanding
Load track_A (on) Deck_A
Load track_B (on) Deck_B
Play track_A (from) [00:00:000:A] 'this is a time marker used as a CUE, see above for details about time markers
[01:20:283:A]
(do things with controls, generically on both tracks)
[02:15:356:A]
Play track_B (from) [00:10:025:B]
(start doing things related to the mix)
(...)
[02:45:279:A] 'end of mix
(do things)
'here mix is completed
Stop track_A
'remember: track_B is playing
[02:10:006:B]
(do things on track_B)
Load script_2
'end of script_1
'this is script_2, following script_1
Load track_C (on) Deck_A
Load track_B (on) Deck_B 'if it’s already there, then do nothing
Play track_B 'if already playing, then do nothing)
[02:15:010:B]
'here follow any actions to be done before the outro section of Track_B to be mixed with Track_C.
[00:01:015:A]
'now A refers to track_C which is on Deck A
(and so on)
(...)
Changed in mixxx: | |
status: | New → Confirmed |
importance: | Undecided → Wishlist |
With such a feature you could, for example, jump from points of a track to other points of another track, instantly and repeatedly.
Just get the markers of the desired points from waveforms and write them in a text file together with proper actions.