Materiał mający za zadanie przybliżyć podstawy dotyczące syntezy dźwięku. Uwaga: nie mam wykształcenia muzycznego, więc cześć z informacji może nie być całkowicie zgodna z teorią muzyki, jest ona raczej moim sposobem przybliżenia wam pewnych aspektów z jakimi możecie się spotkać w ramach pracy na waszą syntezą.

Polifonia jedno- lub wielo-instrumentowa

Prosta sugestia co robimy, gdy chcemy zagrać dużo dźwięków na raz na jednym kanale (na przykład jeden akord)? Dodajemy je do siebie. Jeżeli w jakimś momencie dochodzi do tego, że przekraczamy domyślne zakresy, czyli gdy z jakiegoś powodu otrzymujemy wartości większe od 1 lub mniejsze od -1, to najlepiej podzielić przez pewną domyślną ilość np. widzimy, że problemy wystąpią przy 8 jednoczesnych dźwiękach, ale wystarczy, że podzielimy całość przez 2 i już tych problemów nie będzie.

Czym są akordy?

Akord to współbrzmienie co najmniej trzech dźwięków o różnej wysokości i nazwie. Nazwa pojedynczego akordu trójdźwiękowego bierze się zwykle od najniższego z dźwięków (np. C major albo A minor). Drugi człon nazwy określa rozkład półtonów w akordzie, Akord molowy (minor chord) ma rozkład rozkład półtonów 0-3-4 czyli np. C minor to C D# H. Akord durowy (major chord) ma rozkład półtonów 0-4-3 czyli np. C major to C E H.

Przykłady na Wikipedii z plikami dźwiękowymi: Akord durowy oraz Akord molowy

Obwiednia ADSR

Ostatnim elementem syntezatora, jaki przydało by się zaimplementować jest obwiednia dźwięku. W naszym przypadku będzie to obwiednia ADSR (ang. attack, decay, sustain, and release). Parametry A,D oraz R są parametrami czasowymi natomiast S jest parametrem odpowiadającym za głośność. W prosty i zrozumiały sposób działanie obwiedni ADSR zostało przedstawione na filmie z którym polecam się teraz zapoznać. Ogólnie rzecz ujmując obwiednia zmienia głośność całego generowanego sygnału podczas jego trwania. Atak odpowiada jego wzbudzeniu czyli czasowi od rozpoczęcia grania do osiągnięcia maksymalnej głośności (np. uderzenie w klawisz fortepianu). Decay odpowiada czasowi jaki jest potrzebny, aby przejść z maksymalnej głośności do fazy stabilizacji sygnału (wybrzmienia). Sustain to faza wybrzmienia trwa tak długo jak naciskamy przycisk (lub w naturze, gdy energia w strunie się skończy i naturalnie wygasi się drganie). Ostatnią fazą jest Release, czyli wygaszenie dźwięku do ciszy.

Przykład obwiedni ADSR

W najprostszym przypadku na podstawie czasu wynikającego z BPM wyliczamy czas trwania ćwierć nuty. Jest to czas dla bloku ADS, a następnie następuje R. Jest to cały czas naszej obwiedni, co jak można zauważyć dla bardzo krótkich sygnałów może się nawet skończyć sytuacją AR - czyli samym atakiem (możliwe że nie pełnym) od razu przechodzącym w Release. Jej nakładanie polega na mnożeniu chwilowej wartości naszego generowanego sygnału poprzez jej wartość. Podobnie jak w podpowiedzi do poprzedniej części obwiednię również można przechowywać w postaci tablic(y) (look-up-table) do której odwołujemy się po wartości czasu.