Q&A

  • 녹음시 이퀄라이져 기능 winamp처럼..
winamp처럼 녹음시 이퀄라이져 기능은 어떻게 구현하나요?

1  COMMENTS
  • Profile
    도지성 2001.02.11 09:11
    이기준 wrote:

    > winamp처럼 녹음시 이퀄라이져 기능은 어떻게 구현하나요?



    winamp 는 어떻게 하는지 모르겠지만

    녹음시도 출력시의 이퀄라이저와 똑같습니다.



    단지 입력 디바이스를 통해 입력 버퍼를 얻어 오는

    것이 다른데 크게 3 가지 방법이 있습니다.



    1. waveIn???? 함수의 PrepareBuffer 를 이용하는

    가징 고전적인 방법입니다. 아주 자료가 많습니다.



    2. ACM 의 함수를 사용하는 방법입니다.

    실제로 ACM 은 Direct X 의 Direct Show 함수이나,

    델파이 슈퍼 페이지 같은데 가시면 델파이용 ACM

    헤더를 구할 수 있는데 버퍼에서 읽어 들이는

    소스까지 다 있으므로 바로 참고 하실 수 있습니다.



    3. ACM 에 비해서 좀 더 low level 이나 Direct Sound의

    출력 버퍼와 바로 연결할 수 있는 Direct Sound Capture가

    있습니다. 이것은 Direct X 에서도 몇 번째로 사용하기 쉬운

    객체인데 어느 정도 Direct X 매뉴얼을 보시면 구현 가능

    할 겁니다. ( 제가 가장 애용하는 부분입니다. )



    이런 방법으로 얻어 오신 row format 의 PCM 데이터는 역시

    이퀄라이저를 구현하기 위해서 특정 구간에 대한 FFT 를

    취하시고 사용자 설정된 이퀄라이저 필터를 적용 하신 후

    다시 IFFT 하시면 이퀄라이저 조정이 된 PCM 데이터를

    얻으실 수 있습니다. ( 출력시 이퀄라이저와 같습니다. )



    FFT 의 경우에는 델파이 콤포넌트로도 있다고 하니

    따로 구현 하실 필요는 없을테고 단지 FFT 할 때

    이퀄라저 해상도를 결정하기 위해 선형적인 버퍼를 특정한

    구간을 나누는 부분과 ( 실험치로.. ) 윈도우를 씌우는

    방법에 따라 약간씩의 음질이 다르게 만들어 질테니

    그것만 주의 하시면 될겁니다.



    더 기본적인 것이 필요하시면 FFT 관련 자료나

    음성인식 관련 책자에도 잘 나와 있습니다.