Skip to content
/ pumpp Public

practically universal music pre-processor

License

Notifications You must be signed in to change notification settings

bmcfee/pumpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1ca952e · Apr 19, 2022
Apr 14, 2022
Apr 19, 2022
Apr 19, 2022
Apr 14, 2022
Aug 9, 2019
Jul 19, 2017
Jul 19, 2017
Jul 19, 2017
Apr 13, 2022
Apr 13, 2022
Apr 13, 2022
Apr 13, 2022
Apr 13, 2022

Repository files navigation

pumpp

GitHub license CI codecov Documentation Status

practically universal music pre-processor

pumpp up the jams

The goal of this package is to make it easy to convert pairs of (audio, jams) into data that can be easily consumed by statistical algorithms. Some desired features:

  • Converting tags to sparse encoding vectors
  • Sampling (start, end, label) to frame-level annotations at a specific frame rate
  • Extracting input features (eg, Mel spectra or CQT) from audio
  • Converting between annotation spaces for a given task

Example usage

>>> import jams
>>> import pumpp

>>> audio_f = '/path/to/audio/myfile.ogg'
>>> jams_f = '/path/to/annotations/myfile.jamz'

>>> # Set up sampling and frame rate parameters
>>> sr, hop_length = 44100, 512

>>> # Create a feature extraction object
>>> p_cqt = pumpp.feature.CQT(name='cqt', sr=sr, hop_length=hop_length)

>>> # Create some annotation extractors
>>> p_beat = pumpp.task.BeatTransformer(sr=sr, hop_length=hop_length)
>>> p_chord = pumpp.task.SimpleChordTransformer(sr=sr, hop_length=hop_length)

>>> # Collect the operators in a pump
>>> pump = pumpp.Pump(p_cqt, p_beat, p_chord)

>>> # Apply the extractors to generate training data
>>> data = pump(audio_f=audio_f, jam=jams_fjams_f)

>>> # Or test data
>>> test_data = pump(audio_f='/my/test/audio.ogg')

>>> # Or in-memory
>>> y, sr = librosa.load(audio_f)
>>> test_data = pump(y=y, sr=sr)