Skip to content

Releases: Briclyaz/NLSound

NLSound v4.5 RELEASED

Choose a tag to compare

@Briclyaz Briclyaz released this 27 Sep 18:20
3dac070

🚀 NLSound Release Notes

⚠️ IMPORTANT NOTE ON MEDIATEK (MTK) DEVICES

  • Before: MTK-based devices had zero support in the codebase.
  • Now: Initial mechanisms and configurations for Dimensity and Helio chipsets have been implemented:
    • Unlocked 32-bit output and sample rates up to 384 kHz in the mtk_bessound and mtk_iir processing engines;
    • Completely deactivated the aggressive stock BesLoudness limiter/compressor (MTK_BESLOUDNESS_SUPPORT=no);
    • The speaker output stage has been switched to the high-efficiency CLASSH mode;
    • Hardware-level jitter reduction mode has been enabled for I2S digital audio buses (Low_Jitter);
    • Base system flags ro.vendor.mtk_hifiaudio_support=1 and hardware FLAC/APE/ALAC decoders have been enabled.
    • Fine, device-specific tuning of MTK audio pipelines will continue in future updates.

🎵 1. Global Audio Path Cleanup (Rejecting Placebos and Distortions)

The primary focus of this release is pure audio engineering. Dozens of obsolete and harmful tweaks, copied across forums for years and breaking the Android Audio HAL architecture, have been completely removed.

A. system.prop and AudioFlinger Cleanup:

  • Removal of the bogus 24-bit software decoder block:
    • Before: More than 20 non-existent AOSP/CAF keys were injected, such as vendor.audio.mp3.sw.decoder.24bit=true and vendor.audio.dsd.sw.decoder.24bit=true.
    • Now: All fictitious keys have been completely removed.
    • Impact on sound: Resolved an initialization issue with C2/OpenMAX media decoders where the system would fail over from hardware DSP offload to CPU-heavy software decoding, introducing jitter and excessive battery drain.
  • Removal of the forced 64-bit mediaserver (ro.mediaserver.64b.enable=true):
    • Before: Forcing 64-bit mode caused the audio server to crash on devices with 32-bit vendor libraries.
    • Now: Process architecture is determined natively by the firmware.
  • Removal of synthetic reverb (effect.reverb.pcm=1):
    • Before: Artificial echo was injected into the digital signal path.
    • Now: The parameter has been stripped. The sound is now focused, clean, with precise instrument localization and natural transient punch.
  • Removal of the static volume lock (persist.audio.hifi.volume=90):
    • Before: A fixed volume value disrupted the gain staging of Qualcomm WCD chips, clipping dynamic headroom and causing distortion on high-impedance headphones.
    • Now: Dynamic range headroom management has been fully restored to the native DSP.
  • Deprecation of archaic LPA flags:
    • Removed dead parameters from the Android 4.4–6.0 era (lpa.decode=false, lpa.use-stagefright=false).

B. Hardware Distortion Fixes in the Mixer:

  • Total deactivation of soft-clipping (Softclip):
    • Before: Softclip Enable mixer controls were set to 1, aggressively flattening and compressing volume peaks.
    • Now: Soft-clipping limiters (RX_Softclip, WSA_Softclip0/1) are forcibly zeroed out (0). The low-end is no longer muffled or muddy—restoring tight, punchy dynamics.
  • Disabling multiband compressors and noise gates (MBDRC, Compander, Noise Gate):
    • Before: Stock noise gates and compressors choked quiet string decays and natural room reverberations.
    • Now: COMP, MBDRC, Compander, and Noise Gate blocks have been completely zeroed in the mixer. Subtle textures and micro-details of live recordings are now fully audible.
  • Removal of stock battery-level speaker throttling:
    • Before: When battery levels dropped below 20%, vendor drivers forcibly choked volume and cut low frequencies.
    • Now: lowbattery_speaker_profile_support=false, battery_listener_enabled=false, and oplus_ear_protection_enable=false have been disabled.
  • Restoring true infrasonic sub-bass (Step 8):
    • Before: Stock High-Pass Filters (HPF) cut frequencies below 25–40 Hz to protect cheap phone hardware.
    • Now: The hardware HPF cutoff in DSP registers has been lowered to 4 Hz (CF_NEG_3DB_4HZ / MIN_3DB_4Hz), and the headphone path interpolator is switched to PURE_HIFI / CLS_H_HIFI. Quality headphones now deliver deep, physically resonant sub-bass.
  • Proper microphone gain staging (Step 3):
    • Before: The script blindly inflated primary ADC sensitivity (ADC Volume), introducing severe electrical hiss and room noise.
    • Now: Only digital recording decimators (DEC Volume) are calibrated, preserving clean voice capture without room rumble or clipping.

🎬 2. New Dolby Atmos Architecture (Step 14)

  • Universal DAX cleanup profile (dax-default.xml):
    • Disabled the automatic volume leveler (volume-leveler), eliminating sudden volume pumping during bass-heavy drops;
    • Disabled artificial dialogue enhancers (dialog-enhancer), removing metallic, synthetic vocal coloration;
    • Eliminated the hollow "sound in a bucket" effect in headphones while preserving punchy bass and wide imaging.
  • Dedicated stereo speaker tunings:
    • Xiaomi 13 Ultra / 14 Ultra (ishtar, aurora) — Precision phase balance, fine-tuned harmonic distortion (harmonic_2/3), and parametric GEQ profiles to flatten the stereo frequency response;
    • Oppo Find X6 Pro / OnePlus 12 (PGEM10, OP595D, OP528BL1) — Hardware offload unlock and removal of power caps on smart amplifiers.

🧩 3. Installer Architecture & Full OverlayFS / Mountify Compatibility

  • Adaptive path normalization (normalize_path):
    • Before: The installer hardcoded all files into /system/..., causing symlink collisions on modern dynamic partitions.
    • Now: The normalize_path() function automatically detects the environment:
      • Under KernelSU, APatch, Magisk OverlayFS, and Mountify, files are routed directly to their respective partition roots (/vendor, /product, /system_ext, /odm, /my_product);
      • Under classic Magisk (Magic Mount), the standard /system/ tree layout is maintained.
  • Elimination of leftover folder bugs in /data/adb/metamodules/:
    • Completely eliminated legacy post-fs-data.sh scripts with manual mount --bind loops that previously caused EBUSY (Device or resource busy) errors upon module removal.
    • Eliminated folder collisions caused by simultaneous /vendor and /system/vendor structures inside the module.
    • Injected PARTOVER=true into the root customize.sh to prevent MMT-Ex from dropping partition definitions via unset PARTITIONS.
  • Kernel protection against invalid overlays (/sys):
    • Before: The module created physical files under $MODPATH/sys/module/..., attempting to overlay the kernel sysfs filesystem, which is strictly prohibited by the Linux kernel and broke overlay managers.
    • Now: Kernel parameter tweaks (maximum_substreams=4096, high_perf_mode=1, impedance_detect_en=1) are injected as runtime echo commands into service.sh and applied safely after boot completion.
  • Reliable Xiaomi device detection:
    • Added fallback handling for the mivendor placeholder in ro.product.vendor.device, switching to the true codename from ro.product.device (resolving issues on Xiaomi 13/14 Ultra and Redmi Note 13).
  • Ultra-fast filesystem scanning:
    • Heavy directories such as /lib, /lib64, /framework, /fonts, and /bin are excluded from discovery. Initial system scanning time has been reduced from tens of seconds to 1–2 seconds.
  • Pure POSIX Shell migration:
    • The installer has been rewritten entirely for the native Android shell #!/system/bin/sh, eliminating bash dependencies and explicitly adding KernelSU and APatch binary paths to $PATH.

🎚 4. Hardware Mixer & Direct Patching Technology (Step 13)

  • Two-stage hardware register application:
    • The module no longer relies solely on boot scripts. Generated mixer parameters are directly injected into mixer_paths.xml as native <ctl> / <kctl> tags. Audio chips initialize in Hi-Fi mode from the very first millisecond of boot.
    • For live enforcement, parameters are also appended to service.sh with a sys.boot_completed=1 watchdog.
  • Updated tinymix_ext binary build:
    • Integrated a custom tinymix_ext utility compiled from AOSP sources with support for string selectors and crash prevention when sending unconventional hex values.
  • Native DSD support:
    • Activated native DSD routing in the mixer (DSD_L Switch=1, DSD_R Switch=1, switching TERT MI2S to NATIVE_DSD_DATA, and routing DSD over PCM via SLIMBUS).
  • Ultra-low ADM buffer latency:
    • Qualcomm Audio Downlink Module (ADM) DSP routing latency has been reduced to 2 ms (vendor.audio.adm.buffering.ms=2).

🔍 5. Hardware Scanner (Hardware Detection)

  • Implemented low-level bus scanning across I2C, SoundWire, Slimbus, Platform, and DeviceTree nodes for exact chip identification:
    • Amplifiers: Cirrus Logic (CS35L41), NXP/Goodix (TFA98xx), Texas Instruments (TAS25xx), Awinic (AW88xx), Maxim (MAX98373), Qualcomm WSA (WSA88xx);
    • DACs & Codecs: Qualcomm WCD (Aqstic / Bolero family), ESS Sabre, Asahi Kasei (AKM).
  • If a device is missing from the preset database, the installer dynamically generates an adaptive tuning profile based on the detected amplifier hardware.

🔊 6. Audio Stack & Codec Optimization

  • Direct PCM routing (Step 11):
    • The DIRECT_PCM flag is merged into existing direct streams via a logical OR (AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_DIRECT_PCM), preventing track initialization crashes and allowing compatible players (Poweramp, UAPP, Neutron) to send bit-perfect streams straight to the DAC without AudioFlinger processing.
  • Safe Hi-Res sample rate additions (Step 5):
    • Selected sa...
Read more

NLSound v4.4 RELEASED

Choose a tag to compare

@Briclyaz Briclyaz released this 05 May 18:37

We have prepared a major update for you, aimed at improving the quality of the module and fixing many known bugs!

What was done:

💀 BUGFIXES

  • Fixed a global issue related to installer item 16: it just didn't work due to a bug in the code. Now everything functions properly;
  • Fixed problem with acdb files downloading for some users: now everything works properly, thanks for your feedback.

😋 CHANGES

  • Made changes in the 14th item of the installer: now the code for making changes for all devices that do not have parameters selected by our team works properly;
  • We made some changes to the audio output patching policy: now RAW output (often used in games and other applications to output audio with minimal latency) is also subject to changes, but only the sample rate is patched for better compatibility;
  • Some code changes “under the hood” for better readability (renamed some variables and so on).

😳 ADDED

  • Nothing in this version.

😭 REMOVED

  • Nothing in this version.

Now you can help us translate the module into your language!

We have created a profile on Crowdin where you can conveniently translate the module into the language you need.
At the moment we are planning to translate the module into 30 of the most popular languages around the world.
The English version of the module installer has been uploaded to the platform for the template.

Link on Crowdin - https://ru.crowdin.com/project/nlsound


We have abandoned the division of the module into STABLE and BETA versions

This is due to the lack of testers, lack of sufficient quality control. In other words, we cannot guarantee that the STABLE branch will work STABILIER THAN BETA because we lack the resources to test it. From this version onwards, the module will only have a version and a designation that it is for Qualcomm-based devices (even though the MTK branch is abandoned, we will continue to indicate this in the names so as not to mislead people with Tensor, Kirin, etc.).

NLSound v4.3 RELEASED

Choose a tag to compare

@Briclyaz Briclyaz released this 28 Apr 10:15
180f5e5

We have prepared a major update for you, aimed at improving the quality of the module and fixing many known bugs!

What was done:

💀 BUGFIXES

  • Fixed an issue that caused the speaker to not work on Redmi Note 9 Pro device when using the 8 installer item;
  • Added fixes for correct operation of volume key selector for those who prefer to install the module via APatch. But, we need additional tests;
  • Fixed an issue that could cause a bootloop on a Poco F5 device when using the 14 point installer;
  • Fixed multiple issues with calls not working on some devices;
  • We have rewritten the patching of resourcemanger files and fixed several issues related to these files: now everything works correctly;
  • Fixed an issue that caused the module to not always fully restore past installation settings;

😋 CHANGES

  • Made changes to the 13 and 15 installer items working together: now your Dolby shouldn't die if you agreed to install both items;
  • We have prescribed the use of CLS_H_LOHIFI instead of CLS_H_H_HIFI for the mixer patch file patching clause, which should have a positive effect on the compatibility of the clause with a large number of devices and not affect the audio quality;
  • Numerous fixes have been made to the 13 installer item as well as 6, which should have a positive impact on compatibility with more devices;
  • Changes were made to the structure of the module: we are tired of seeing how our developments are carelessly stolen by unscrupulous individuals, so we have to make amendments and complicate the structure of the module;
  • Numerous corrections have been made to the Chinese translation of the module. Nevertheless, we would not refuse your help, but about it a bit below;
  • Updated tinymix parameters for the 1+12 device;
  • A lot of work has been done on code refactoring;
  • We have made some improvements in mounting files in the system to reduce the number of mount points, which should have a positive effect on the performance of the module and not offset the negative effects of using it;
  • We have made many fixes to the module to make it work properly on the Mi 10 device;
  • Made some compatibility improvements to the 6 point installer for Realme 12 Pro+ and 1+12 devices;
  • We have once again reviewed the prop list and edited it a bit, but overall it won't affect anything, but we had to report it;
  • Many changes and fixes for the 1+7 lineup devices have been made to various items in the installer;
  • We've made some changes to the patching files for those who prefer to use KSU, KSU Next, and other crap;
  • The algorithm of searching for files in the system that will be modified by the module has been optimized: now this process is faster and works more accurately;
  • We continue to work on improving the visual component of the module: in this version we have once again slightly changed the appearance of the installer. We hope you will like it;
  • Made changes to the audio_io_policy file patching: this should now work properly and without crashing on some devices;

😳 ADDED

  • We've added a button to the module to invoke some number of actions that may be useful to you;
  • As a test, we added support for Sony Xperia 1 II to the 14 point installer;

😭 REMOVED

  • We removed the audio bitrate change when agreeing to install the 8 installer item;
  • Superfluous files were removed from the module, which also had a positive effect on the final weight of the module;

Now you can help us translate the module into your language!

We have created a profile on Crowdin where you can conveniently translate the module into the language you need.
At the moment we are planning to translate the module into 30 of the most popular languages around the world.
The English version of the module installer has been uploaded to the platform for the template.

Link on Crowdin - https://ru.crowdin.com/project/nlsound


We have abandoned the division of the module into STABLE and BETA versions

This is due to the lack of testers, lack of sufficient quality control. In other words, we cannot guarantee that the STABLE branch will work STABILIER THAN BETA because we lack the resources to test it. From this version onwards, the module will only have a version and a designation that it is for Qualcomm-based devices (even though the MTK branch is abandoned, we will continue to indicate this in the names so as not to mislead people with Tensor, Kirin, etc.).

v4.2 BETA

Choose a tag to compare

@Briclyaz Briclyaz released this 09 Feb 20:00

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«

v4.1 BETA

Choose a tag to compare

@Briclyaz Briclyaz released this 20 Oct 09:34

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«

v4.0 STABLE

Choose a tag to compare

@Briclyaz Briclyaz released this 29 Jul 11:52

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

  • If you are upgrading from versions 3.9 and below - do not use previous settings, perform manual installation to update the configuration file;
  • On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«

v3.9 BETA

Choose a tag to compare

@Briclyaz Briclyaz released this 26 May 13:53

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

  • ONLY CLEAN INSTALL
  • On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«

v3.8 STABLE

Choose a tag to compare

@Briclyaz Briclyaz released this 26 May 07:44

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

  • ONLY CLEAN INSTALL
  • On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«

v3.7-STABLE

Choose a tag to compare

@L1sa-f L1sa-f released this 18 Jun 15:43

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

  • ONLY CLEAN INSTALL

  • On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«

v3.6-STABLE

Choose a tag to compare

@L1sa-f L1sa-f released this 26 Mar 09:20
4eb41b9

Only for: Devices based on QUALCOMM.
Changelog: TeleType
Notes:

  • ONLY CLEAN INSTALL

  • On devices based on processors lower than SDM625, work of the modification is not guaranteed.

Support group: @nlsound_support
Sources: Github
Trello: »Click«