Hi all,
I'll try to answer some questions here.
Coupe70 wrote:
Concerning Live as slave...well, I'm not sure I understood...
Does it work as it should ? If it can't be done
better (like as clock master) please say so. If it
does not work as it should...fix it, it's an
official feature, isn't it ?
Concerning the possible changes you mentioned:
Is it a bigger change or something you could offer
as option in the betas so people could try it out ?
The current implementation of the
slave behaviour is a compromise between being able to react to tempo changes from the master and being able to stay in sync with a clock that runs at a steady tempo. We currently measure and recalculate the tempo every 48 clock ticks, which corresponds to halve a bar. An average MIDI interface will cause jitter of approx. 5 ms (some interfaces are even worse). If the first and last measured clock tick has a deviation of 5 ms each (worst case scenario), the tempo calculation would have to deal with a 10 ms error. Note: this only refers to jitter on the slaved computer. There may be additional jitter on the master!
At 120 BPM (and a time signature of 4/4), a 1/2 bar corresponds to exactly 1000 ms. If your clock has the aforementioned jitter problems (max. error of 10 ms), a total time of 1010 ms would result in a tempo of 121.2 BPM. As you can see, the current tempo calculation method would yield to an error of at least +/- 1.2 BPM, perhaps twice as much if the master computer's interface causes similar jitter values.
Now let's assume Live would calculate the tempo less often, say every 5 bars (10 times less often): 5 bars at 120 BPM last 10000 ms. With the same jitter problems that I mentioned above, the worst case scenario would be 10010 ms, resulting in a calculated tempo of 120.12 BPM. That's a lot better, isn't it? The problem is that Live would need at least 5 bars to detect a tempo change from the master. This is also problematic when you just set a tempo on the master and hit 'play'. You'd get a completely wrong tempo in Live during the first 5 bars.
A possible solution could be a 2nd algorithm which can detect such tempo changes and updates the tempo more often at playback start and after any detected tempo changes, but less often when it is close to the real tempo.
To answer your initial questions:
"Does it work as it should?"
Probably yes, but it could work better.
"Is it a bigger change or something you could offer
as option in the betas so people could try it out ?"
It would be relatively "easy" to provide an option which lets you change the tempo update interval, but this is not a complete solution. Slaving Live would feel way more broken than it is right now. We'd rather implement the 2nd algorithm before we offer such an option.
chapelier fou wrote:
Live as a slave, slaved by other live computers : kind of work. with a bug with losing one beat at bar 1024 (but that happened only when the master was provided by a live 6).
This is a limitation of the SPP (Song Position Pointer). It only has a maximum resolution of 1024 (bars). We used to ignore this in older Live versions, which lead to errors in CoreMidi and in some hardware devices which can't handle higher SPP numbers (the sync would simply stop after 1024 bars). Now we stick to the limitation of the MIDI spec. The result: when starting the master at bar 1025, the slave will start at bar 1.
chapelier fou wrote:
And crashes if transport stops while recording a clip (don't know if it is fixed).
I'm not 100% sure (I'm at home right now, so I can't check), but I think it should be fixed.
luddy wrote:Nico,
How does Live do as an MTC slave and master?
Well, MTC could be a solution for syncing to non-changing tempi, but you need to sync your audio interfaces via wordclock as well, otherwise they would drift away.
luddy wrote:I know this would leave a bunch of problems open for folks who want to set tempos on the fly on the master and have the slave follow it, but that is something that no MIDI clock synchronization I've ever heard of accomodates.
Why not? MIDI clock per se is perfectly fine for tempo changes as long as it runs stable.
broc wrote:
But slaving Live to MTC seems a bit unreliable.
Can you describe this in detail?
broc wrote:
Also, it would be nice to have MTC output.
Agreed.
Machinesworking wrote:
Not my experience at all. Syncing a Poly Evolver to Live, Live randomly syncs, and generally is only good for about 4 seconds or so, then it drifts, doubles etc.
I was dealing with your case and I have to say that I don't have a clue why this happens on your machine. The doubling is very strange in particular, as it usually means that your clock messages are doubled somewhere in your MIDI device chain. Also, the problems that you are describing are quite dramatic. This can't be explained with a slightly instable clock, which makes we wonder if there really is a conflict / setup problem on your machine. This was certainly also the reason why I asked these "simple questions". Not to annoy you, but rather to isolate the problem a bit.
I'm not sure if there's enough time and space to discuss your particular issue in this thread again, but you might try to detach all external devices from your computer except for 1 good interface (try the RME), reset Live's preferences to the defaults and give it another shot. It probably also makes sense to try a different piece of gear which you sync to Live (if you have one or can borrow one from a friend), just to see if that works any better.
Machinesworking wrote:
Either way, I'm a little ticked at your claim that it syncs better than all other DAWs on OSX, in my direct experience, that's far from the truth, I've recorded the audio from Live and DP and seen how far off Live gets, and personally I find it a little disrespectful that you say this in total disregard to my own already stated experience. Whether I have some setting wrong or Live has an issue with Korg, RME, MOTU, NI or Novation drivers on my system, it's still an issue, and it's still being addressed like it doesn't exist at all. Seriously WTF? are we all lying in your minds?
Absolutely not. Why should I lie about something? This wouldn't make Live's clock better or worse. When you take a look at the sync topics in this forum, it is pretty obvious that some of you have sync problems, but:
1. A lot of these problems *may* not be Live's fault at all.
2. If there are any faults in Live, we need to be able to replicate them here first. Anytime we have investigated the whole sync topic all over again (and that was a dozen times), we were not able to measure an unnaturally high jitter on Live's own clock, nor could we find any serious sync problems with the hardware we tested and/or the fluctuations have been within an expected and acceptible limit. And yes, this was tested on different computers, with different interfaces and slaved gear.
Don't get me wrong. I'm not trying to refuse the wish/need to have a better MIDI clock, but we can only improve things if we find real problems in our code. Rest assured that we will continue to review and rethink our code and fix problems if we find them.
broc wrote:
Maybe you should explain under which conditions the measurements were done, in particular CPU load and UI actions.
In my experience Live seems more sensitive to such 'real life' parameters than eg. Logic.
In our latest tests on
Mac OS X, we sent the MIDI clock directly through a Python extension into the "RtMidi" library and then used a self-programmed tool to readout the jitter from there. In other words, we measured the direct clock output, i.e. before it gets to your actual MIDI interface. Under "normal" workloads, the average tempo of Live's clock was never worse than 0.004 BPM. Things started to get bad when the CPU load exceeded 75-80% (in Live's CPU meter), but that's to be expected. In comparison, another DAW (which I'm not going to name here) showed an average tempo of 0.079 BPM in the exact same test scenario. This was the worst candidate in our test.
As far as UI actions are concerned, we only tested switching views, triggering clips/scenes and changing the arranger loop whilst the clock was running (at least in this particular test).
Best,
Nico