그냥 토론을 위해, 나는로부터 클래스 나타납니다 JUCE 라는 AudioSampleBuffer을 . 이제이 클래스는 오디오 스 니펫 (또는 아마도 긴 스 니펫)을 보유하기 위해 존재합니다. 그것은 채널 수, 샘플 수 (채널 당)를 알고 있으며 가변 숫자 표현이나 단어 화가 아니라 32 비트 IEEE float에 최선을 다하고 있습니다 (그러나 그것은 문제가되지 않습니다). numChannel 또는 numSamples 및 특정 채널에 대한 포인터를 가져올 수있는 멤버 함수가 있습니다. AudioSampleBuffer를 더 길거나 더 짧게 만들 수 있습니다. 나는 전자가 패드를 자르는 동안 전자는 0 패드를 가정합니다.
이 클래스에는 JUCE가 사용하는 특수 힙에 공간을 할당하는 데 사용되는 몇 개의 개인 구성원이 있습니다.
그러나 이것은 AudioSampleBuffer가 누락 된 것입니다 (그리고 Jules와 그것에 대해 몇 가지 토론을했습니다) SampleRate
. 어떻게 그것을 놓칠 수 있습니까?
AudioSampleBuffer가 수행해야 할 단일 책임은 샘플이 나타내는 실제 오디오를 적절히 표현하는 것입니다. 사운드 파일을 읽거나 스트림에서 AudioSampleBuffer를 입력 할 때 AudioSampleBuffer와 함께 샘플 속도를 알아야하는 처리 방법 (예 : 필터)에이를 전달해야하는 추가 매개 변수가 있습니다. 결국, 방법에 재생 들을 수 버퍼를 (또는 다른 곳으로 스트림). 도대체 무엇이.
그러나 당신이해야 할 일은 AudioSampleBuffer에 살고있는 특정 오디오에 고유 한이 SampleRate를 계속 어디서나 전달하는 것입니다. 프로그래머가 다른 작업을 알지 못했기 때문에 상수 44100.0f가 함수에 전달되는 코드를 보았습니다 .
이것은 단일 책임을 이행하지 못한 예입니다.