Skip to main content

Convert audio to multichannel MIDI.

Project description

audio-to-midi

audio-to-midi takes in a sound file and converts it to a multichannel MIDI file. It accomplishes this by performing FFT's on all channels of the audio data at user specified time steps. It then separates the resulting frequency analysis into equivalence classes which correspond to the twelve tone scale; the volume of each class being the average volume of its constituent frequencies. It then formats this data for MIDI and writes it out to a user specified file. It has the ability to convert whichever audio file formats are supported by the soundfile module. libsndfile must be installed before running audio-to-midi

Installation

> python3 ./setup.py install

Usage

> audio-to-midi --help
usage: audio-to-midi [-h] [--output OUTPUT] [--time-window TIME_WINDOW] [--activation-level ACTIVATION_LEVEL] [--condense] [--condense-max] [--single-note]
                     [--note-count NOTE_COUNT] [--bpm BPM] [--transpose TRANSPOSE] [--key KEY [KEY ...]] [--no-progress]
                     infile

positional arguments:
  infile                The sound file to process.

optional arguments:
  -h, --help            show this help message and exit
  --output OUTPUT, -o OUTPUT
                        The MIDI file to output. Default: <infile>.mid
  --time-window TIME_WINDOW, -t TIME_WINDOW
                        The time span over which to compute the individual FFTs in milliseconds.
  --activation-level ACTIVATION_LEVEL, -a ACTIVATION_LEVEL
                        The amplitude threshold for notes to be added to the MIDI file. Must be between 0 and 1.
  --condense, -c        Combine contiguous notes at their average amplitude.
  --condense-max, -m    Write the maximum velocity for a condensed note segment rather than the rolling average.
  --single-note, -s     Only add the loudest note to the MIDI file for a given time window.
  --note-count NOTE_COUNT, -C NOTE_COUNT
                        Only add the loudest n notes to the MIDI file for a given time window.
  --bpm BPM, -b BPM     Beats per minute. Defaults: 60
  --transpose TRANSPOSE, -T TRANSPOSE
                        Transpose the MIDI pitches by a constant offset.
  --key KEY [KEY ...], -k KEY [KEY ...]
                        Map to a pitch set.
  --no-progress, -n     Don't print the progress bar.

Example

>$ audio-to-midi ./this_is_a_test.wav -b 120 -t 30
./this_is_a_test.wav
samplerate: 44100 Hz
channels: 1
duration: 2.000 s
format: WAV (Microsoft) [WAV]
subtype: Signed 16 bit PCM [PCM_16]
window: 5.0 ms
frequencies: min = 200.0 Hz, max = 20000 Hz
100% (401 of 401) |##############################################################| Elapsed Time: 0:00:00 Time:  0:00:00
> ls ./*.mid
./this_is_a_test.wav.mid

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audio_to_midi-2020.7.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

audio_to_midi-2020.7-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file audio_to_midi-2020.7.tar.gz.

File metadata

  • Download URL: audio_to_midi-2020.7.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.2

File hashes

Hashes for audio_to_midi-2020.7.tar.gz
Algorithm Hash digest
SHA256 3a8480b56652e4dda7c11fc3b26c82d2a04d42f355809101003cdf3fb25e9a2d
MD5 c543847528f644e07d0a410952dc8578
BLAKE2b-256 1771d89f14e621812864799f9829861e042b715052bdcc75b2a938bdfcc5c56c

See more details on using hashes here.

File details

Details for the file audio_to_midi-2020.7-py3-none-any.whl.

File metadata

  • Download URL: audio_to_midi-2020.7-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.2

File hashes

Hashes for audio_to_midi-2020.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c999fe686d7e84ac6954715bec3aab5479fc6b19d7666be69dd0ddb94854f7cb
MD5 07083a47034d85944384fe6a3a4d5511
BLAKE2b-256 61b5d3c38271a8ec6564c27246440cee83fdbf3d9893370704e4ff6593ca17de

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page