[Magisk] Zackptg5:
Audio Modification Library is a library of known audio mods. It'll search your magisk directory for any supported audio mods and incorporate them into itself. It's been completely redone to act as a standalone module so devs no longer need to worry about using a framework for their audio mods and users no longer are limited to just mods using that framework.

Some history

Originally, Unity Installer and AML were combined into one. That's what's archived on ahrions github.

Nowadays, unity is its own thing and AML was completely redesigned into what it is today. The whole purpose of aml is to combine the audio effect/policy/mixer/etc files from multiple audio mods into one set because only one copy of a file can be active mounted at any given time. With non-magisk installs, the actual copies of those audio files are all modified by various mods (aka they all work with the same copy) and so there's no need for aml

What is the purpose of this?

Audio mods often function in part by modifying some audio files (such as audio_effects, mixer_paths, etc.). The problem here is that each mod has it's own copy of the files and magisk can only mount 1 copy of each, so only 1 mod will completely work. AML functions by combining them all into one set of files to remedy this issue.

So how does it work?

It's now a standalone zip that is flashed once and forgetten about. It's magisk only for obvious reasons and will incorporate all supported audio mods into itself automatically during install, and then during each boot if any changes were detected. So it will adjust for any changes in audio mods such as new ones being installed, some being removed, or an existing one being updated.

Where the Mod is Located:

This is more of the nitty gritty for anyone interested but the aml specific copies of audio files and the mod itself are stored in the aml folder in the magisk directory like a typical module. However, it moves any detected audio files out of the folder of any audio mods so they won't be mounted by magisk and conflict. They're moved to .core/aml for safe keeping so they can be restored back to the mod later if you choose to uninstall aml or if upgrading aml

When do I flash this?

Unlike with older version of aml, order doesn't matter. However, it's best to flash aml FIRST. The reason for this is that an increasing number of audio mods look for aml and behave differently if it doesn't yet exist.

Compatibility:

Magisk v20.4+

Magisk Delta

KernelSU

Troubleshooting:

If a mod didn't work before you flashed aml, it probably won't work after. Take up the issue on the mod's thread.

Otherwise, if a mod works before flashing aml and doesn't after: First, try uninstalling all audio mods and then reinstalling them (including aml). If that doesn't work, then I'll need you to make a post with this in it:

Recovery log after flashing AML

List of Audio Mods Installed

AML version last working on (if applicable)

Zip attachment of your aml magisk module (/data/adb/modules/aml) folder (note that there's a debug.log file in here that's shows everything)

Zip attachment of your aml backup folder (/data/adb/aml) folder

Currently Supported Mods:

AM3D

AudioWizard

V4AFX

V4AXhifi

Dolby Atmos (ahrion's ports)

Dolby Atmos Axon 7 Oreo (guitardedhero's port)

Dolby Digital Plus

Bang&Olufsen ICEPower (only tested ainur version)

Arkamys (only tested ainur version)

Dirac (only tested ainur version)

Dirac Hexagon (only tested ainur version)

JamesDSP

MaxX Audio 3

Audio Compatibility Patch (formerly universal deep_buffer remover)

Ainur Sauron

SquareSound

Sony Xperia Z2 Sound System

Ainur Narsil

Ainur DTSX

Ainur DTS Ultra

Dolby Atmos Pie/Q+ (guitardedhero's ports)

Numerous other mods

Want an audio mod added to AML?

Make a post about it and I'll see if it's eligible. No guarantees that I'll add it but these are things that it must have to even be considered:

Original/unique (so not a repackaging of other audio mods)

Universal(ish) (support a large number of devices - not specific to a handful of devices)

Patches files rather than replaces them (the whole point of aml is to be a collection of patches)

Patches must be static (won't be changing with each mod update)

Audio Mod Can't be Added to AML Directly? You can still add it in! :)

If it doesn't meet these requirements, you can still make it aml compatible.

You just need your mod to create a file called ".aml.sh" in the root of the mod directory ($MODPATH typically). It'll need to have the patches for your mod in a format that aml can understand:

For patching audio_effect files, AML includes a 'patch_cfgs' function that makes life much easier. So if you have an effect and library to add:

patch_cfgs <effect_name> <UUID> <library_name> <library_path>

For example:

patch_cfgs v4a_fx 41d3c987-e6cf-11e3-a88a-11aba5d5c51b v4a_standard_fx /vendor/lib/soundfx/libv4a_fx.so

Note that this patch_cfgs function is for audio effects files only. If you're patching audio policy or mixer_paths files, then you'll need to make the patches the old fashioned way yourself.

So if you're not patch audio effects files, skip on down to the 'Some other variables/options' section :cowboy:

'patch_cfgs' has several flags that can be used (the format followed by an example for each is listed here as well):

-l: patch library

patch_cfgs -l <library_name> <library_path>

patch_cfgs -l v4a_fx /vendor/lib/soundfx/libv4a_fx.so

-e: patch effect

patch_cfgs -e <effect_name> <UUID> <library_name>

patch_cfgs -e v4a_standard_fx 41d3c987-e6cf-11e3-a88a-11aba5d5c51b v4a_fx

-o: patch output_session_processing (postprocessing). Typically used with both 'l' and 'e' flags as well

patch_cfgs -ole <osp_section> <effect_name> <UUID> <library_name> <library_path>

patch_cfgs -ole music atmos 9d4921da-8225-4f29-aefa-aacb40a73593 atmos /vendor/lib/soundfx/libatmos.so

-q: patch pre_processing (preprocessing). Typically used with both 'l' and 'e' flags as well

patch_cfgs -qle <pp_section> <effect_name> <UUID> <library_name> <library_path>

patch_cfgs -qle music atmos 9d4921da-8225-4f29-aefa-aacb40a73593 atmos /vendor/lib/soundfx/libatmos.so

-p: patch proxy effect (note that since this is a special kind of effect, it cannot be used with '-e'). When used by itself

patch_cfgs -p <proxy_effect_name> <proxy_UUID> <sw_library_name> <sw_UUID> <hw_library_name> <hw_UUID>

patch_cfgs -p dax 9d4921da-8225-4f29-aefa-6e6f69726861 dax_sw 6ab06da4-c516-4611-8166-6168726e6f69 dax_hw a0c30891-8246-4aef-b8ad-696f6e726861

But it's typically used with 'l'

patch_cfgs -pl <proxy_effect_name> <proxy_UUID> <sw_library_name> <sw_UUID> <sw_library_path> <hw_library_name> <hw_UUID> <hw_library_path>

patch_cfgs -pl dax 9d4921da-8225-4f29-aefa-6e6f69726861 dax_sw 6ab06da4-c516-4611-8166-6168726e6f69 /vendor/lib/soundfx/libswdax.so dax_hw a0c30891-8246-4aef-b8ad-696f6e726861 /vendor/lib/soundfx/libhwdax.so

-r: replace. Normally, aml will only apply any of the above if it doesn't exist in the audio cfg file. With this flag enabled however, it'll replace any existing effects. It's pretty rare that this would be needed (none of the mods patches built-in to aml have this)

no flag specified: if no flags are specified, patch_cfgs will use -le by default (patch library and effect). This is what's typically used (like in the first example before this list)

For patching other files: just add you script logic like it it was in your mod.

If you're patching mixers for example:

for i in $(find $MODPATH/system -type f -name "*mixer_paths*.xml"); do
<add_patch_here> for mixer '$i'
done

MODPATH is equivalent to aml's directory since it's running the aml.sh script

Then when AML is installed, it'll detect this .aml.sh file and apply the patches accordingly

Source

Download