Examples
Basic Usage
Here’s a simple example of using MIDIOgre to augment MIDI data:
from midiogre.augmentations import PitchShift, OnsetTimeShift
from midiogre.core import Compose
import pretty_midi
# Load MIDI file
midi_data = pretty_midi.PrettyMIDI('song.mid')
# Create a transform pipeline
transform = Compose([
PitchShift(max_shift=2, p=0.5), # Shift pitches by up to 2 semitones
OnsetTimeShift(max_shift=0.1, p=0.3) # Shift timing by up to 0.1 seconds
])
# Apply transforms
transformed = transform(midi_data)
# Save the result
transformed.write('transformed_song.mid')
Format Conversion
MIDIOgre supports seamless conversion between different MIDI formats:
from midiogre.core.conversions import ConvertToMido, ConvertToPrettyMIDI, ToPRollTensor
# Convert to Mido format
mido_obj = ConvertToMido()('song.mid')
# Convert to PrettyMIDI
pretty_midi_obj = ConvertToPrettyMIDI()(mido_obj)
# Convert to piano roll tensor
piano_roll = ToPRollTensor()(pretty_midi_obj)