incoming program change messages will switch states.
might be good to have it be either immediate or queue it the way pressing a state button works now