[Android Software Development] 00bofh:
Finally - success.

With v3.31 it looks like there's something "hinky" in the Aroma installer.

Same options selected in both Aroma and Modular installs, same prep (clean install of ROM - including re-formatting internal and external storage in TWRP).

Aroma install "loops" on V4A driver install, as reported by several others, and Dirac force-closes.

From the log files (on every reboot, with or without driver installed):

04-11 11:04:52.927 I/art ( 4819): JIT added (osr=false) int com.tweaks.framework.Resources.hookResourceValue(int, java.lang.String, int)@0xe82da08c ccache_size=1416B: dcache_size=2664B: 0xd6de6291,0xd6de6771
04-11 11:04:52.930 I/ViPER4Android( 4819): Jni library status = true
04-11 11:04:52.933 I/ViPER4Android( 4819): Starting service, reason = ViPER4Android::onCreate
04-11 11:04:52.934 D/NetworkSecurityConfig( 4819): No Network Security Config specified, using platform default
04-11 11:04:52.939 D/libc ( 4819): [NET] android_getaddrinfofornetcontext+,hn 15(0x6170692e617564),sn(),hints(known),family 0,flags 1024, proc=com.audlabs.viperfx
04-11 11:04:52.939 D/libc ( 4819): [NET] android_getaddrinfo_proxy get netid:0
04-11 11:04:52.940 I/ViPER4Android( 4819): Init environment
04-11 11:04:52.940 D/libc ( 1303): [NET] android_getaddrinfofornetcontext+,hn 15(0x6170692e617564),sn(),hints(known),family 0,flags 1024, proc=/system/bin/netd
04-11 11:04:52.940 D/libc ( 1303): [NET] android_getaddrinfo_proxy-, fd error: Success(0)
04-11 11:04:52.941 I/ViPER4Android( 4819): Now checking for external storage writable, file = /storage/emulated/0/v4a_test_file
04-11 11:04:52.943 I/ViPER4Android( 4819): Check driver
04-11 11:04:52.947 I/ViPER4Android( 4819): Found 14 effects
04-11 11:04:52.947 I/ViPER4Android( 4819): [1], Visualizer, The Android Open Source Project
04-11 11:04:52.947 I/ViPER4Android( 4819): [2], Insert Preset Reverb, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [3], Auxiliary Preset Reverb, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [4], Insert Environmental Reverb, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [5], Auxiliary Environmental Reverb, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [6], Equalizer, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [7], Dynamic Bass Boost, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [8], Loudness Enhancer, The Android Open Source Project
04-11 11:04:52.947 I/ViPER4Android( 4819): [9], Multichannel Downmix To Stereo, The Android Open Source Project
04-11 11:04:52.947 I/ViPER4Android( 4819): [10], Noise Suppression, The Android Open Source Project
04-11 11:04:52.947 I/ViPER4Android( 4819): [11], Acoustic Echo Canceler, The Android Open Source Project
04-11 11:04:52.947 I/ViPER4Android( 4819): [12], Automatic Gain Control, The Android Open Source Project
04-11 11:04:52.947 I/ViPER4Android( 4819): [13], Virtualizer, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): [14], Volume, NXP Software Ltd.
04-11 11:04:52.947 I/ViPER4Android( 4819): ViPER4Android engine not found
04-11 11:04:52.947 I/ViPER4Android( 4819): Android audio effect engine reports the v4a driver is not usable
04-11 11:04:52.947 D/MBAMM_LOG( 6049): 11:04:52 | RecursiveFileObserver | onEvent | CREATED: /storage/emulated/0/v4a_test_file
04-11 11:04:52.951 D/MBAMM_LOG( 6049): 11:04:52 | RecursiveFileObserver | onEvent | CREATED: /mnt/sdcard/v4a_test_file
04-11 11:04:52.951 D/MBAMM_LOG( 6049): 11:04:52 | RecursiveFileObserver | onEvent | DEFAULT(2): /storage/emulated/0/v4a_test_file
04-11 11:04:52.952 D/MBAMM_LOG( 6049): 11:04:52 | RecursiveFileObserver | onEvent | CLOSE_WRITE: /storage/emulated/0/v4a_test_file
04-11 11:04:52.952 D/MBAMM_LOG( 6049): 11:04:52 | RecursiveFileObserver | onEvent | CLOSE_WRITE: /mnt/sdcard/v4a_test_file
04-11 11:04:52.956 D/MBAMM_LOG( 6049): 11:04:52 | RecursiveFileObserver | onEvent | DEFAULT(512): /storage/emulated/0/v4a_test_file
04-11 11:04:52.963 I/ViPER4Android( 4819): onResume(), Binding service ...
04-11 11:04:52.967 I/am_on_resume_called( 4819): [0,com.audlabs.viperfx.main.MainActivity,LAUNCH_ACTIVITY]
04-11 11:04:52.966 I/ViPER4Android( 4819): Main activity onResume()
04-11 11:04:52.974 I/art ( 4819): JIT added (osr=false) void com.audlabs.viperfx.b.j.<init>(com.audlabs.viperfx.b.e)@0xe825266c ccache_size=4KB: dcache_size=5KB: 0xd6de6791,0xd6de72f9
04-11 11:04:52.984 D/StatusBarManagerService( 2794): setSystemUiVisibility(0x40008708)
04-11 11:04:52.984 D/StatusBarManagerService( 2794): disable:userId=0 what=0x0 which=0x1 pkg=null
04-11 11:04:52.985 D/StatusBarManagerService( 2794): hiding MENU key
04-11 11:04:52.985 I/ViPER4Android( 4819): Service::onStartCommand [Begin check driver]
04-11 11:04:52.985 E/ViPER4Android( 4819): Service::onStartCommand [V4A Engine not found]

and then when it tries to install the driver, among the other things happening, these lines stand out:

04-11 11:04:54.825 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.826 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.826 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.827 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.827 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.828 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.828 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.828 I/ViPER4Android( 4819): CpuInfo[java] = <Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt evtstrmwp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt>
04-11 11:04:54.829 I/ViPER4Android( 4819): cpuInfo[java] = NEON:true, VFP:true
04-11 11:04:54.829 I/ViPER4Android( 4819): Driver selection = libv4a_fx_jb_NEON.so
04-11 11:04:54.839 I/art ( 4819): JIT added (osr=false) boolean com.audlabs.viperfx.b.k.b()@0xe83d2d38 ccache_size=36KB: dcache_size=47KB: 0xd6deef39,0xd6def3d9
...
04-11 11:05:17.860 D/ErrorReport( 2794): ErrorReportController detect framework changed, disable autosend, event=8, path=libv4a_fx_ics.so

It looks like the file system is not mounted correctly, or is otherwise denying the driver install.

The Modular install allows the V4A driver to be installed from the app and (so far), it has not crashed or halted and is processing sound as expected. Dirac has not "thrown" a force close following this install either.