2016-06-28 12 views
0

어리석은 질문 인 것처럼 들리 겠지만, 저는 VST 개발에 비교적 익숙하지 않습니다. JUCE 프레임 워크를 사용하여 플러그인을 작성하려고하는데 현재 사인파 .wav 파일로 테스트하려고합니다. Audacity에서 .wav 파일을 열면 44100Hz이고 32 비트 플로트라고 알려줍니다. 이 동일한 파일을 matlab에로드 할 때 처음 세 샘플은 0.00, 0.0443, 0.0884 ...와 같습니다. 그러나 Ableton과 Reaper에 같은 파일을 넣고 코드를 단계별로 실행하면 동일한 파일은 0.00000000, 0.00012068315, 0.00048156900 ... 내가 VS에서 메모리에 피크를 표시하고 32 비트 부동 소수점 뷰에서이를 볼 때 이것을 볼 수 있습니다. 샘플 값이 왜 그렇게 작습니까?VST 오디오 입력 값은 Matlab의 오디오 입력 값과 완전히 다릅니다

제 문제는 알고리즘이 작동하기 위해 MATLAB에있는 것과 동일한 샘플 값을 갖기 위해 오디오가 필요하다는 것입니다. 분명히 내가 통제 할 수없는 전환이 일어나고 있습니다. 누구든지이 문제에 대해 밝히고 어떻게 해결해야할까요? 어쩌면 스케일링 문제처럼 보입니다. Ableton은 32 비트 모드로 실행 중이며 VST는 32 비트로 컴파일됩니다.

도움이 될 경우 더 많은 샘플을 제공 할 수도 있습니다.

감사

+0

Ableton 설명서를 확인하십시오. 내가 이해하는 한, Ableton은 무료가 아닙니다. 나는 리퍼에 대해 아무것도 모른다. 하지만 아마도 Audacity로 할 수 있을까요? –

+0

Reaper와 Ableton에서 동일한 값을 얻게 된 이유는 VST SDK 또는 JUCE 프레임 워크 일 수 있습니다. 그러나, 나는 대담을 통해 발을 디디면서 시도하지 않았다. 좋은 생각이야. – daithioronain

답변

1

Ableton의 사신 및 16 비트 오디오에 32 비트 오디오 변환 되었기 때문에 문제가된다. 나는 sine.wav를 Ableton에 로딩하고 이것을 16 비트로 수출함으로써 이것을 확인할 수 있었다. 그런 다음 파일을 Matlab에로드하고 위와 같이 작은 샘플을 가져 왔습니다. 내 다음 문제는 VST 내에서 16 비트 오디오를 32 비트 오디오로 변환하는 방법을 찾는 것입니다.

+0

JUCE AudioProcessor 파생 오브젝트에서 데이터 버퍼가 나올 때까지 오디오 그래프는 이미 (-1.0, 1.0) 범위의 32 비트 float 또는 64 비트 이중 데이터로 변환 할 것입니다. - AudioProcessor의 processBlock() 멤버 함수를 참조하십시오. – bgporter

0

설명하는 것처럼 진폭이 매우 낮으므로 값을 거의 갖지 않으므로 샘플 값을 dB로 변환하여 확인할 수 있습니다. 일반적으로 오디오 신호는 -1과 +1 사이의 범위에 있으며, 극한은 디지털 세계에서 가능한 최대 볼륨을 나타냅니다 (일명 0dB).

16 비트와 32 비트 사이의 딜레마는 사용자의 문제와 관련이 없다고 생각합니다.

+0

내가하고있는 일은 일반적으로 오디오 파일을 32 비트 부호없는 long으로 읽는 레거시 C 코드를 변환 한 다음 일반 float 값으로 변환하는 것입니다. 내가 레거시 코드에서 얻은 부동 소수점 값을 C++에서 얻은 부동 소수점 값과 비교하면 Ableton과 Reaper를 사용할 때와 똑같지 만 문제가있는 곳이라고 생각합니다. – daithioronain