Przeprowadziłem trochę wyszukiwania na tej stronie, ale, co zaskakujące, nie znalazłem wielu istotnych informacji, a moja wiedza na temat DSP jest bardzo ograniczona.
Mój cel jest dość prosty: chcę zaprogramować pogłos algorytmiczny w C ++, który brzmi naprawdę dobrze. A dokładniej, najlepszą opcją byłoby pozwolenie użytkownikowi końcowemu na wybór kompromisu między jakością a użytkowaniem procesora.
Z tego, co do tej pory odkryłem, jest to, że aby stworzyć pogłos, musisz wprowadzić suchy sygnał do algorytmu wczesnych odbić, a następnie do algorytmu późnych odbić. Czy to jest poprawne ?
Teraz znalazłem obszerny artykuł na temat części późnych refleksji, używając sieci opóźnień od sprzężenia zwrotnego ( REDUKUJĄC WYMAGANIA ODWIEDZANIA SZTUCZNEGO PRZY WYKORZYSTANIU SIECI OPÓŹNIANIA OPÓŹNIONEGO CZASEM ). Z tego, co przeczytałem, FDN jest wysokiej jakości, niezbyt ekspansywnym (pod względem procesora) sposobem symulowania późnych refleksów. Co więcej, myślę, że możesz kontrolować kompromis jakości / opłaty procesora, zmieniając liczbę linii opóźniających.
Jednak absolutnie nie mam pojęcia, jak zaprogramować algo wczesnych refleksów (pamiętasz? Naprawdę jestem ignorantem w dziedzinie DSP).
Logiczne byłoby dla mnie zastosowanie pewnego rodzaju opóźnień, które mają tę zaletę, że są łatwe w programowaniu i niedrogie obliczeniowo. Ale to brzmi zbyt prosto, aby mogło być prawdziwe.
Co więcej, mój instynkt podpowiada mi, że jeden lub kilka filtrów musi znajdować się gdzieś na ścieżce sygnału.
Czy ktoś mógłby mi wyjaśnić ten temat?
Dwie notatki:
- W ogóle nie chcę pogłosu konwolucji. Tak naprawdę nie dbam o realizm pogłosu, ale zamiast tego chcę dobrze brzmiącego, dostrajalnego, nie pogłębiającego procesora pogłosu.
- Również część kodująca nie jest tym, co mnie martwi, w przeciwnym razie zapytałbym o przepełnienie stosu. To naprawdę część DSP, i właśnie ta część, której szukam :)
źródło
Wykonanie dobrze brzmiącego pogłosu wcale NIE jest łatwe. Sieci opóźniające sprzężenie zwrotne są zdecydowanie najlepszym rozwiązaniem. Oryginalne algorytmy Schroedera ze wszystkimi przepustami i filtrami grzebieniowymi cierpią na „przerzedzenie spektralne”, co sprawia, że brzmi metalicznie. Musisz wybrać tłumienie zależne od częstotliwości na różnych liniach opóźniających, które są reprezentatywne dla czasu pogłosu (jako funkcja częstotliwości). Wczesne odbicia można wykonać za pomocą linii opóźnionego podsłuchu, również z pewnym tłumieniem zależnym od częstotliwości i kilkoma rozpraszaczami, aby je skorelować. Wykonanie stereo wymaga również pewnych środków dekorelacji.
Istnieje dość dobra implementacja open source, nazywa się GVerb i jest używana na przykład w Audacity. Wyszukiwarka Google powinna doprowadzić do (legalnej) kopii kodu źródłowego.
źródło