Програмиране на най-простия ривърб

Качено от mic на Thu, 03/29/2018 - 21:35

Пост на госта Anton Kamenov, превод от Programming the simplest reverb

Един типичен ривърб обикновено е създаден с две части. Първо, една многоизходна линия на забавянето се използва за да се имитират първите (ранните) отражения, които би трябвало да са малко на брой и отчетливи. Второ, един ривърб на Шрьодер се използва за да имитира късния ривърб, който съдържа много отражения, които не се отличават едно от друго. Самият ривърб на Шрьодер се състои от няколко последователни всичкопропускащи филтри, изхода от които се пуска през няколко паралелни напредващи гребенови филтри (прости дилеи).

Със или без многоизходна линия на забавянето?

От една страна, една многоизходна линия на забавянето не дава добро усещане за размера на стаята. При по-големи стаи, трябва да очакваме по-голямо забавяне, преди първите отражения на звука да отскочат от стените и да стигнат до слушателя. От друга страна, тези първи отражения ще са наистина отчетливи и ще се забелязват само ако стаята е празна и доста голяма, може би с размера на едно голямо заведение, ако предположим постоянна скорост на звука от 300 m / s. На практика, ривърбите, които обикновено ще използваме като инженери са по-къси.

По-важното е, че много прости дилеи на оригиналния звук обикновено са прекалени и даже и дразнят. Така, някои създадели на изкуствени ривърби, като например Lexicon, спорят за пренебрегване на многоизходната линия на забавянето и за имитирането само на късния ривърб. Също така, гребеновите филтри на ривърба на Шрьодер трябва да са достатъчни за създаването на едно усещане за размера на стаята, даже и ако не използваме многоизходната линия на забавянето. Сигурно е по-добре (и по-лесно) да създадем един ривърб без многоизходната линия на забавянето.

Колко гребенови филтри?

Ривърба на Шрьодер използва четири паралелни гребенови филтъра. Четири сигурно е подходящо, въпреки че, според моя опит, два са достатъчни. Забележи, че Шрьодер е видял доста върхове в естествените реверберации – около 15. Така, два гребенови филтъра сигурно не са достатъчни, ако наистина искаме да имитираме естествените реверберации. Трябва обаче да мислим за това, какво звучи добре, а не непременно за какво е най-естествено. Два, три или четири гребенови филтъра е може би въпрос на вкус.

Какви гребенови филтри?

Аз реших да сложа гребеновите филтри първи и да пусна техния изход през всичкопропускащите филтри. Причината за това бе проста – с конструкцията на Шрьодер, трябва да внимаваме да изберем различни забавяния в гребеновите филтри и във всичкопропускащите филтри. По-точно, забавянията трябва да са взаимно прости числа, така че да не се получи една ситуация, при която няколко забавяния на един всичкопропускащ филтър съвпадат точно със забавянето на един от гребеновите филтъра или пък обратното. Ако се получи това, че имаме върхове в реверберирания звук. Ако има прекалено много такива върхове, ривърба ще звъни неестествено.

Това създава един добре познат проблем – трудно е да се настроят изкуствените ривърби. Трудно е да намерим правилните забавяния, които избягват неестествения звън. Най-вече е трудно да се настрои ривърба автоматично, след като позволим на потребителя да избира различни параметри за ривърба.

Това е така обаче, само ако наистина използваме конструкцията на Шрьодер. Не е задължително. Да предположим, че вместо това ще сложим гребеновите филтри първи и ще пуснем само изхода от последния гребенов филтър (този с най-голямото забаяне) през всичкопропускащите филтри. Тогава ще имаме само едно единствено повторение на оригиналния звук, което трябва да се повтори многократно за да се създаде ривърба. Тогава, единственото нещо, за което трябва да се погрижим, са забавянията на всичкопропускащите филтри. Не трябва да се тревожим за забавянията на гребеновите филтри.

Единственото нещо е да направим така, че забавянията на гребеновите филтри наистина да отговарят на размера на стаята. Това е лесно. Винаги можем да предположим, че ширината и дължината на стаята са някакви (по-добре неравни), да сложим виртуалния източник на звука в средата и да изчислим времето, което ще отнеме на звука да иде от източника на звука до стените и обратно.

А другите гребенови филтри?

Ако ще пускаме само изхода на последния гребенов филтър през всичкопропускащите филтри, тогава имаме един проблем подобен на този при многоизходната линия на забавянето. При симулирането на стаи, които са достатъчно големи, другите гребенови филтри ще бъдат едни прости повторения на оригиналния звук, което ще дразни. Решението обаче е просто. Трябва просто малко да размием тези повторения, като създадем един ефект подобен на един хор. Тоест, ще ги повторим няколко пъти с много къси забавяния (аз избрах около 7 ms).

Забележи, че това не е един истински хор. Един истински хор няма да използва затихване и обикновено ще променя забавянето. Тук обаче, използваме затихването на ривърба и не ни трябва да променяме забавянето.

Колко пъти трябва да повтаряме изхода от всеки от гребеновите филтри (с изключение на последния)? Цялата причина да пускаме само последния гребенов филтър през всичкопропускащите филтри е да избегнем наслагването на повторенията на всичкопропускащите филтри на няколко изхода от гребенови филтри. Едно такова наслагване трудно се контролира. Така, ако ще размиваме гребеновите филтри, би трябвало да добавяме повторения само до точката, в която ще се появи следващия гребенов филтър. Например, ако имаме два гребенови филтъра, първият произвежда повторение 50 ms след оригиналния сигнал, втория дава едно повторения 100 ms след оригиналния сигнал и решаваме да повторим първия гребенов филтър всеки 5 ms, тогава ни трябват само около 10 повторения. Това е лесно за всеки компютър.

Колко всичкопропускащи филтъра?

Наистина не зная отговора на този въпрос. Ривърба на Шрьодер използва четири или повече. Според мен, три са достатъчни. Някои инженери казват, че един ривърб, който звучи естествено, трябва да има поне 1000-2000 повторения в секунда, но с последователните всичкопропускащи филтри на Шрьодер е лесно да се получат много повече. Три всичкопропускащи филтъра със забавяния от приблизително 3 ms, 7 ms и 11 ms дават един ривърб, който звучи OK. Все пак обаче, този ривърб има някакви (много леки) металични обертонове, но не съм експериментирал достатъчно да съм сигурен. Най-вероятно, тези забавяния са прекалено къси. Шрьодер използва забавяния с дължина 100 ms / 3k, k = 0, 1, 2, ….

Какви всичкопропускащи филтри?

Въпреки че забавянията на трите всичкопропускащи филтъра по-горе са взаимно прости числа – 3 ms, 7 ms, and 11 ms, това не е важно. Цифровите сигнали идват в буфери от байтове. По-важно е да се изберат забавяния, които, когато са изчислени в байтове (или брой проби, какъвто и да е буфера), са взаимно прости. Също така, "взаимно прости" е просто трудно за изчисление. По-лесно е да се намери една таблица с прости числа от интернета и да са вземат забавяния, които са прости числа (брой байтове или проби) – простите числа, които са достатъчно близо до желаните съответни забавяния в милисекунди.

А един еквилайзер?

Ривърбите обикновено имат и еквилайзер, целта на който е да се създаде усещането за по-ярки или по-мрачни стаи. Еквилайзера е лесна работа. Единствения въпрос е – къде да го сложим? Сигурно няма значение, но най-лесното нещо е да го сложим преди всички останали филтри. Изхода от еквилайзера ще бъде входа към конструкцията на ривърба, която е описана по-горе. С това постигаме поне едно нещо – ривърба може да се справи с фазовото изместване на еквилайзера (т.е., забавянията на ривърба могат да се скъсят (донякъде) с забавянето на еквилайзера) за да се минимизира фазовото изместване на целия ефект.

Най-простият ривърб

Най-простият ривърб може да се създаде само с три всичкопропускащи филтъра на Шрьодер – или пък четири или повече, ако допълнителните експерименти покажат, че това е необходимо в горната конструкция. Многоизходната линия на забавянето може да се пренебрегне. Два напредващи гребенови филтри могат да бъдат добавени за да се създаде някакво усещане за размера на стаята, но най-лесното нещо е да се сложат тези филтри преди всичкопропускащите филтри, да се размие повторението на първия филтър с един ефект подобен на хор и да се пусне само повторението на последния филтър през всичкопропускащите филтри. Всичко това намалява работата, необходима за настройването на ривърба за стаите с различни размери и за различните затихвания, които могат да бъдат избрани от потребителя. Един еквилайзер може да се сложи преди цялата конструкция на ривърба. Разбира се, това сигурно не е най-добрия изкуствен ривърб. Но със сигурност ни дава една добра база за експериментиране и за това, как частите на изкуствените ривърби работят.

Добави нов коментар

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.