Legacy GM Creating a dynamically changing background




I'm working on a rhythm game, and I want to implement a feature whereby when the player hits a correct note, the background begins to change color.

To elaborate on that, I want it to form a "wave" effect, where the background changes in a straight line that moves until it reaches the edge of the screen and all matches the same color, similar to this gif.

My first idea was to create two objects, one called "bkg_ob" and the other "wave_ob". Bkg exists at the lowest depth of all my resources, and wave has a completely transparent sprite the same width as the room it is in. When a note is hit correctly, a wave_ob is created that goes up until it hits the top of the screen, at which point the instance is destroyed. Wave_ob has a collision event with bkg_ob that changes it's image_blend to a new color.

This worked, but if the sprite for bkg_ob was too small, it caused a sharp drop in performance (and causing the music to de-sync from the gameplay), and if it was too big it would look blocky and terrible.

Does anyone have an idea of how to do this in a way that won't tank performance?