Esempio n. 1
0
import zipfile
import wget
from os import path
from utils.project_utils.logger_ import create_logger

logger = create_logger(__name__, log_to_file=False)

if path.exists("./dataset/maestro-v3.0.0-midi"):
    logger.info("Already downloaded")
else:
    url = 'https://storage.googleapis.com/magentadata/datasets/maestro/v3.0.0/maestro-v3.0.0-midi.zip'
    filename = wget.download(url)
    with zipfile.ZipFile("maestro-v3.0.0-midi.zip", "r") as zip_ref:
        zip_ref.extractall("dataset/maestro-v3.0.0-midi")
        logger.info("Dataset donwloaded")
Esempio n. 2
0
import numpy as np
import pretty_midi
from magenta.pipelines import pipeline
from magenta.pipelines import statistics
from utils.project_utils.logger_ import create_logger
from collections.abc import Iterable

logger = create_logger(__name__)


class NotesAndTimesStepIntoMidi(pipeline.Pipeline):
    """Transformat NotesAndTimesSTep format into Midi

    :param: (string) name: Pipeline name.
    """
    def __init__(self, name="Transformat NotesAndTimesSTep format into Midi"):
        super(NotesAndTimesStepIntoMidi, self).__init__(input_type=Iterable,
                                                        output_type=Iterable,
                                                        name=name)

        self.stat1 = statistics.Counter('how_many_notes')
        self.stats = [self.stat1]

    def transform(self, piano_roll, fs=5, program=0):
        '''Convert a Piano Roll array into a PrettyMidi object
        with a single instrument

        :param: (np.ndarray) piano_roll : Piano roll of piano instrument
        :param: (int) fs : Sampling frequency of the columns
        :param: (int) program: The program number of the instrument
        :return: A pretty_midi.PrettyMIDI class instance describing the piano roll.