Giter VIP home page Giter VIP logo

rootlessjamesdsp's Introduction

Icon
RootlessJamesDSP

System-wide JamesDSP implementation for non-rooted Android devices

Google play release F-Droid release License GitHub Workflow Status

LimitationsSpotify patchDownloadsCredits

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, 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

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)

3847 words
logo
Rex_sa (rex07)

3543 words
logo
FrameXX

3518 words
logo
FlavioPonte

3455 words
logo
Add000

3445 words
logo
Choi Jun Hyeong (Gokwu)

3438 words
logo
Abiram Kanagaratnam (AeroShark333)

3373 words
logo
fankesyooni

3316 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
Đăng Nguyễn (dang15082006)

1307 words
logo
Alessandro Belfiore (SerAX3L)

1228 words
logo
Gary Bonilla (TheGary)

1030 words
logo
kyunairi

888 words
logo
Ali Yuruk (foxabashed)

722 words
logo
Gyuri Gergely (roccovantechno)

714 words
logo
Nlntendq

684 words
logo
eurodyke (illegalval)

575 words
logo
Loui's (Louis_Unnoficial)

513 words
logo
Criss Santiesteban (ianpok17)

470 words
logo
Mr-Ojii

457 words
Translate in Crowdin 🚀

rootlessjamesdsp's People

Contributors

fankes avatar github-actions[bot] avatar thegamer1002 avatar thepbone avatar timschneeb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rootlessjamesdsp's Issues

Root Mode/Version

To bypass the current limitations and maybe become able to get a little bit more flexible with the implementaion/potentially find a more (battery) efficient way, what do you think about integrating/building an alternative hook/version for rooted users?

greetings and thx a lot for ur important work!

no permission specified

whenever i enter the command given in the adb method of the app in the interactive shell, it throws back this error "No permissions Specified".

Per app chains?

I see there is exclude app functionality, but I reckon it would be awesome if it was possible to apply different effects to different apps. Personally for myself exploring options for seamless dual content consumption.

Stuck on 1.2.2/F-Droid behind

Hi, I installed from F-Droid (Droid-ify frontend), and the version I'm seeing there is way behind even after repeatedly refreshing the repo.

If I look on the Play Store it thinks I'm up to date, so I can't do anything from there unless I uninstall.

I might be missing something but it seems like the release page only has zips of the source code and not a built apk to download.

Is it recommended to only use the Play Store version?

Root version 1.4.1 crash

The Root version crashes trying to open the IRS file selection dialog/menu for the Convolver.

This issue was introduced on version 1.4.1, version 1.4.0 works perfecty.

Thanks for your awesome work!

No sound while using Poweramp

App is working with YouTube (ReVanced Extended) but doesn't produce any sound when running with Poweramp (Speaker and Bluetooth). When disabling Rootless James DSP sound is back. Any settings in Poweramp that has to be adapted?
One thing:
When I change in Troubleshooting the setting between Audio Service Dump and Audio Policy Service Dump I can hear sound for about a second.

Using with VLC

Dear team of RootlessJamesDSP,

I am not quite sure if I am wrong or mistaken in my settings of VLC player, but I happen to have problems with playing audio files. For instance, after playing one track, the second doesn't produce sound, though it seems VLC is still working and playing the track. Maybe it is my phone, or the settings of VLC are off track. I paid attention not to use hardware acceleration options in the settings.

Thank you for your valuable work,

App causes Bluetooth audio controls to work intermittently or not play stream until manually paused once

When I connect to my 2015 Chevy Cruze with factory stereo, Apple Music will automatically start playing but no audio comes out of the car speakers, and the car controls don't work. I have to use the app controls to pause and then play the music once, and then everything works. This happens every time I reconnect to the car stereo. It's not an issue without JamesDSP running. Is the no audio a separate issue maybe?

Using my Galaxy Buds Live, the tap controls on the buds mostly don't work. Most of the time, I can pause audio but can't start it back up. The buds beep to acknowledge the input, but nothing happens. Sometimes I can't even pause.

I'm on a Galaxy Z Flip 4 with the latest OS updates, using Shizuku. Currently on v1.3.2 of the app and up to date Apple Music. The earbud control issue happens with YouTube/Revanced/Newpipe as well.

Legacy not working with Bluetooth

So:

  1. legacy mode on = bluetooth audio processing not working (see screenshot)
  2. legacy mode off = bluetooth audio processing works but only with some apps (no youtube).

Pixel 7 Pro, Android 13 January firmware
Magisk canary 25.0 (25206)
Latest root JamesDSP 1.2.2 arm64
Screenshot_20230225_071643~2

[ROOT] The app stops detecting devices

I don't know why it happens. App stops detecting devices and applies the speaker profile to Bluetooth headset. Also, the application apparently understands that there are problems and displays a question mark icon. Only forced closure helps to bring the application out of this state. This has happened to me on aosp-based roms as well.
IMG_20230602_174058

Question: android 9?

Hi,
I'm wondering, since the rooted-version of JamesDSP works from android 5, will RootlessJamesDSP ever be available for some earlier android versions? I'm mostly wondering about android 9 (since I know it is the earliest android version you can use Poweramp EQ on). I do fully understand if never will be possible, but I'm asking since I'd like to use a systemwide convolver on an non-rootable android 9 device.

Thanks for your great application (I use it on my other phone).

Apple music + pause/play media buttons

Strange behaviour that only happens when audio processing is active with Apple music: my earbuds touch control works to pause playback , but to restart I need to activate twice. The earbuds recognise both activations (beep feedback). Tested on two pairs of earbuds (different brands).

Works fine when audio processing with Foobar2000.

[Not issue] Per-device profiles

Hi @ThePBone ! Just wanted to say thanks for the implementation of the per-device profiles, after using it I realized that this is a really handy and useful feature! It's nice to see the project developing, as the JamesDSP grows with new cool features and translations. Thank you for your hard work!

Monochrome themed icon

I know this is not the uttermost technical priority, but please consider adding a monochrome themed icon, introduced for A13. It will make the app blend much better in the home screen. (If you do so, please add it in the root variant as well, as I am using that on my rooted devices.)

Excluded apps option from three dots not working in rootless version

Hi @ThePBone! While testing the latest build of the rotless version, I noticed that the "excluded apps" option no longer works. The notification indicates that the enhanced processing option must be enabled for this menu to work, but this option is missing in the rootless version. This problem not present in the build #221 and appeared in build #225 . Thank you!

deezer now being automatically excluded

deezer used to work perfectly fine, but now after tweaking around the audio output on poweramp, deezer became automatically excluded

edit: deezer flat out doesn't work, no audio output even without any effects

Universal (rootless+root) app

Would be nice if the app was universal and if it detected root it would install a root version of itself and otherwise proceed with a rootless setup

[Suggestion] Use multiple liveprog scripts at once

I am not sure if there are any technical limitations, but I think some people would appreciate the ability to use multiple liveprog scripts at once. The best thing would be if we could sort the audio effects by the order in which they process audio.

I'm really new to this, but my guess as to why this might not work is that each liveprog script expects to get the same unprocessed samples as input, but if I give it some already processed samples it will probably break the effect and cause unwanted distortion. Am I understanding this correctly and is this the reason why multiple liveprog scripts can't process the audio at the same time?

Sound clipping and weird delay

Here's the dump log file

It feels as if the app doesn't get enough processing power. This issue is more prevalent when playing high quality audio files.

Also just to note, I'm having to use AudioPolicyService dump as the first option doesn't process the audio for me.

Miui Issue

When I use RootlessJamesDSP on the Chinese version of miui14, I get Anti-fraud Protection, which prevents the StatusBar from displaying notifications and always shows red.

Device:Redmi Note 11t Pro
Rom:Miui14.0.3.0
RootlessJamesDSP:latest

Automatically re-enable on reboot if PROJECT_MEDIA permission is granted with ADB

Hi,

I recently finished setting up JamesDSP on my device, and I'm really enjoying it so far! However, there is one inconvenience that I hope might be fixable. I used ADB to set everything up, and I enabled the optional feature to skip audio capture permission prompts (appops set me.timschneeberger.rootlessjamesdsp PROJECT_MEDIA allow). However, even after having done this, the app still displays a notification upon rebooting that user input is required to launch JamesDSP. Tapping on that notification causes it to dismiss itself and enable JamesDSP. Can the app check for the PROJECT_MEDIA permission at runtime and automatically activate without user interaction if it has already been granted? This is only possible if the permission had previously been enabled using ADB, so I don't consider this to be a privacy concern. If the user doesn't grant the optional permission with ADB, Android will still have to get explicit approval from the user before the PROJECT_MEDIA permission will be enabled; therefore, if JamesDSP queries the status of the PROJECT_MEDIA permission at runtime and it's enabled, the user would have to have enabled the permission via ADB.

Thanks in advance!

Audio does not re-route through USB

Pixel 7 Pro on latest update
Rootless
App: Tidal

The DSP works great, and I'm loving it for my bluetooth buds. However, when I plug in the phone in my car via USB for Android Auto, it'll keep streaming audio through the phone's speaker. The second I turn off audio processing, the audio will automatically switch to car speakers. I'm not well versed with the verbeage in the options and might be missing something, but is this working as intended?

[Workaround] Repeated audio / Endless echo

I discovered a workaround that works on my device: add RootlessJamesDSP itself to the "Excluded Apps" list.

As I understand it, some Android custom ROMs include patches to make sure that apps can't block their sound from being captured. This way RootlessJamesDSP unrestrictedly captures itself in an infinite loop.

I couldn't find any explanation for this problem online, so I'm hoping this can be helpful to someone experiencing the same problem.

Thanks for your hard work in developing this wonderful app.

[Suggestion] Excluded audio outputs/devices

I think it would be really useful for a lot of users to be able to exclude certain audio devices from audio processing in the very same way as we can do it with apps. By audio outputs/devices I mean for example "Phone reproductor", "Cable headphones", "Bose Quietcomfort", "Sennheiser X3784 whatever...". The same output devices we can choose from in android media output picker. I don't know if it's possible for user apps to detect the current output device, but I hope it is.

[Feature Request] Register as an equalizer app to respond to related intents

Some local music player (Retro Music Player for instance) offers a button to instantly switch to the external equalizer app. On LineageOS the button will get me straight to AudioFX, which is a system app in my LineageOS. I think it would be nice to have RootlessJamesDSP to respond to that intent since this app is much more powerful than AudioFX which I seldomly use.

This app is amazing by the way, it is a perfect alternative to Viper4Android since v4a is damn hard to install and depends on root privilege. The app offers similar functions without compromising almost anything crucial. Many thanks to the great devs!:grinning:

Strange sound when there is a voice.

I use the speakerphone to listen to music, watch movies, etc., it makes a strange sound every time there is a voice. specifically like FM radio. I am using Xiaomi 13 Pro.

Crazy battery drain and lag

I feel there's something not optimized properly here... This app is the #2 app draining my battery. I have a feeling the extreme delay and random cutouts when doing anything even slightly using the CPU are somewhat related to this. Mind you that this is a brand new phone and 80% only lasts me a few hours even just listening to audio. Is there anything that could be done to optimize this?

Screenshot_20230328-190702

Quick Settings tile

Would it be possible to add custom QS tile to quickly start/stop JamesDSP?

Automaticly set profiles

There should be an automatic detection system for profiles. E.g., when a profile is saved, it will be automatically applied when the audio output is switched to it. Also (like many other EQs), it should be able to detect different Bluetooth devices instead of just one profile for all of Bluetooth

Works well with

Hi

Didnt find any place to report positive tests...
it seems to wrk well for me on Pixel 6a with Vinyl Music Player.

Thanx a lot.

Documentation

Is this project lack documentation? Or is there any?

Awful Stuttering on Pixel 7 (non rooted)

There seems to be a really randomly induced problem with audio stuttering. While nothing is intensive is going on with the system. What could be causing this? Is it something todo with the pixel 7 not being able to actually keep up or is it some setting that needs to be changed?

Using with YouTube Revanced ...

I see that it works fine with YouTube Revanced but I spotted that it doesn't respect the muted audio on auto play videos .

Not a big deal but I thought I could mention it here.

Surely it's not a sort of bug.

Regards
Jim

Tidal audio repeating

Hey, I'm having an issue with the Tidal music player where the song kind of replays itself multiple times, like an echo. Even on stock settings with nothing changed. Any help or is it a bug?

Cheers

[Report]Sound effect disfuncion

Hello, ThePBone
Thank for your wonderful work,
sadly it got something wrong with my device, if you got time, please help me take a look, can it solve by changing setting?

Device: Samsung Tab S4 SM-T830
System: Android 10
One UI: 2.1
App: apply music

In notification shows Active app: Apple music,
by switch the detection method to audioservice dump,
in external dac, the sound play normally, but all sound effect fail, not changing the sound by switching on and off.

best

dump.txt

Apple Music never idle & duplicate detection

For all versions up to and including 1.5.0, Apple Music never stops being actively processed, even if I kill the app, and it's shown twice in the DSP notification. I'll attach a photo. Sometimes when I kill the app, then there's only one instance of Apple Music shown, but most of the time both stay. The DSP can never go idle and so is always using battery if I don't manually toggle it off. The quick setting has helped this a lot and I do appreciate that.
Screenshot_20230327_072532_One UI Home

Spotify not working with rootlessjamesdsp

hi when I enable RLJDSP(rootlessjamesdsp) it's not outputting Spotify audio but it's working on other app I already patch it using revance manager and btw I cleared RLJDSP app data but still not working.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.