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
"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()
# 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)