I have an app that can use 4 speakers, where speakers 3 and 4 might sometimes be used for a metronome while stereo output is used for audio tracks. I know under IOS 7 and newer you can use multichannel class-compliant USB audio interfaces like Traktor Audio DJ Mk 2 and address 4 or more output channels. This is what I am trying to get working.
Under Windows and MacOS, I have this working like this (with my Traktor):
... Track::SoundSystem->setDriver(0); //This will be the Traktor // Init the soundsystem first to get its preferred values result = Track::SoundSystem->init(100, FMOD_INIT_NORMAL, 0); // Ask for 4 hardware channels. Does not seem to do anything on any OS result = Track::SoundSystem->setHardwareChannels(4); // Get the preferred values Track::SoundSystem->getSoftwareFormat(&samplerate, &format, &numoutputchannels, &maxinputchannels, &resamplemethod, &bits ); // Close and reopen, asking for 4 output channels and using everything else that was set up by the first init Track::SoundSystem->close(); Track::SoundSystem->setSoftwareFormat(samplerate, format, 4, maxinputchannels, resamplemethod ); Track::SoundSystem->init(100, FMOD_INIT_NORMAL, 0); ... SetSpeakerLevels, etc
On Windows and Mac, this code works and I get my 4 channel output. I use ASIO on WIndows, but I never need to specify it to FMOD.
On IOS, it all runs and I get good return codes, but I never hear channels 3 and 4 on my device.
Any ideas as to what I need to do to get the upper output channels to be heard on IOS?