Feature request: Scripting

Bug #1980875 reported by Fabrizio
10
This bug affects 2 people
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
Revision history for this message
Fabrizio (fab-1) wrote :

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.

Revision history for this message
Michael Stahl (dg3nec) wrote :

Its also good for controlling light with sending special MIDI signals?

Revision history for this message
Fabrizio (fab-1) wrote :

Michael, what I have in mind about this feature is more oriented on automating actions in Mixxx (thought as a standalone box), by writing scripts containing sequences of operations kept in sync with a track execution.
So, generally, I would say that MIDI controllers would not be affected unless implementing some particular actions related to external controllers (or considering the fact that, if an external controller is connected, it will probably reflect Mixxx actions the same as if a user would manually perform those actions locally on its interface with a keyboard or a mouse).
P.S.: Having no controllers at present time I ignore how they behave when you interact with mix by using, say the PC keyboard.

Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/10779

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.