Classes
- Fix unintended print in `Base.adjust_time` (14)
- Add method `ComplexBase.extend` (33)
- Add argument `deepcopy` to `Base.to_ordered_dict` (33)
- Implement `Base.__deepcopy__` to speed up deep copying (33)
- Implement `ComplexBase.__add__` and `ComplexBase.__iadd__` to support `+` and `+=` operators (33)
- Create deep copies in `Base.to_ordered_dict` by default (33)
JSON/YAML Interfaces
- Add argument `compressed` to `load`, `load_json`, `load_yaml`, `save`, `save_json` and `save_yaml` (36, 39)
- Rename argument `skip_none` to `skip_missing` in `Base.to_ordered_dict`, `Base.pretty_str`, `Base.print`, `save_json` and `save_yaml`
- Support file object in `load`, `load_json`, `load_yaml`, `save`, `save_json` and `save_yaml` (39)
- Use default flow style in YAML dumper
- Use UTF-8 by default in JSON/YAML interfaces
MIDI Interfaces
- Enhance MIDI I/O with pretty_midi backend (41)
- Increment channel number for each track in `write_midi_mido` (40)
- Change argument `use_note_on_as_note_off` to `use_note_off_message` in `write_midi_mido` and `to_mido`
Datasets
- Add datasets `HaydnOp20Dataset` (13) and `MusicNetDataset`
- Add argument `overwrite` to `Dataset.download` and `Dataset.download_and_extract` (34)
- Add argument `verbose` to `Dataset.save`, `Dataset.download`, `Dataset.extract`, `Dataset.download_and_extract`, `RemoteDataset.__init__`, `FolderDataset.__init__`, `RemoteFolderDataset.__init__`, `RemoteMusicDataset.__init__` and `RemoteABCFolderDataset.__init__`
- Support sha256 hash check in `datasets.utils.download_url`
- Support xz files in `datasets.utils.extract_archives`
- Create dataset root if not exists (16, 34)
Other changes
- Fix several bugs in event representation (15, 21, 22, 23, 24, 25)
- Fix `Note.adjust_time` to adjust end time, not duration (37)
- Add functions `from_music21_part`, `from_music21_score` and `from_pypianoroll_track`
- Support different key specifications in `outputs.music21.to_music21_key`
- Support parsing velocities in Music21 input
- `read_abc` and `read_abc_string` now return either a music object or a list of music objects