Media player timing sync support


It says this was something we needed to contact you about because you had questions, from Trello card [Media player timing sync support][1] [1]:

I do wish to have it and what i need it to do is pretty straight forward:

  • Record initial backing track with a metronome

  • Record addition backing tracks on new media players in sync with this track while it plays back

  • When finished play back all selected media Players from one transport control setup

In short it’s a small multi-track type setup for banging together backing tracks I can mix separately later. All that said, what questions do you have?


I’d also like to request the ability for Cantabile to start recording when an external DAW starts playing, and slave of its timing, so that the recorded audio/MIDI can be dropped into the DAW project and it’ll (hopefully) be timed correctly from the project start. This is something I actually need to do right now, and I’m struggling to find a way.

Another little related request - I like the way we can trigger recording on the first MIDI note received, but as far as I know that mode will then stop when MIDI activity stops, which is great for recording little ideas etc. However it would be useful to have a mode whereby it will continue recording until manually stopped. Last night I was trying to record the audio generated by Cantabile from a DAW (running on a separate machine), triggered it to start recording by manually adding a MIDI note right at the start, but there’s a silent gap before actual performance in the song starts, and Cantabile stopped recording.

1 Like

The main reason I’ve put off implementing this for so long is that I was never really happy with the way it was done in v2 and I’m not really sure what the actual use cases and requirements should be.

In Cantabile 2 the media players all operated independently of each other, but had the ability to sync to whatever happened to be the master transport - kind of. Audio files couldn’t sync very well (cause that’s hard), there were complicated options so that playback could start at the start of the next bar or beat (synchonization modes), an option to start with the master transport etc… basically it was all a bit of mess, but held together enough to work.

Since I rarely get questions about this, it means either a) it works brilliantly and is completely intuitive, b) no one uses or needs this. Somehow I doubt it’s a).

So what I’m interested in is what are the real use cases for syncing media files and I think you’ve described a much more realistic scenario.

One idea I’ve been contemplating is enhancing the media player to allow load/playing one MIDI file and one Audio file at the same time and they’d both be always synced with each other - transport state, transport position, loop modes etc… This would be a much simpler form of synchronization - rather than tracking the timing information of another transport and syncing, these two files would simply play together. Timing information would come from the MIDI file and the audio file would simply play along at it’s natural rate.

Of course this isn’t perfect - it would probably involve a bit more preparation of the media files in external tools (eg: in the scenario described by above, multiple audio files would need to be combined somewhere else). Also there’d be no tempo tracking or dynamic tempo changes etc…

I think this covers the most common use cases and it’s simple - which I like. But I’m completely open to suggestions and feedback on this entire area.

That sounds like it would cover the main use cases I can think of, and it’s no great hardship to externally combine multiple audio tracks into a single media file (and I imagine in doing so, would remove a huge amount of functionality Cantabile would need to provide).

Would this enhanced media player be able to slave to an external synchronisation source?

Cantabile 2 had functionality like this - the musical MIDI recording formats which have been dropped from v3 at the moment - basically for the same reasons as the media file sync options - dropping options until sure of the use cases.

The only way to do this right now would be to set a large auto stop time out. It’ll still auto start and you can manually stop it when done.

eg: 5 minute time out:

[quote=“Neil_Durant, post:4, topic:67”]
Would this enhanced media player be able to slave to an external synchronisation source?

This is the hardest part of syncing. It’s easy for MIDI files, but particularly tricky for audio files because it needs time stretching. Time stretching is on the todo list anyway but I’ve chatted with the developer of RubberBand - a commercial time stretching library, but it’s not entirely clear how well it’ll handle dynamic syncing.

1 Like

From your comments I see that the things I wanted to do are better done in a dedicated multi-tracking program and then loaded into Cantabile. I can imagine the syncing would get a bit hairy with multiple tracks playing at the same time. The reason I requested it in the first place was because from my point of view (if it were available) I could keep my live show creations all managed and referenced to one program, Cantabile. (can C3 do my taxes too! :grinning: ) Anyway, thanks for the explanation.

Hi Dave,

Thanks for opening this discussion. As mentioned, I’m still trying to assess what the real requirements here are so who knows exactly what will end up being included… well, definitely not tax accounting - been there done that, never again :slight_smile:



I have been playing with version 2 and really liked it. I just bought it and downloaded v3. One of the features I really need which you had in v2 was the ability to start multiple audio files at the same time. Why? So that I could mix bass and drum levels independently depending on the PA on the night, so that I could cover for a missing band member occasionally, the uses are many.

To be honest, if you are not going to implement this in V3 then I think I need a refund as it’s a deal breaker for me…


@carleden Check here It’s on the list for first release.

Thanks for clarifying that Dave. I’m loving the rest of the program so I’m delighted to hear that :slight_smile:

@carleden - just to be explain, the main reason this hasn’t been implemented yet is because I’m being very careful to not bring in complex features that aren’t required.

Cantabile 2 had all sorts of timing sync options, but in reality I think the main thing people need is ability to start play of multiple files at the same time, and perhaps sync a MIDI file to an external clock. There’s been a few requests to sync audio files to MIDI clock, but that’s something I’m reluctant to get into - especially before launch.

Anyway, some of these features will be brought back before launch, some after, and some perhaps never (eg: some of the crazy start play sync modes that v2 has). If there are specific features in v2 that you absolutely need, please let me know - I’m still trying to weigh up the exact requirements here.

Hi Brad, thanks for your reply. I don’t need many features - just the ability to start multiple audio files at the same time from the main transport. If it were possible to trigger a program change at a specific point in an audio file then that would be a worthwhile bonus. Thanks, Carl.

Hello Brad, I’d like to post my support for media player sync support too. I’m a new user of Cantabile and looking for a way to sync the start of multiple audio sources, Currently I pan a click track LEFT and mixed backing track RIGHT with my DAW but this causes loss of stereo. I also use midi for DMX control thus having all of those streams synchronized to the transport would be fantastic. I suspect if the duration of audio clips were short and/or segmented there would be opportunities to ensure transport alignment (midi trigger) and less error.


Is there an option now to trigger transport for more media players?

I’m still hoping to squeeze it in before launch. If not it’ll be very soon after. The decision will be based on whether I’m happy with a simpler implementation or whether it’s better to put it off for a bit and build a more complete solution.


then i have to wait with an update / upgrade to v3.

Hi Brad,

Since I intend to use this feature a lot I think making something more complete would be my vote. If it’s top of list to do then it will be along directly and you could go ahead and launch the new product! I have burned several holes in my pockets waiting to put something back to help and sustain this effort! Whatever you decide I will be ready. :grinning:

If anyone wants to put forth their absolutely essential requirements for this, now would be the time to do so.

1 Like

Hey All,

I’m trying to work out the requirements for this and thinking of implementing a simple “Sync Mode” with three possible modes:

  • Not Synced
  • Synced (Real time)
  • Synced (Musical time)

When a media file is synced it’s always synced to the master transport (which could be MIDI clock, metronome or another media file). Also, the transport controls of the master also control the synced file - this includes play, pause, stop, loop range and current track position.

The real-time vs musical option will determine which time system will be used for synchronization. For audio files this has no effect - realtime will always be used. For MIDI files, the synced file will play at the same tempo as the master.

The other option I might be able to add reasonably easy is a sync offset. This would let you sync two files but have one start at sometime after the master.

Does that cover the main requirements?

Note that this does not cover the case of triggering a MIDI file at some arbitrary point in time and have it synchronise it’s timing to the master. Is that even useful?

Sounds like it covers everything I need, although I think my requirements in this area are very basic compared to some other people on here.

However some time in the future, when pitch/time stretching is implemented it would be nice to be able to sync audio to a master tempo that can be changed (for synchronising an audio and MIDI file and playing back at different tempos).