여기저기 검색해보고 매뉴얼을 봐도 원하는 답이 안나와서
과감하게 질문 올려봅니다.
구현하려 하는 내용은 Reverb를 원하는 채널에 적용하는 것인데요
fmod 3.75를 사용하고 있는데 DSP를 사용해서 Reverb unit을 만들어
적용해주려고 하고 있습니다.
좀 더 자세히 말씀드리면
BGM 채널에는 어떤 경우에도 reverb가 먹지 않고
2d, 3d사운드에는 특수한 경우에 reverb가 적용되게 하고 싶습니다.
일단 여기에서 궁금한 점이 DSP chain이라는 것이 사운드 샘플(한개의 채널)마다
따로 존재하는 것인가요? 아니면 전체 시스템에 한개만 존재하는 것인가요?
sample로 제공되는 dsp프로젝트를 참고해서 작성해보았는데요
reverb unit을 생성하고 적용해주는 부분
Code: Select all
Unit = FSOUND_DSP_Create(&DSP_ReverbCallback, priority , &User);
FSOUND_DSP_SetActive(Unit, TRUE);
이렇게 하고서 실행을 해보니 BGM(stream)과 2d사운드, 3d사운드 모두에
reverb가 적용되어서 출력되더군요.
샘플에서는 reverb보다 높은 priority에 dryUnit이라는걸 만들어서
reverb를 적용하고 싶지 않은 샘플에 대해서는 그 유닛에서부터 출력하도록 하고 있네요
1. 그보다는 근원적으로 BGM과 나머지 채널들을 분리할 방법이 없나 해서 질문 올립니다.
BGM은 어떤 경우에도 reverb를 먹지 않으니까요..
2. BGM / reverb먹은 3dsound(실내에서의 발자국소리) / reverb 안먹은 3dsound(환경사운드)
세 가지를 동시에 출력하려면 어떤 방법을 쓰면 될까요?
한개의 DSP chain을 공유하는 방법으로는
reverb를 먹은녀석 + 안먹은녀석 을 동시에 출력하는 방법이 잘 떠오르질 않네요...
그럼 경건하게 답변기다리겠습니다