Example #1
0
    for i, p in enumerate(audio_test['pattern']):
        for _p in p:
            start = _p[0] - audio_test['info'][2][0]
            end = _p[1] - audio_test['info'][2][0]
            len_list.append(end - start)
            ground[i][start:end + 1] = i + 1
    min_len = int(
        min(len_list) * len(subbeat_mat[ind]) /
        (audio_test['info'][2][1] - audio_test['info'][2][0])) + 1
    min_len_list.append(min_len)
print min_len_list

start_time = time.time()
for ind in range(5):
    chroma_frames = feature_mat[ind].transpose()
    r = (0.0, 1.0, 0.01)
    ideal_v_inv = vmo.find_threshold(chroma_frames,
                                     r=r,
                                     flag='a',
                                     dfunc='other',
                                     dfunc_handle=trnspose_inv,
                                     VERBOSE=False)
    oracle_inv = vmo.build_oracle(chroma_frames,
                                  flag='a',
                                  threshold=ideal_v_inv[0][1],
                                  feature='chroma',
                                  dfunc='other',
                                  dfunc_handle=trnspose_inv)
    pattern = van.find_repeated_patterns(oracle_inv, lower=5)
print str(time.time() - start_time)
    ground = np.zeros((len(audio_test['pattern']),
                       audio_test['info'][2][1] - audio_test['info'][2][0]))
    for i, p in enumerate(audio_test['pattern']):
        for _p in p:
            start = _p[0] - audio_test['info'][2][0]
            end = _p[1] - audio_test['info'][2][0]
            ground[i][start:end + 1] = 1

    ground_vec.append(ground)

    pttr_vec = []
    min_len = int(np.mean(oracle_vec[0].lrs) / 2)

    for oracle in oracle_vec:
        pttr_vec.append(van.find_repeated_patterns(oracle, lower=min_len))
#     pattern_vec[song_list[ind]] = pttr_vec
#     pattern_mat_vec[song_list[ind]] = pttr_mat_vec
#
#     pttr_vec = pattern_vec[song_list[ind]]
#     pttr_mat_vec = pattern_mat_vec[song_list[ind]]
#     oracle_vec = vmo_dict[song_list[ind]]

    ref_pttr = pttr_vec[0][:]
    per_pttr = pttr_vec[1:5][:]
    add_pttr_list = []

    pttr = per_pttr.pop()
    #     min_len = int(np.mean(oracle_vec[0].lrs)/2)
    while per_pttr != []:
        for i, p in enumerate(pttr):
    ground = np.zeros((len(audio_test["pattern"]), audio_test["info"][2][1] - audio_test["info"][2][0]))
    len_list = []
    for i, p in enumerate(audio_test["pattern"]):
        for _p in p:
            start = _p[0] - audio_test["info"][2][0]
            end = _p[1] - audio_test["info"][2][0]
            len_list.append(end - start)
            ground[i][start : end + 1] = i + 1
    #     min_len = int(min(len_list)*len(subbeats)/(audio_test['info'][2][1]-audio_test['info'][2][0])/2)+1
    #     min_len = int(stats.hmean(np.array(oracle_inv.lrs)[np.where(np.array(oracle_inv.lrs) != 0)]))
    #     min_len = 5
    min_len = int(np.mean(oracle_inv.lrs) / 2)  # Current optimal setting
    #     print min_len
    ### Extract Repeated Suffixes from VMO

    pattern = van.find_repeated_patterns(oracle_inv, lower=min_len)

    ### Beat Time to Time

    pattern_time = []
    for pttr in pattern:
        pttr_time = []
        for p in pttr[0]:
            time = librosa.core.frames_to_time(
                np.array([subbeats[p - pttr[1]], subbeats[p - 1]]), sr=sr, n_fft=fft_size, hop_length=hop_size
            )
            pttr_time.append(time)
        pattern_time.append(pttr_time)

    pattern_bpm = []
    for pt_time in pattern_time:
    subbeats.append(query.shape[1])
   
    ground = np.zeros((len(audio_test['pattern']), audio_test['info'][2][1]-audio_test['info'][2][0]))
    for i,p in enumerate(audio_test['pattern']):
        for _p in p:
            start = _p[0] - audio_test['info'][2][0]
            end = _p[1] - audio_test['info'][2][0]
            ground[i][start:end+1] = 1
    
    ground_vec.append(ground)
    
    pttr_vec = []
    min_len = int(np.mean(oracle_vec[0].lrs)/2)
    
    for oracle in oracle_vec:
        pttr_vec.append(van.find_repeated_patterns(oracle, lower = min_len))
#     pattern_vec[song_list[ind]] = pttr_vec
#     pattern_mat_vec[song_list[ind]] = pttr_mat_vec
# 
#     pttr_vec = pattern_vec[song_list[ind]]
#     pttr_mat_vec = pattern_mat_vec[song_list[ind]]
#     oracle_vec = vmo_dict[song_list[ind]]
    
    ref_pttr = pttr_vec[0][:]
    per_pttr = pttr_vec[1:5][:]
    add_pttr_list = []

    pttr = per_pttr.pop()
#     min_len = int(np.mean(oracle_vec[0].lrs)/2)
    while per_pttr != []:
        for i,p in enumerate(pttr):