0

I'm trying to understand the structure of MIDI files. While reading some files with the Python library python-midi I've found that two Program Change events with the same data and a difference of 190 ticks. I understand that Program Change event is for selecting GM instrument. Why would you send two Program Change events with the same data?

Here is the structure represented by python-midi:

midi.TrackNameEvent(tick=0, text='Pad1', data=[80, 97, 100, 49]),
midi.ProgramChangeEvent(tick=0, channel=0, data=[17]),
midi.ControlChangeEvent(tick=1, channel=0, data=[7, 127]),
midi.ControlChangeEvent(tick=1, channel=0, data=[10, 64]),
midi.ProgramChangeEvent(tick=190, channel=0, data=[17]),
midi.ControlChangeEvent(tick=0, channel=0, data=[7, 65]),

Let me know if you need more information.

Zaka Elab
  • 576
  • 5
  • 14

1 Answers1

1

Why would you send two Program Change events with the same data?

It's probably useless, although it's perfectly valid according to the Midi standard. Midi is like a programming language, it's not because a program compiles OK that it's not dumb. Or maybe it has a specific purpose for a given context, for a specific Midi device, but only the maker of the file knows it.

You'll find many Midi files on the web. They can be created with many different tools, and possibly edited later with other tools, sometimes not by the same person. So it's very common to find strange things in Midi files, for example a Note ON event without the corresponding Note Off, etc.

jjazzboss
  • 1,261
  • 8
  • 14