def load_file(root_path):
    # parser the data
    dir_list = os.listdir(root_path)
    dir_list.sort()
    file_name = []
    file_num = []
    for dir in dir_list:
        tmp_name = os.listdir(os.path.join("./raw_classical_music_data",dir))
        tmp_name.sort()
        file_name.append(tmp_name)
        file_num.append(len(tmp_name))
    print("Num of file in each dir : " ,file_num)

    # Parse a MIDI file to a `pypianoroll.Multitrack` instance
    data_list = []
    for i,dir in enumerate(dir_list):
        print("\rPhraser the data : %d/%d" %(i+1,len(dir_list)), end = "")
        for name in file_name[i]:
            file_path = os.path.join('./raw_classical_music_data',dir,name)
            tmp_pypianoroll = Multitrack(file_path)
            tmp_pypianoroll.remove_empty_tracks()
            tmp_pypianoroll.pad_to_multiple(length_Section*length_tab)
            tmp_np = tmp_pypianoroll.get_stacked_pianoroll()
            data_list.append(tmp_np)
    data_list = np.array(data_list)
    #np.save("all_data.npy",data_list)
    print("")
    print("finish praser the data...")
    return data_list
    for file in files:
        if file.endswith(".mid"):
            FILENAMES.append(os.path.join(root, file))


# Iterate through all the MIDI files
for filename in FILENAMES:
    
    # Parse the MIDI file into multitrack pianoroll
    try:
        multitrack  = Multitrack(filename, beat_resolution=BEAT_RESOLUTION)
    except:
        continue

    # Pad to multtple
    multitrack.pad_to_multiple(4 * BEAT_RESOLUTION)

    # Binarize the pianoroll
    multitrack.binarize()

    # Sort the tracks according to program number
    multitrack.tracks.sort(key=lambda x: x.program)

    # Bring the drum track to the first track
    multitrack.tracks.sort(key=lambda x: ~x.is_drum)

    # Get the stacked pianoroll
    pianoroll = multitrack.get_stacked_pianorolls()

    # Check length
    if pianoroll.shape[0] < 4 * 4 * BEAT_RESOLUTION: