Attempt to fix snap
This commit is contained in:
parent
0fcad4174a
commit
e2e207c294
|
@ -419,7 +419,6 @@ def snap(data, sample_rate, bpm, divisor, show=False):
|
|||
while(t < i/sample_rate):
|
||||
t = k/(bpm*divisor)
|
||||
k += 60
|
||||
|
||||
'''
|
||||
if(np.abs(i/sample_rate - k/(bpm*divisor)) > np.abs(i/sample_rate - (k-60)/(bpm*divisor))):
|
||||
k -= 60
|
||||
|
@ -451,28 +450,54 @@ def snap2(data, sample_rate, bpm, first_offset=0, div=4, show=False):
|
|||
bpm = float
|
||||
"""
|
||||
|
||||
new = [0 for i in range(int(1000*len(data)/sample_rate))]
|
||||
song_len = int(len(data)/sample_rate)
|
||||
|
||||
reduced = [0 for i in range(song_len*1000)]
|
||||
new = [0 for i in range(song_len*1000)]
|
||||
|
||||
# build the reduced version
|
||||
for i in range(len(data)):
|
||||
x = int(i*1000/sample_rate)
|
||||
if(x < len(reduced)):
|
||||
reduced[x] = max(reduced[x], data[i])
|
||||
|
||||
|
||||
print("Build done")
|
||||
# snap
|
||||
k = 0
|
||||
current_t = first_offset
|
||||
|
||||
for i in range(len(data)):
|
||||
|
||||
if(i/sample_rate > current_t):
|
||||
while(current_t < 0):
|
||||
k += 1
|
||||
current_t = first_offset + k*60/(bpm*div)
|
||||
|
||||
x = int(current_t*1000)
|
||||
if(x < len(new)):
|
||||
new[x] = max(new[x], data[i])
|
||||
for j in range(len(new)):
|
||||
if(j/1000 > current_t):
|
||||
k += 1
|
||||
current_t = first_offset + k*60/(bpm*div)
|
||||
|
||||
y = int(current_t*1000)
|
||||
if(y < len(new)):
|
||||
new[y] = max(new[y], reduced[j])
|
||||
|
||||
print("Snap done")
|
||||
|
||||
if(show):
|
||||
t = [j/1000+first_offset for j in range(len(new))]
|
||||
beats = [0 for j in range(len(new))]
|
||||
|
||||
k = 0
|
||||
while((first_offset + k*60/(bpm*div)*1000 < len(new))):
|
||||
beats[int(first_offset + k*60/(bpm*div)*1000)] = 16384
|
||||
current_t = first_offset
|
||||
|
||||
while(current_t < 0):
|
||||
k += 1
|
||||
current_t = first_offset + k*60/(bpm*div)
|
||||
|
||||
while(1000*current_t < len(new)):
|
||||
beats[int(1000*current_t)] = 16384
|
||||
|
||||
k += 1
|
||||
current_t = first_offset + k*60/(bpm*div)
|
||||
|
||||
plt.plot(t, beats)
|
||||
plt.plot(t, new)
|
||||
|
@ -532,7 +557,7 @@ def process_song(filename, bpm, offset0=0, div_len_factor=1, n_iter_2=-1, thresh
|
|||
return convert_tuple(datares, frequencies)
|
||||
|
||||
def main():
|
||||
data = process_song("tetris_4.wav", 160, n_iter_2 = 64)
|
||||
data = process_song("tetris_4.wav", 160, n_iter_2 = 32)
|
||||
#print(data)
|
||||
print("Program finished with return 0")
|
||||
|
||||
|
|
Loading…
Reference in New Issue