Edit* I guess it would actually be a 2550ms delay per color.
2550 mS times 2 loops per function call times 3 function calls means 15 seconds per cycle.
meaning I'd have to catch it at exactly the right time when the violet fade function ends and the red fade function starts
You would have to push the switch down during one cycle, release it during the second, and wait for the cycle to finish.
I have no idea how to make this work.
It isn't trivial. It will require state machine, and liberal use of millis() to create non-blocking code that will properly adjust the fade values.