NegativeHarmonizer is a simple python program to invert the tonality of a music file. This works very well for compositions like Bach's fugues. If you try it on popular music, you'll probably need to transpose the instruments back into their proper ranges, as the bass will be on the top. Beyond the fun of negative-harmonizing songs you know, this is a useful tool for composers and producers to add variations to their work.
- Python 3
pip install mido
python NegativeHarmonizer.py midifile.mid --tonic 60 --ignore 9 --adjust-octaves
This example command
- creates a new midifile named midifile_negative.mid
- flipped over middle C (midi note number 60)
- channel 9 is unaltered because we don't want to change the drums.
- the tracks are transposed to be close to their original octave, so the bass guitar will stay in the bass range etc.
You can hear more examples of what can be done with NegativeHarmonizer on my YouTube channel (with some neat Tonnetz Lattice visualizations):
Some background on Negative Harmony from Jacob Collier: https://youtu.be/DnBr070vcNE?t=1m31s
Real-time MIDI plug-in for DAWs
You can find the plug-in version here: https://github.com/lukemcraig/negative-harmonizer-plugin