[Nexus 6 Themes and Apps] Woody:
Back in the day, when Viper4Android started, it only worked on JellyBean 4.1 ROMs. This was when it was new and the iterations were just as fast as they are in this thread. Everything was finally figured out once Viper got to version 2.3.3.0 and then finally 2.3.4.0. Just about the same time that the final version of Viper was completed, KitKat came around with it's new experimental run time called ART. At that time, you could choose between either ART or the traditional Dalvik runtimes. But that choice came with a word of caution-"ART might not work with certain apks." At the same time, the Linux kernel was updated.

So now you have a SoundMOD that was reasonably perfected (and unfortunately abandoned as there has been no update since), a new Android OS and an updated Linux kernel that all needed to work together. Not saying that v4a was instrumental in a change of general ideology, but with so many people using it, many preferred sounds quality over battery quality. Let's not get all high and mighty on the Viper Is King train, as it was not the first to do what it does. If you've been around Android since Froyo/GB times, but more specifically the Galaxy S1/2 series, you should remember Supercurio's VoodDoo Sound Control. For the time, it blew anything away that was available and had a GUI apk that you could tweak. That was then, this is now; but really still talking in the KK days.

Since the sound mod was the greatest thing to headphones since aluminum, people wanted it to work on their custom ROMs/Kernels. In comes faux123 and his tweaks to his kernels that allowed for ramdisk injections of audio patches (generally AnyPatch kernels are what you will mostly find as it uses the "stock" ramdisk as a foundation). So if you ran a kernel during the middle 2013 to 2014, most had the Faux sound patch, as it allowed for peak sound for the device through the use of a custom kernel (this is why most kernels now days have a sound section in their .conf files or GUI). It lasted forever and is still being incorporated in custom kernels to this day (check your Kernel Thread OPs/GITs ;)). Since kernel devs are few and far between, they tend to either work closely together, cherry pick commits or try depart themselves from each other.

Android moves to Lollipop and ART is no longer optional, like in the previous KitKat. LP also introduced 2 kernel toolchain updates over it's lifetime. This caused kernel devs to tweak their setups and Governors. There were still the usual suspects like Interactive, On-Demand, Performance and Conservative, as well as all their derivatives. At this point sound mods were still working mainly because of the Faux sound and/or Franco patches were being included in most kernels and being built from AnyPatch kept that possible. Viper4Android worked as advertised, even after the /system folder structure had also changed).

Now comes MarshMallow. Again with another folder structure change and the adaptation of custom recoveries to be able to properly wipe them. Ever wonder why you can't find your Profile and Kernel folders when you dirty flash? I figured it out shortly after MM came out. The thing was, with the new OS, something in the kernel changed and now my trusted Interactive governor was creating popping and cracking sounds. I actually posted (should read the few posts after mine as well. They talk about Faux's sound too and my realization that On-Demand removes the popping and cracking) in this thread about it when it was under previous management by kah-el. Here are my final findings regarding using On-Demand over Interactive.

So what does this all mean? It means that if you have popping and cracking, you should switch your kernel governor to On-Demand or one of it's derivatives. Some other culprits can be if you are running a Permissive or Enforcing kernel and/or ROM. If you don't know if you are or not, open a terminal and type (without the quotes) "su" [ENTER] "setenforce" [ENTER] and see which number it puts out. 0=Permissive; 1=Enforcing. You can change this without the SELinuxpolicy changer apk by using the commands above. Some kernels, such as ElemetalX, have a radio button that you can tick at installation to have it as Enforcing or Permissive. Even though the latest zips from OP are getting more directed to being able to be used with Enforcing, it would be good for you to know what yours is. I run Permissive and will for the foreseeable future (Google it to find out why). You also need to check your gain strength and if it is set too high. Louder doesn't mean cleaner.

On-Demand isn't for everyone, but we have to find out why the Interactive governor ramps up the frequencies too fast and the audio portion of the kernel effects the output of Viper. This is something that a new kernel dev upstart could really make his mark in the Android custom kernel/sound mod world. *Hint*Hint* Until then, I don't mind On-Demand and SIO (I used to use Deadline but started to get RRs, though those were probably self-inflicted).