I will add this as a comment rather than an answer since I don't know wether it would work or not.
What I would try is to calculate an array of points from beginning to end, and smooth a variation range with something like gaussian noise (that would get you soft curved paths), then just keep adding the next gaussian coordinate and deleting the first ones so it can flow.
I can't add more since I don't even know how to use the gaussian algorithm, but I saw something like this for Processing (although Processing actually have a next_gaussian() method that does the trick effortlessly).