Mam 10MB-plik dźwiękowy .wav
, i zebrałem jej sample, leci 16000/s. Chcę ją wyświetlić jako fala dźwiękowa, na razie napisałem program w rubym, gtk żeby pokazać takie coś:
I to co robię, to po prostu iteruję po każdym bajcie z tego 10MB wave'a, kroję go na kawałki, w tym wypadku jak obrazek ma np 200 pikseli, to 10Mb/200=50Kb, i potem wyciągam średnią geometryczną z tych bloczków, i to jest wysokość mojego jednego słupka.
Niestety ten algorytm nie jest wydajny, bo wygenerowanie takiej fali dla Mb pliku zajmuje na moim kompie około 400-700ms.
Jest jakiś lepszy, szybszy sposób? Wiadomo, że im większy plik tym to będzie dłużej trwało, typu np. 1GB wave by się generował pewnie dłużej. Ale chciałbym po prostu ogarnąć coś, co pewnie jest prostsze, a będzie wydajne.