/mididigester

Transcribe audio poorly, play the result with a cheesy synth, repeat.

Primary LanguagePython

MIDI Digester

Hear a demo!

The Echo Nest Remix API comes with a demo, enToMIDI by Brian Whitman, which attempts to transcribe any audio file using only Remix's audio analysis data, and spits out a MIDI file. The purpose of the EN audio analysis data is to provide a summary of the music, not to do the source separation necessary for an accurate transcription. This means the resulting MIDI file usually doesn't sound much like the input.

MIDI Digester is a very small script that runs audio through enToMIDI, renders the resulting MIDI using timidity, runs the resulting audio through enToMIDI, renders the resulting MIDI using timidity, runs the resulting audio through enToMIDI, renders the resulting MIDI using timidity, runs the resulting audio through enToMIDI, renders the resulting MIDI using timidity, runs the resulting audio through enToMIDI, renders the resulting MIDI using timidity, runs the resulting audio through enToMIDI, renders the resulting MIDI using timidity, etc, as many times as you want. Each repetition strips away more of the original musical material and accumulates the sound of enToMIDI.

Check out this demo which "digests" a 7.66 second excerpt of the traditional bluegrass tune "The Groundhog" played by the same Quicktime piano synthesizer as was used for the original performance.

Install Dependencies

Install numpy and The Echo Nest Remix API Python library:

pip install -r requirements.txt

Install ffmpeg:

brew install ffmpeg
sudo ln -s `which ffmpeg` /usr/local/bin/en-ffmpeg

Run it

./mididigester <input wav audio file> [<recursion depth>]