I actually got it working using the meathod someone posted here but modified... 2 point_clientcommand entities, one for each team. 2 giant trigger brushes that engulf the whole map, one for each team filtered to each team. 2 logic_relay entities for each sound one for each team. I used 9 sounds so I had 18 relays. 2 math_counters one for each team. 2 Logic_case entities once again one for each team... what I did was start all the logic_relays disabled (their output is to send the point_clientcommand a play soundname.wav). start the giant trigger brushes disabled. when the event I want to play a sound for happens, I have that event send a number to the correct team's math_counter, right after which it sends a getvalue to that mathcounter. the math_counter on getvalue sends that team's logic_case its value as an invalue, the case the number is associated with then enables the correct logic_relay. the giant trigger brush is then enabled which attempts to trigger all the logic relays for that team, but of course only the one is enabled so the sound plays. the giant trigger and the logic relays are once again disabled and ready for the next event.
I used the logic string to prevent having to have more than 2 giant triggers... as I find them incredibly annoying, but I just have a visgroup named "Giant Annoying Brushes" that I hide when I'm working
if needed I could always write this in a more organized visual manner as a tutorial if there is demand for such a thing.