Valuable starting point, but problems with VALUE assignment
During my first tests of this script, lines 17-18 through errors, resulting in an empty VALUE variable. First modification was to place a space (ASCII 32) before "egrep" in line 17 - this allowed /tmp/song_info to be filled, but still didn't assign text to VALUE.
To get proper functioning, I had to substitute these lines for 17&18
COMMAND="egrep '${id3tags[$TAG]}' /tmp/song_info | head -1 | cut -d: -f2- "
VALUE=$(eval $COMMAND)