Jump to content

Cakewalk by Bandlab sync bug?


Bill Campbell

Recommended Posts

We've had this issue reported before through BandLab support, again with a TR-8S.

From what I can tell, from Cakewalk's point of view it's sending out the correct MIDI messages as per the MIDI specification, and certainly with my Alesis SR-16, it's behaving exactly as it should with count-ins.

Unfortunately I've not got a TR-8S to play with, but it does look like the TR-8S is not adhering to the MIDI spec in this case.

Link to comment
Share on other sites

Thanks so much for your response.  I really wanted to know if these was a scenario where this worked as expected.  So I'm glad to hear that it works with the SR-16.  I might even consider picking up an SR-16 just to play.  😉 

It does seem weird to me that the issue only seem to happen with the count in enabled.   I would think that the midi messages would be the same with that on or off.  So either it would always work or always fail.  At any rate its not the kiss of death for me just a minor irritant.

I was at a friend studio last weekend and he uses Studio One and he enabled the count in there with the TR8S and that worked perfectly for him and of course he loves to poke fun at me for CW's little idiosyncrasies.   I still maintain its the best DAW though.

Link to comment
Share on other sites

8 hours ago, msmcleod said:

From what I can tell, from Cakewalk's point of view it's sending out the correct MIDI messages as per the MIDI specification, and certainly with my Alesis SR-16, it's behaving exactly as it should with count-ins.

I don't think most software/devices really follow all specifications.
F.e. Cakewalk doesn't follow MIDI specification  in part "clock should be sent at the current tempo when transport is stopped (in case it is sent at all)". Changing position to different project tempo doesn't change the clock rate till playback/recording is started (unlike with soft synths). 🙄

I don't have TR8S, so the rest is just a speculation based on its documentation and MIDI chart.

With count-in set, Cakewalk sends "Start" at the beginning of count-in, but pause the clock till recording starts. It never sends Active Sense (does Cakewalk support it ?). All that is correct behavior according to the MIDI specification.

Since Roland start playing early, it can happened Roland violates Active Sense rule. It should ignore "silence" in case it has never received Active Sense. But it can happened Active Sense timer is always active, so after timeout it thinks there will be no clock. And since "Start" was given, it starts playing (syncing later, when it receives clock again).
My guess is easy to check: make count-in 5 measures. Does Roland still start playing during the first count-in measure? My theory is proved then....  Sorry for the noise otherwise 😏

Link to comment
Share on other sites

No 'noise' at all.  Thanks for the thoughtful post.   I'll definitely try changing the count-in to 5 and see what we get there.  I wonder why Cakewalk would send a "Start" message before the count-in?   Shouldn't it just send nothing?  The receiving device wouldn't care about the 'count in'.  Right?  It would just need to know when to start the sync.  So CW should just do its count in and then send a 'Start' command.   I guess...

Of course I guess all of this is just guess work without some sort of scope of the midi messages being sent.   Maybe there is some software out there that does that?.. Hmmm...  I'll look for that also...  Thanks a lot.   You've got me thinking about this differently.  🙂

Link to comment
Share on other sites

4 hours ago, Bill Campbell said:

No 'noise' at all.  Thanks for the thoughtful post.   I'll definitely try changing the count-in to 5 and see what we get there.  I wonder why Cakewalk would send a "Start" message before the count-in?   Shouldn't it just send nothing?  The receiving device wouldn't care about the 'count in'.  Right?  It would just need to know when to start the sync.  So CW should just do its count in and then send a 'Start' command.   I guess...

Of course I guess all of this is just guess work without some sort of scope of the midi messages being sent.   Maybe there is some software out there that does that?.. Hmmm...  I'll look for that also...  Thanks a lot.   You've got me thinking about this differently.  🙂


According to the MIDI Spec:

Start 
Byte   Hex   Binary          Description
1           FA      111 1010   Status

This message is transmitted when the Play or Start button of the master sequencer or drum machine is pushed. Once the message is received, the device resets its internal song position to 0 and begins to play at the reception of the next Timing Clock message. There should be a delay of at least one millisecond between the transmission of the Start message and the Timing Clock message to give the receiver time to respond. The receiver, however, should be able to start immediately, even if the delay is less than one millisecond.

This is exactly what Cakewalk is doing.  The drum machine should not be starting until it receives the Timing Clock message, which isn't sent by Cakewalk until the count-in has finished.

 

Link to comment
Share on other sites

9 hours ago, Bill Campbell said:

I wonder why Cakewalk would send a "Start" message before the count-in?   Shouldn't it just send nothing?  The receiving device wouldn't care about the 'count in'.  Right?  It would just need to know when to start the sync.  So CW should just do its count in and then send a 'Start' command.   I guess...

Of course I guess all of this is just guess work without some sort of scope of the midi messages being sent.   Maybe there is some software out there that does that?.. Hmmm...  I'll look for that also...  Thanks a lot.   You've got me thinking about this differently.  🙂

To scope, you can use "MIDI loop" driver (so something which send output to input), f.e. loopMIDI, and scope itself which can display what is going on, f.e. MIDI-OX

 

I guess Presonus developers used the same logic as you. Studio One sends "Start" after count-in, so from device perspective count-in does not exist. And they don't send clock when transport is stopped.

REAPER sends "Start" at the beginning of count-in and immediately start sending clock, so from device perspective count-in is the same as recording start and so device will start playing in count-in. Clock is not sent when transport is stopped. So build-in clock logic  is troublesome, but there are "workarounds" with VST or script based plug-ins which can do things differently.

Cakewalk follows MIDI specification with count-in. It sends clock when transport is stopped (but with previous active transport rate, possibly different from current project/position).

I mean 3 different DAWs use 3 different approaches. And all of them are MIDI specification conform. But I think Presonus way is most "compatible", at least for this century  equipment.

 

---------------------------

From device developers perspective it is unclear how to do things most user friendly way.

MIDI specification does not help solving the issue:

  • master CAN send clock when transport is stopped, so some do (Cakewalk) and some don't (Studio One, REAPER). And so device, to be user friendly, should assume there are periods of time when there is no clock and switch to own clock (transport is stopped in some DAWs, DAW exits, DAW crash, etc.).
  • the specification has solution for that, Active Sense. When used, device at least knows when the master is still active. So many devices support it (Roland, Korg). Unfortunately that is an OPTIONAL feature, all mentioned DAWs does not support it (I am not 100% sure, but I have not found related options).
  • between "Start" and clock there can be significant time, as in case with Cakewalk. So, device has a choice. It can follow MIDI specification and "freeze" itself till clock is there or user explicitly reset synchronization or ignore the specification.

So my whole original guess is that Roland has decided ignore the specification when Active Sense is not in use, to don't freeze the device.

 

 

Link to comment
Share on other sites

On 1/4/2022 at 6:13 AM, azslow3 said:

To scope, you can use "MIDI loop" driver (so something which send output to input), f.e. loopMIDI, and scope itself which can display what is going on, f.e. MIDI-OX

 

I guess Presonus developers used the same logic as you. Studio One sends "Start" after count-in, so from device perspective count-in does not exist. And they don't send clock when transport is stopped.

REAPER sends "Start" at the beginning of count-in and immediately start sending clock, so from device perspective count-in is the same as recording start and so device will start playing in count-in. Clock is not sent when transport is stopped. So build-in clock logic  is troublesome, but there are "workarounds" with VST or script based plug-ins which can do things differently.

Cakewalk follows MIDI specification with count-in. It sends clock when transport is stopped (but with previous active transport rate, possibly different from current project/position).

I mean 3 different DAWs use 3 different approaches. And all of them are MIDI specification conform. But I think Presonus way is most "compatible", at least for this century  equipment.

 

---------------------------

From device developers perspective it is unclear how to do things most user friendly way.

MIDI specification does not help solving the issue:

  • master CAN send clock when transport is stopped, so some do (Cakewalk) and some don't (Studio One, REAPER). And so device, to be user friendly, should assume there are periods of time when there is no clock and switch to own clock (transport is stopped in some DAWs, DAW exits, DAW crash, etc.).
  • the specification has solution for that, Active Sense. When used, device at least knows when the master is still active. So many devices support it (Roland, Korg). Unfortunately that is an OPTIONAL feature, all mentioned DAWs does not support it (I am not 100% sure, but I have not found related options).
  • between "Start" and clock there can be significant time, as in case with Cakewalk. So, device has a choice. It can follow MIDI specification and "freeze" itself till clock is there or user explicitly reset synchronization or ignore the specification.

So my whole original guess is that Roland has decided ignore the specification when Active Sense is not in use, to don't freeze the device.

 

 

Tried setting to 5 measures pretty much the same result.   Still starts the TR8S before the count-in is complete.   Also found found a midi scope here...

https://hautetechnique.com/midi/midiview/

But I can't seem to get it working .  The app starts fine but it isn't capturing any data.   The quest continues.... 😉

Update:   Found a strange work-around...    If I change the count it from measures to beats and the set it to 2 beats it counts in 2 beats and then works perfectly.    Go figure...  

Also I've got the Roland D-05 which has a internal sequencer.    With the count-it set to 1 measure it also starts early just like the TR8s.  So at least that's consistently broken...

Edited by Bill Campbell
Link to comment
Share on other sites

18 hours ago, Bill Campbell said:

Tried setting to 5 measures pretty much the same result.   Still starts the TR8S before the count-in is complete. 

But does is start during the first count-in measure or at 4th count-in measure? In other words, does the time (absolute) between count-in start and device start depends from the count-in (absolute) length or not?

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...