본문 바로가기
잡지식

Elastique V3 Time Stretching Engine (Ableton Live, Traktor 사용)

by Akin18 2023. 12. 6.
728x90
반응형

나는 DJ 소프트웨어로 Traktor를 사용한다.
Traktor가 버전 2에서 3로 올라갈때 Elastique 3.3.0 Time Stretching Engine 을 도입했다는 자랑을 본 기억이 있어서 지금 그 알고리즘이 뭔지 한번 알아보다가 나온 자료들 중에 나한테 필요한것만 정리해본다.

 

Elastique는 zplane 이라는 회사에 라이센스가 있는 알고리즘이며 Ableton Live의 복잡한 알고리즘과 동일하다.

MPEX는 Zynaptiq ZTX LE 알고리즘으로 안타깝게도 10년 이상 업데이트 되지 않았으며, ZTX의 라이선스 비용이 지나치게 높아 스탠드얼론 버전이 없는 것으로 보인다.

Elastique는 보컬 및 스트링과 같은 부드러운 악기에는 좀 더 나은 성능을 발휘하며, MPEX는 드럼 및 신스와 같은 곳에서 트랜지언트 정보가 조금 더 중요한 경우에 종종 더 나은 결과를 얻을 수 있다.

타임 스트레치는 주파수 도메인이나 시간 도메인에서 두 가지 주요 접근 방식이 있어 각각이 다른 방식으로 아티팩트를 보여준다.

주파수 도메인 스트레칭(Elastique)는 주로 사이드 밴드와 하모닉 정보를 통한 아티팩트를 생성하며, 하이앤드의 흐릿한 사운드와 트랜지언트의 부드러움을 유발한다.

시간 도메인 스트레칭(MPEX/ZTX)은격자 모양이며, 기계적인 사운드를 제공한다. 때로는 트렌지언트와 하이앤드 정보를 보다 뚜렷하게 유지하는데 더 효과적일 수 있지만, 리듬 루프에서는 시간을 드나들 수 있다.

두가지 다 서로 다른 작업을 위한 다른 도구로 보는 것이 나으며, 어느 하나도 완벽하진 않다고 볼 수 있다.

일단 Elastique Pro 3.3.7 문서를 보며 이해도를 높이는 도전을 하려는데 문서에 내가 원하는 정보가 있을지 모르겠다.

 

Introduction 요약

Elastique는 시장에서 가장 많이 사용되는 타임 스트레칭 및 피치 쉬프팅 알고리즘 중 하나다.
실시간으로 실행될 수 있어 DJing, 공연 및 음악 제작에 이상적인 솔루션으로 간주된다.
포르만트 보존 피치 쉬프팅을 위한 포르만트 및 스펙트럴 엔벨롭 쉬프팅을 수행할 수 있다.
기본적으로 C++로 작성이 된듯 해 보인다.

 

V3의 특징

높은 스트레치 비율에서도 작동하는 고도로 개선된 트렌지언트 보존 엔진
infiniStretch 기술로 무한대까지 임의의 높은 스트레치 비율 허용
무한 스트레칭 수행을 위한 Hold 기능
더 나아진 메모리 풋프린트

 

infiniStretch and Hold

infiniStretch와 Hold는 주파수 프레임 추정의 동일한 기본 기술을 사용한다. 무한대까지 높은 스트레치 비율을 달성하기 위해(Hold기능과 동일) 이미 스트레칭된 프레임이 추정된다. Elastique V3에서는 6보다 큰 스트레치 팩터를 더 작은 정수 개수의 더 작은 스트레치 비율로 분할한다. 예를 들어, 팩터7은 2 x 3.5로 나뉜다. 그런다음 하나의 블록이 3.5로 스트레칭되고 다음은 이전 스트레치의 결과를 기반으로 동일한 팩터로 추정된다. 다음 그림은 이 동작을 설명한다.

infini Stretch illustrated

Hold 기능은 기본적으로 무한 스트레치 기술을 사용하지만 마지막 프레임이(보류중인) 끝없이 추정되어 Hold 기능이 잘못 설정될 때까지 계속된다. 구별해야 할 두가지 다른 하위 모드가 있다: 시간 동기화가 없는 Hold 및 시간 동기화가 있는 Hold. 시간 동기화가 없는 경우 입력 상태가 고정되며 Hold 기능이 꺼지면 입력 오디오가 Hold 함수가 적용된 시점부터 계속된다. 다음 그림은 이 동작을 설명한다.

시간 동기화 없는 Hold 기능

 

시간 동기화가 있는 경우 elastique는 계속해서 입력 오디오를 요청하여 현재 스트레치 펙터로 계속되는 입력 스트림을 시뮬레이션한다. 이러한 입력 오디오 블록은 내부적으로 무시되며 출력은 보류된 오디오의 결과이다. Hold 기능이 꺼지면 입력 오디오는 보류가 적용되지 않았을 때와 같은 지점부터 계속된다. 다음 그림은 이동작을 설명한다.

시간 동기화가 있는 Hold 기능

 

피치 동기화

Elastique에서의 피치 쉬프팅은 시간 스트레치 엔진과 리샘플러를 결합하여 수행된다. 예를 들어, 옥타브를 한 옥타브 올리려면 리샘플러가 신호를 절반의 속도로 다운샘플링하여 원래 샘플 속도에서 재생될 때 음높이와 속도가 두배가 된다. 그런 다음 시간 스트레치 엔진은 결과를 2배로 스트레칭하여 최종 출력이 원래 템포를 가지지만 음높이가 두배가 되도록 한다. 리샘플러는 샘플 속도를 즉시 전환할 수 있으며 블록기반의 겹치기와 더하기 절차를 수행해 시간 스트레치 엔진은 전환을 부드럽게 처리한다. 이 시점에서 리샘플러와 시간 스트레치 엔진은 피치 펙터에 다라 변수(양수 또는 음수) 지연을 야기서켜 동기화되지 않는다. 다음 두 그림은 이 동작을 설명한다. 이 동작은 동적 피치 조절이 사용될 대에만 발생하며 일정한 피치 팩터에서는 두 모드가 동일한 결과를 내놓는다.

동기화 되지 않은 원본과 피치
동기화 된 원본과 피치

 

동기화된 모드의 장점은 명확하지만 도입된 지연이 무시될 때(예: 작은 피치 변화만 사용 하는 경우) 동기화되지 않은 모드는 여전히 일부 이점을 가진다.

  • 비동기화 모드에서 피치 조절은 즉시 이루어지는 반면, 동기화 모드에서는 원하는 피치에 도달하기까지 시간이 필요하다.
  • 피치 조절에만 DirectAPI를 사용하는 경우 비동기화 모드는 상수 출력 블록 크기를 유지하며, 동기화된 모드에서는 동기화 프로세스 중에 출력 블록 크기가 변할 수 있어 실시간 응용 프로그램에서 이러한 변화를 보상하기 위해 더 큰 버퍼가 필요할 수 있다.

이를 위해 API가 업데이트 가 업데이트 되었다.(자랑)

 

스테레오 프로세싱

스테레오 입력을 처리할 때, elastique를 두개의 모노 인스턴스가 아닌 스테레오 인스턴스로 사용하는 것을 강력하게 권장한다. 이에는 품질과 성능 두가지 이유가 있다. 품질은 양 채널의 내용이 분석에 고려되며 스테레오 처리가 두 채널 간에 연결되기 때문에 더 좋을 것이다. 성능은 여러 분석 단계를 양 채널 모두에 대해 결합할 수 있기 때문에 더 좋을 것이다.

 

처리 모드

elastique Pro는 모든 사용 사례에서 최상의 결과를 얻기 위해 여러 모드를 제공한다. 제공되는 모드는 CelastiqueProV3If:: elastiquePro proc mode 에 정의되어 있다.

  • kV3Pro : 기본 Pro 모드, 이 모드는 최고의 품질과 엔벨롭 쉬프팅에 사용되어야 한다.
  • kV3Eff : 이는 elastique Efficient 시간 스트레칭 모드에 해당하며, 일반적으로 CPU 사용량이 약 2배 적다
  • kV#mobile : 계산 리소스가 적은 장치에 사용되어야 한다. (예:모바일 기기) kV3mobile 모드는 알고리즘적으로 elastique Efficient V2와 동일하지만 새로운 infiniStretch 및 hold 기능을 갖추고 있다. 이는 kV3Eff 모드보다 약 2배 빠르다.
  • kV3Monophonic : 이는 단일 음성 입력 신호를 위한 특별한 모드이다. 이 모드는 단일 음성 입력 신호에 대한 최고의 출력 품질을 제공하며 포르만트 보존 피치 쉬프팅을 수행할 수 있다.
728x90
반응형