예제 #1
0
def get_instru_and_pr_from_folder_path_NP(folder_path, quantization):
    # There should be 1 files
    music_file = [
        e for e in os.listdir(folder_path) if re.search(r'\.(mid|xml)$', e)
    ]
    assert len(music_file) == 1, "There should be only one music file"
    music_file = music_file[0]
    music_file_path = os.path.join(folder_path, music_file)

    # Get the type
    if re.search(r'\.mid$', music_file):
        # Deduce csv files
        csv_file_path = re.sub(r'\.mid$', '.csv', music_file_path)
        # Get pr
        reader_midi = Read_midi(music_file_path, quantization)
        pianoroll = reader_midi.read_file()
    else:
        csv_file_path = re.sub(r'\.xml$', '.csv', music_file_path)
        pianoroll, articulation = mxml.scoreToPianoroll(
            music_file_path, quantization)

    total_time = get_pianoroll_time(pianoroll)

    with open(csv_file_path, 'r') as ff:
        rr = csv.DictReader(ff, delimiter=';')
        instru = next(rr)

    # Simplify names : keep only tracks not marked as useless
    instru_simple = {k: simplify_instrumentation(v) for k, v in instru.items()}
    # Files name, no extensions
    name = re.sub(r'\.(mid|csv)$', '', music_file_path)

    return pianoroll, instru_simple, total_time, name
 def file_processing(path, quantization, clip):
     reader_midi = Read_midi(path, quantization)
     # Read midi
     pianoroll = reader_midi.read_file()
     # Clip
     if clip:
         pianoroll = clip_pr(pianoroll)
     return pianoroll, get_pianoroll_time(pianoroll)
    def file_processing(path, quantization, clip):
        if re.search(r'.*\.mid$', path):
            reader_midi = Read_midi(path, quantization)
            # Read midi
            pianoroll = reader_midi.read_file()
        elif re.search(r'.*\.xml$', path):
            pianoroll, articulation, staccato_curve = mxml_to_pr(
                path, quantization)
            pr = sum_along_instru_dim(pianoroll)
            arti = sum_along_instru_dim(articulation)
            stacc = sum_along_instru_dim(staccato_curve)
        else:
            raise Exception("invalid extension {}, use either mid or xml")

        # Clip
        if clip:
            pianoroll = clip_pr(pianoroll)
        return pianoroll, get_pianoroll_time(pianoroll)
def load_solo(piano_midi, quantization, binarize_piano, temporal_granularity):
    # Read piano pr
    pr_piano = Read_midi(path, quantization).read_file()
    # Process pr_piano
    pr_piano = process_data_piano(pr_piano, binarize_piano)
    # Take event level representation
    if temporal_granularity == 'event_level':
        event_piano = get_event_ind_dict(pr_piano)
        pr_piano = warp_pr_aux(pr_piano, event_piano)
    else:
        event_piano = None

    name_piano = re.sub(r'/.*\.mid', '', piano_midi)

    duration = get_pianoroll_time(pr_piano)

    return pr_piano, event_piano, name_piano, None, None, duration
예제 #5
0
        "Voice": "Violin and Viola and Violoncello and Contrabass",
        "Voice soprano": "Violin",
        "Voice mezzo": "Viola",
        "Voice alto": "Viola",
        "Voice contratenor": "Viola",
        "Voice tenor": "Violoncello",
        "Voice baritone": "Violoncello",
        "Voice bass": "Contrabass",
        "Ondes martenot": "Remove",
        "Unknown": "Remove",
    }
    #################################################
    #################################################
    #################################################
    #################################################

    instru_name_unmixed = unmixed_instru(instru_name_complex)
    instru_name_unmixed_simple = []
    for e in instru_name_unmixed:
        simple_name = simplify_mapping[e]
        instru_name_unmixed_simple.append(simple_name)
    link = " and "
    return link.join(instru_name_unmixed_simple)


if __name__ == '__main__':
    name = 'DEBUG/test.mid'
    reader = Read_midi(name, 12)
    time = reader.get_time()
    pr = reader.read_file()
예제 #6
0
        # Avoid hidden folders
        if pair[0] == '.':
            continue

        print('# ' + pair)

        # Get midi file names
        pair_folder = IN_DB + '/' + pair
        mid_files = glob.glob(pair_folder + '/*.mid')
        csv_files = glob.glob(pair_folder + '/*.csv')
        if len(mid_files) != 2:
            raise Error(pair_folder + " contains more than 2 midi files")

        # Read midi files
        prs = [Read_midi(e, quantization).read_file() for e in mid_files]

        # Align them
        pr0_aligned, _, pr1_aligned, _, _, _ = align_pianorolls(prs[0],
                                                                prs[1],
                                                                gapopen=3,
                                                                gapextend=1)
        prs_out = [pr0_aligned, pr1_aligned]

        # Output file names
        mid_files_outS = [re.sub(IN_DB, OUT_DB, e) for e in mid_files]
        out_folder = re.sub(IN_DB, OUT_DB, pair_folder)

        # Create directory
        os.makedirs(out_folder)