A toolkit for working with piano rolls
Track.binarize
StandardTrack.binarize
Multitrack.trim
(tempo and downbeat arrays now also get trimmed)Track.standardize
now clips the piano roll to [0, 127] before casting to uint8Multitrack.__repr__
and Track.__repr__
name
, program
and is_drum
to proper types in MIDI inputpypianoroll.Multitrack.set_resolution
when some pianoroll is emptypypianoroll.BinaryTrack
and pypianoroll.StandardTrack
in pypianoroll.inputs.load
pypianoroll.StandardTrack
in pypianoroll.inputs.read
binarized
and threshold
from pypianoroll.inputs.read
beat_resolution
in pypianoroll.inputs.load
(#11)filename
from Multitrack.__init__
(use pypianoroll.read
and pypianoroll.load
instead)pypianoroll.utilities
to pypianoroll.core
pathlib.Path
as filenamesself
whenever possiblepypianoroll.inputs
and pypianoroll.outputs
for input and output interfacespypianoroll.utils
for utility functionsmoviepy
and support for animationmatplotlib
requiredpypianoroll.core
(previously pypianoroll.utilities
)core.assign_constant
-> core.set_nonzeros
core.downsample
-> core.set_resolution
core.trim_trailing_silence
-> core.trim
core.check_pianoroll
core.copy
core.load
(use pypianoroll.load
instead)core.parse
(use pypianoroll.read
instead)core.save
(use pypianoroll.save
instead)core.write
(use pypianoroll.write
instead)pypianoroll.multitrack
Multitrack.__init__
signature
beat_resolution
to resolution
filename
(use pypianoroll.read
and pypianoroll.load
instead)Multitrack[i]
returns Multitrack.tracks[i]
Multitrack.check_validity
-> Multitrack.validate
Multitrack.get_active_length
-> Multitrack.get_length
Multitrack.append_track
-> Multitrack.append
Multitrack.assign_constant
-> Multitrack.set_nonzeros
Multitrack.downsample
-> Multitrack.set_resolution
Multitrack.merge_tracks
-> Multitrack.blend
Multitrack.get_stacked_pianoroll
-> Multitrack.stack
Multitrack.remove_empty_tracks
-> Multitrack.remove_empty
Multitrack.trim_trailing_silence
-> Multitrack.trim
Multitrack.validate_type
Multitrack.is_valid
Multitrack.is_valid_type
Multitrack.is_binarized
Multitrack.load
(use pypianoroll.load
instead)Multitrack.parse_midi
(use pypianoroll.read
instead)Multitrack.parse_pretty_midi
(use pypianoroll.from_pretty_midi
instead)Multitrack.remove_tracks
pypianoroll.track
Track.__init__
signature
Track[i]
returns Track.pianoroll[i]
StandardTrack
class for standard track (piano roll of type uint8)
StandardTrack.set_nonzeros
StandardTrack.clip
StandardTrack.binarize
BinaryTrack
class for binary track (piano roll of type bool)
BinaryTrack.set_nonzeros
Track.check_validity
-> Track.validate
Track.get_active_length
-> Track.get_length
Track.trim_trailing_silence
-> Track.trim
Track.validate_type
Track.is_valid
Track.is_valid_type
Track.standardize
Track.binarize
Track.is_binarized
Track.get_pianoroll_copy
Track.assign_constant
pypianoroll.visualization
(new)filename
in visualization.plot_track
and visualization.plot_multitrack
ax
for visualization.plot_track
for plotting on an existing axesaxs
for visualization.plot_multitrack
for plotting on existing axespypianoroll.inputs
(new)inputs.load
inputs.from_pretty_midi
inputs.read
pypianoroll.outputs
(new)outputs.save
outputs.to_pretty_midi
outputs.write
outputs.DEFAULT_TEMPO
pypianoroll.utils
(new)utils.decompose_sparse
utils.reconstruct_sparse
pypianoroll.visualization.plot_multitrack()
with mode 'stacked' (#8)pypianoroll.metric._to_chroma()
(#9)pypianoroll.metric.n_pitch_classes_used()
Multitrack.downsample()
and pypianoroll.downsample()
pypianoroll.metric
modulepypianoroll.parse
Multitrack
get_maximal_length
-> get_max_length
get_num_downbeat
-> count_downbeat
get_stacked_pianorolls
-> get_stacked_pianoroll
pypianoroll.Mutitrack.parse_pretty_midi()
pypianoroll/plot.py
)dtype
to pypianoroll.Track.assign_constant()