I have created a (frighteningly realistic) swim cycle for an object, and then added a path. The object follows the path using a constraint: as it swims along the path, the tail flaps.
I then added noise to the object's Z position. (I 'animated' the armature's location on one cell, then added an F curve modifier with noice to add some change to the armature's Z location.)
I would like to tie the rise in the Z position to be tied to a downward tail stroke, but to have some randomness in it... and I would like to end up with a keyframable value, so I can increase/decrease tail speed with a corresponding increase in the Z position change -- albeit with some noise making it not completely linear or predictable.
I have gone this route so that it looks less mechanistic... which is to say there may be a better way to do it overall... but the goal it so have an appearance of something swimming perhaps in a current... and not to have a clock-like precision in speed/location of tail.
Fish tails go side to side, I know... so say this is a porpoise... Anyway, the goal is to get an animatable value that drives both things -- flap speed and Z location change -- in a not-completely-predictable way.