Releases: salu133445/pypianoroll
Releases · salu133445/pypianoroll
Pypianoroll v1.0.4
- Add method
Track.binarize
- Remove method
StandardTrack.binarize
- Fix a bug in
Multitrack.trim
(tempo and downbeat arrays now also get trimmed) Track.standardize
now clips the piano roll to [0, 127] before casting to uint8- Calculate tempo using harmonic mean in MIDI output (#15)
- Show data types of arrays in
Multitrack.__repr__
andTrack.__repr__
- Cast
name
,program
andis_drum
to proper types in MIDI input
Pypianoroll v1.0.3
- Fix a bug in MIDI output (#14)
Pypianoroll v1.0.2
- Fix indexing error in
pypianoroll.Multitrack.set_resolution
when some pianoroll is empty - Handle
pypianoroll.BinaryTrack
andpypianoroll.StandardTrack
inpypianoroll.inputs.load
- Handle
pypianoroll.StandardTrack
inpypianoroll.inputs.read
- Remove arguments
binarized
andthreshold
frompypianoroll.inputs.read
Pypianoroll v1.0.1
- Add backward compatibility for
beat_resolution
inpypianoroll.inputs.load
(#11)
Pypianoroll v1.0.0
Pypianoroll v1.0.0 Release Notes
Key changes
- Drop support for Python 2.7 and 3.5
- Remove argument
filename
fromMultitrack.__init__
(usepypianoroll.read
andpypianoroll.load
instead) - Rename module
pypianoroll.utilities
topypianoroll.core
- Support
pathlib.Path
as filenames - Support method chaining by returning
self
whenever possible - Add modules
pypianoroll.inputs
andpypianoroll.outputs
for input and output interfaces - Add module
pypianoroll.utils
for utility functions - Add type hints
- Follow duck typing for attributes (do not check attribute types when instantiate a object)
- Drop dependency
moviepy
and support for animation - Make dependency
matplotlib
required
pypianoroll.core
(previously pypianoroll.utilities
)
- Rename functions
core.assign_constant
->core.set_nonzeros
core.downsample
->core.set_resolution
core.trim_trailing_silence
->core.trim
- Remove functions
core.check_pianoroll
core.copy
core.load
(usepypianoroll.load
instead)core.parse
(usepypianoroll.read
instead)core.save
(usepypianoroll.save
instead)core.write
(usepypianoroll.write
instead)
pypianoroll.multitrack
- Change
Multitrack.__init__
signature- Reorder arguments
- Make all arguments optional for flexibility
- Rename argument
beat_resolution
toresolution
- Remove argument
filename
(usepypianoroll.read
andpypianoroll.load
instead)
- Change indexing behavior :
Multitrack[i]
returnsMultitrack.tracks[i]
- Rename methods
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
- Add methods
Multitrack.validate_type
Multitrack.is_valid
Multitrack.is_valid_type
- Remove methods
Multitrack.is_binarized
Multitrack.load
(usepypianoroll.load
instead)Multitrack.parse_midi
(usepypianoroll.read
instead)Multitrack.parse_pretty_midi
(usepypianoroll.from_pretty_midi
instead)Multitrack.remove_tracks
pypianoroll.track
- Change
Track.__init__
signature- Reorder arguments
- Make all arguments optional for flexibility
- Change indexing behavior :
Track[i]
returnsTrack.pianoroll[i]
- Add
StandardTrack
class for standard track (piano roll of type uint8)StandardTrack.set_nonzeros
StandardTrack.clip
StandardTrack.binarize
- Add
BinaryTrack
class for binary track (piano roll of type bool)BinaryTrack.set_nonzeros
- Rename methods
Track.check_validity
->Track.validate
Track.get_active_length
->Track.get_length
Track.trim_trailing_silence
->Track.trim
- Add methods
Track.validate_type
Track.is_valid
Track.is_valid_type
Track.standardize
- Remove methods
Track.binarize
Track.is_binarized
Track.get_pianoroll_copy
Track.assign_constant
pypianoroll.visualization
(new)
- Remove argument
filename
invisualization.plot_track
andvisualization.plot_multitrack
- Add argument
ax
forvisualization.plot_track
for plotting on an existing axes - Add argument
axs
forvisualization.plot_multitrack
for plotting on existing axes
pypianoroll.inputs
(new)
- Functions
inputs.load
inputs.from_pretty_midi
inputs.read
pypianoroll.outputs
(new)
- Functions
outputs.save
outputs.to_pretty_midi
outputs.write
- Variable
outputs.DEFAULT_TEMPO
pypianoroll.utils
(new)
- Functions
utils.decompose_sparse
utils.reconstruct_sparse
Pypianoroll v0.5.3
Pypianoroll v0.5.2
- Add
Multitrack.downsample()
andpypianoroll.downsample()
- Fix label-grid misalignment issues in plots
Pypianoroll v0.5.0
- Add
pypianoroll.metric
module - Support more options in
pypianoroll.parse
- Rename methods for
Multitrack
get_maximal_length
->get_max_length
get_num_downbeat
->count_downbeat
get_stacked_pianorolls
->get_stacked_pianoroll
- Improve the documentation (mostly docstrings)
Pypianoroll v0.4.0
- Make Matplotlib and Moviepy optional
- Add unit tests
- Fix note off bugs in
pypianoroll.Mutitrack.parse_pretty_midi()
- Move all plotting functions to one file (
pypianoroll/plot.py
) - Remove normalization arguments from plotting functions (value range now infered from dtype)
- Add argument
dtype
topypianoroll.Track.assign_constant()
Pypianoroll v0.3.0
- Fix downbeat loading bug
- Fix wrong usage of np.issubdtype()
- Fix wrong error types