56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
|
def process_all_samples_0( markL, smpM, srate, args ):
|
||
|
|
||
|
wtL = []
|
||
|
|
||
|
fund_hz = 13.75 * math.pow(2,(-9.0/12.0)) * math.pow(2.0,(args.midi_pitch / 12.0))
|
||
|
|
||
|
end_offs_smp_idx = int(args.end_offset_ms * srate / 1000)
|
||
|
loop_dur_smp = int(args.loop_dur_ms * srate / 1000)
|
||
|
smp_per_cycle = int(srate / fund_hz)
|
||
|
|
||
|
print(f"Hz:{fund_hz} smp/cycle:{smp_per_cycle}")
|
||
|
|
||
|
for beg_sec,end_sec,vel_label in markL:
|
||
|
for ch_idx in range(0,smpM.shape[1]):
|
||
|
beg_smp_idx = int(beg_sec * srate)
|
||
|
end_smp_idx = int(end_sec * srate)
|
||
|
|
||
|
eli = end_smp_idx - end_offs_smp_idx
|
||
|
bli = eli - loop_dur_smp
|
||
|
|
||
|
#print(beg_smp_idx,bli,eli,end_smp_idx)
|
||
|
|
||
|
xV = smpM[:,ch_idx]
|
||
|
wndN = int(smp_per_cycle/3)
|
||
|
bi,ei,cost = find_loop_points(xV,bli,eli,smp_per_cycle,wndN,args.guess_cnt)
|
||
|
|
||
|
plot_title = f"vel:{vel_label} ch:{ch_idx} cost:{math.log(cost):.2f}"
|
||
|
#plot_overlap(xV,bi,ei,wndN,smp_per_cycle,plot_title)
|
||
|
|
||
|
wtL.append( {
|
||
|
"pitch":args.midi_pitch,
|
||
|
"vel": int(vel_label),
|
||
|
"cost":cost,
|
||
|
"ch_idx":ch_idx,
|
||
|
"beg_smp_idx":beg_smp_idx,
|
||
|
"end_smp_idx":end_smp_idx,
|
||
|
"beg_loop_idx":bi,
|
||
|
"end_loop_idx":ei })
|
||
|
|
||
|
return wtL
|
||
|
|
||
|
|
||
|
def write_loop_label_file_0( fname, wtL, srate ):
|
||
|
|
||
|
with open(fname,"w") as f:
|
||
|
for r in wtL:
|
||
|
beg_sec = r['beg_smp_idx'] / srate
|
||
|
end_sec = r['end_smp_idx'] / srate
|
||
|
# f.write(f"{beg_sec}\t{end_sec}\t{r['vel_label']}\n")
|
||
|
|
||
|
beg_sec = r['beg_loop_idx'] / srate
|
||
|
end_sec = r['end_loop_idx'] / srate
|
||
|
cost = math.log(r['cost'])
|
||
|
label = f"ch:{r['ch_idx']} {cost:.2f}"
|
||
|
f.write(f"{beg_sec}\t{end_sec}\t{label}\n")
|