Comment by pierrec
That's funny, I was trying to do other stuff after posting my comment, but my brain kept working in the background, against my will, looking for the best approach to actually model this. Honestly, I was probably being pessimistic about the difficulty of a synthesized version, but I still think your current approach (don't synthesize, use samples) is more reasonable and can be made more responsive.
I don't think that recording a large number of starting positions would help that much with creating a (non-ML) model, and I doubt a high sample rate would provide much useful information either. A more common approach would be to try getting separate sounds for the impulse and the resonant body, though they may be impossible to really separate, and the actual model may end up more complex than that.
You probably have a good starting point already with your code for the animated model. I think the sound mostly comes from the collision between coils (collisions not visible in your animated model), and almost entirely from the lowest couple of windings that are against the wall. This is your impulse. The resonant body might be in 2 parts: the wall and the long end of the spring. Your existing model can tell you when to trigger the impulses, and how much force to put into them.
For resources, one of my favorite intros to DSP is the one by Sean Luke: https://cs.gmu.edu/~sean/book/synthesis/
I wrote my own intro to physical modeling, though it focuses on different instruments: https://www.osar.fr/notes/waveguides/
Julius O. Smith has an encyclopedic amount of content on the topic, though it's often condensed into math that can be hard to apply: https://ccrma.stanford.edu/~jos/
I'm deeply, extremely, super duper grateful for all of this. Thanks a ton!