For Musebot installations, we have been creating specific ensembles of musebots, and running them for prescribed durations (usually five minutes).
This is done via an undocumented ensemble feature, found in Arne’s Musebot Conductor.
When this specific Conductor launches, it looks for a directory named “Ensembles” at the same level as the “Musebots” directory. Any text files (.txt) found in that directory will be displayed in the ensemble menu:
These text files contain specific information about an ensemble.
tempo 60 duration 360 ae_AtmosphereBOT gain 1.000 ae_MilesChordBOT ae_DroneBOT gain 1.000 mh_TonicBOT gain 1.000 Chichichi gain .8
The first line must contain the tempo (in beats per minute) followed by the duration (in seconds).
The remaining lines are the musebots that are to be loaded. These names do not include the extensions, and are thus the same as the musebot’s folder.
Some additional information can be included after the musebot name:
gain (0.0 - 1.0) delay (in seconds) kill (in seconds)
The gain value will be sent to the musebot after all musebots are loaded. This allows for rough mixing of musebot levels.
A delay value, in seconds, will delay the launching of that musebot by that length of time. Note that launching begins after the delay, and may itself take several seconds, so it cannot be assumed that the musebot will begin playing at that specific time.
A kill value, in seconds, will cause the Conductor to send a kill message to the musebot after that time once the musebot has been launched, taking into account any delay. Thus, delay 20 kill 20 will cause the musebot to launch with a delay of twenty seconds, then be killed 20 seconds later.
Combining delay and kill messages allows for the ensemble to dynamically vary during its presentation time.
How the Ensembles work
Select an ensemble from the menu, and it will be displayed in the pane. Click on the “single” toggle, which will highlight and switch to “play set”, and begin launching the musebots in that ensemble.
Note that the Conductor’s tempo will change to match that of the ensemble file, and the counter will begin. Once all the musebots have been launched, the Conductor’s timer will start, and the musebots should begin to play.
The Conductor launches the first musebot, and waits until it receives a heartbeat message from that musebot before launching the next musebot: this can take a few seconds.
Note#1 – if any musebot is active (i.e. open) that is not in the current ensemble, the ensemble will not load properly. This is because the Conductor is looking for specific heartbeats, and any extra musebots will not allow the loading to function properly (this is a “feature” that is on the list of things to fix).
Note #2 – if there is a problem in launching musebots (i.e. the expected heartbeats are not received), the Conductor will kill all open musebots, and launch the next ensemble after sixty seconds.