# How can I select specific output channels?

**URL:** <https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716>\
**Category:** FMOD Engine\
**Created:** [May 24, 2019, 11:24am UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716 "2019-05-24T11:24:21Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jiyongman](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jiyongman](https://qa.fmod.com/u/jiyongman)\
**Post date:** [May 24, 2019, 11:24am UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716/1 "2019-05-24T11:24:21Z")

</div>

Thanks to your help, I was able to make my application work with ASIO.  
But there’s one problem. I have an audio interface with multiple output channels which include 8 analog outs 8 digital outs.  
There’s no such thing like a stereo output here.  
I can choose whichever I prefer as my default output channels in Windows, and my current output is analog 3-4 out with a stereo configuration.  
But FMOD uses analog 1-2 out, and because my analog 1-2 out is currently broken, it’s really hard for me to test my application properly.  
Also, I think it would be super cool if I can provide options for users to choose their preferable channels themselves like in professional music applications.

Is this possible?

So far I tried FMOD\_System\_SetSoftwareFormat() with different FMOD\_SPEAKERMODE constants but failed.

PS. When using FMOD\_OUTPUTTYPE\_WASAPI, analog 3-4 out is used as expected.

---

<div class="post-metadata">

**Author:** ![tristanjl](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/tristanjl/32/261_2.png) [@tristanjl](https://qa.fmod.com/u/tristanjl)\
**Post date:** [May 31, 2019, 1:58am UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716/2 "2019-05-31T01:58:24Z")

</div>

Hi Jiyongman,

For ASIO, you will want to make use of [FMOD\_ADVANCEDSETTINGS](https://www.fmod.com/resources/documentation-api?version=2.0&page=core-api-system.html#fmod_advancedsettings), specifically the fields ASIONumChannels, ASIOChannelList and ASIOSpeakerList. You can use ASIOSpeakerList to remap which asio channels map to which speakers.

---

<div class="post-metadata">

**Author:** ![jiyongman](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jiyongman](https://qa.fmod.com/u/jiyongman)\
**Post date:** [June 1, 2019, 5:00pm UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716/3 "2019-06-01T17:00:22Z")

</div>

Thanks, I tried below code :

```
FMOD_System_SetSoftwareChannels(g_System, 128);

FMOD_System_SetOutput(g_System, FMOD_OUTPUTTYPE_ASIO);
FMOD_System_SetDSPBufferSize(g_System, 256, 2);

FMOD_System_SetSoftwareFormat(g_System, 44100, FMOD_SPEAKERMODE_STEREO, 0);

FMOD_System_Init(g_System, 1024, FMOD_INIT_NORMAL, NULL);

FMOD_ADVANCEDSETTINGS myAsioSettings = {0};

myAsioSettings.cbSize = sizeof(FMOD_ADVANCEDSETTINGS);
myAsioSettings.ASIONumChannels = 2;

FMOD_System_GetAdvancedSettings(g_System, &myAsioSettings);

FMOD_SPEAKER mySpeakerList[] = { (FMOD_SPEAKER)0, (FMOD_SPEAKER)1 };
// FMOD_SPEAKER mySpeakerList[] = { FMOD_SPEAKER_FRONT_LEFT, FMOD_SPEAKER_FRONT_RIGHT };
myAsioSettings.ASIOSpeakerList = mySpeakerList;

FMOD_System_SetAdvancedSettings(g_System, &myAsioSettings);

```

I can’t specify any other speakers other than (FMOD\_SPEAKER)0 and (FMOD\_SPEAKER)1.

With above code, FMOD plays with Analog 1-2 OUT only.  
Like I said earlier, I have an audio interface which has 8 analog output channels and 8 digital output channels.  
What I want now is stereo mix with Analog 3-4 OUT or Analaog 7-8 OUT.  
So I thought { (FMOD\_SPEAKER)2, (FMOD\_SPEAKER)3 } or { (FMOD\_SPEAKER)6, (FMOD\_SPEAKER)7 } would do the trick, but only to fail.  
I tried all other values too, but no success.  
As you can see, I’m setting ASIONumChannels to 2, but I already tried setting it to 16 with 16 speakers, and 8 with 8 speakers as well.

What am I doing wrong here?

---

<div class="post-metadata">

**Author:** ![jiyongman](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jiyongman](https://qa.fmod.com/u/jiyongman)\
**Post date:** [June 1, 2019, 5:30pm UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716/4 "2019-06-01T17:30:36Z")

</div>

Also, I wonder if there’s any known ASIO related issue with a global Reverb effect.

If I create an FMOD\_DSP\_TYPE\_SFXREVERB and add it to a specific channel, then everything is ok, but if I add it to a “global group” using FMOD\_ChannelGroup\_AddDSP() or just simply create a global reverb using FMOD\_System\_SetReverbProperties(), then I see a problem.

Just playing one single sound is okay, but when I play two or more sounds at the same time with the global reverb on, suddenly I hear some artifacts hard to explain while FMOD plays those sounds via multi channel outputs other than just Analog 1-2 OUT.

This doesn’t happen when:  
a. the speaker mode is forced to FMOD\_SPEAKERMODE\_STEREO or FMOD\_SPEAKERMODE\_RAW with 2 numrawspeakers.  
(Not setting the speaker mode at all or setting any other speaker mode including FMOD\_SPEAKERMODE\_DEFAULT causes the issue)

b. the global reverb is disabled using FMOD\_DSP\_SetBypass() or FMOD\_PRESET\_OFF.

I don’t have this kind of issue when using WASAPI.  
I also tried LOWPASS, HIGHPASS, ECHO, and FLANGE, but only REVERB has the problem.

Do you have any clue?

---

<div class="post-metadata">

**Author:** ![tristanjl](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/tristanjl/32/261_2.png) [@tristanjl](https://qa.fmod.com/u/tristanjl)\
**Post date:** [June 4, 2019, 1:34am UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716/5 "2019-06-04T01:34:02Z")

</div>

The speaker list maps the opposite way. You won’t be able to do this with stereo at the moment, as the size of the speakerList array should match the number of speakers defined by the FMOD\_SPEAKERMODE. You should have more luck changing your example to the following:  
FMOD\_System\_SetSoftwareFormat(g\_System, 44100, FMOD\_SPEAKERMODE\_QUAD, 0);  
FMOD\_SPEAKER mySpeakerList[] = { FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, (FMOD\_SPEAKER)0, (FMOD\_SPEAKER)1 };  
This, however, will change how the audio is spacialised to suit whichever speakmode is chosen, so this may not be an ideal solution, particularly if you are utilizing FMOD Studio features. We will look to address this in a future version.

---

<div class="post-metadata">

**Author:** ![jiyongman](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jiyongman](https://qa.fmod.com/u/jiyongman)\
**Post date:** [June 4, 2019, 12:15pm UTC](https://qa.fmod.com/t/how-can-i-select-specific-output-channels/14716/6 "2019-06-04T12:15:52Z")

</div>

YES!  
Even though it’s not that ideal as you said and not sure if this will always work,  
but along with your kind answer, below code works too:  
FMOD\_System\_SetSoftwareFormat(g\_System, 44100, FMOD\_SPEAKERMODE\_RAW, 8);  
mySpeakerList[] = { FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, (FMOD\_SPEAKER)0, (FMOD\_SPEAKER)1};

Or:  
FMOD\_System\_SetSoftwareFormat(g\_System, 44100, FMOD\_SPEAKERMODE\_RAW, 6);  
mySpeakerList[] = { FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, FMOD\_SPEAKER\_MAX, (FMOD\_SPEAKER)0, (FMOD\_SPEAKER)1};

Thank you!
