Media Player does not follow tempo changes from Midi file

When I set a Midi file as Master, the tempo is not followed properly. Instead, it is always set to 300 BPM.

Hi marear and Welcome!

That function is working here on build 3663. Would it be possible to post the midi file in a zip file here so we can check it out, it sounds like it might be corrupted …



Thanks, Dave.

The file is attached. In Windows Media Player it works flawlessly.

Best, Marc (2.0 KB)

BTW: I have build 3653 installed, if it makes a difference.

Now tried with build 3663 - same problem.

Hi Marc,

I checked the file out in a MIDI file editor Sekaiju and when it went to open it it gave this warning message indicating that the file had tempo changes on different tracks.


So what I have done was to let Sekaiju move the questionable tracks to the first track so that Cantabile can recognize it. I am not sure how the track was created so I don’t know why it saved the way it did at your studio. Here is the altered track that I opened with it and resaved with a new name and the tracks sorted to where Cantabile can read the file and let it be the “Master” tempo.

test (2.1 KB)

I’m not sure if the file still sounds right to you but it does change the tempo of Cantabile just fine now. What did you create this with, if I may ask? It might help me understand how the file got that way. On the file you sent the tempo changes after the initial tempo of 107 were recorded on a separate track (track 2) but the original tempo of 107 you set was part of track 1 (which usually holds all the tempo changes) this is why Cantabile rejected the file as a Master clock source.




@dave_dore…Special Forensics Investigator for Cantabile.:thinking:

Great job Dave! Kudos!


Thanks for your efforts! The file is generated by a program of mine.
While it is true that it is recommended to store tempo information inside the first track, the MIDI spec allows them to be on any track. I placed them on the second track by my program to keep the tempo changes separate from the time signature changes on the first track. That makes it easier for me to calculate the deltas for various tempo progressions when generating the SMF.

Other players, I tested played it fine. Maybe you could consider to make it work with Cantabile since the MIDI spec allows the tempo and time signature changes on any track.

BTW my program compiles from a homegrown musical sketching language to SMF.

Thanks anyway. BTW Cantabile is a great program.

Well, I can’t change it as I am but a user helping out here at the forum but @brad , the developer could enlighten on this question so our discussion might be of interest to him or the program may already do it and I am not aware of how. He has been planning an upgrade to that area of the host app so it might fit into that plan. By calling him in the thread response it should bring a reply from him at some time soon. Thanks for chiming in Marc, we’ll see what happens.



I’ve looked into this and can confirm Cantabile is only looking at the first track. I’ve made a change to read tempo changes from all tracks for the next build 3664 which should be up today(-ish).


Build 3664 available now includes this change.


Thanks for the change @brad, I appreciate the effort! I am wondering how the new toolchain and libraries included in this build will go, will I notice new things for C♪3 as a result? I love tools … and asking questions :grin:


Thank you, @brad !
Maybe check the code for the meter changes as well, while you’re at it.
Keep up the good work!


This involved updating CantabileCore, libRubberBand, libFLAC and libmpg123 to the latest Visual Studio 2019 C++ compiler and some .NET components to newer .net standards. There might be a slight perf change but I doubt it’d be noticeable. I mainly mentioned it in the release notes so if anything weird pops up in this build it’s a reminder to me that I changed the toolchain. I’ve been meaning to do this for a while, but I re-installed one of my dev machines and had to decide whether to update Cantabile, or install those old build tools. I opted for the former and wanted to release it on an otherwise minor update to help keep it isolated.

Can you clarify exactly what you mean by meter change? Cantabile looks at tempo and time signature changes and both should now be picked up in any track.

ie: these MIDI meta events:

#define MIDI_META_SETTEMPO			0x51

Is meter something different?

That’s what I meant, time signature changes. All good, thanks!