added note merging by frequency

This commit is contained in:
Alexandre 2024-12-18 22:21:48 +01:00
parent 05b642bdcc
commit 8f035375ab
2 changed files with 38 additions and 11 deletions

BIN
audio.wav

Binary file not shown.

View File

@ -180,7 +180,7 @@ def keep_highest(song_name, offset, songlen, segsize, count, output_name, minfre
a_ampl = 0 a_ampl = 0
# -------------------------------------------- Clean with freq -------------------------------------------- # # -------------------------------------------- Compute freqs -------------------------------------------- #
ssize_0 = segsize/3 ssize_0 = segsize/3
locf = [] # frequencies locf = [] # frequencies
@ -209,6 +209,32 @@ def keep_highest(song_name, offset, songlen, segsize, count, output_name, minfre
locf.append(fmax) locf.append(fmax)
# -------------------------------------------- Merge -------------------------------------------- #
k = 0
while(k < len(locs)):
delta_t = 0
if(type(loct[k]) == float):
delta_t += loct[k]
else:
delta_t += (loct[k][0] + loct[k][1])/2
if(type(loct[k-1]) == float):
delta_t -= loct[k-1]
else:
delta_t -= (loct[k-1][0] + loct[k-1][1])/2
if(k > 0 and np.abs(delta_t) < segsize and np.abs(locs[k] - locs[k-1]) < 50 and is_note_within(locf[k], locf[k-1])):
loct[k-1] = [loct[k-1], loct[k]]
locs[k-1] = (locs[k-1] + locs[k])/2
loct[k] = -1
locs[k] = -1
locf[k] = -1
loct.remove(-1)
locs.remove(-1)
locf.remove(-1)
k += 1
# -------------------------------------------- Plot -------------------------------------------- # # -------------------------------------------- Plot -------------------------------------------- #
plt_loct_all = [] plt_loct_all = []
@ -228,10 +254,11 @@ def keep_highest(song_name, offset, songlen, segsize, count, output_name, minfre
plt_slids.append(locs[i]) plt_slids.append(locs[i])
plt_slids.append(locs[i]) plt_slids.append(locs[i])
plt.plot(new_new_t, new_new_amps, "y-") plt.plot(new_new_t, new_new_amps, "y-", label="amplitude (ua)")
plt.plot(plt_loct, plt_locs, "ro") plt.plot(plt_loct, plt_locs, "ro", label="circles")
plt.plot(plt_slidt, plt_slids, "go") plt.plot(plt_slidt, plt_slids, "go", label="sliders")
plt.plot(plt_loct_all, locf, "mo") plt.plot(plt_loct_all, locf, "mo", label="frequencies (Hz)")
plt.legend(loc="upper left")
'''plt.plot(new_times, new_freqs) '''plt.plot(new_times, new_freqs)
plt.plot(new_times, [elt*1000/mx for elt in new_ampls]) plt.plot(new_times, [elt*1000/mx for elt in new_ampls])
@ -241,7 +268,7 @@ def keep_highest(song_name, offset, songlen, segsize, count, output_name, minfre
# -------------------------------------------- Write -------------------------------------------- # # -------------------------------------------- Write -------------------------------------------- #
return (loct, locs) # amplitude result, sliders and frequency result return (loct, locs)
def convert_to_wav(song_name:str, output_file="audio.wav") -> str: def convert_to_wav(song_name:str, output_file="audio.wav") -> str:
""" """
@ -306,14 +333,14 @@ BPM = 149.3
SEGSIZE = 1/(BPM/60) SEGSIZE = 1/(BPM/60)
wavved_song = convert_to_wav("songs/ctype.mp3") wavved_song = convert_to_wav("songs/ctype.mp3")
''' '''
'''
# tetris_2 # tetris_2
SONG_LEN = 10 SONG_LEN = 10
OFFSET = 0 OFFSET = 0
BPM = 157 BPM = 157
SEGSIZE = 1/(BPM/60) SEGSIZE = 1/(BPM/60)
wavved_song = convert_to_wav("songs/tetris_2.wav") wavved_song = convert_to_wav("songs/tetris_2.wav")
'''
''' '''
# test # test
SONG_LEN = 1 SONG_LEN = 1
@ -331,20 +358,20 @@ wavved_song = convert_to_wav("songs/furioso melodia.mp3")
''' '''
''' '''
# E # E
SONG_LEN = 30 SONG_LEN = 15
OFFSET = 2.641 OFFSET = 2.641
BPM = 155 BPM = 155
SEGSIZE = 1/(BPM/60) SEGSIZE = 1/(BPM/60)
wavved_song = convert_to_wav("songs/rushe.mp3") wavved_song = convert_to_wav("songs/rushe.mp3")
''' '''
'''
# Tsubaki # Tsubaki
SONG_LEN = 10 SONG_LEN = 10
OFFSET = 35.659 OFFSET = 35.659
BPM = 199 BPM = 199
SEGSIZE = 1/(BPM/60) SEGSIZE = 1/(BPM/60)
wavved_song = convert_to_wav("songs/TSUBAKI.mp3") wavved_song = convert_to_wav("songs/TSUBAKI.mp3")
'''
''' '''
# death # death
SONG_LEN = 8 SONG_LEN = 8