How to procedurally model a non-linear screw? / non linear modifier I am trying to achieve a non linear (gradually) screw procedurally, by this I mean the distance between each turn of the screw get smaller and smaller, this result should be obtain with modifier in a procedurally way, to get control over distance between the loop/size of the loop.
Basically it would be similar as an antelope horn (as we get closer to the head, the distance between the horn &quot;twisted ring&quot; get smaller):

Here is my setup:
I started from a two vertices edge
Then I add this bunch of modifier: screw - solidify - subdivision - lattice.
This gave me a spring...
 
...and by deforming the lattice I get this shape. And here is the big question : the distance between the &quot;ring&quot; decrease but only because the height of the ring decrease (this also cause the angle of each ring to change). How can I gradually decrease this distance without changing the height of the ring (I still want the radius of the first one to be bigger than the radius of the last one)?

By applying the modifier and scale/move the top vertices with proportional editing I get something like that:
But I am looking for a solution without applying that much modifier, to keep more control.

this question can be extended to other modifier: how to use the array modifier in a non linear way ?
By this I mean the distance between each instance is multiplied by 1.3 for exemple, meaning there is more and more distance between object as in this picture:
with this node group you can control the distance of an array of objects:

RESULT:
https://youtu.be/2QJ8b9MexNY