고품질 리버브 알고리즘


11

나는이 사이트에서 약간의 검색을했지만 놀랍게도 관련 정보를 많이 찾지 못했으며 DSP에 대한 나의 지식은 매우 제한적입니다.

내 목표는 매우 간단합니다. C ++로 알고리즘 리버브를 프로그래밍하고 싶습니다. 더 정확하게 말하면, 최상의 옵션은 최종 사용자가 품질과 CPU 사용 사이의 균형을 선택하도록하는 것입니다.

내가 지금까지 알아 낸 것은 리버브를 만들려면 건조한 신호를 초기 반사 알고리즘에 공급 한 다음 늦은 반사 알고리즘에 공급해야한다는 것입니다. 이 올바른지 ?

이제 피드백 지연 네트워크 ( 시간에 따른 피드백 지연 네트워크를 사용하는 인공 잔향 제거)를 사용하여 후기 반사 부분에 대한 광범위한 기사를 찾았습니다 . 필자가 읽은 내용에서 FDN은 늦은 반영을 시뮬레이션하는 너무 광대 한 (cpu wise) 방법이 아닌 고품질입니다. 또한 지연 라인 수를 변경하여 품질 / CPU 충전 트레이드 오프를 제어 할 수 있다고 생각합니다.

그러나 초기 반사 알고리즘을 프로그래밍하는 방법을 전혀 모릅니다 (DSP 도메인에서는 실제로 무지합니다).

프로그래밍 및 계산 비용이 저렴한 장점이있는 일종의 다중 지연을 사용하는 것이 논리적으로 들립니다. 그러나 그것은 너무 단순해서 사실이 아닙니다.

또한, 본능은 하나 또는 여러 개의 필터가 신호 경로 어딘가에 포함되어야한다고 말합니다.

어떤 사람이 나를 위해이 주제를 분명히 해 주시겠습니까?

두 노트 :

  • 나는 컨볼 루션 리버브를 전혀 따르지 않습니다. 나는 실제로 리버브의 리얼리즘에 신경 쓰지 않지만 대신 CPU 배고픈 리버브가 아닌 좋은 소리, 조정 가능을 원합니다.
  • 또한 코딩 부분은 걱정스럽지 않습니다. 그렇지 않으면 스택 오버플로를 묻습니다. 그것은 실제로 DSP 부분이며, 그 다음 부분입니다. :)

답변:


10

몇 번의 딜레이로 초기 반향을 생성해야합니다 (= 소수의 디락의 합과의 컨볼 루션); 일반적으로 올 패스 (AP) 네트워크와 콤 필터로 구현되는 "꼬리".

첫 번째 부분은 구현하기 쉽지만 제대로 들리지 않습니다. 사전 기록 된 임펄스 응답의 헤드에서 피크의 위치를 ​​확인하여 어떤 반응이 "자연적"인지 알 수 있습니다. 몇 가지 설정으로 쉽게 매개 변수화 할 수는 없지만,이 파트에 대해 "하이브리드"리버브 – La Virsyn Reflect를 얻을 수있는 여러 가지 사전 설정을 제공하여이를 제거 할 수 있습니다.

꼬리는 알고리즘 반향이 빛나는 곳입니다. 알고리즘 리버브의 할아버지는 슈뢰더의연산. 초기 반향이 아닌 "꼬리"만 생성한다는 점에 유의하십시오. 몇 번의 지연으로 확대하여 머리 부분을 만들 수 있습니다. 그것은 아주 좋은 소리는 아니지만 (매우 "거친") 괜찮은 시작입니다. 엉망이되어 각 매개 변수의 영향을 이해하는 데 도움이됩니다. 많은 찬사를받은 알고리즘 리버브, 특히 80 년대 (Lexicon, Eventide, Publison)의 알고리즘 리버브는 올 패스 필터와 콤 필터의 미세 조정 된 토폴로지입니다. 나는 이것이 과학적 접근보다는 매개 변수 또는 토폴로지의 변화가 어떻게 들릴지 알아내는 데 능숙한 훈련 된 귀에 의한 많은 시행 착오와 관련이 있다고 생각합니다. 여기 또 다른 흥미로운 읽을 거리가 있습니다-Keith Barr가 가장 좋아하는 리버브 토폴로지를 보여줍니다. 원래의 미드 버브는 "고품질 알고리즘 리버브"에 대한 정의가 아닐 수도 있지만 달콤하게 들리며 계수가 0.5 인 MAC 만 가능한 "dsp"로 만들어진다는 것을 알 수 있습니다.

Valhalla room은 제가 가장 좋아하는 소프트웨어 알고리즘 리버브입니다. 개발자 블로그 를 읽고 올바른 정보를 얻는 데 도움이되는 것들에 대한 영감을 얻으 려면 시간 을 내십시오.


2
슈뢰더 알고리즘의보다 현대적인 변형 (코드를 사용할 수 있음, csound 또는 ladspa 코드베이스에서 찾을 수 있음)으로 Freeverb를 언급하는 것을 잊었습니다.
pichenettes

매우 흥미로운 ! 나는 Valhalla 제품도 좋아합니다 (ValhallaShimmer가 빛나고 말았습니다 :)). 왜 초기 반사에 대한 회선을 언급합니까? 정상 지연 멀티탭 지연으로 충분합니까?
Dinaiz

1
"멀티탭 지연"은 특정 종류의 컨볼 루션 (널 (null)이 아닌 계수가 있으므로 "고밀도"컨볼 루션과 관련된 포병없이 계산할 수 있음)이기 때문에 컨볼 루션에 대해 언급했습니다. 어쨌든, 힐 마르가 지적했듯이 멀티탭 지연은 약간 순진하고 약간의 반사 후에 일시적으로 확산 (= 저역 통과 필터링) 에코가 더 자연스럽게 들립니다. 이는 각 탭마다 간단한 LP로 멀티탭 지연으로 수행 할 수 있습니다. 또는 컨벌루션 엔진과 사전 설정 IR을 사용하여 잔향의 전체 초기 반사 부분을 직접 계산합니다.
pichenettes

8

좋은 소리의 리버브를 만드는 것은 쉽지 않습니다. 피드백 지연 네트워크는 확실히 갈 길입니다. 모든 패스 및 콤 필터가있는 원래 Schroeder 알고리즘은 "스펙트럼 희석"으로 인해 금속성 소리를냅니다. 리버브 시간을 나타내는 다른 지연 라인 (주파수의 함수)에 따라 주파수 종속 감쇠를 다이얼링해야합니다. 초기 반사는 탭 주파수 지연 라인을 통해 수행 될 수 있으며 일부 주파수 종속 감쇠와 이들을 분리하기위한 몇 개의 확산기가 있습니다. 스테레오를하기 위해서는 또한 어떤 상관 해제 수단이 필요합니다.

GVerb라고 불리는 상당히 좋은 오픈 소스 구현이 있으며 Audacity와 같이 사용됩니다. Google 검색을 통해 소스 코드의 (법적) 사본으로 이동해야합니다.


귀하의 게시물에서 쉽게 들립니다! 상관 관계에 관한 부분을 제외하고는 적어도 그것을 이해할 수 있습니다. 정확히 무엇을 의미합니까? 또한 주파수 의존 감쇄에 대해서는 필터를 버리고 귀로 미세 조정하는 것이 모든 라인의 주파수입니다. 우리는 어떤 종류의 필터에 대해 이야기하고 있습니까? HP? LP? BP? 감사 !
Dinaiz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.