all로 출력합니다. X-Fi 사운드 블래스터 카드를 통해 A/V 수신기와 인터페이스해야하는 프로젝트가 있습니다. A/V 수신기는 7.1 스피커 시스템에 연결됩니다. 시뮬레이터에서 항공기 조종실 정보를 지시 할 수 있도록 7.1 채널 각각에 개별적으로 액세스하는 방법을 처음부터 알고 싶습니다. 나는 OpenAL을 사용하고 있으며 C에서이 코드를 작성하고있다. 나는 트릭을해야한다고 생각하는 코드를 개발했지만, 다른 6 명의 스피커에서 오디오가 흘러 나오고있다. 아래는 이미 작성한 일부 코드 샘플입니다. 나는 누군가가 나를 도울 수 있기를 바랍니다.OpenAL을 사용하여 특정 채널의 사운드를 7.1
감사합니다. Vincent.` { ALuint NorthWestSource; ALint PlayStatus;
switch (event)
{
case EVENT_COMMIT:
//Load user selected .wav file into the buffer that is initialized here, "InitBuf".
LoadDotWavFile();
//Generate a source, attach buffer to source, set source position, and play sound.
alGenSources(NumOfSources, &NorthWestSource);
ErrorCheck();
//Attach the buffer that contains the .wav file's data to the source.
alSourcei(NorthWestSource, AL_BUFFER, WavFileDataBuffer);
ErrorCheck();
//Set source's position, velocity, and orientation/direction.
alSourcefv(NorthWestSource, AL_POSITION, SourcePosition);
ErrorCheck();
alSourcefv(NorthWestSource, AL_VELOCITY, SourceVelocity);
ErrorCheck();
alSourcefv(NorthWestSource, AL_DIRECTION, SourceDirectionNorthWest);
ErrorCheck();
alSourcei(NorthWestSource, AL_SOURCE_RELATIVE, AL_TRUE);
ErrorCheck();
alSourcei(NorthWestSource, AL_CONE_INNER_ANGLE, 180);
ErrorCheck();
alSourcei(NorthWestSource, AL_CONE_OUTER_ANGLE, 270);
ErrorCheck();
SetCtrlVal(panelHandle, PANEL_SOURCEISSET, 1);
//Play the user selected file by playing the sources.
alSourcePlay(NorthWestSource);
ErrorCheck();
//Check that the .wav file has finished playing and if so clean things up.
do
{
alGetSourcei(NorthWestSource, AL_SOURCE_STATE, &PlayStatus);
if(PlayStatus != AL_PLAYING)
{
printf("File done playing. \n");
}//End do-while if statement
}
while(PlayStatus == AL_PLAYING);
//Clean things up more before exiting out of this audio projection.
alDeleteSources(NumOfSources, &NorthWestSource);
ErrorCheck();
alDeleteBuffers(NumOfBuffers, &WavFileDataBuffer);
ErrorCheck();
SetCtrlVal(panelHandle, PANEL_SOURCEISSET, 0);
//alDeleteBuffers(NumOfBuffers,
break;
}
return 0;
}`