Here's what I use, I think it does what you're looking for:
#1: does the conversion, has a list of characters to ignore for the case
#2-8: converts the file extension back to lower case (there is probably a regular expression to do this, but I suck at them)
#9: converts roman numerals to upper
Note: I also have another action set that converts terms like DJ, MC, PvD back to the case format I want them in.
Thanks to dano for the Roman Numeral expression and to Sebastion for his MTA converter.
Action #1:
Action type: Case conversion
Field: _ALL
Case conversion: Mixed Case
Words begin from/after any of: ( , [ , ] , ) , . , &,-,/,,.,"
Action #2:
Action type: Replace
Field: _FILENAME
Original: aac
Replace with: aac
[x] only as whole word
[ ] case-sensitive comparison
Action #3:
Action type: Replace
Field: _FILENAME
Original: m4a
Replace with: m4a
[x] only as whole word
[ ] case-sensitive comparison
Action #4:
Action type: Replace
Field: _FILENAME
Original: m4p
Replace with: m4p
[x] only as whole word
[ ] case-sensitive comparison
Action #5:
Action type: Replace
Field: _FILENAME
Original: mp3
Replace with: mp3
[x] only as whole word
[ ] case-sensitive comparison
Action #6:
Action type: Replace
Field: _FILENAME
Original: mp4
Replace with: mp4
[x] only as whole word
[ ] case-sensitive comparison
Action #7:
Action type: Replace
Field: CONTENTGROUP
Original: .aac
Replace with: .aac
[ ] only as whole word
[ ] case-sensitive comparison
Action #8:
Action type: Replace
Field: CONTENTGROUP
Original: .mp3
Replace with: .mp3
[ ] only as whole word
[ ] case-sensitive comparison
Action #9:
Action type: Replace with regular expressions
Field: _ALL
Regular expression: (^|\W)(?:M{0,3})(?:D?C{0,3}|C[DM])(?:L?X{0,3}|X[LC])(?:V?I{0,3}|I[VX])(?=(.\s|\s|)|$))
Replace matches with: $upper($0)
[ ] case-sensitive comparison