Hi all - I’m running Audulus on an iPad and created a sound processing app which uses multiple delays process the output of various software synth Apps…
I use AudioBus 3 or AUM to route the signal into my Audulus app and record the output - the issue is when I switch between synths, or drop in and out of Audulus… I get a short burst of static or crackles
The strange thing is when I listen back to the recording it’s clean as a whistle !!! Perfect in fact - The problem is ive been asked to do some live performances and I can’t have this happening live…
I’ve tried reducing the CPU useage, running on and off the battery on the iPad and nothing seam to fix things…
Thanks for the quick response… the CPU is about 15-20% I’ve tried altering the buffer size downwards on AUM - but that’s affecting the other apps…
However I’ve just tried it with just the one synth connected and quit everything thing else as I’ve just read although app are not supposed to use up memory in the background on the ipad some do apparently- also running off mains cable rather than battery as the iPad seams to cut the available memory and CPU to save battery life… and only a 20 min test but seams to have fixed the issue… (fingers crossed!)
Sounds like you may have found a solution. Crackling is generally the result of a momentary CPU overload. It occurs when the CPU is unable to process a buffer of audio fast enough to supply the output DAC. Apps running in the background on modern versions of iOS often have background tasks that run periodically even when the app is suspended and these will consume CPU cycles when the background task runs. Also, as you suspected, iOS will attempt to conserve battery by reducing CPU usage when possible. For maximum performance you should quit all unnecessary apps and run on mains power. Another possible source of crackling is audio sample rate switching. Audulus uses the sample rate from iOS, but some apps allow you to select a rate. For those apps, you should set the rate as low as you can get away with and the same for all running apps.
Btw, you mention reducing the buffer size. You should also try increasing the buffer size. Larger buffers may increase latency but they also provide more buffering which means that there are less likely to be buffer underruns (which cause crackling) due to the app not being able to finish all its calculations in time.
Buffer stuff is not always straightforward as sometimes lower buffers improve things when you wouldn’t expect and larger buffers might not help where one would think they should. There are a few synths where it seems like it is important that their buffer settings match the host they are feeding.
That is a long way of saying, you might want to explore the buffer influence.
Another thing that can influence crackling and CPU use (and this varies with both hardware and OS versions) is drawing/animation. In some cases, having a window open where drawing is being done (like meters) adds significantly to the load BUT in others, such windows seem to prevent the OS from throttling the CPU and result in better performance.
With standalone apps like Audulus, it is often a good idea to power-cycle the device before a session. This ensures that all ‘zombie’ processes are shutdown. There are cases where apps that have been run in the past should be idle (and all their resources freed) but aren’t. Power-cycling shuts those down.