I think what EmeraldSlash said will probably be your cheapest option. I’ve run into the same type of issue when improving the default Animate script: by default, the speed of the character only lines up with how their foot falls for the default character height.
In the end, what worked for me was to set 2-3 different walk speeds to test the duration against. Once I found a coefficient that worked for all three speeds, I knew it was perfect.
Hmmm, the other thing I just thought of is that that same Animate script may let you add an if branch to the function that manages the looping of the individual animations. There’s a lot that I still don’t understand about it personally, but there could be a way to figure out which keyframe a footfall happens on and send out a “Stepped” signal each time.