adding more stuff
This commit is contained in:
parent
dc7fde60de
commit
d899f72602
433
new-process.py
433
new-process.py
|
@ -11,6 +11,278 @@ import heapq
|
||||||
|
|
||||||
print("Starting...\n")
|
print("Starting...\n")
|
||||||
|
|
||||||
|
def find_bpm_2(sample_rate, data, threshold, maxbpm, show):
|
||||||
|
mx = np.max(data)
|
||||||
|
min_spacing = (60*sample_rate)/maxbpm
|
||||||
|
k = 0
|
||||||
|
while(k < len(data) and data[k]/mx < threshold):
|
||||||
|
k += 1
|
||||||
|
|
||||||
|
k += 1
|
||||||
|
spacing = []
|
||||||
|
current = 1
|
||||||
|
progress = 0
|
||||||
|
|
||||||
|
while(k < len(data)):
|
||||||
|
if(k%(len(data)/100) == 0):
|
||||||
|
print(progress, "%")
|
||||||
|
progress += 1
|
||||||
|
if(data[k]/mx >= threshold and current > min_spacing):
|
||||||
|
spacing.append(current)
|
||||||
|
current = 0
|
||||||
|
else:
|
||||||
|
current += 1
|
||||||
|
k += 1
|
||||||
|
|
||||||
|
|
||||||
|
for x in range(len(spacing)):
|
||||||
|
spacing[x] = 60/(spacing[x]/sample_rate)
|
||||||
|
|
||||||
|
digits = [i for i in range(len(spacing))]
|
||||||
|
if(show):
|
||||||
|
plt.plot(digits, spacing)
|
||||||
|
plt.xlabel("N")
|
||||||
|
plt.ylabel("BPM")
|
||||||
|
plt.grid()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
beat = np.mean(spacing)
|
||||||
|
error = np.std(spacing)
|
||||||
|
|
||||||
|
return (np.round(beat, 3), np.round(error, 3))
|
||||||
|
|
||||||
|
def to_ms(song_data, sample_rate, offset):
|
||||||
|
new_data = []
|
||||||
|
spacing = int(sample_rate * 0.001)
|
||||||
|
mx = max(song_data)
|
||||||
|
i = 0
|
||||||
|
while(i < len(song_data)):
|
||||||
|
avg = 0
|
||||||
|
for k in range(spacing):
|
||||||
|
if(i+spacing < len(song_data)):
|
||||||
|
avg += song_data[i+spacing]
|
||||||
|
avg = avg / spacing
|
||||||
|
new_data.append(avg)
|
||||||
|
i += spacing
|
||||||
|
|
||||||
|
if(False): # pls dont kill me thx
|
||||||
|
t = [offset + j/1000 for j in range(len(new_data))]
|
||||||
|
plt.plot(t, new_data)
|
||||||
|
plt.xlabel("Time")
|
||||||
|
plt.ylabel("Amplitude")
|
||||||
|
plt.grid()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
return (new_data, len(new_data))
|
||||||
|
|
||||||
|
def filter_n_percent(song_name, offset, length, threshold, reduce, show):
|
||||||
|
# threshold is in ]0, 100]
|
||||||
|
|
||||||
|
subprocess.run(["ffmpeg", "-ss", str(offset), "-t", str(length), "-i", song_name, "crop.wav"])
|
||||||
|
|
||||||
|
sample_rate, song_data = wavfile.read('crop.wav')
|
||||||
|
|
||||||
|
subprocess.run(["clear"])
|
||||||
|
subprocess.run(["rm", "crop.wav"])
|
||||||
|
|
||||||
|
if(reduce):
|
||||||
|
(song_data,e) = to_ms(song_data, 44100, 1)
|
||||||
|
sample_rate = 1000
|
||||||
|
|
||||||
|
mx = max(song_data)
|
||||||
|
|
||||||
|
is_locked = [False for i in range(len(song_data))]
|
||||||
|
x = int((len(song_data)*threshold)//100)
|
||||||
|
#print("X = ", x)
|
||||||
|
|
||||||
|
print("Retreiving the", int(x), "/", len(song_data), "highest values")
|
||||||
|
elements = heapq.nlargest(int(x), enumerate(song_data), key=lambda x: x[1])
|
||||||
|
print("Done")
|
||||||
|
|
||||||
|
for idx in range(len(elements)):
|
||||||
|
is_locked[elements[idx][0]] = True
|
||||||
|
|
||||||
|
for r in range(len(song_data)):
|
||||||
|
if(is_locked[r] == False):
|
||||||
|
song_data[r] = 0
|
||||||
|
|
||||||
|
if(show):
|
||||||
|
#print("EEEEE")
|
||||||
|
t = [offset + j/sample_rate for j in range(len(song_data))]
|
||||||
|
plt.plot(t, song_data)
|
||||||
|
plt.xlabel("Time")
|
||||||
|
plt.ylabel("Amplitude")
|
||||||
|
plt.grid()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
return song_data
|
||||||
|
|
||||||
|
|
||||||
|
def write_to_file_thr(sample_rate, song_data, offset, threshold, filename):
|
||||||
|
file = open(filename, 'w')
|
||||||
|
file.writelines('time,amplitude\n')
|
||||||
|
mx = max(song_data)
|
||||||
|
print("writing to output...")
|
||||||
|
for i in range(len(song_data)):
|
||||||
|
if(i%(len(song_data)//50) == 0):
|
||||||
|
print(i, "/", len(song_data))
|
||||||
|
if(song_data[i]/mx > threshold):
|
||||||
|
file.writelines(str(np.round(offset + i/sample_rate, 3)))
|
||||||
|
file.writelines(',')
|
||||||
|
file.writelines(str(np.round(song_data[i], 0)))
|
||||||
|
file.writelines('\n')
|
||||||
|
|
||||||
|
def smooth(data, thr, mergeThr, show):
|
||||||
|
mx = max(data)
|
||||||
|
for i in range(len(data)-mergeThr):
|
||||||
|
if(data[i]/mx > thr):
|
||||||
|
for k in range(1, mergeThr):
|
||||||
|
data[i+k] = 0
|
||||||
|
if(show):
|
||||||
|
t = [j/1000 for j in range(len(data))]
|
||||||
|
plt.plot(t, data)
|
||||||
|
plt.xlabel("Time (not scaled to origin)")
|
||||||
|
plt.ylabel("Amplitude")
|
||||||
|
plt.grid()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
def round_t(id, sample_rate, bpm, div, offset, k0):
|
||||||
|
k = k0
|
||||||
|
t = offset + k/(bpm*div)
|
||||||
|
while(t < id/sample_rate):
|
||||||
|
t = offset + k/(bpm*div)
|
||||||
|
k += 1
|
||||||
|
|
||||||
|
if(np.abs(t - id/sample_rate) < np.abs((t - 1/(bpm*div)) - id/sample_rate)):
|
||||||
|
return t
|
||||||
|
return (t - 1/(bpm*div), 0)
|
||||||
|
|
||||||
|
def snap(data, sample_rate, bpm, offset, divisor, show):
|
||||||
|
new = [0 for x in range(int(1000*len(data)/sample_rate))] # 1pt per millisecond
|
||||||
|
print("old =", len(data))
|
||||||
|
print("len =", 1000*len(data)/sample_rate)
|
||||||
|
k = 0
|
||||||
|
t = 0
|
||||||
|
percent = 0
|
||||||
|
for i in range(len(data)):
|
||||||
|
|
||||||
|
while(t < i/sample_rate):
|
||||||
|
t = k/(bpm*divisor)
|
||||||
|
k += 60
|
||||||
|
|
||||||
|
if(i%(len(data)//100) == 0):
|
||||||
|
print(percent, "%")
|
||||||
|
percent += 1
|
||||||
|
|
||||||
|
if(int(t*1000) < len(new)):
|
||||||
|
new[int(t*1000)] = max(data[i], new[int(t*1000)])
|
||||||
|
else:
|
||||||
|
new[len(new)-1] = max(data[i], new[len(new)-1])
|
||||||
|
|
||||||
|
if(show):
|
||||||
|
t = [j/1000 for j in range(len(new))]
|
||||||
|
plt.plot(t, new)
|
||||||
|
plt.xlabel("Time (e)")
|
||||||
|
plt.ylabel("Amplitude")
|
||||||
|
plt.grid()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
return new
|
||||||
|
if(True):
|
||||||
|
#data = filter_n_percent("worlds_end_3.wav", 74.582, 30, 0.3, reduce=False, show=False)
|
||||||
|
#data = filter_n_percent("no.wav", 1, 15, 0.3)
|
||||||
|
#da = find_bpm(44100, data, 100, 200, 1, 0)
|
||||||
|
|
||||||
|
# def find_bpm_2(sample_rate, data, threshold, maxbpm):
|
||||||
|
#da = find_bpm_2(44100, data, 0.92, 240, show=False)
|
||||||
|
#print("BPM is", da[0], "with std of", da[1])
|
||||||
|
|
||||||
|
|
||||||
|
data2 = filter_n_percent("worlds_end_3.wav", 74.582, 15, 0.2, reduce=False, show=True)
|
||||||
|
data2 = snap(data2, 44100, 178, 74.582, 4, show=True)
|
||||||
|
write_to_file_thr(1000, data2, 74.582, 0.02, "timing_points.csv")
|
||||||
|
'''
|
||||||
|
data2 = filter_n_percent("no.wav", 1, 30, 0.8, reduce=True, show=True)
|
||||||
|
write_to_file_thr(1000, smooth(data2, 0.5, 50, show=True), 1, 0.02, "timing_points.csv")
|
||||||
|
'''
|
||||||
|
|
||||||
|
#data = to_ms(data, 44100, 1)
|
||||||
|
|
||||||
|
print("Program finished with return 0")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
''' -------------------------------------------------------------------- '''
|
||||||
|
''' -----------------------| Feuilles mortes |-------------------------- '''
|
||||||
|
''' -------------------------------------------------------------------- '''
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
if(False):
|
||||||
|
#t, f, Zxx = fct("no.wav", 0, 0.032, 10, 5000, False)
|
||||||
|
#t, f, Zxx = fct("worlds_end_3.wav", 150.889, 0.032, 170.889, 3000, False)
|
||||||
|
#t, f, Zxx = fct("deltamax.wav", 9.992, 0.032, 114.318, 3000, False)
|
||||||
|
#t, f, Zxx = fct("deltamax.wav", 9.992, 0.032, 20, 3000, False)
|
||||||
|
#t, f, Zxx = fct("da^9.wav", 8.463, 0.032, 20, 5000, False)
|
||||||
|
t, f, Zxx = fct("13. Cosmic Mind.wav", 0, 0.032, 20, 5000, False)
|
||||||
|
#t, f, Zxx = fct("Furioso Melodia 44100.wav", 4, 0.032, 8, 3000, False)
|
||||||
|
#t, f, Zxx = fct("changing.wav", 0, 0.05, 3.9, 5000, False)
|
||||||
|
#fct("worlds_end_3.wav", 75, (60/178)/4, 75+2, 2500)
|
||||||
|
|
||||||
|
plot_max(t, f, Zxx, True)
|
||||||
|
|
||||||
|
if(False):
|
||||||
|
#(t, data) = peaks("worlds_end_3.wav", 0, 300, False, 0.92)
|
||||||
|
(t, data) = peaks("worlds_end_3.wav", 74.582, 6, False, 0.9)
|
||||||
|
#(t, data) = peaks("da^9.wav", 8.463, 301.924 - 8.463, False, 0.95)
|
||||||
|
#(t, data) = peaks("deltamax.wav", 8.463, 30101.924 - 8.463, False, 0.92)
|
||||||
|
da = find_bpm(t, 44100, data, 100, 200, 1, 10)
|
||||||
|
print("BPM data is", da)'''
|
||||||
|
|
||||||
|
#data = [-1 for i in range(int(x))]
|
||||||
|
#ids = [-1 for i in range(int(x))]
|
||||||
|
'''
|
||||||
|
data = []
|
||||||
|
ids = []
|
||||||
|
for k in range(int(x)):
|
||||||
|
data.append(int(7*mx/10))
|
||||||
|
ids.append(-1)
|
||||||
|
# structure there is [[index, value]...]
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
calc = 0
|
||||||
|
while(i < len(song_data)):
|
||||||
|
if(i%10 == 0):
|
||||||
|
print(i, "/", len(song_data))
|
||||||
|
if(data[int(x)-1] < song_data[i]):
|
||||||
|
calc += 1
|
||||||
|
#print("\n \n \n \n \n")
|
||||||
|
data[int(x)-1] = song_data[i]
|
||||||
|
ids[int(x)-1] = i
|
||||||
|
|
||||||
|
k = int(x)-1
|
||||||
|
#while(k < int(x) & data[0] > data[k]):
|
||||||
|
while(k > 0 and data[k-1] <= data[k]):
|
||||||
|
data[k], data[k-1] = data[k-1], data[k]
|
||||||
|
ids[k], ids[k-1] = ids[k-1], ids[k]
|
||||||
|
k -= 1
|
||||||
|
|
||||||
|
#print(data[int(x)-1], calc, "/", x)
|
||||||
|
|
||||||
|
i += skip
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
|
for s in range(int(x)-1):
|
||||||
|
if(data[s] < data[s+1]):
|
||||||
|
print("Nope", s)
|
||||||
|
assert(0)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
def fct(song_name, offset, increment, songlen, maxfreq, display):
|
def fct(song_name, offset, increment, songlen, maxfreq, display):
|
||||||
to_cut = 20000//maxfreq
|
to_cut = 20000//maxfreq
|
||||||
global_Zxx = np.array([])
|
global_Zxx = np.array([])
|
||||||
|
@ -37,11 +309,11 @@ def fct(song_name, offset, increment, songlen, maxfreq, display):
|
||||||
#print(len(Zxx))
|
#print(len(Zxx))
|
||||||
#print(len(Zxx[0]))
|
#print(len(Zxx[0]))
|
||||||
|
|
||||||
#convert to mel
|
|
||||||
'''
|
|
||||||
for i in range(len(Zxx)):
|
for i in range(len(Zxx)):
|
||||||
for j in range(len(Zxx[i])):
|
for j in range(len(Zxx[i])):
|
||||||
Zxx[i][j] *= 1127*np.log(1+f[i]/700)'''
|
Zxx[i][j] *= 1127*np.log(1+f[i]/700)
|
||||||
|
|
||||||
|
|
||||||
t = np.array([current_time + x for x in t])
|
t = np.array([current_time + x for x in t])
|
||||||
|
|
||||||
|
@ -98,7 +370,7 @@ def plot_max(time, freq, Zxx, save):
|
||||||
if(save):
|
if(save):
|
||||||
write_to_file(time, fres, maxres, 'output.csv')
|
write_to_file(time, fres, maxres, 'output.csv')
|
||||||
|
|
||||||
'''
|
''''''
|
||||||
plt.plot(time, fres, 'r')
|
plt.plot(time, fres, 'r')
|
||||||
plt.grid()
|
plt.grid()
|
||||||
plt.xlabel("Time")
|
plt.xlabel("Time")
|
||||||
|
@ -109,7 +381,7 @@ def plot_max(time, freq, Zxx, save):
|
||||||
plt.xlabel("Time")
|
plt.xlabel("Time")
|
||||||
plt.ylabel("Maximun values")
|
plt.ylabel("Maximun values")
|
||||||
|
|
||||||
plt.show()'''
|
plt.show()''''''
|
||||||
|
|
||||||
fig, (ax1, ax2) = plt.subplots(2)
|
fig, (ax1, ax2) = plt.subplots(2)
|
||||||
fig.suptitle('Top : time and frequencies\nBottom : time and max values')
|
fig.suptitle('Top : time and frequencies\nBottom : time and max values')
|
||||||
|
@ -208,7 +480,7 @@ def find_bpm(sample_rate, data, minbpm, maxbpm, step, width):
|
||||||
bpmlst.append(beat)
|
bpmlst.append(beat)
|
||||||
scores.append(accuracy)
|
scores.append(accuracy)
|
||||||
|
|
||||||
if(True):
|
if(False):
|
||||||
plt.plot(bpmlst, scores)
|
plt.plot(bpmlst, scores)
|
||||||
plt.xlabel("BPM")
|
plt.xlabel("BPM")
|
||||||
plt.ylabel("Score")
|
plt.ylabel("Score")
|
||||||
|
@ -216,153 +488,4 @@ def find_bpm(sample_rate, data, minbpm, maxbpm, step, width):
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
return (optimal, optimal_acc)
|
return (optimal, optimal_acc)
|
||||||
|
|
||||||
def find_bpm_2(sample_rate, data, threshold, maxbpm):
|
|
||||||
mx = np.max(data)
|
|
||||||
min_spacing = (60*sample_rate)/maxbpm
|
|
||||||
k = 0
|
|
||||||
while(k < len(data) and data[k]/mx < threshold):
|
|
||||||
k += 1
|
|
||||||
|
|
||||||
k += 1
|
|
||||||
spacing = []
|
|
||||||
current = 1
|
|
||||||
progress = 0
|
|
||||||
|
|
||||||
while(k < len(data)):
|
|
||||||
if(k%(len(data)/100) == 0):
|
|
||||||
print(progress, "%")
|
|
||||||
progress += 1
|
|
||||||
if(data[k]/mx >= threshold and current > min_spacing):
|
|
||||||
spacing.append(current)
|
|
||||||
current = 0
|
|
||||||
else:
|
|
||||||
current += 1
|
|
||||||
k += 1
|
|
||||||
|
|
||||||
|
|
||||||
for x in range(len(spacing)):
|
|
||||||
spacing[x] = 60/(spacing[x]/sample_rate)
|
|
||||||
|
|
||||||
digits = [i for i in range(len(spacing))]
|
|
||||||
if(True):
|
|
||||||
plt.plot(digits, spacing)
|
|
||||||
plt.xlabel("N")
|
|
||||||
plt.ylabel("BPM")
|
|
||||||
plt.grid()
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
beat = np.mean(spacing)
|
|
||||||
error = np.std(spacing)
|
|
||||||
|
|
||||||
return (np.round(beat, 3), np.round(error, 3))
|
|
||||||
|
|
||||||
def filter_n_percent(song_name, offset, length, threshold):
|
|
||||||
# threshold is in ]0, 100]
|
|
||||||
|
|
||||||
subprocess.run(["ffmpeg", "-ss", str(offset), "-t", str(length), "-i", song_name, "crop.wav"])
|
|
||||||
|
|
||||||
sample_rate, song_data = wavfile.read('crop.wav')
|
|
||||||
|
|
||||||
subprocess.run(["clear"])
|
|
||||||
subprocess.run(["rm", "crop.wav"])
|
|
||||||
|
|
||||||
is_locked = [False for i in range(len(song_data))]
|
|
||||||
x = int((len(song_data)*threshold)//100)
|
|
||||||
print("X = ", x)
|
|
||||||
|
|
||||||
mx = max(song_data)
|
|
||||||
|
|
||||||
print("Retreiving the", int(x), "/", len(song_data), "highest values")
|
|
||||||
elements = heapq.nlargest(int(x), enumerate(song_data), key=lambda x: x[1])
|
|
||||||
print("Done")
|
|
||||||
|
|
||||||
for idx in range(len(elements)):
|
|
||||||
is_locked[elements[idx][0]] = True
|
|
||||||
|
|
||||||
for r in range(len(song_data)):
|
|
||||||
if(is_locked[r] == False):
|
|
||||||
song_data[r] = 0
|
|
||||||
|
|
||||||
if(True):
|
|
||||||
t = [offset + j/sample_rate for j in range(len(song_data))]
|
|
||||||
plt.plot(t, song_data)
|
|
||||||
plt.xlabel("Time")
|
|
||||||
plt.ylabel("Amplitude")
|
|
||||||
plt.grid()
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
return song_data
|
|
||||||
|
|
||||||
if(False):
|
|
||||||
#t, f, Zxx = fct("no.wav", 0, 0.032, 10, 5000, False)
|
|
||||||
#t, f, Zxx = fct("worlds_end_3.wav", 150.889, 0.032, 170.889, 3000, False)
|
|
||||||
#t, f, Zxx = fct("deltamax.wav", 9.992, 0.032, 114.318, 3000, False)
|
|
||||||
#t, f, Zxx = fct("deltamax.wav", 9.992, 0.032, 20, 3000, False)
|
|
||||||
#t, f, Zxx = fct("da^9.wav", 8.463, 0.032, 20, 5000, False)
|
|
||||||
t, f, Zxx = fct("13. Cosmic Mind.wav", 0, 0.032, 20, 5000, False)
|
|
||||||
#t, f, Zxx = fct("Furioso Melodia 44100.wav", 4, 0.032, 8, 3000, False)
|
|
||||||
#t, f, Zxx = fct("changing.wav", 0, 0.05, 3.9, 5000, False)
|
|
||||||
#fct("worlds_end_3.wav", 75, (60/178)/4, 75+2, 2500)
|
|
||||||
|
|
||||||
plot_max(t, f, Zxx, True)
|
|
||||||
|
|
||||||
if(False):
|
|
||||||
#(t, data) = peaks("worlds_end_3.wav", 0, 300, False, 0.92)
|
|
||||||
(t, data) = peaks("worlds_end_3.wav", 74.582, 6, False, 0.9)
|
|
||||||
#(t, data) = peaks("da^9.wav", 8.463, 301.924 - 8.463, False, 0.95)
|
|
||||||
#(t, data) = peaks("deltamax.wav", 8.463, 30101.924 - 8.463, False, 0.92)
|
|
||||||
da = find_bpm(t, 44100, data, 100, 200, 1, 10)
|
|
||||||
print("BPM data is", da)
|
|
||||||
|
|
||||||
if(True):
|
|
||||||
#data = filter_n_percent("worlds_end_3.wav", 74.582, 20, 0.1)
|
|
||||||
data = filter_n_percent("no.wav", 1, 10, 0.1)
|
|
||||||
#da = find_bpm(44100, data, 100, 200, 1, 0)
|
|
||||||
da = find_bpm_2(44100, data, 0.97, 240)
|
|
||||||
print("BPM is", da[0], "with std of", da[1])
|
|
||||||
|
|
||||||
print("Program finished with return 0")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#data = [-1 for i in range(int(x))]
|
|
||||||
#ids = [-1 for i in range(int(x))]
|
|
||||||
'''
|
|
||||||
data = []
|
|
||||||
ids = []
|
|
||||||
for k in range(int(x)):
|
|
||||||
data.append(int(7*mx/10))
|
|
||||||
ids.append(-1)
|
|
||||||
# structure there is [[index, value]...]
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
calc = 0
|
|
||||||
while(i < len(song_data)):
|
|
||||||
if(i%10 == 0):
|
|
||||||
print(i, "/", len(song_data))
|
|
||||||
if(data[int(x)-1] < song_data[i]):
|
|
||||||
calc += 1
|
|
||||||
#print("\n \n \n \n \n")
|
|
||||||
data[int(x)-1] = song_data[i]
|
|
||||||
ids[int(x)-1] = i
|
|
||||||
|
|
||||||
k = int(x)-1
|
|
||||||
#while(k < int(x) & data[0] > data[k]):
|
|
||||||
while(k > 0 and data[k-1] <= data[k]):
|
|
||||||
data[k], data[k-1] = data[k-1], data[k]
|
|
||||||
ids[k], ids[k-1] = ids[k-1], ids[k]
|
|
||||||
k -= 1
|
|
||||||
|
|
||||||
#print(data[int(x)-1], calc, "/", x)
|
|
||||||
|
|
||||||
i += skip
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
|
|
||||||
for s in range(int(x)-1):
|
|
||||||
if(data[s] < data[s+1]):
|
|
||||||
print("Nope", s)
|
|
||||||
assert(0)
|
|
||||||
'''
|
'''
|
|
@ -0,0 +1,99 @@
|
||||||
|
time,amplitude
|
||||||
|
74.834,27830
|
||||||
|
75.003,32767
|
||||||
|
75.087,32767
|
||||||
|
75.508,32767
|
||||||
|
75.593,25442
|
||||||
|
75.677,29518
|
||||||
|
75.846,32767
|
||||||
|
76.014,26270
|
||||||
|
76.183,32767
|
||||||
|
76.267,27283
|
||||||
|
76.52,32767
|
||||||
|
76.857,32767
|
||||||
|
77.194,32767
|
||||||
|
77.278,26713
|
||||||
|
77.531,32767
|
||||||
|
77.615,27054
|
||||||
|
77.699,29431
|
||||||
|
77.868,32767
|
||||||
|
77.952,27120
|
||||||
|
78.037,31654
|
||||||
|
78.205,32767
|
||||||
|
78.542,32767
|
||||||
|
78.626,24911
|
||||||
|
78.711,25315
|
||||||
|
78.879,32767
|
||||||
|
78.964,29835
|
||||||
|
79.216,32767
|
||||||
|
79.301,27455
|
||||||
|
79.469,27799
|
||||||
|
79.553,32767
|
||||||
|
79.722,25509
|
||||||
|
79.89,32767
|
||||||
|
79.975,25061
|
||||||
|
80.059,25816
|
||||||
|
80.228,32767
|
||||||
|
80.312,28958
|
||||||
|
80.48,29818
|
||||||
|
80.565,32767
|
||||||
|
80.902,32767
|
||||||
|
81.239,32767
|
||||||
|
81.323,26323
|
||||||
|
81.407,26077
|
||||||
|
81.576,32767
|
||||||
|
81.829,30393
|
||||||
|
81.913,32767
|
||||||
|
82.166,27691
|
||||||
|
82.25,32767
|
||||||
|
82.587,32767
|
||||||
|
82.671,27114
|
||||||
|
82.924,32767
|
||||||
|
83.008,28674
|
||||||
|
83.093,27410
|
||||||
|
83.261,32767
|
||||||
|
83.346,25455
|
||||||
|
83.43,27424
|
||||||
|
83.598,32767
|
||||||
|
83.851,25760
|
||||||
|
83.935,32767
|
||||||
|
84.02,27722
|
||||||
|
84.104,32379
|
||||||
|
84.273,32767
|
||||||
|
84.525,24740
|
||||||
|
84.61,32767
|
||||||
|
84.694,27458
|
||||||
|
84.778,27806
|
||||||
|
84.947,32767
|
||||||
|
85.115,31308
|
||||||
|
85.284,32767
|
||||||
|
85.368,26439
|
||||||
|
85.621,32492
|
||||||
|
85.705,29965
|
||||||
|
85.958,32767
|
||||||
|
86.126,32767
|
||||||
|
86.211,29632
|
||||||
|
86.295,32767
|
||||||
|
86.632,32767
|
||||||
|
86.716,26059
|
||||||
|
86.801,25544
|
||||||
|
86.969,32767
|
||||||
|
87.306,32767
|
||||||
|
87.39,25362
|
||||||
|
87.475,30738
|
||||||
|
87.643,32767
|
||||||
|
87.812,28238
|
||||||
|
87.896,25271
|
||||||
|
87.98,32767
|
||||||
|
88.233,26175
|
||||||
|
88.317,32767
|
||||||
|
88.486,25579
|
||||||
|
88.655,32767
|
||||||
|
88.739,27065
|
||||||
|
88.823,29194
|
||||||
|
88.992,32767
|
||||||
|
89.076,26450
|
||||||
|
89.16,25234
|
||||||
|
89.329,32767
|
||||||
|
89.413,29012
|
||||||
|
89.497,28347
|
|
Loading…
Reference in New Issue