Superpowered Update - July

Gabor Szanto

As always, the Superpowered Audio SDK gets stronger and better with new features built upon our incredible stability.

Since there are hundreds of millions of users launching an app with Superpowered inside every day, we are able to find and fix teeny-tiny bugs that would be impossible to find, if it weren&t for the scale of our footprint.

Our newest updates:

SuperpoweredRecorder

Performing file I/O is not recommended in a live audio processing callback, since such operations may block and lock. The Superpowered Recorder offloads file I/O to a background thread in an easy way.

Previously, it could only write stereo audio. Now SuperpoweredRecorder is able to write any number of channels, from mono (1 channel), stereo (2 channels) to any number of channels. Input should be interleaved, but the stereo option has a non-interleaved input option as well. Of course, the mono input should not be interleaved, as that’s physically impossible. :-)

After stop() is called, the recorder's background thread may need some time to finish file operations, close and move everything into the final location. A callback option is now available, which is called after everything is finished. The call will happen in the background thread.

A new fade option can be useful to remove audio "clicks". It performs a subtle fade in at the beginning and fade out at the end of the recording.

SuperpoweredFilter

The incredibly fast SuperpoweredFilter is now almost 2x faster, providing more CPU headroom for your eqs and filters. The only minor inconvenience is that as of now, the Superpowered Filter requires numberOfSamples to be exactly divisible by 8 in its process() method.

Progressive Download

The SuperpoweredAdvancedAudioPlayer now supports progressive download from HTTP and HTTPS locations, so getting audio from the internet is incredibly easy now. Custom HTTP headers can also be added for authentication and other purposes.

Every advanced feature of the player (time stretching, pitch shifting, looping, fast seeking, etc.) is available for progressive downloads.

Progressive downloads can be opened with the same open() method as local audio files. HLS (HTTP Live Streaming) urls can be opened with the openHLS() method now.

Analyzing Audio with Unknown Length

Sometimes the exact length of the audio to be analyzed is not known beforehand. SuperpoweredOfflineAnalyzer and SuperpoweredWaveform can be reconfigured on-the-fly now for a longer duration.

Long URLs for HLS

HLS content can now be streamed from CDN sources with unusually long urls, such as Akamai.

Ready for iOS 11 and Android O

Both the SDK and the example projects are updated to Xcode 9/iOS 11, Android NDK 25 and Android Studio 2.3.3/Android O.

  • recording
  • progressive download
  • mono
  • iir filter