/MusicProcessing.jl

Music Processing Library in Julia

Primary LanguageJuliaOtherNOASSERTION

MusicProcessing.jl

MusicProcessing.jl is a music and audio processing library for Julia, inspired by librosa. It is not feature complete and in a very early stage of development.

Performance

Thanks to Julia's performance optimizations, it is significantly faster than librosa, a mature library in Python

Imgur

All measurements are done by averaging over 100 repetitions, after one warmup run.

Usage

The following commands will display a graphic visualization and/or an HTML5 <audio> component for playing audio, when run in IJulia.

Loading an audio file

julia> using MusicProcessing, MP3
julia> audio = load("Sour_Tennessee_Red_Sting.mp3")

Converting to a mono audio

julia> audio = mono(a)

Resampling in 22050 Hz

julia> audio = resample(audio, 22050Hz)

Speeding up the audio

julia> speedup(audio, 2)

Pitch-shifting

julia> pitchshift(audio, 4)

Displaying Spectrogram

julia> spectrogram(audio)

Displaying Mel Spectrogram

julia> melspectrogram(audio)

Displaying MFCC

julia> mfcc(audio)

Roadmap

There are a lot to be implemented, including and not limited to:

  • Harmonic Features
  • CQT, Chroma, Tonnetz
  • Rhythmic Features
  • Onset Detection, Beat Detection
  • Melodic Features
  • F0 tracking, multi-pitch tracking
  • Source Separation
  • Harmonic-Percussive Source Separation
  • Performance Tuning, Tests...