Bongiovi DPS Android System Level Integration is an implementation of the Bongiovi DPS algorithm that allows for processing of all sound on an Android device.  The benefit of using the system level integration is the ability to process audio from other apps such as WeChat, Google Play, Spotify, YouTube, etc.

The current version has been verified to work on Android 5 and newer systems.

Android Audio System Stack

  1. Audio Effect Wrapper – This exposes the DPS Library effects to the Android Audio Flinger effect framework.  NOTE:  The DPS API must be accessed via the Audio Flinger API.
  2. DPS Controller App and Service – This provides user control over the DPS effect via the Audio Flinger API.

NOTE:  Applications that use the Fast Audio Path will bypass the DPS effect.  The Android system must be configured to force all audio applications to use the slow audio path.

The system outlined above is integrated using the following files:

DPS Android System Level Integration
  • dpseffect_java.jar
    • Java component for DPS AudioFlinger effect
  • libDPS.so
    • The compiled DPS library.  Be sure to use the version compatible with the CPU of your device.
  • dpseffect_java.xml
    • Permissions file for the AudioFlinger effect components
  • libdpseffectwrapper.so
    • Wrapper to conform DPS API to AudioFlinger API
  • audio_effects.conf
    • This is the audio configuration for the Android device.
    • NOTE:  This file must be edited for your device.  See the example provided in the package.
    • In some cases, this file may be in a different file system location.
    • The audio_effects.conf included in the source code example is for a Nexus 5.  Please add these new lines to your existing conf file:
      • Under “libraries”
        • dpseffectlib { path /system/lib/soundfx/libdpseffectwrapper.so }
      • Under “effects”
        • dps { library dpseffectlib  uuid 76835ba0-6a8d-11e3-bc92-0002a5d5c51b }
  • dps.lic
    • This is the license file provided by Bongiovi.
    • If the license file is not valid, the DPS effect will only work for 10 minutes.

All files must have proper permissions.

Using the Installation Script

  1. Root the device.
  2. Backup your audio_effects.conf and build.prop file:
    1. adb pull /system/etc/audio_effects.conf
    2. adb pull /system/build.prop
  3. Edit audio_effects.conf to include “libraries” and “effects” entries described above.
  4. Copy all of the contents of “Fire OS Install Package” including your new edited audio_effects.conf and dps.lic into a temp directory on the target device.
  5. From adb shell launch push_dps.sh from within the temp directory you created.
    1. chmod the script 755 if necessary
  6. Install dps_control_apk.apk
  7. Reboot
  8. Look at logcat on startup.  You should see Bongiovi DPS initialization messages.  These messages will also tell you if the effect is in demo or licensed mode.
  9. You should be able to launch the control app, load a profile and hear the DPS effect on music and movie file playback.

Manual integration (older versions)

  1. Root the device
  2. Make a backup of audio_effects.conf
    1. Most modern systems place the file in /system/etc
    2. Examples below will refer to /system/vendor/etc
    3. Be sure only one audio_effects.conf is used on your system!
  3. Edit audio_effects.conf to include “libraries” and “effects” entries described above.
  4. Mount /system as read+write
  5. Push dps_system_effect/system folder to /system
  6. Change permissions and ownership of all new files to match other files in the folders.
  7. Reboot the device
  8. Look at logcat on startup.  You should see Bongiovi DPS initialization messages.  These messages will also tell you if the effect is in demo or licensed mode.
  9. Install the dps_control_apk
  10. Reboot.
  11. You should be able to launch the control app, load a profile and hear the DPS effect on music and movie file playback.

DPS System Effect Control Application

  • dps_control_apk.apk is a Java app that controls the DPS audio effect.
  • Bongiovi will provide source code for this app.
  • This app may be modified in any way to support the desired integration.
  • Be sure this app is compatible with the version of Android on your device.  Compiling in an AOSP environment is necessary to include dependencies for the Android audio effects engine.

Remote Control Functions

Some devices, such as smart speakers, do not have displays so interaction with the DPS controller app is difficult.  For devices with displays, video playback will stop when interacting with the DPS controller app.

The commands below may be used to control the DPS effect from adb so no display interaction is required:

Start the Bongiovi controller:

adb shell am start -n com.bongioviac.dpscontroller/com.bongioviac.dpscontroller.MainActivity

Get remote control strings:

adb logcat | grep DPSCtrlRcv

Here are the available AM commands:

  • Turn on DPS processing
    • adb shell am broadcast -a com.bongioviac.dpscontroller.TURN_ON_DPS
  • Turn off DPS processing
    • adb shell am broadcast -a com.bongioviac.dpscontroller.TURN_OFF_DPS
  • Load a BGVX sound profile
    • adb shell am broadcast -a com.bongioviac.dpscontroller.LOAD_PROFILE --es "profile" "__FILE__NAME__"
    • Replace __FILE__NAME___ with a bgvx profile that is included in the controller app or is located in /sdcard/dpsprofiles.
  • Toggle KidSafe.
    • This feature is used for keeping a healthier volume on headphones.  It also works well to “dim” the output ~20dB for testing or other reasons.
adb shell am broadcast -a com.bongioviac.dpscontroller.TOGGLE_KIDSAFE