"""MAESTRO Dataset."""
from pathlib import Path
from typing import Union
from ..inputs import read_midi
from ..music import Music
from .base import DatasetInfo, RemoteFolderDataset
_NAME = "MAESTRO Dataset"
_DESCRIPTION = """\
MAESTRO (MIDI and Audio Edited for Synchronous TRacks and Organization) is a \
dataset composed of over 200 hours of virtuosic piano performances captured \
with fine alignment (~3 ms) between note labels and audio waveforms."""
_HOMEPAGE = "https://magenta.tensorflow.org/datasets/maestro"
_LICENSE = "Creative Commons Attribution Non-Commercial Share-Alike 4.0 \
(CC BY-NC-SA 4.0)"
_CITATION = """\
@inproceedings{hawthorne2018enabling,
title={Enabling Factorized Piano Music Modeling and Generation with the \
{MAESTRO} Dataset},
author={Curtis Hawthorne and Andriy Stasyuk and Adam Roberts and Ian Simon \
and Cheng-Zhi Anna Huang and Sander Dieleman and Erich Elsen and Jesse Engel \
and Douglas Eck},
booktitle={Proceedings of the 7th International Conference on Learning \
Representations (ICLR)},
year={2019},
url={https://openreview.net/forum?id=r1lYRjC9F7}
}"""
[docs]class MAESTRODatasetV1(RemoteFolderDataset):
"""MAESTRO Dataset (MIDI only)."""
_info = DatasetInfo(_NAME, _DESCRIPTION, _HOMEPAGE, _LICENSE)
_citation = _CITATION
_sources = {
"maestro": {
"filename": "maestro-v2.0.0-midi.zip",
"url": (
"https://storage.googleapis.com/magentadata/datasets/maestro/"
"v1.0.0/maestro-v1.0.0-midi.zip"
),
"archive": True,
"size": 46579421,
"md5": "c4d922a6ccc4464814b49e91ff81554e",
"sha256": "f620f9e1eceaab8beea10617599add2e9c83234199b550382a2f603"
"098ae7135",
}
}
_extension = "midi"
[docs] def read(self, filename: Union[str, Path]) -> Music:
"""Read a file into a Music object."""
return read_midi(self.root / filename)
[docs]class MAESTRODatasetV2(RemoteFolderDataset):
"""MAESTRO Dataset (MIDI only)."""
_info = DatasetInfo(_NAME, _DESCRIPTION, _HOMEPAGE, _LICENSE)
_citation = _CITATION
_sources = {
"maestro": {
"filename": "maestro-v2.0.0-midi.zip",
"url": (
"https://storage.googleapis.com/magentadata/datasets/maestro/"
"v2.0.0/maestro-v2.0.0-midi.zip"
),
"archive": True,
"size": 59243107,
"md5": "8a45cc678a8b23cd7bad048b1e9034c5",
"sha256": "ec2cc9d94886c6b376db1eaa2b8ad1ce62ff9f0a28b3744782b1316"
"3295dadf3",
}
}
_extension = "midi"
[docs] def read(self, filename: Union[str, Path]) -> Music:
"""Read a file into a Music object."""
return read_midi(self.root / filename)