MIDI effects program

From vjmedia

My final project is a python application which can be used to add various effects to a MIDI file. This program reads the raw bytes data of the MIDI file, decodes it into an object form, then allows the user to select various effects to apply to the file. The program supports changing the pitch and velocity of all notes in the file, and supports adding choruses and delays to all notes in the file. When done, the modified file can be saved to a new MIDI file and used in any other application that supports MIDI files.


Setbacks

Though I was able to decode many MIDI files, some files have events encoded in them that are not of a type listed in any reference I could find. I was able to support 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, and 0xF events, but could not find any documentation for 0x[0-7] events. As such, files with these events are rejected by the application. I also did not support files which determine the timedelta between two events using actual units of time instead of beats, as I had already put enough time in this project at that point, however I have not encountered a file that has this format.


Video Demonstration

Backup link


Source Code

Source code can be found on my Github page. Requires Python 3.6+ to run.


By Michael Oliveira.