Wstęp
Zastosowania ogólne
Synteza dźwięku
WstępTeoria fraktali została zapoczątkowana przez Benoit Mandelbrot'a. Pierwsze obserwacje miały swoje źródło w ekonomii. Matematyk ów zauważył zaskakujące podobieństwo pomiędzy wykresami cen bawełny począwszy od dziennego, poprzez tygodniowy, na kilkuletnim kończąc. Dalsze badania w tym kierunku doprowadziły go do wydania w 1975 obszernego dzieła traktującego o dziwnych samopodobnych figurach które nazwał fractus (łac. połamany). Obecnie rozbudowane teorie oparte na funkcjach samopodobnych wykorzystywane są w wielu dziedzinach nauki, przetwarzaniu obrazu, także do syntezy dźwięku.
W powszechnym rozumieniu fraktale sa po prostu obrazami, które można w nieskończoność powiększać. Natomiast powiększony fragment może wykazywać duże podobieństwo do całego obrazu. Przykładem może być zbiór Mandelbrot'a.
![]()
Rys.1 Zbiór Mandelbrot'a w całości
![]()
Rys.2 Zbiór Mandelbrot'a - zaznaczony fragment
Z matematycznego punktu widzenia obrazy takie mogą być generowane za pomocą wielu funkcji nieliniowych ze sprzężeniem zwrotnym, czyli poddającym się iteracjom. Weźmy dla przykładu funkcję o postaci:
![]()
Rozpoczęcie z wartościami początkowymi x=0,1; R=2 da nam w kolejnych iteracjach następujące wartości:Jak widać przy podanych wartościach początkowych funkcja ta dochodzi do pewnej ustalonej wartości. Jednakże zastosowanie innych np. R=4; x=0,2 daje w rezultacie wyniki które można określić mianem szumu:
x1 = 0.1 x2 = 2 * 0.1 * (1.0 - 0.1) = 0.18 x3 = 2 * 0.18 * (1.0 - 0.18) = 0.295 x4 = 2 * 0.295 * (1.0 - 0.295) = 0.416 x5 = 2 * 0.416 * (1.0 - 0.416) = 0.486 x6 = 2 * 0.486 * (1.0 - 0.486) = 0.5 x7 = 2 * 0.5 * (1.0 - 0.5) = 0.5
![]()
Rys.3 Wykres funkcji dla R=4; x=0,2
Można stwierdzić, iż w zasadzie synteza dźwięku za pomocą fraktali nie sprawdza się, gdy chcemy uzyskać brzmienie zbliżone do jakiegoś instrumentu. Jednakże fraktale ze względu na swoje szczególne właściwości doskonale nadają się do generacji dźwięków spcjalnych. Wykorzystajmy funkcję Weierstrassa o postaci:
![]()
Jeśli przyjmiemy do generacji funkcję o skończonej ilości składników oraz w postaci przydatnej do generacji dźwięku cyfrowego możemy otrzymać ją w postaci:
![]()
Wykres czasowy tej funkcji przyjmuje postać:
![]()
Jeżeli natomiast do wzoru zamiast n podstawimy 2*n otrzymamy poniższy przebieg:
.
![]()
Obydwa powyższe wykresy wykazują się dużym podobieństwem, pomimo przeskalowania funkcji, co jest cechą fraktali. Ponadto dźwięki te posiadają także tę samą wysokość. Aby przekonać się o tym wystarczy posłuchać poniższych przykładów :
Przykład 1(7kB) dźwięk otrzymany wg. wzoru.
Przykład 2(7kB) dźwięk otrzymany po podstawieniu 2n zamiast n
Bardzo ciekawy efekt otrzymamy, jeśli użyjemy do generacji dźwięku wzoru o postaci:
![]()
Wówczas drugi dźwięk pomimo tego, że jest tak jakby szybciej odtwarzany (2n zamiast n) posiada niższe brzmienie:
Przykład 3(7kB) dźwięk otrzymany wg. wzoru.
Przykład 4(7kB) dźwięk otrzymany po podstawieniu 2n zamiast n
Obecnie najszersze zastosowanie w muzyce fraktale znajdują przy komponowaniu. Zastosowanie ich do generacji kodu MIDI potrafi przynieść bardzo ciekawe rezultaty, takie jak na przykład prezentowane poniżej:
Przykład 5(1,5kB) melodia ta została wygenerowana przeze mnie przy użyciu prostego programu dostępnego on line na stronie programu DISCOVERY
Przykład 6(13kB) ten utwór został stworzony przez Johna Haysa