I plan to process large number of MIDI files and feed them into neural network. First of all, I need to convert timing of all MIDI songs to the same speed (probably to tempo = 1). Unfortunately, I'm kind of lost in which variables (actual tempo, time signature, PPQ, BPM…) I should take into account and how to make the desired calculation.

My questions are:

  • How to recalculate MIDI events (start time and duration) of multiple MIDI files to the same unit (e.g. tempo = 1)?
  • Is it enought to just recalculate tempo?
  • Is it sufficient to just recalculate the start time and duration of each event (while watching for Set Tempo meta events)?
  • 3
    Many files do no have (correct) time signature information, so you'd need another neural net to determine the actual tempo.
    – CL.
    Commented Nov 4, 2017 at 15:33
  • 1
    You might not need a neural net to determine the tempo - you could do it with a more traditional algorithm - but you'd need something. Out of interest, why do you want to convert everything to the same speed? Commented Nov 11, 2017 at 19:01

1 Answer 1


A MIDI file will have a tempo and nominal 'beats'. But there is no guarantee that the musical content will align to those beats. A MIDI file is 'drawn' on graph paper, but the creator doesn't HAVE to take notice of the lines! And he often doesn't. So I'm afraid detecting and conforming musical tempo might not be as easy as you hope.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.