Is there an install order, and what does ACDB do--in a nutshell?
Order of installation does not matter as ACDB, at this time, prepares audio effects configurations during each device boot using what is available in Magisk modules at any given time.
It's finally operating how I had intended before the major ACDB update recently where I was running into issues accommodating multiple Magisk modules with the acdb.conf file.
Honestly, I do not know how it could be any easier for a dev or even a user wanting to add effect configuration to an existing module in less time than it took you to reach the end of this third paragraph.
The only matter of concern for dev/user interested in ACDB support is the acdb.conf file, which I suggest placing in the Magisk module's root folder next to module.prop and the /system folder.
This acdb.conf file contains four or more properties to which values need to be applied in order to have any configuration take place each device boot.
Many are already likely familiar with the relevant components in configuring an audio effect. For the rest of you, here's a quick synopsis:
Effect libraries in /lib/soundfx/ must be configured appropriately to have a chance at doing anything other than being absolutely dormant. Still, effect libraries fully configured have no effect whatsoever on the audio signal unless an effect-chain for the library is created by an apk, service, or other component. But, this can only happen if the library is properly configured in the first place.
Configuration takes place in various forms of two file types:
audio_effects.conf with its own Android-specific format and
audio_effects.xml with its more standard xml.format.
The components used to configure an effect remain the same for both formats:
Library ID
Library Name
Effect ID
Effect UUID
The Library ID is entirely flexible and can be almost any single string, but it is encouraged to maintain the common Library ID unless a unique scenario calls for a change to be able to have more than one instance of a library.
The Library Name is, in fact, the filename of the library, so it is restricted to how the library appears in the filesystem. A change in filename will require the same change to Library Name when configuring, for example.
Before we move onto the two Effect components, let us use ViPER4Android's popular and familiar effect library to illustrate the two Library components.
ViPER4Android is an incredible DSP application with a phenomenal effect library:
libv4a_fx_ics.so
If you guessed this to be the Library Name value for the effect configuration, you are correct. The Library ID presented by the authors for
libv4a_fx_ics.so is:
v4a_fx
As you can see, it does not appear to be anything other than an identifier as it does not match anything explicitly.
At this point, we have half of acdb.conf ready to complete already:
libraryid=v4a_fx
libraryname=libv4a_fx_ics.so
effectid=
effectuuid=
The Effect ID is exactly like the Library ID in that it is not intended to match anything other than itself. More often than not, the Effect ID is actually the same value as the Library ID, although, this doesn't mean anything other than one less thing to try to remember.
The authors of ViPER4Android presented their Effect ID slightly different than the Library ID:
v4a_standard_fx
Let us go ahead and plug that value in our acdb.conf:
libraryid=v4a_fx
libraryname=libv4a_fx_ics.so
effectid=v4a_standard_fx
effectuuid=
Remaining now is the most exciting part of the effect library: its Universal Unique Identifier.
This is a 32 digit hexadecimal strict pattern inside the library and is responsible for Android's capacity to create an effect-chain in which the effect library can fulfill its purpose when compiled.
When configuring, this 32 digit hexadecimal (0-9,a-f) value is divided into hyphen separated groups of 8-4-4-4-12 like: 01234567-89ab-cdef-0123-456789abcdef
This value can be changed if a unique scenario calls for multiple instances to coexist and must be done to the library directly. Otherwise, the Effect UUID is fixed and no other value will allow the library to execute.
The ViPER4Android author presented the Effect UUID as:
41d3c987-e6cf-11e3-a88a-11aba5d5c51b
This fourth value can now complete our acdb.conf file to instantly configure the ViPER4Android effect during the reboot following the saving of acdb.conf and placing it inside an existing ViPER4Android Magisk module:
libraryid=v4a_fx
libraryname=libv4a_fx_ics.so
effectid=v4a_standard_fx
effectuuid=41d3c987-e6cf-11e3-a88a-11aba5d5c51b
That's it. Nothing more to it. :good: