1
Audacity (또는 다른 오디오 편집 프로그램)에서 별도의 사운드 트랙을 믹스하기 위해 사용하는 알고리즘은 무엇입니까?프로그래밍 방식으로 여러 오디오 트랙을 하나의 트랙에 혼합하는 방법은 무엇입니까?
즉. "Mix and Render"명령을 사용할 때 트랙을 하나의 트랙으로 병합하는 과정은 무엇입니까?
Audacity (또는 다른 오디오 편집 프로그램)에서 별도의 사운드 트랙을 믹스하기 위해 사용하는 알고리즘은 무엇입니까?프로그래밍 방식으로 여러 오디오 트랙을 하나의 트랙에 혼합하는 방법은 무엇입니까?
즉. "Mix and Render"명령을 사용할 때 트랙을 하나의 트랙으로 병합하는 과정은 무엇입니까?
신호를 추가하기 만하면됩니다.
// fill the destination (output) with the sum of signals: input1, input2, input3
for (size_t idx(0); idx < samplesToWrite; ++idx) {
output[idx] = input1[idx] + input2[idx] + input3[idx];
}
신호에 볼륨 또는 패닝을 적용하려면 곱셈을 사용하십시오.
// to halve the amplitude of an audio signal:
const double halfVolume = 0.5;
for (size_t idx(0); idx < samplesToWrite; ++idx) {
signal[idx] *= halfVolume;
}
일반적으로 스케일링이 필요하지 않습니다. 스케일링없이 트랙을 추가하면 일반적으로 클리핑이 발생합니다. –
@ Paul R 감사합니다. 특히 int 형식의 경우 일반적으로 확장하는 것이 일반적입니다. 또한 컨텍스트에 따라 다르지만 사용되는 샘플 형식과 사용자가 결과에서 기대하는 바에 달려 있습니다. 목적지가 플로트이면, 실제적인 용도 (목적지 샘플 데이터 표현을 위해)에 위험이 존재하지 않는다. 정수 샘플 데이터 파일로 바운스 (bounce in place) 구현을했다면 바운스 (bounce)가 잘린 것을 사용자에게 알려주는 것이 좋습니다. OP는 특정 샘플 형식을 지정하지 않았지만 DerNalia는 제한 및 변환에 익숙하다고 가정했습니다. – justin