Jakie są podstawowe kategorie operacji wykonywanych na sygnałach audio w celu stworzenia interesujących dźwięków?


10

Nie wiem, czy to pytanie będzie miało sens, ponieważ jestem nowy w dsp.

W mojej ograniczonej wyprawie do dsp audio natknąłem się na:

  1. Modulacja częstotliwości
  2. Modulacja amplitudy
  3. Synteza addytywna
  4. Synteza odejmująca

Moje pytanie brzmi: czy są to główne podstawowe kategorie manipulacji sygnałem (szczególnie w przypadku dźwięku)?

Innymi słowy, czy wszystkie efekty i fantazyjne rzeczy, które może zrobić FL Studio z pełnym pakietem wtyczek, można podzielić na serię i kombinację powyższych 4 operacji? A może jest o wiele więcej? Czy współczesny DAW z wtyczkami teoretycznie można w ten sposób podzielić na dowolne kategorie? Czy powyższe 4 kategorie mają sens same w sobie ?!

Trochę tła: Zasadniczo staram się stworzyć bardzo prosty (ale bardzo elastyczny) syntezator / edytor audio jako projekt do nauki programowania i audio dsp. Korzystając z java zacząłem od naśladowania podstawowych klas syntezatora w prawdziwym świecie, nazywając takie rzeczy, jak Oscillator i LFO itp., Ale za każdym razem, gdy uczę się czegoś nowego, muszę przepisać wszystko, aby dopasować nową koncepcję do programu.

Próbuję zacząć od nowa teraz i wymyślić podstawowe obiekty i strukturę programu. Aby to zrobić poprawnie, muszę wiedzieć, jak powinienem pozwolić tym obiektom na interakcję itp ...

Dzięki!

EDYCJA * * *

Dzięki za przydatne komentarze i odpowiedzi. Zdaję sobie sprawę, że prawdopodobnie nie doceniałem strony dsp rzeczy i nie będę w stanie stworzyć podstawowego szablonu i struktury dla prostego syntezatora, a następnie po prostu go rozwinąć / zbudować na nim. Prawdopodobnie będę musiał wielokrotnie przebudowywać, kiedy uczę się nowych rzeczy i „właściwego” sposobu robienia rzeczy ... To potrwa dłużej, ale może nauczę się więcej? Przepraszam też, że nie mam jeszcze wystarczającej liczby przedstawicieli, aby głosować na kogoś jeszcze ... tak szybko, jak to możliwe, zrobię to.

EDYCJA * EDYCJA ***

Powinienem dodać, że trochę googlingu ujawniło ten podstawowy przewodnik po „rodzajach syntezy”, które uznałem za istotne i interesujące.


Czy chcesz teoretyczne podstawy technik syntezy, czy może potrzebujesz czegoś takiego (tj. Typowych metod stosowanych w praktyce)? dsp.stackexchange.com/questions/192/…
Datageist

1
Gdybym miał podsumować wszystkie możliwe manipulacje dźwiękiem w jak najmniejszej liczbie kategorii, nazwałbym transformacje liniowe i nieliniowe. Ale są one zbyt ogólne i szerokie, aby można je było wdrożyć.
Alexey Frunze

@datageist - Chyba będę potrzebować obu! Ale to bardzo przydatny link, dzięki.
kiman

@Alex To jest bardzo ogólne, ale jest to koncepcyjny punkt wyjścia i przynajmniej teraz wiem, że trochę szczekałem na niewłaściwe drzewo.
kiman

pobierz książkę Willa Pirkle'a, Projektowanie oprogramowania Wtyczki syntezatora w C ++: dla RackAFX, VST3 i jednostek audio. tak naprawdę będziesz tworzyć syntezator i uczyć się po drodze, zamiast próbować samodzielnie wszystko rozgryźć.
panthyon

Odpowiedzi:


9

out(t)jan(t)

W sercu wszystkich efektów dźwiękowych zapewnianych przez oprogramowanie do produkcji muzyki nie ma magicznego silnika jednofunkcyjnego. Ale jeśli spojrzysz na kod źródłowy dużego zestawu efektów audio od programisty DSP, oto kilka „bloków konstrukcyjnych”, które zostaną uwzględnione w ich własnych klasach i które są wspólne dla wielu różnych efektów. Nie sugeruję, że stanowi to dobrą podstawę do kategoryzacji efektów; ale z punktu widzenia implementacji bloki te są niezbędne:

  • Filtry biquad.
  • Ułamkowe linie opóźniające.
  • Silnik konwekcyjny do szybkiego konwertowania sygnału wejściowego o odpowiedzi impulsowej o dowolnej wielkości.
  • Waveshaper (zastosowanie funkcji nieliniowej do sygnału wejściowego w dziedzinie czasu).
  • Bloki konstrukcyjne syntezatora: oscylatory, LFO, koperty ADSR.
  • Detektory sygnałów: popychacz obwiedni, ekstraktor f0.

Za pomocą tych bloków możesz zbudować:

  • Filtry podobne do synth lub wah-wah: jedna lub dwie bikwady
  • Auto-wah: obserwator kopert + koperta + biquad
  • Flanger / Phaser: LFO + linia opóźniająca
  • Refren: LFO + linie opóźniające
  • Algorytmiczny pogłos: linie opóźniające (tablica równoległych i szeregowych filtrów grzebieniowych)
  • Pogłos konwolucji: splot
  • Spatializer: splot (z odpowiedziami impulsowymi HRTF)
  • Symulacja wzmacniacza gitarowego: splot, zmieniacze fal
  • Distortion, Fuzz: gain + wavehapper
  • Bitcrusher (kwantyzator): szczególny przypadek wavehappera
  • Modulator pierścieniowy z nośnikiem sinusoidalnym: oscylator
  • Bramka szumów i inne efekty dynamiczne: obserwator obwiedni
  • Symulacja taśmy: splot, falowanie, śledzenie obwiedni (do przetwarzania dynamiki)
  • EQ: biquady
  • Tremolo: LFO
  • Emulacja Leslie: splot + LFO
  • Vocoder: biquady + obserwator kopert

Podczas gdy niektóre z tych efektów to tylko łatanie różnych bloków (flanger naprawdę jest LFO modulującym linię opóźniającą), niektóre inne efekty wymagają bardziej złożonego kleju między częściami, który jest na tyle specyficzny, że nie można go uwzględnić w bloku konstrukcyjnym własny.

Jest to ogólnie interesujący zestaw efektów, który obejmie wiele podstaw do produkcji muzyki, ale nie jest wyczerpujący i rzeczywiście są pewne efekty, które nie pasują do tego frameworka ... Kilka przykładów: * Brudny reduktor częstotliwości próbkowania (w bitcrusher): prawda, jest to pomnożenie przez grzebień diraca, a następnie splot przez prostokątne okno ... ale łatwiej jest napisać to jako coś, co powiela wartość jednej próbki na N kolejnych próbek zamiast łatania modulacji amplitudy i splot! * Efekty zmiany wysokości dźwięku (zmiana wysokości tonu, automatyczne dostrajanie) nie pasują do tego frameworka. Potrzebują bardziej złożonej reprezentacji sygnału audio, który należy wykonać (wokoder fazowy dla metod w dziedzinie częstotliwości; wykrywanie wysokości tonu i znaczniki wysokości dla metod w dziedzinie czasu).

Sugeruję, abyś bawił się narzędziami „modularnymi”, takimi jak Pd, Reaktor, Plogue, SyntheEdit ... - i wypróbuj efekty z podstawowych bloków konstrukcyjnych, które one zapewniają.


2
Do tego, co jest warte, modulacja częstotliwości jest używana w syntezie FM. Łatwo to zauważyć w przypadku modulacji jednotonowej FM, która daje sygnał z szeregiem Fouriera zdefiniowanym przez funkcje Bessela pierwszego rodzaju.
Bryan

1
„Synteza FM” zaimplementowana w syntezatorach (takich jak seria Yamaha DX, sprzęt oparty na OPL i ich emulacja programowa) jest błędna, ponieważ w rzeczywistości odbywa się to za pomocą modulacji faz. en.wikipedia.org/wiki/Phase_modulation
pikenety

Nie widzę żadnych źródeł dołączonych do tego wpisu w Wikipedii. Niezależnie od tego, zgodnie z tym wpisem, brzmi on „podobnie” i że PM jest używany, ponieważ FM jest trudniejszy do wdrożenia. Nie kupuję tego, ponieważ FM jest szczególnym przypadkiem PM. Jednak teoria, którą przytoczyłem za modulacją FM wytwarzającą harmoniczne związane z funkcjami Bessela, jest i jest użyteczna.
Bryan

@Bryan. Patrz zastrzeżenie 1 patentu na syntezę „FM”, US4018121. Sin (wt + I (t) sin w_m t) - to modulacja fazowa. PM jest łatwiejszy do wdrożenia, ponieważ 1 / nie potrzebujesz dodatkowego akumulatora, aby zintegrować zmienną częstotliwość chwilową z fazą - zobacz kilka postów tutaj, w których ludzie próbowali wygenerować dźwięk o zmiennej częstotliwości i został ugryziony 2 / zamiana częstotliwości na przyrost fazowy wymaga podziału. Za pomocą PM przeliczasz przyrosty faz z prędkością modulacji; w przypadku FM należy ponownie obliczyć przyrosty faz przy częstotliwości próbkowania.
pikenety

Bardzo przydatna odpowiedź, dziękuję. Zdaję sobie sprawę, że skupiłem się na aspekcie programistycznym (właśnie się uczę) i nie potraktowałem wystarczająco poważnie strony dsp. Prawdopodobnie nie będzie to projekt, który mogę zacząć od małego i stopniowo rozbudowywać, ale taki, który będę musiał przebudowywać i przebudowywać wiele razy, kiedy się uczę.
kiman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.