{"id":20801736,"url":"https://github.com/timschneeb/rootlessjamesdsp","last_synced_at":"2025-05-14T23:07:21.945Z","repository":{"id":65707357,"uuid":"509083895","full_name":"timschneeb/RootlessJamesDSP","owner":"timschneeb","description":"An implementation of the system-wide JamesDSP audio processing engine for non-rooted Android devices","archived":false,"fork":false,"pushed_at":"2025-05-07T00:26:04.000Z","size":9041,"stargazers_count":1141,"open_issues_count":103,"forks_count":33,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-05-12T09:18:41.500Z","etag":null,"topics":["android","audio","audio-processing","convolution","dsp","effects","equalizer","non-root","rootless"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timschneeb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"thepbone","github":"thepbone","custom":"https://paypal.me/timschneeberger"}},"created_at":"2022-06-30T13:05:35.000Z","updated_at":"2025-05-11T18:42:39.000Z","dependencies_parsed_at":"2023-09-22T08:10:57.367Z","dependency_job_id":"d5c8b3b8-870c-410e-aa05-11768aea27c1","html_url":"https://github.com/timschneeb/RootlessJamesDSP","commit_stats":null,"previous_names":["timschneeb/rootlessjamesdsp","thepbone/rootlessjamesdsp"],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2FRootlessJamesDSP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2FRootlessJamesDSP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2FRootlessJamesDSP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2FRootlessJamesDSP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timschneeb","download_url":"https://codeload.github.com/timschneeb/RootlessJamesDSP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254243362,"owners_count":22038046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","audio","audio-processing","convolution","dsp","effects","equalizer","non-root","rootless"],"created_at":"2024-11-17T18:20:33.824Z","updated_at":"2025-05-14T23:07:16.935Z","avatar_url":"https://github.com/timschneeb.png","language":"C","funding_links":["https://ko-fi.com/thepbone","https://github.com/sponsors/thepbone","https://paypal.me/timschneeberger"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg alt=\"Icon\" width=\"75\" src=\"https://github.com/thepbone/RootlessJamesDSP/blob/master/img/icons/web/icon-192.png?raw=true\"\u003e\n  \u003cbr\u003e\n  RootlessJamesDSP\n  \u003cbr\u003e\n\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003eSystem-wide JamesDSP implementation for non-rooted Android devices\u003c/h4\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp\u0026utm_source=github\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1\"\u003e\n  \t\u003cimg alt=\"Google play release\" src=\"https://img.shields.io/github/v/release/ThePBone/RootlessJamesDSP?label=google%20play\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://f-droid.org/packages/me.timschneeberger.rootlessjamesdsp/\"\u003e\n  \t\u003cimg alt=\"F-Droid release\" src=\"https://img.shields.io/f-droid/v/me.timschneeberger.rootlessjamesdsp\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ThePBone/RootlessJamesDSP/blob/master/LICENSE\"\u003e\n      \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/ThePBone/RootlessJamesDSP\"\u003e\n  \u003c/a\u003e\n    \u003ca href=\"https://github.com/ThePBone/RootlessJamesDSP/actions/workflows/build.yml\"\u003e\n      \u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/thepbone/rootlessjamesdsp/build.yml\"\u003e\n  \u003c/a\u003e\n\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#limitations\"\u003eLimitations\u003c/a\u003e •\n  \u003ca href=\"#spotify-support-patch\"\u003eSpotify patch\u003c/a\u003e •\n  \u003ca href=\"#downloads\"\u003eDownloads\u003c/a\u003e •\n  \u003ca href=\"#credits\"\u003eCredits\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href='https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp\u0026utm_source=github\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'\u003e \n    \u003cimg width=\"300\" alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png'/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nThis app uses \u003ca href=\"https://github.com/james34602/JamesDSPManager\"\u003elibjamesdsp\u003c/a\u003e which is written by \u003ca href=\"https://github.com/james34602\"\u003eJames Fung (@james34602)\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    This app has several limitations that may be deal-breaking to some people; please read this whole document before using the app.\u003c/i\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003cimg alt=\"Screenshot\" width=\"250\" src=\"img/screenshot1.png\"\u003e\n   \u003cimg alt=\"Screenshot\" width=\"250\" src=\"img/screenshot7.png\"\u003e\n\u003c/p\u003e\n\n\n## Limitations\n* Apps blocking internal audio capture remain unprocessed (e.g., Spotify, Google Chrome)\n* Cannot coexist with (some) other audio effect apps (e.g., Wavelet and other apps that make use of the `DynamicsProcessing` Android API)\n* Increased audio latency \n\n\nApps confirmed working:\n* YouTube\n* YouTube Music\n* Amazon Music\n* Deezer\n* Poweramp\n* Substreamer\n* Twitch\n* Spotify ReVanced **(Patch required)**\n* Apple Music\n* Vinyl Music Player\n* ...\n\nUnsupported apps include:\n* Spotify (patch for Spotify exists)\n* Google Chrome\n* SoundCloud\n* ...\n\nTested on:\n* Samsung Galaxy S20+ (Android 12; OneUI 4.0)\n* Stock AOSP emulator (Android 10-13)\n* Google Pixel 6 Pro (Android 13)\n* Google Pixel 6a\n\n## Spotify support patch\n\u003e **Note** This patch is universal and may also work with other apps than Spotify.\n\nYou can only use Spotify with this application if you patch the Spotify app.\nThe setup is very easy:\n\n1. Download and install the [ReVanced manager APK](https://github.com/revanced/revanced-manager/releases) \n2. Install the unpatched Spotify app\n3. Open ReVanced Manager, select Spotify and enable the `remove-screen-capture-restriction` patch.\n4. Start the patching process and install the patched APK once it is done.\n5. You can now use Spotify with RootlessJamesDSP.\n\n### Patching other unsupported apps\n\nThe `remove-screen-capture-restriction` patch is universal and can also be used with custom APKs other than Spotify.\nThe patch cannot remove capture restrictions for apps that use the native AAudio C++ API for playback. \n\n1. Download and install the [ReVanced manager APK](https://github.com/revanced/revanced-manager/releases) \n2. Open ReVanced Manager, tap on 'Select an application' and press the 'Storage' action button in the bottom-right corner.\n3. Select your APK using the file picker.\n4. Enable the `remove-screen-capture-restriction` patch.\n5. 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.\n\n\u003e **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.\n\n## Differences to other rootless FX apps\n\nRegular rootless audio effect apps on the Play Store all essentially work the same way:\nAndroid 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.\n\nBeing 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 \u0026 modify the audio stream directly.\n\nTo 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.\nThis allows RootlessJamesDSP to apply its custom audio effects directly without relying on Android's built-in effects.\n\nUnfortunately, these tricks are not 100% reliable and introduce some limitations.\nApps 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.\nThis 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.\n\n## Translations\n\nThis application can be translated via Crowdin: https://crowdin.com/project/rootlessjamesdsp\n\nNot all languages are enabled at the moment in Crowdin. To request a new language, please open an issue here on GitHub.\n\n## Downloads\n\nThis 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\u0026utm_source=github\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)\n\nAlso available on F-Droid: https://f-droid.org/packages/me.timschneeberger.rootlessjamesdsp/\n\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\n    alt=\"Get it on F-Droid\"\n    height=\"80\"\u003e](https://f-droid.org/packages/me.timschneeberger.rootlessjamesdsp/)\n[\u003cimg src=\"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png\"\n    alt=\"Get it on Google Play\"\n    height=\"80\"\u003e](https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp\u0026utm_source=github\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)\n\n## Using Root\n\nThis 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).\n\nAll the limitations mentioned above are **not relevant** for the magisk/root version. \n\n## Credits\n\n* JamesDSP - [James Fung (@james34602)](https://github.com/james34602)\n* Theming system \u0026 backup system based on Tachiyomi\n\n### Translators\n\n\u003c!-- CROWDIN-CONTRIBUTORS-START --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/ThePBone\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15683553/medium/d13428d1e0922bc2069500aef57d1459.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eTim Schneeberger (ThePBone)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e22396 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/netrunner-exe\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15209210/medium/dabb33b18a6eb0e59cee34e448d81e40.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eOleksandr Tkachenko (netrunner-exe)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e13732 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/hanifz99\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15997687/medium/77003f34134a90b1b9089af86bbef755.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eHanifz99 (hanifz99)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e4192 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/rex07\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/13820943/medium/5b5499d4f13f168e0eab0499857a831e.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eRex_sa (rex07)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3543 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/FrameXX\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/14591682/medium/071f9d859dc36f9281f6f84b9c18c852.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eFrameXX\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3518 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/eevan78\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/12664235/medium/ee2d64bed2ea9a0a1a5ee31e59fa9d7c.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eIvan Pesic (eevan78)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3470 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/Add000\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15913337/medium/5bb6874d577c3c856b729fdcd2f9137a.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eAdd000\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3469 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/FlavioPonte\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15994613/medium/6ad9919ecb9cf61c034282b68e8bac17_default.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eFlavioPonte\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3455 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/Gokwu\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15975377/medium/7be6218dc0f81f4f2dc8418ea983bd9e.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eChoi Jun Hyeong (Gokwu)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3438 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/narpatosian\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15572339/medium/887ab0b501163ccf586003a7bca29ee1.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003enarpatosian\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3431 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/AeroShark333\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/16224190/medium/e0b34056ea348d30906f48054f716f3c_default.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eAbiram Kanagaratnam (AeroShark333)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3373 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/fankesyooni\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15676501/medium/6ee6d7e4c63bfb0f90dc5088a5ff0efd.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003efankesyooni\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3316 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/vjburic1\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/16358724/medium/2c068e312e7171e555b24f08c4ac9ae2.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eVjekoslav Buric (vjburic1)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3237 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/beruanglaut\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15727477/medium/928d69a437d753d783f03c22bf2d2c10.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eBeruanglaut (beruanglaut)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e3168 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/fred199542\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15215886/medium/9a13bdf396f1b87097813de7767f36a4_default.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eFederico D. (fred199542)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e2903 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/ismaeloi1\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15576171/medium/6909c87c219971037460a9110677b64a.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eIsmaël GUERET (ismaeloi1)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e2844 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/hasandgn37\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15507252/medium/4a02e1c8d12aae3330baa229e5f8fb5e.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eMajorCanel (hasandgn37)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e2679 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/marcin.petrusiewicz\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/13535169/medium/29d3f1c6a1a270a85b8fda88e8d1c848.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eMarcin Petrusiewicz (marcin.petrusiewicz)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e2360 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/liziq\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15757161/medium/f3903c160404f095de68760f81609430.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003ezhiq liu (liziq)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1950 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/timli103117\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/16184616/medium/5bb20ab441ea015a44b727baf585c20d.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eTim Li (timli103117)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1886 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/TecitoDeMenta\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15859109/medium/09cc6632c3686add5d52d4e7a3dec25a.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eAlondra Márquez (TecitoDeMenta)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1847 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/phannhanh\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/14543576/medium/229892a475f27a927eb4ac8874c1a648.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003ePhan Nhanh (phannhanh)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1842 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/MES-INARI\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15690555/medium/d0cc094c5ae8ad9419d7e229d4ed76c0.jpg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eMES-mitutti (MES-INARI)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1750 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/jont4\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15464490/medium/bd7f97dff61f637d007652f9947d8f17.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eJontix (jont4)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1731 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/SkyAfterRain_tw\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/16631123/medium/3665e526285f3ed15a2b2f7d68b13cbc.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eSkyAfterRain_tw\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1419 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/dang15082006\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/16282184/medium/bb9dbdbd49c8a5bf049bedc83a0d0cfc.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eĐăng Nguyễn (dang15082006)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1307 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/SerAX3L\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15755831/medium/4f31c78564ed55fef4b2bf8d96213a55.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eAlessandro Belfiore (SerAX3L)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1228 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/TheGary\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15713727/medium/4f9ede8b07ace57124001fb6678aeff7_default.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eGary Bonilla (TheGary)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e1030 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/kyunairi\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15925091/medium/7b1dd408c51242ab8602eb68408987cb_default.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003ekyunairi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e888 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/roccovantechno\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15818971/medium/75663306f941c87c2d9088c923aa89ad.jpeg\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eGyuri Gergely (roccovantechno)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e714 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/Nlntendq\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/14386422/medium/0c58b2245a59d1596c329dcf24037eb6.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eNlntendq\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e684 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" valign=\"top\"\u003e\n      \u003ca href=\"https://crowdin.com/profile/illegalval\"\u003e\u003cimg alt=\"logo\" style=\"width: 64px\" src=\"https://crowdin-static.downloads.crowdin.com/avatar/15973113/medium/6aa896129bb17f69fb69c827274f2131.png\" /\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eeurodyke (illegalval)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003e575 words\u003c/b\u003e\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\u003ca href=\"https://crowdin.com/project/rootlessjamesdsp\" target=\"_blank\"\u003eTranslate in Crowdin 🚀\u003c/a\u003e\n\u003c!-- CROWDIN-CONTRIBUTORS-END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimschneeb%2Frootlessjamesdsp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimschneeb%2Frootlessjamesdsp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimschneeb%2Frootlessjamesdsp/lists"}