Multiple Composers: Clocks/tempo, launch quantization, MIDI clock out
-
- KVRist
- 46 posts since 17 Jan, 2015
First, I want to say that I absolutely LOVE that MuLab allows to have multiple composers in one project. I've been looking for this kind of UI flexibility for a really long time and I'm really excited to mess around with it in the context of live performance!
And I have a few questions:
1) Can 2 composers be in sync in terms of tempo? If yes, how do I do this? When I insert 2 in the project their tempo clocks seems to behave completely separately (changing one does not change the other).
2) Can 2 composers have launch quantization? So that playing a clip in Composer 2 starts at the next bar from Composer 1 (which is already playing a clip).
3) What determines which composer's tempo is sent via the MIDI clock out (when there is more than one Composer in the project)? Is it whether that composer is set as the project's main module?
Thank you!
And I have a few questions:
1) Can 2 composers be in sync in terms of tempo? If yes, how do I do this? When I insert 2 in the project their tempo clocks seems to behave completely separately (changing one does not change the other).
2) Can 2 composers have launch quantization? So that playing a clip in Composer 2 starts at the next bar from Composer 1 (which is already playing a clip).
3) What determines which composer's tempo is sent via the MIDI clock out (when there is more than one Composer in the project)? Is it whether that composer is set as the project's main module?
Thank you!
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
Indeed each composer has its own independent tempo.jaytwoeight wrote: Thu Dec 18, 2025 5:46 pm 1) Can 2 composers be in sync in terms of tempo? If yes, how do I do this? When I insert 2 in the project their tempo clocks seems to behave completely separately (changing one does not change the other).
But even though displayed as absolute tempo, a composer in fact uses a tempo relative to its parent. When inserted in the project modular area that is the project tempo.
See https://www.mutools.com/info/M10/docs/m ... poser.html
Composers are modules and are independent of each other.2) Can 2 composers have launch quantization? So that playing a clip in Composer 2 starts at the next bar from Composer 1 (which is already playing a clip).
Each composer can have its own quantization settings, pls see
https://www.mutools.com/info/M10/docs/m ... atrix.html
About syncing multiple composers:
First of all i want to say the modular composers is a work in progress and i expect more options for that in the future.
That said, currently the way to sync 2 composers is setting up a Note Action Map in both of them so that incoming note events trigger certain composer actions, and when that's setup use a common source to send events to both composers which will then act in sync due to their Note Action Map.
More on Note Action Map here:
https://www.mutools.com/info/M10/docs/m ... n-map.html
This common note event source could be an up stream 'master composer' or a drum pad kit (Drum Note Processor module), or any module that generates note events which will trigger actions in the composers' Note Action Map.
Whether a composer's Time Line sends out MIDI Clock does not depend on the projects main module, but on whether you have chosen a target module for MIDI Clock for that specific composer. That's done via right-click on the tempo display -> Choose MIDI Clock Output module. That needs to be some child module of the composer, eg. an Event Output module. Then when you want to to reach real MIDI output make sure these MIDI Clock events can travel up to the project modular area and there go to an Project Event Out.3) What determines which composer's tempo is sent via the MIDI clock out (when there is more than one Composer in the project)? Is it whether that composer is set as the project's main module?
Hope this helps.
-
- KVRist
- Topic Starter
- 46 posts since 17 Jan, 2015
I read the Composer docks and I understand what you are saying, but I am still not sure what the best course of action is in my case. I will describe what I am trying to accomplish and maybe you can tell me how to do it most easily?
Question 1:
To be able to launch clips in time across 2 composers with a 1 bar quantization it seems to me that I should play clips in both Live matrixes based on a Note map action (that's identically configured in both composers). If I don't want anything to play on one of the composers (until I do), I can just make an empty 1 bar clip that loops so that they are playing in sync.
A more convoluted approach would be to make the beginning of clip X in Composer A trigger a clip in Composer B, then if Composer A clips launch is quantized to 1 bar the clip in Composer B will launch in time with it. I am guessing this can be done with putting an automation value in Composer A clip which is somehow floated up to the parent level as an event and from there into Composer A also as an event.
Are both of these approaches possible? And is the first one much simpler?
Question 2:
I would like to be able to change the tempo across 2 composers with a knob/slider (Or if not possible by pressing buttons which increment the tempo up/down in 0.5 bpm). I understand the composer tempos are relative to the project tempo, but how can I affect the project tempo via a knob/slider (or the two composer tempos at the exact same time via a single knob)?
Question 3:
Assuming I can sort out the answer to 1 above, I would like to also be able to change the tempo across 2 composers via an automation clip (at the exact same time). Presumably if both composers are already running in sync (and quantized to 1 bar), I can just make identical tempo ramp automation clips in both and trigger them with the same Note action trigger, right?
MIDI Clock out:
I understand what you mean and I was able to make this work. But there is one issue and one quirk.
The issue is that both pressing play in the composer and starting the Time line via the Note action map sends a MIDI Continue command with a Song Position Pointer message right AFTER it. I am sending midi out of a midi interface (Zoom U-44) to a Digitakt 2 and the Digitakt 2 does not pickup the Song Position Pointer and start from the beginning of the 1st bar (it resumes from the step which it was on before pausing as if it never received the SPP message). I think I either need to send it Transport Start (not Continue) OR send the Song Position Pointer message BEFORE the Continue message. Is there a way to do either of these in MuLab (without using a tool like MIDIPipe to delay/convert MIDI messages)?
The quirk is that when I insert a Time line tempo marker > highlight it > press Play in that composer, everything works as expected (the MIDI slave device picks up both the Transport Continue and the MIDI clock MuLab is sending)... But if I highlight a scene in the Live matrix and then press Play the Transport Continue and MIDI clock out are not sent out by MuLab (only an SPP message is sent).
Question 1:
To be able to launch clips in time across 2 composers with a 1 bar quantization it seems to me that I should play clips in both Live matrixes based on a Note map action (that's identically configured in both composers). If I don't want anything to play on one of the composers (until I do), I can just make an empty 1 bar clip that loops so that they are playing in sync.
A more convoluted approach would be to make the beginning of clip X in Composer A trigger a clip in Composer B, then if Composer A clips launch is quantized to 1 bar the clip in Composer B will launch in time with it. I am guessing this can be done with putting an automation value in Composer A clip which is somehow floated up to the parent level as an event and from there into Composer A also as an event.
Are both of these approaches possible? And is the first one much simpler?
Question 2:
I would like to be able to change the tempo across 2 composers with a knob/slider (Or if not possible by pressing buttons which increment the tempo up/down in 0.5 bpm). I understand the composer tempos are relative to the project tempo, but how can I affect the project tempo via a knob/slider (or the two composer tempos at the exact same time via a single knob)?
Question 3:
Assuming I can sort out the answer to 1 above, I would like to also be able to change the tempo across 2 composers via an automation clip (at the exact same time). Presumably if both composers are already running in sync (and quantized to 1 bar), I can just make identical tempo ramp automation clips in both and trigger them with the same Note action trigger, right?
MIDI Clock out:
I understand what you mean and I was able to make this work. But there is one issue and one quirk.
The issue is that both pressing play in the composer and starting the Time line via the Note action map sends a MIDI Continue command with a Song Position Pointer message right AFTER it. I am sending midi out of a midi interface (Zoom U-44) to a Digitakt 2 and the Digitakt 2 does not pickup the Song Position Pointer and start from the beginning of the 1st bar (it resumes from the step which it was on before pausing as if it never received the SPP message). I think I either need to send it Transport Start (not Continue) OR send the Song Position Pointer message BEFORE the Continue message. Is there a way to do either of these in MuLab (without using a tool like MIDIPipe to delay/convert MIDI messages)?
The quirk is that when I insert a Time line tempo marker > highlight it > press Play in that composer, everything works as expected (the MIDI slave device picks up both the Transport Continue and the MIDI clock MuLab is sending)... But if I highlight a scene in the Live matrix and then press Play the Transport Continue and MIDI clock out are not sent out by MuLab (only an SPP message is sent).
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
The first method ie. using empty clips is possible of course and can be a smart way to start composers synced but only really hear 1.jaytwoeight wrote: Fri Dec 19, 2025 6:39 pm Question 1:
To be able to launch clips in time across 2 composers with a 1 bar quantization it seems to me that I should play clips in both Live matrixes based on a Note map action (that's identically configured in both composers). If I don't want anything to play on one of the composers (until I do), I can just make an empty 1 bar clip that loops so that they are playing in sync.
A more convoluted approach would be to make the beginning of clip X in Composer A trigger a clip in Composer B, then if Composer A clips launch is quantized to 1 bar the clip in Composer B will launch in time with it. I am guessing this can be done with putting an automation value in Composer A clip which is somehow floated up to the parent level as an event and from there into Composer A also as an event.
Are both of these approaches possible? And is the first one much simpler?
About the second method you described: I don't immediately get into it, but that's possibly me being a bit tired atm. At first sight method 2 feels more complicated and less flexible than method 1. Anyway, whether that second method works well for you is best answered by yourself by trying it out in practice.
MuLab is modular and gives you modular freedom so there can be many combinations, also many combinations i didn't think of myself, which is good, as i'm only trying to shape the modular playground. Like i design X axis and Y axis, but not all the points on the surface XY.
Yes you can change the tempo of a composer using pads this way:Question 2:
I would like to be able to change the tempo across 2 composers with a knob/slider (Or if not possible by pressing buttons which increment the tempo up/down in 0.5 bpm). I understand the composer tempos are relative to the project tempo, but how can I affect the project tempo via a knob/slider (or the two composer tempos at the exact same time via a single knob)?
* Insert 2 Note Key Pad modules outside the composer and let them send, eg. C1 and D1.
* Connect those pads to the composer.
* In the composer setup its Note Action Map so that C1 increases the tempo (eg 101%), D1 decreases the tempo (eg 99%).
Now everytime you click/play the C1 pad the composer's tempo will go up by 101%,
everytime you click/play the D1 pad the composer's tempo will go down by 99% of current value.
I'll reply further tomorrow.
-
- KVRist
- Topic Starter
- 46 posts since 17 Jan, 2015
Thank you! The MIDI key pad trigger on the project level (connected to the Composers) works for starting both composers at the same time (even if one of them is playing an empty clip).
For the Tempo knob is there a way to change the tempo of the composers as a % of the project tempo while keeping the project tempo a constant?
Increasing the tempo as a % of the current value does not make sense (because one cannot round the values to the nearest BPM). But if I can keep the project tempo at 100bpm and change the Composer tempos to a % of the 100bpm constant I can easily endup with whatever BPM I like (within a range). Then I just need to write a LUA script for TOUCH OSC where my slider input is spread across the entire Note action map (for one MIDI channel), so I endup with something like a MIDI value of C-1 is 80% of 100bpm (aka 80bpm), C#-1 is 80.5% of 100bpm (aka 80.5bpm) , D-1 is 81% of 100bpm (aka 81bpm) and so on.
If that's not possible, I suppose I can just open the Project level modular area and drag the tempo with my touchpad. I am just weary of doing this kind of stuff while playing for a club full of people because I've noticed that crashes and audio drop outs are a lot more likely when the GUI of a DAW has to render something complex.
Looking forward to the other answers! This has already been super productive. Thank you.
For the Tempo knob is there a way to change the tempo of the composers as a % of the project tempo while keeping the project tempo a constant?
Increasing the tempo as a % of the current value does not make sense (because one cannot round the values to the nearest BPM). But if I can keep the project tempo at 100bpm and change the Composer tempos to a % of the 100bpm constant I can easily endup with whatever BPM I like (within a range). Then I just need to write a LUA script for TOUCH OSC where my slider input is spread across the entire Note action map (for one MIDI channel), so I endup with something like a MIDI value of C-1 is 80% of 100bpm (aka 80bpm), C#-1 is 80.5% of 100bpm (aka 80.5bpm) , D-1 is 81% of 100bpm (aka 81bpm) and so on.
If that's not possible, I suppose I can just open the Project level modular area and drag the tempo with my touchpad. I am just weary of doing this kind of stuff while playing for a club full of people because I've noticed that crashes and audio drop outs are a lot more likely when the GUI of a DAW has to render something complex.
Looking forward to the other answers! This has already been super productive. Thank you.
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
No.jaytwoeight wrote: Fri Dec 19, 2025 9:30 pm For the Tempo knob is there a way to change the tempo of the composers as a % of the project tempo while keeping the project tempo a constant?
Why do you need tempo changes to be upon integer BPM values in your live setup?Increasing the tempo as a % of the current value does not make sense (because one cannot round the values to the nearest BPM).
I understand, but thenIf that's not possible, I suppose I can just open the Project level modular area and drag the tempo with my touchpad. I am just weary of doing this kind of stuff while playing for a club full of people because I've noticed that crashes and audio drop outs are a lot more likely when the GUI of a DAW has to render something complex.
1) Test and retest your setup on the actual live machine before doing the gigs.
If it works fine while testing then there is no reason why it would not work fine on stage.
2) IF there would be audio drops due to graphic rendering when doing tempo changes using the project tempo display, then i expect similar issues when using custom pads for doing tempo changes as these will cause graphic rerenderings too of course. I mean it's not how a composer's tempo is changed, but it's the fact that a composer's tempo is changed that causes GUI rerenderings.
-
- KVRist
- Topic Starter
- 46 posts since 17 Jan, 2015
I see.
1) The live set might actually be a hybrid set. Since MuLab has to be the master clock that means that I might endup playing somebody's 135bpm track at 135.4389, which would be odd for me.
3) Live performers practice tunes at specific tempos. If I can't easily get to 134bpm but I can get to 134.4576 that would throw me off on stage. I know I could make an automation clip but that comes with its own set of issues (because it has to be prepared ahead of time and because the ramp is fixed before hand).
2) Tempo changes relative to the current value as a % don't really make sense because 1% of 100bpm is 1bpm while 1% of 150bpm is 1.5bpm. In a live performance context one does not want to press a button which behaves differently at different tempos. It's stressful to be on stage and my expectation is that the button would behave consistently (as in integers of BPM) with every other piece of hardware.
In order for the tempo change in the Note action map to be useful I personally believe there should be a toggle which allows the % to be based on the project level tempo (not on the current tempo value) or better yet as BPM integers. I can't think of a situation where tempo as a % of current value makes sense, primarily because everyone thinks of tempo as BPM integers (not % fractions). It's a widely accepted convention (which everyone is used to and expects when they see tempo +/- options).
What do you think of the stuff below? I know it's an endless thread and I appreciate you walking me through navigating the constraints of MuLab.
For a few reasons:Why do you need tempo changes to be upon integer BPM values in your live setup?
1) The live set might actually be a hybrid set. Since MuLab has to be the master clock that means that I might endup playing somebody's 135bpm track at 135.4389, which would be odd for me.
3) Live performers practice tunes at specific tempos. If I can't easily get to 134bpm but I can get to 134.4576 that would throw me off on stage. I know I could make an automation clip but that comes with its own set of issues (because it has to be prepared ahead of time and because the ramp is fixed before hand).
2) Tempo changes relative to the current value as a % don't really make sense because 1% of 100bpm is 1bpm while 1% of 150bpm is 1.5bpm. In a live performance context one does not want to press a button which behaves differently at different tempos. It's stressful to be on stage and my expectation is that the button would behave consistently (as in integers of BPM) with every other piece of hardware.
In order for the tempo change in the Note action map to be useful I personally believe there should be a toggle which allows the % to be based on the project level tempo (not on the current tempo value) or better yet as BPM integers. I can't think of a situation where tempo as a % of current value makes sense, primarily because everyone thinks of tempo as BPM integers (not % fractions). It's a widely accepted convention (which everyone is used to and expects when they see tempo +/- options).
What do you think of the stuff below? I know it's an endless thread and I appreciate you walking me through navigating the constraints of MuLab.
I understand what you mean and I was able to make this work. But there is one issue and one quirk.
The issue is that both pressing play in the composer and starting the Time line via the Note action map sends a MIDI Continue command with a Song Position Pointer message right AFTER it. I am sending midi out of a midi interface (Zoom U-44) to a Digitakt 2 and the Digitakt 2 does not pickup the Song Position Pointer and start from the beginning of the 1st bar (it resumes from the step which it was on before pausing as if it never received the SPP message). I think I either need to send it Transport Start (not Continue) OR send the Song Position Pointer message BEFORE the Continue message. Is there a way to do either of these in MuLab (without using a tool like MIDIPipe to delay/convert MIDI messages)?
The quirk is that when I insert a Time line tempo marker > highlight it > press Play in that composer, everything works as expected (the MIDI slave device picks up both the Transport Continue and the MIDI clock MuLab is sending)... But if I highlight a scene in the Live matrix and then press Play the Transport Continue and MIDI clock out are not sent out by MuLab (only an SPP message is sent).
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
PS: And if such GUI rerenderings cause audio drop outs, i expect that also to happen in other apps as then it must be something in the Mac system. MuLab's GUI itself is not interfering with the audio processing.MuTools wrote: Sat Dec 20, 2025 12:46 pm 2) IF there would be audio drops due to graphic rendering when doing tempo changes using the project tempo display, then i expect similar issues when using custom pads for doing tempo changes as these will cause graphic rerenderings too of course. I mean it's not how a composer's tempo is changed, but it's the fact that a composer's tempo is changed that causes GUI rerenderings.
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
I disagree that tempo changes in % don't make sense. I think it makes much sense, musically.jaytwoeight wrote: Sat Dec 20, 2025 1:12 pm 1) The live set might actually be a hybrid set. Since MuLab has to be the master clock that means that I might endup playing somebody's 135bpm track at 135.4389, which would be odd for me.
3) Live performers practice tunes at specific tempos. If I can't easily get to 134bpm but I can get to 134.4576 that would throw me off on stage. I know I could make an automation clip but that comes with its own set of issues (because it has to be prepared ahead of time and because the ramp is fixed before hand).
2) Tempo changes relative to the current value as a % don't really make sense because 1% of 100bpm is 1bpm while 1% of 150bpm is 1.5bpm. In a live performance context one does not want to press a button which behaves differently at different tempos. It's stressful to be on stage and my expectation is that the button would behave consistently (as in integers of BPM) with every other piece of hardware.
When using % "a bit faster" feels the same for 100 BPM as for 150 BPM. But increasing 100 to 101 BPM does not feel the same as increasing 150 to 151 BPM. Musically % makes more sense, imho.
But i do understand your point of tempo changes in % being unconventional, and that this unconventionality may be a practical issue in some cases, as you described.
-
- KVRist
- Topic Starter
- 46 posts since 17 Jan, 2015
Yeah, if you are jamming at home tempo changes as a % of the current value are fine. Once you hit the conventions (of releasing music or lining up with released tracks in a hybrid set) they become odd.
What do you think about the MIDI clock out issue (Continue vs Start & SPP before Continue) and quirk (Continue & SPP not being sent when restarting the playback from Live matrix)?
What do you think about the MIDI clock out issue (Continue vs Start & SPP before Continue) and quirk (Continue & SPP not being sent when restarting the playback from Live matrix)?
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
In the next MuLab update the Note Action Map will have extra options:jaytwoeight wrote: Sun Dec 21, 2025 10:13 am Yeah, if you are jamming at home tempo changes as a % of the current value are fine. Once you hit the conventions (of releasing music or lining up with released tracks in a hybrid set) they become odd.
Set Tempo Absolute BPM
Change Tempo Relative BPM (editable in 1/100 BPM steps, eg. 50 = +0.5 BPM, -100 = -1 BPM, ...)
Practical note: This next update won't be for Mac yet.
The first next Mac update is expected to be available in a month, because until then i don't have access to the Mac dev system.
I'm getting closer to have a look at this. FYI: There are also other parallel working points. Working step by step.What do you think about the MIDI clock out issue (Continue vs Start & SPP before Continue) and quirk (Continue & SPP not being sent when restarting the playback from Live matrix)?
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
You're right, that's a bug. The MIDI Clock Song Position message should be sent before the MIDI Clock Continue message. Will be fixed in the next update.jaytwoeight wrote: Fri Dec 19, 2025 6:39 pm MIDI Clock out:
The issue is that both pressing play in the composer and starting the Time line via the Note action map sends a MIDI Continue command with a Song Position Pointer message right AFTER it. I am sending midi out of a midi interface (Zoom U-44) to a Digitakt 2 and the Digitakt 2 does not pickup the Song Position Pointer and start from the beginning of the 1st bar (it resumes from the step which it was on before pausing as if it never received the SPP message). I think I either need to send it Transport Start (not Continue) OR send the Song Position Pointer message BEFORE the Continue message. Is there a way to do either of these in MuLab (without using a tool like MIDIPipe to delay/convert MIDI messages)?
I'll reply on the other MIDI Clock aspect later.
-
- KVRist
- Topic Starter
- 46 posts since 17 Jan, 2015
Ah, great about the SPP fix! Thank you!
About the tempo change: thank you for adding this feature!
I just have a question about the meaning of the word "absolute" here:
My understanding is that the Note action map is tied to a composer, the tempo of which is based on the project tempo. So if the project tempo is 100bpm >> a Note action map trigger sets the tempo for two composers simultaneously to 125 absolute bpm >> the project tempo is changed to 120bpm... will the tempo of the two composers:
A) change to 150bpm
B) stay at 125bpm
?
About the tempo change: thank you for adding this feature!
I just have a question about the meaning of the word "absolute" here:
My understanding is that the Note action map is tied to a composer, the tempo of which is based on the project tempo. So if the project tempo is 100bpm >> a Note action map trigger sets the tempo for two composers simultaneously to 125 absolute bpm >> the project tempo is changed to 120bpm... will the tempo of the two composers:
A) change to 150bpm
B) stay at 125bpm
?
- KVRAF
- 13862 posts since 24 Jun, 2008 from Europe
Good question.jaytwoeight wrote: Sun Dec 21, 2025 1:41 pm I just have a question about the meaning of the word "absolute" here:
My understanding is that the Note action map is tied to a composer, the tempo of which is based on the project tempo. So if the project tempo is 100bpm >> a Note action map trigger sets the tempo for two composers simultaneously to 125 absolute bpm >> the project tempo is changed to 120bpm... will the tempo of the two composers:
A) change to 150bpm
B) stay at 125bpm
?
Composer tempo will still be relative to its parent module's tempo, often that will be the project tempo, which in case of MuLab Plugin is the host tempo.
The new Set Tempo Absolute BPM will calculate the composer's tempo factor so that the effective result will match that absolute bpm value.
So to answer your question:
Project tempo = 100 bpm
Note Action sets Absolute Tempo to 125 bpm, which sets the composer's tempo factor at 125/100 = 1.25.
Change project tempo to 120 bpm
Now the composer will have an effective tempo of 120 * 1.25 = 150 bpm.
-
- KVRist
- Topic Starter
- 46 posts since 17 Jan, 2015
Got it. That makes sense. Thank you for clarifying the inheritance pattern for the upcoming Absolute bpm tempo!
We covered so much here. I suppose the only question left is: why the Live matrix scene launch / Play action does not send a Continue MIDI message?
We covered so much here. I suppose the only question left is: why the Live matrix scene launch / Play action does not send a Continue MIDI message?
