13 lutego 2011

Dźwięk i fale dźwiękowe cz. 2

Oto druga, myślę że ciekawsza część rozważań na temat dźwięku i fal dźwiękowych. Część pierwsza dostępna jest tutaj.

Przejdźmy teraz do zagadnienia fali dźwiękowej na komputerze. W domenie cyfrowej, dźwięk przechowywany jest pod postacią próbek. W przypadku popularnej częstotliwości próbkowania 44,1 kHz oraz rozdzielczości 16 bit, próbek takich jest 44 100 dla każdej sekundy nagrania. Ponadto każda próbka może mieć jedną z 65 536 (216) wartości.

Przykładowo pół-sekundowy fragment fali sinusoidalnej wygląda następująco:

Rys.1. Fala sinusoidalna 125Hz (ok. 0,5 sekundy) w programie Reaper, . Opracowanie własne.


 
Po przybliżeniu zobaczymy coś takiego:

Rys. 2. Kilkadziesiąt pierwszych próbek fali 125Hz w programie Reaper. Opracowanie własne.



Powyższy rysunek przedstawia 5 ms tonu prostego 125Hz, poniżej pierwsze 40 próbek, czyli niecała 1 ms.

Rys. 3. Pierwsze 40 próbek fali 125Hz w programie Reaper. Opracowanie własne.


 
Informacje w np. pliku .wav są przechowywane jako ciąg liczb. Przykładowo powyższy fragment może być zapisany jako następujący ciąg wartości:

Tabela 1. Fragment pliku .wav poddanego analizie w programie Octave. Opracowanie własne.
  
Jak interpretować powyższą tabelkę? Jest to wynik pracy przetwornika analogo-cyfrowego. Siedzi sobie taki przetwornik w karcie dźwiękowej i ponad 44 tys razy na sekundę bada sygnał który dostarczamy mu na wejściu. W jednej chwili odczytuje wartość -0,82 V, chwilę później (a dokładnie 1/44100 s czyli 0,023 ms później) znów odczytuje napięcie sygnału i zapisuje je, tym razem było to -0,78 V itd.

44,1 kHz to najmniejsza częstotliwość próbkowania z obecnie stosowanych, produkowane obecnie przetworniki pracują raczej z wyższymi parametrami; 48 kHz, 96 kHz, 192 kHz i nawet więcej. Im wyższa częstotliwość próbkowania tym bardziej zbliżony do rzeczywistego przebiegu plik dźwiękowy uzyskamy.

Teoria mówi, że wystarczy 2-krotnie wyższa częstotliwość próbkowania niż najwyższa częstotliwość próbkowanego sygnału. Dla człowieka użyteczny sygnał akustyczny kończy się na częstotliwości 20kHz, a więc 44,1kHz powinny być w zupełności wystarczające. Ponieważ jednak dokonuje się wielu operacji na plikach (próbkach), a wyniki obliczeń są zaokrąglane, uzasadnione jest stosowanie wyższych wartości. To tak w skrócie i wielkim uproszczeniu.

Wróćmy jeszcze do rozdzielczości bitowej. Dla przetwornika pracującego z rozdzielczością 16 bitową, mamy 216 czyli wspomniane 65 536 możliwości zapisu. Dla przetwornika 24 bitowego jest to już 2 24 a więc prawie 16,8 miliona możliwości. O ile częstotliwość próbkowania związana jest głównie z górna granicą częstotliwości próbkowanego sygnału (największą możliwą do odwzorowania), o tyle rozdzielczość odpowiada za dynamikę sygnału. Im więcej bitów, tym więcej możliwości, a więc szerszy zakres poziomów głośności.

Przyjmuje się, że ilość decybeli możliwych do zarejestrowania ma następujący związek z ilością bitów:

ilość dB = 6 x ilość bitów

A więc 16 bitowy przetwornik jest w stanie zarejestrować sygnał z 96 dB dynamiką. 24 bitowy już 144 dB. Ten drugi pokrywa więc z nawiązką całkowity zakres dynamiki sygnałów użytecznych dla człowieka (przypomnę, że granica słyszenia bolesnego to 120-130 dB).

W programach do obróbki dźwięku mamy do czynienia z graficzną reprezentacją poszczególnych próbek, które są ze sobą łączone, aby łatwiej było nam je zinterpretować.

Wszelkie operacje na pliku to zwykłe działania matematyczne, dodawanie, mnożenie i inne bardziej skomplikowane w zależności od złożoności algorytmu. Jedna z najprostszych operacji – zgłaśnienie, to po prostu przemnożenie próbek przez jakąś liczbę, np. 2. Dlatego nie ma znaczenia z jakiego programu DAW korzystamy, ponieważ jest to tylko nieco bardziej skomplikowany kalkulator. Znaczenie ma jakich wtyczek używamy. Mogą one opierać się o dobre algorytmy, lub o takie które będą generować niezbyt dobre jakościowo efekty. Wszystko powinniśmy weryfikować przez odsłuchanie, nie powinniśmy sugerować się ceną programu. Wiele darmowych wtyczek brzmi lepiej niż ich płatne odpowiedniki! Doskonałym źródłem oferty dobrych bezpłatnych wtyczek/programów jest strona 0dB.pl.

Na koniec zamieszczam kilka przykładów bardziej życiowych niż czyste fale sinusoidalne. Jak już pisałem na początku wszelkie dźwięki mowy, muzyki a nawet szumów losowych złożone są ze skończonej ilości fal sinusoidalnych. Własność ta wykorzystywana jest w wielu programach/wtyczkach do obróbki dźwięku. Nagranie powiedzmy głosu może zostać rozłożone na składowe sinusoidalne, z których każda może zostać poddana pewnym działaniom, a następnie wszystko zostaje złożone w 1 plik dźwiękowy. Jak to jest dokładnie robione, wiedzą już tylko informatycy piszący programy :) W ten sposób np. poprawia się nagrania wokalistów korygując fragmenty (lub całe nagrania :) zaśpiewane poza skalą, za szybko, za wolno itd.


Rys. 4. Porównanie kilku sygnałów od tonu prostego do muzyki. Opracowanie własne.
 
Zobaczmy i posłuchajmy jak to wygląda w praktyce:




Uff. To był zdecydowanie najdłuższy wpis na blogu, dlatego postanowiłem podzielić go na dwie części. Jednak mam nadzieję, że nie zanudziłem was na śmierć. Jak zawsze zapraszam do komentowania.


____________________________________________________________________
Wszelkie prawa zastrzeżone 
Copyright © Michał Pytko 2011

3 komentarze:

  1. Lubie miejsca gdzie się coś tworzy a nie odtwarza z innych stron. Świetna robota. Pozdrawiam

    OdpowiedzUsuń
  2. Bardzo dobry artykuł. Przeczytałem wszystkie w celu odświeżenia wiedzy. Dzięki wielkie!

    OdpowiedzUsuń
  3. Bardzo dobrze zredagowane artykuły, czyta się lepiej niż niejedną książkę lub skrypt, wyciągasz najważniejsze informację i jasno je tłumaczysz, mam nadzieję że powrócisz do tłumaczenia zagadnień z teorii!

    OdpowiedzUsuń