During my test earlier, I found that if SEI_DIFF was requested to go from one state to another, it wouldn't transition correctly. This was because we originally wrote it such that we could turn different parts on separately, and requesting a new branch wouldn't affect the other parts. That's not the way we've been using it, mostly turning it off or using only the corner CPS diff when the microseism is high, and before the break we ran CPS DIFF down the arms as well when microseism was low.
I've changed the edges now, such that requesting a new state runs SEI_DIFF to down, which turns the control bit off, then it goes through MASTER_ON, which resets gains and some other stuff and then restores the control bit allowing output, then the new state turns on filters, sets paths and turns on the correct output gains. This lets you go from one state to another and only the paths requested in that state will be turned on.
First screenshot is the old arrangement, where IDLE was the hub state. Second screenshot shows the graph now, where every state goes the DOWN, then MASTER_ON, then to the requested state.