First of all, nice work! This is a sophisticated theme.
constructive comment: AM allows you to use relative paths. This will allow your theme to work on any platform the user might use.
If the object you want to use is in the lava layout folder, use 'fe.script_dir'.
Instead of: playSound("/home/pi/.attract/layouts/lava/music.mp3", true);
Use: playSound(fe.script_dir + "music.mp3", true);
If the object you want to use is outside of the lava layout folder, use 'FeConfigDirectory'
Example: local sound_name = FeConfigDirectory+"sounds/GS"+random_num+".mp3";
This will play sounds from a folder named 'sounds' which is in the main AM folder ('D:\Arcade\Attract\sounds' in my case).
I am interested in your shader work... investigating....
P.S.
kudos for using a Top-Gun track for the music background. My all time favorite movie!