Я пытаюсь сделать аудио-визуализатор, используя pygame, и я довольно застрял.У меня следующие недоразумения:
Как правильно анализировать аудиоданные?
В моем текущем подходе я сделал следующее:
- Считать файл .wav
- Сделал БПФ на выборке данных
- Сортировать выходные данные
- Передать минимальное, среднее и максимальное значения, нормализовав их какрадиус круга, который нужно нарисовать
Как отправить данные, если я хочу создать различные прямоугольные блоки на их основе?
В моем подходе1, так как я отсортировал данные, на самом деле это не дает мне необходимой визуализации.Если я хочу нарисовать 60 прямоугольников (скажем), какую часть списка я должен нарезать?
Мой текущий код:
def analyze(a,b):
rate,audData = scipy.io.wavfile.read("songs/wav/second.wav")
channel = audData[:,0] #left channel
CHUNK = 1024
a += CHUNK
b += CHUNK
print(len(channel))
fft_data = np.fft.fft(channel[a:b])
freq = np.absolute(fft_data)
freq = freq[freq <= 25000]
sorted_freq = np.sort(freq)
#print(sorted_freq)
#sorted_freq = sorted_freq
#print(sorted_freq)
r1 = int(( sorted_freq[0] / 22000 ) * 100)
r2 = int(( sorted_freq[int(len(sorted_freq)/2)+50] / 22000 ) * 100)
r3 = int(( sorted_freq.max()/ 22000) * 100)
return r1,r2,r3
Это действительно мой первый опыт работы с аудиоданными, я был бы очень признателен, если бы вы также могли дать общий обзор аудиовизуализация в целом.Я прочитал довольно много статей, но не смог понять концепцию.