there are so many ways to approach this, largely depending on your input signal. i have many many of these non-linear saturation type equations stored up over the years – i’ll post some if i get the time.
oversampling is key. and making input / output gains simple eq’s / filters rather than just linear gain controls, and as peter says, including non-linearities in your filters.
the one advantage of using cpu + equations rather than lookup tables is being able to modify them dynamically. attached is a visualisation of this i did this morning, i hope it is interesting. requires max 6.0.4.