Якісний алгоритм реверберації


11

Я трохи пошукав цей сайт, але дивно, що я не знайшов багато відповідної інформації, і мої знання про DSP дуже обмежені.

Моя мета досить проста: я хочу запрограмувати алгоритмічну реверберацію на C ++, що звучить дуже добре. А точніше, найкращим варіантом було б дозволити кінцевому користувачеві вибрати компроміс між якістю та використанням процесора.

З того, що я з'ясував поки що, це те, що для створення реверберації ви повинні подати сухий сигнал в алгоритм раннього відображення, а потім у альго пізнього відображення. Це правильно ?

Тепер я знайшов велику статтю про частину пізніх роздумів, використовуючи мережу затримки зворотного зв'язку ( ЗВІДКЛЕННЯ ВИМОГИ ВИКОРИСТАННЯ ВИКОРИСТАННЯ ВИКОРИСТАННЯ, ВИКОРИСТАННЯ МЕРЕЖЕВ ЗАСТОСУВАННЯ ВРЕМЕННОГО ЗВ'ЯЗКУ ). З того, що я прочитав, FDN - це високоякісний, не надто експансивний (процесорний) спосіб імітації пізніх рефлексій. Крім того, я маю на увазі, що ви можете контролювати компроміс з оплати якості / процесора, змінюючи кількість ліній затримки.

Однак я абсолютно не маю уявлення про те, як запрограмувати альго ранніх рефлексій (пам’ятаєте? Я дуже не знаю в області DSP).

Мені було б логічно використовувати різновид затримки, яка має перевагу в простоті програмування та обчислювально недорогих. Але це звучить занадто просто, щоб бути правдою.

Крім того, мій інстинкт підказує мені, що один або кілька фільтрів повинні бути включені десь до сигнального шляху.

Може хтось, будь ласка, трохи прояснить цю тему для мене?

Дві ноти:

  • Я взагалі не після реверберації згортки. Мені реально не байдуже реалістичність реверберації, але натомість я хочу гарного звучання, налаштування, а не реверберації, голодної від процесора.
  • Крім того, частина кодування - це не те, що мене хвилює, я б попросив stackoverflow в іншому випадку. Це дійсно частина DSP, і саме та частина, про яку я пішов :)

Відповіді:


10

Вам потрібно генерувати ранні роздуми з кількома натисканнями затримок (= згортання з сумою жменьки діарів); і "хвіст" з тим, що зазвичай реалізується за допомогою мережі всепрохідних (AP) та гребінних фільтрів.

Перша частина є тривіальною для реалізації, але її важко зрозуміти правильно. Це може допомогти подивитися на розташування вершин на чолі заздалегідь записаних імпульсних відповідей, щоб отримати уявлення про те, які відповіді є "природними". Важко зробити його легко параметрувальним за допомогою декількох налаштувань, хоча ви могли б піти з ним, запропонувавши купу попередніх налаштувань для цієї частини, щоб отримати "гібридний" реверберацію à la Virsyn Reflect.

Хвіст - це те, де алгоритмічні реверберації світяться (каламбур не призначений), оскільки його легко параметризувати. Дід алгоритмічних реверберацій - це Шредералгоритм. Зауважте, що він генерує лише "хвіст", а не ранні роздуми - ви можете збільшити його за допомогою кількох натискань затримки, щоб дати йому голову. Це звучить не дуже добре (дуже "зернисто"), але це гідний початок - з цим у вас щось зіпсується, і це допомагає зрозуміти вплив кожного параметра. Багато високо оцінених алгоритмічних реверберацій, особливо тих з 80-х років (Lexicon, Eventide, Publison), просто тонко налаштовані топології всепрохідних фільтрів та фільтрів з гребінцем. Я підозрюю, що це пов’язано з численними спробами та помилками навчених вух, які дуже добре зрозуміли, як би звучали зміни параметрів чи топології, а не будь-який науковий підхід. Ось ще одне цікаве прочитання- показує улюблену топологію реверберації Кіта Барра. Оригінальний midiverb може не бути вашим визначенням "високоякісного алгоритмічного реверберації", але це звучало приємно, і це робить перспективу знати, що він був зроблений з "dsp", здатним лише MAC з коефіцієнтами 0,5 ...

Valhalla room - це моє улюблене алгоритмічне реверберація програмного забезпечення - знайдіть трохи часу, щоб прочитати блог його розробника, щоб знайти натхнення про те, що допомагає налагодити його.


2
Забув згадати Freeverb як більш сучасний варіант (з кодом, який можна знайти, наприклад, у csound або кодовій базі ladspa) алгоритму Шредера.
пікенети

Дуже цікаво ! Я теж люблю продукти Valhalla (ValhallaShimmer світить, жоден каламбур не призначений :)). Чому ви згадуєте згортку для ранньої рефлексії? Достатня звичайна затримка мультитапного затримки?
Дінаїз

1
Я згадав про згортання, тому що "затримка багатозахисного" - це лише певний вид згортки (з кількома ненульовими коефіцієнтами, тому його можна обчислити наївним шляхом і без артилерії, пов'язаної з "щільними" згортаннями). У будь-якому випадку, як вказував Гільмар, затримка в декількох кроках може бути занадто наївною і після декількох роздумів, тому тимчасово поширюється (= фільтрація низьких частот) відлуння буде звучати природніше. Це можна зробити із затримкою в декілька кнопок із простим LP для кожного крана; або безпосередньо обчисливши всю частину раннього відображення реверберації за допомогою двигуна згортки та попередньо встановлених ІК.
пікенети

8

Зробити гарне звучання реверберації НЕ просто. Мережі затримки зворотного зв’язку - це безумовно шлях. Оригінальні алгоритми Шредера з усіма фільтрами пропускання і гребінчасті фільтри страждають від "спектрального проріджування", що робить його металевим звучанням. Вам потрібно набрати частотне ослаблення, яке залежить від частоти затримки, що є репрезентативним часом реверберації (як функція частоти). Ранні віддзеркалення можна здійснити за допомогою зворотної лінії затримки також з деяким залежним від частоти ослабленням та кількома дифузорами для їх кореляції. Виконання стереосистеми також вимагає деяких засобів кореляції.

Навколо плаває досить хороша реалізація з відкритим кодом, вона називається GVerb, і вона використовується, наприклад, у Audacity. Пошук у Google має перейти до (легальної) копії вихідного коду.


З вашого повідомлення це звучить легко! Ну принаймні я це можу зрозуміти, крім частини про декореляцію. Що ви точно означаєте під цим? Також щодо частоти, залежної від частоти, я думаю, ви маєте на увазі викидання деяких фільтрів і точну настройку на слух, це частоти для кожного рядка. Про який фільтр ми говоримо, хоча? HP? LP? БП? Дякую !
Дінаїз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.