Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/timschneeb/rootlessjamesdsp

An implementation of the system-wide JamesDSP audio processing engine for non-rooted Android devices
https://github.com/timschneeb/rootlessjamesdsp

android audio audio-processing convolution dsp effects equalizer non-root rootless

Last synced: 2 days ago
JSON representation

An implementation of the system-wide JamesDSP audio processing engine for non-rooted Android devices

Awesome Lists containing this project

README

        


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](https://github.com/revanced/revanced-manager/releases)
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](https://github.com/revanced/revanced-manager/releases)
2. Open ReVanced Manager, tap on 'Select an application' and press the 'Storage' action button in the bottom-right corner.
3. Select your APK using the file picker.
4. Enable the `remove-screen-capture-restriction` patch.
5. 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](https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp&utm_source=github&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)

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

[Get it on F-Droid](https://f-droid.org/packages/me.timschneeberger.rootlessjamesdsp/)
[Get it on Google Play](https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp&utm_source=github&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)

## 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](BUILD_ROOT.md).

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

## Credits

* JamesDSP - [James Fung (@james34602)](https://github.com/james34602)
* Theming system & backup system based on Tachiyomi

### Translators



logo


Tim Schneeberger (ThePBone)



22396 words


logo


Oleksandr Tkachenko (netrunner-exe)



13732 words


logo


Hanifz99 (hanifz99)



3866 words


logo


Rex_sa (rex07)



3543 words


logo


FrameXX



3518 words


logo


Ivan Pesic (eevan78)



3470 words




logo


Add000



3468 words


logo


FlavioPonte



3455 words


logo


Choi Jun Hyeong (Gokwu)



3438 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


MajorCanel (hasandgn37)



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 (jont4)



1731 words


logo


narpatosian



1469 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


Gyuri Gergely (roccovantechno)



714 words


logo


Nlntendq



684 words




logo


eurodyke (illegalval)



575 words


logo


Loui's (Louis_Unnoficial)



513 words


Translate in Crowdin 🚀