No description
  • C 54.8%
  • Kotlin 40.8%
  • C++ 2.2%
  • Java 1.9%
  • CMake 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
github-actions[bot] 58e6b1bd14
Update Crowdin Contributors table (#286)
Co-authored-by: ThePBone <38386967+ThePBone@users.noreply.github.com>
2025-08-17 15:26:20 +02:00
.github ci: fix conditions 2025-04-30 02:08:59 +02:00
.idea feat: show warning on A15 about new screenrecord restrictions & modernize code base 2024-12-06 23:51:18 +01:00
app Update Crowdin Contributors table (#286) 2025-08-17 15:26:20 +02:00
buildSrc chore: bump version 2025-04-30 01:48:30 +02:00
codeview chore: upgrade dependencies 2024-12-07 01:14:00 +01:00
fastlane chore: bump version 2024-12-22 15:45:47 +01:00
gradle/wrapper feat: show warning on A15 about new screenrecord restrictions & modernize code base 2024-12-06 23:51:18 +01:00
hidden-api-impl fix: remove nested try/catch 2024-12-22 15:44:32 +01:00
hidden-api-refined chore: upgrade dependencies 2024-12-07 01:14:00 +01:00
hidden-api-stubs fix: remove nested try/catch 2024-12-22 15:44:32 +01:00
img feat: Add monochrome icon support for A13 2023-01-05 22:05:56 +01:00
.gitignore chore: gitignore 2022-10-23 16:37:39 +02:00
.gitmodules feat(liveprog): Added script editor with basic language support 2023-01-02 16:51:06 +01:00
build.gradle.kts chore: upgrade dependencies 2024-12-07 01:14:00 +01:00
BUILD_ROOT.md Update BUILD_ROOT.md 2023-07-22 12:25:14 +02:00
crowdin.yml Update Crowdin configuration file 2023-03-02 22:38:19 +01:00
Gemfile Add fastlane structure 2023-02-09 12:49:03 +01:00
Gemfile.lock Add fastlane structure 2023-02-09 12:49:03 +01:00
gradle.properties feat: show warning on A15 about new screenrecord restrictions & modernize code base 2024-12-06 23:51:18 +01:00
gradlew Add initial files 2022-06-30 15:10:33 +02:00
gradlew.bat Add initial files 2022-06-30 15:10:33 +02:00
LICENSE Create LICENSE 2022-07-26 02:46:57 +02:00
README.md Update Crowdin Contributors table (#286) 2025-08-17 15:26:20 +02:00
settings.gradle feat(liveprog): Added script editor with basic language support 2023-01-02 16:51:06 +01:00

Icon
RootlessJamesDSP

System-wide JamesDSP implementation for non-rooted Android devices

Google play release F-Droid release License GitHub Workflow Status

Limitations • Spotify patch • Downloads • Credits

Get it on Google Play

This app uses libjamesdsp which is written by James Fung (@james34602).

This app has several limitations that may be deal-breaking to some people; please read this whole document before using the app.

Screenshot Screenshot

Limitations

  • Apps blocking internal audio capture remain unprocessed (e.g., Spotify, Google Chrome)
  • Cannot coexist with (some) other audio effect apps (e.g., Wavelet and other apps that make use of the DynamicsProcessing Android API)
  • Increased audio latency

Apps confirmed working:

  • YouTube
  • YouTube Music
  • Amazon Music
  • Deezer
  • Poweramp
  • Substreamer
  • Twitch
  • Spotify ReVanced (Patch required)
  • Apple Music
  • Vinyl Music Player
  • ...

Unsupported apps include:

  • Spotify (patch for Spotify exists)
  • Google Chrome
  • SoundCloud
  • ...

Tested on:

  • Samsung Galaxy S20+ (Android 12; OneUI 4.0)
  • Stock AOSP emulator (Android 10-13)
  • Google Pixel 6 Pro (Android 13)
  • Google Pixel 6a

Spotify support patch

Note

This patch is universal and may also work with other apps than Spotify.

You can only use Spotify with this application if you patch the Spotify app. The setup is very easy:

  1. Download and install the ReVanced manager APK
  2. Install the unpatched Spotify app
  3. Open ReVanced Manager, select Spotify and enable the Remove screen capture restriction patch.
  4. Start the patching process and install the patched APK once it is done.
  5. You can now use Spotify with RootlessJamesDSP.

Patching other unsupported apps

The Remove screen capture restriction patch is universal and can also be used with custom APKs other than Spotify. The patch cannot remove capture restrictions for apps that use the native AAudio C++ API for playback.

  1. Download and install the ReVanced manager APK
  2. Open Revanced Manager, go to the settings screen and enable 'Show universal patches'
  3. Go to the patches tab and tap on 'Select an app' and press the 'Storage' action button in the bottom-right corner.
  4. Select your APK using the file picker.
  5. Enable the Remove screen capture restriction patch.
  6. Start the patching process and install the patched APK once it is done. Make sure to uninstall the unpatched app if it is installed, otherwise you will run into a signature conflict during installtion.

Warning

If the patched app crashes on startup (or refuses to work properly), it is likely that the app uses signature checks or other protections against tampering. In that case, additional patches that disable these anti-tampering checks would need to be created by hand.

Differences to other rootless FX apps

Regular rootless audio effect apps on the Play Store all essentially work the same way: Android has several default audio effects built into its operating system that these apps can use without any special permissions. Here's a list of those: https://developer.android.com/reference/android/media/audiofx/AudioEffect.

Being restricted to these default built-in audio effects is problematic if you want to implement any advanced custom effects such as Viper or JDSP, because Android does not allow apps to access & modify the audio stream directly.

To work around this problem, RootlessJamesDSP uses a bunch of tricks to gain full access to the audio stream of other apps. This is done via Android's internal audio capture. This allows RootlessJamesDSP to apply its custom audio effects directly without relying on Android's built-in effects.

Unfortunately, these tricks are not 100% reliable and introduce some limitations. Apps such as Spotify block internal audio capture (they don't want people to record their songs), and because of that, RootlessJamesDSP cannot directly access the audio stream of that app. This is the reason why a special patch is required to disable this DRM restriction inside Spotify's app. Patches for other apps with these DRM restrictions do not exist, but are possible to do.

Translations

This application can be translated via Crowdin: https://crowdin.com/project/rootlessjamesdsp

Not all languages are enabled at the moment in Crowdin. To request a new language, please open an issue here on GitHub.

Downloads

This app is available for free on Google Play: https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp

Also available on F-Droid: https://f-droid.org/packages/me.timschneeberger.rootlessjamesdsp/

Get it on F-Droid Get it on Google Play

Using Root

This app focuses on a rootless implementation, but it can be made to work with the magisk module too. See here for details.

All the limitations mentioned above are not relevant for the magisk/root version.

Credits

Translators

logo
Tim Schneeberger (ThePBone)

22396 words
logo
Oleksandr Tkachenko (netrunner-exe)

13732 words
logo
Hanifz99 (hanifz99)

4192 words
logo
Rex_sa (rex07)

3543 words
logo
FrameXX

3518 words
logo
Ivan Pesic (eevan78)

3471 words
logo
Add000

3469 words
logo
FlavioPonte

3455 words
logo
Choi Jun Hyeong (Gokwu)

3438 words
logo
narpatosian

3431 words
logo
Abiram Kanagaratnam (AeroShark333)

3373 words
logo
fankesyooni

3316 words
logo
Vjekoslav Buric (vjburic1)

3237 words
logo
Beruanglaut (beruanglaut)

3168 words
logo
Federico D. (fred199542)

2903 words
logo
Ismaël GUERET (ismaeloi1)

2844 words
logo
HasanDgn37 (MajorCanel)

2679 words
logo
Marcin Petrusiewicz (marcin.petrusiewicz)

2360 words
logo
zhiq liu (liziq)

1950 words
logo
Tim Li (timli103117)

1886 words
logo
Alondra Márquez (TecitoDeMenta)

1847 words
logo
Phan Nhanh (phannhanh)

1842 words
logo
MES-mitutti (MES-INARI)

1750 words
logo
jontix

1731 words
logo
Miko Nurmi (LePom_)

1464 words
logo
SkyAfterRain_tw

1419 words
logo
Đăng Nguyễn (dang15082006)

1307 words
logo
Alessandro Belfiore (SerAX3L)

1228 words
logo
Gary Bonilla (TheGary)

1030 words
logo
kyunairi

888 words
logo
Lucky Mehra (LuckyMehra776)

819 words
logo
Gyuri Gergely (roccovantechno)

714 words
Translate in Crowdin 🚀