Is there still a 12 channel limit for android? Does new audio engine allow for increase?
@Minus_Kelvin or @Ethan.Geller can speak to the best practices for performance on Android. As far as I know, due to Android OS’s multiple CPU governors, audio performance will always be a troubling prospect (regardless of engine).
What I am sure you can expect with the new Audio Engine on Android is full feature functionality. The old Audio Engine implementation for Android is pretty limited–I think it it only had volume attenuation and that was it–not even spatialization.
Whereas with the new audio engine, all of that is done in multiplatform code now and we just feed the result to our Android API.
With that in mind, there isn’t going to be an API dictated voice limit because all of that is handled in multiplatform code now–at that point, it will be about what you can squeeze from the device performance-wise.
There might be ways to improve audio thread priority, again Aaron or Ethan would know better about that, but I believe we’ve had some experiments where we’ve exceeded 12 voices. Obviously, your mileage may vary.
Yeah, Dan is right. On Android, the only real issue is CPU budget, latency (android audio drivers aren’t great), etc. There’s no fundamental voice limit on Android. We still use OpenSLES on android, but essentially only have one voice and feed it a stream of mixed audio from the multiplatform audio mixer.
I also have voice limits setable via project settings per platform so you can decide how close to the metal you want to go with audio. Another nice thing is any performance improvements in the multiplatform code will be a benefit to all our platforms.
Thank you Dan. @Minus_Kelvin Thanks as well.
Are submixes in the new audio engine like sound mixes in the old audio engine? I’ve been trying to play with sound mixes in the old audio engine and when too many sound effects happen at once my soundtrack for the game skips to the next song. I assume this is the result of too many sound effects being fired off at the same time. I assume the new audio engine deals with things like that better?
I assume a channel or a voice is comparable to the single execution of a wav file. And that the current audio system is limited to the individual execution of 12 wav files, whether the same or not such as in the repeat execution of the same wav file? Is my understanding of channels, or voices as you describe them, correct?
Is there any kind of guide for working with the old audio engine with regard to its limitations with Android? Or, should I just assume only volume attenuation works? If I use the old audio engine should I then just not bother with sound mixes and not bother trying to adjust volume or EQ via the sound mixes and sound classes?
Can I use the new audio engine right now with Android without much trouble? I don’t want to do complicating things. I just kind of want simple things to work correctly. I ask this because the documentation said some of the stuff doesnt work, especially with Android.
Currently, in addition to some skipping on my soundtrack when using sound mixes, I also get goofy distortions when too many different kinds of sound effects fire at once in the old audio engine, I assume because older sound files are being shut off. But when I ran a version of the engine using the new audio system it didn’t really do anything different out of the box.
When you say voice limits I assume you mean channel limits? I was kind of looking for some kind of setting like that. Where in the settings is that? I have executed a version of the engine using the new audio engine, but I cannot find this setting. I only see a global max channels setting under engine -> audio, and the default is 32.
In general, what kind of practical adjustments should I make using the new audio engine which will improve things a bit other than increasing voice limits? I have a variety of sounds, effects, and music that I want to mix properly during game play. I don’t even have that many different sound files, but rather I have about 3 or 4 effects that repeatedly fire throughout game play along with my soundtrack. I just want to adjust a few things EQ-wise and volume-wise, without using the more sophisticated effects the new audio engine uses.
Are there any additional things I have to change to get this new audio engine to work on an android device? Do I edit the android engine ini file? There appears to be a little place where you uncomment the code like the windows ini file. I did that, but it sounded terrible.
I’m using blueprints.
I’m going to play around with voice limit setting if I can find it and also with submixes.
Thank you for your help.
Note: I 've been trying to find the voice limit setting but I cant find it. I have the new audio system implemented. I have the new plugins enabled. I can’t find anything in the project settings about channels or voices which are platform specific. I cannot see anything in the config files to suggest something which I can change. Any ideas? Is there some other version of the engine containing this new audio system I need to download from github or something? This is the version I am using: Version: 4.16.2-3514769+++UE4+Release-4.16
Or, is this voice limit setting thing you are talking about just not public yet?
What version of UE4 are you using? The android backend for 4.16 is broken/non-functional (was implemented by a contractor). I was able to go back and get android working for the audio mixer and it seems to be working well.
Check out this thread for others using android and the audio mixer with latest from 4.17 preview:
The issue they were experience at the end of that thread is a result of a source file being boosted by 3.0 gain and causing clipping.
As for your specific questions, EQ is a DSP effect, so if you want to you use that, you’ll be doing DSP. The default behavior of the audio mixer is the same as before. You setup your EQ using sound classes, push sound mixes, etc, to change the EQ.
I was indeed talking about channel limits. I prefer to use the term “voice limits” since it’s a more standard nomenclature in audio. “Channel” is best used for specifying indices in the interleaved audio output stream (e.g. Left, Right, center, etc). But since the term MaxChannels is used in this one case in the audio engine, I sort of use that and say “voice limit” to disambiguate between “channels” as in voices vs “channels” as in output channels.
In 4.17, there is a new platform-specific setting in the android target settings panel for audio so you can say reduce the number of max channels (or voices) for android vs the same game shipping on iOS, and so on. You can also still reduce the max channels using the project’s audio settings. The idea for the new platform-specific setting is that different platforms might have different CPU restrictions so should have the option of setting them differently. Each platform uses a max channel count that is the lesser of the two values (the global one set in audio settings vs the one set for the platform).
For Project level Max Channel limit, you will want to go to Project Settings > Engine > Audio > Quality Levels > 0 > Max Channels (there’s an enumeration because you can add alternate Quality Level settings here)
To access the new platform settings, you will need to have 4.17. However, it’s important to keep in mind that this is a Work In Progress feature right now.
A couple of things to note that 0 on some of these parameters means USE DEFAULT and then the other thing to note is that Sample Rate on Android is not settable–since creating that field, we now query the specific Android Device’s preferred Sample Rate to avoid extraneous Sample Rate Conversion calculations.
I hope that helps you navigate the Project Settings.
Thank you Dan. Thank you Minus_Kelvin. This is great. Very encouraging. Very encouraging. Absolutely love it. I didn’t bother with gathering any diagnostic information. but after a dozen different builds, and testing for a few hours I am confident my previous problems have been solved. Not experiencing the previous distortions when I have too many wav files executing at once. My sound track isn’t skipping to the next track when too many sound effects are being executed. Fantastic.
I did have to readjust all the volume levels to 1 or below. Many of the wav files I was using had volumes set above 1. And I even had to lower and/or increase the gain in the wav files outside of UE4, in Logic, and then re-import to get things to balance the way I like.
Also, it’s super cool to experience audio spatialization within a daydream app. It’s kind of a big deal for vr. So it’s great to see it working. It really enhances the immersive feel.
Things sound like they are better than before, overall.
Unfortunately, I think I am experiencing that crackling issue that Aussieburger experienced in the link you provided. In some cases it sounds like a chirp. It’s a different distortion and it happens at a different time, without regard to how many other wav files are being executed. It almost sounds like it is happens right when the wav file is played, whereas before I think my problems were occurring due to an immediate cessation of a wav file.
Also, I may be experiencing some sllight degradation in overall performance. I didn’t gather any diagnostic info, just feels slightly sluggish. At one point during my testing there was a huge slow-down in performance, made my app totally unplayable, but it only occurred once, and I could not duplicate it after a dozen builds, and about an hour of gameplay.
There’s a strange bug with 4.17 when I try to package for android immediately after saving a blueprint. It crashes. It happens every time. I filed a bug report on answerhub, which I think is the proper way of filing a bug report.
We have noticed performance issues when Android units heat up after running for a while.
Wow. You guys work fast. This morning I was dealing with this crackling/chirping issue. This afternoon it was resolved.
I just downloaded Preview 2. The chirping/cracking issue appears to have been resolved. I also think I see a bug report resolution in the Preview 2 notes. I have only tested it for about 5 minutes, but it sounds so much better. Very cool.
Very cool. Great job guys!
After some more testing. Still getting some clicking. It seems like it is significantly less frequent now though.
Only one wav file is making a strange sound. Like a chirp more than a click or crackling, all other wav files are okay though. Everything sounds much nicer.
Yeah, maybe that’s it, the degradation in performance I experienced happened after using the app for some time.