as i understand there must be some function/operator inside \@eval. actually, i don't know how Steven implemented API Eval() function. all i tried till now was working. now i'm too tired to test your example. maybe, tomorrow.
if you really just want to generate "<Artist> - <Title>" string, then there is the simpler way. create 2 step preset:
1. search for "^(.*)" in <Artist>
1. replace by "$1 - "
2. search for "^(.*)" in <Title>
2. replace by "$1"
2. tick the option to append replaced value to the end of tag
-----------
quotes, commas, semicolons, and square brackets inside \@eval must be doubled, and double double-quotes is just an empty string.