MWEngine

MWEngine is an audio engine for Android. Its purpose is to sequence audio in a musical context : offering sample accurate scheduling and playback of timed audio events, digital signal processing (DSP) for applying effects, real time synthesis, sample playback and recording.

Out of the box MWEngine comes with templates for basic instruments (such as sample players and synthesizers), methods to load and write WAV files and a large selection of audio effects to mangle all incoming sound!

Multiple audio driver support

MWEngine uses OpenSL (Android 4.1 up) or AAudio (Android 8.0 and up) to provide low latency results. The engine detects the OS and will sideload the required driver when supported, preventing unnecessary APK bloat.

Additionally, engine can tune the CPU frequency, thread using dedicated cores and scale the threading priority to ensure the most stable audio callback stream.

No C(++) expertise needed

While MWEngine is written in C++, the engine can wrap its code using JNI (provided through SWIG) which ensures that all methods and actors of the engine are exposed to the JVM meaning you can create your application using nothing but Java or Kotlin, while performance is guaranteed by the engine keeps its execution outside of the JVM.

If you intend to create an application using the built-in instruments and effects, there won't be any need for you to write custom C++ code, you can build the project which will bundle MWEngine as an AAR library, which you can include in your custom Android project as usual.

Who / what is using it ?

MWEngine is the audio engine created specifically for MikroWave. It is also used for kosm and has been adopted by third party developers for applications as TIZE - Beat Maker, Music Maker and Another Flamenco Compás App.