> What if you make a circular string and attach 1 or more oscillators at random points?
If your computer meets the system requirements, you could always install the free demo and build this sound ring instrument to find out! Building these kinds of weird ideas and seeing what happens is my favorite thing to do with it.
My RTX2080Ti (admittedly not a cheap card) supports 768 physics objects (masses) per each of 16 voices. And I think that beefier cards can do 1024. There are other limitations for performance depending on how the system is constructed, and I certainly don't want to claim that I know it can simulate a piano, but...
I plan to write a devlog post about this at some point, but at one time I wondered the same thing. It turns out that starting in 2D, when there is more than 1 spring, things get more complex than you expect: it turns non-linear. If the mass is moved exactly along the axis of the 2 springs in the demo you linked, then it's just a simple harmonic oscillator. But if it's moved OFF axis, the force from the springs is constantly changing direction. The force orthogonal to the spring's resting axis increases with the sine of the angle that the spring has been pulled off to. So along the off-axis it is not a harmonic oscillator.
If this doesn't make sense it's entirely my fault for explaining it poorly -- I really want to write this up properly with some diagrams because it's a surprising thing and quite interesting, at least to me.
(BTW that demo has other things going on like mic isotropy and analog oscillators attached to vibrate two of the masses, so my spring tangent is not the only thing producing harmonics.)
Short answer: it has been a big pain in the butt. The GPU hardware is mostly really great, but the drivers/APIs were not designed for such a low-latency use case. There's (for audio) a large overhead latency in kernel execution scheduling. I've had to do a lot of fun optimization in terms of just reducing the runtime of the kernel itself, and a lot of less-fun evil dark magic optimization to e.g. trick macOS into raising the GPU clock speed.
Long answer: I've written a fair bit about this on my devlog. You might check out these tags:
Thanks for the extra info, I read through some of your entries on GPU optimization and it definitely seems like it's been a journey! Thanks for blazing the trail.
His stuff is so incredibly cool. He has a video on physical modeling for trumpets using the GPU and for a second I thought he might be building a competitor! :)
Oh goodness, that's truly embarrassing that I typoed "Mick Cormick" instead of Mick Gordon. O_o I wonder if my brain somehow crossed wires with John Carmack. Thanks for the correction!
Sorry about that. It's just me working on it, and so far my personal tenet is that the product itself is the top priority, and all else including marketing comes second, so none of the website/youtube/etc are as good as I'd like. Possibly I'll soon have money to hire help with some of that, or I'll get the product to a place where I'm happy enough to work more on marketing myself.
Screen-recording Anukari has been a bit of a challenge, as OBS works best while using GPU encoding, and also seems to do things that the GPU doesn't like in general (and Anukari uses the GPU). I suspect what you're hearing in the videos has to do with that. But also I'm sure that the model for the mic compression could be improved, and I'm not sure about the default attack time, etc.
If screen recording is actually the thing causing the issue you might try CPU encoding with one of the fast lossless codecs and doing the "real" encoding in a second pass later. As a bonus, software encoding should also give a higher quality result. That does require an SSD and quite a bit of free space though.
Have you tried HDMI output from the computer running Anukari to an HDMI capture dongle on a second system, so that all of the recording overhead is offloaded?
I'm very rusty at music, but I always had a big soft spot for unusual/unique synthesis methods. I'll be buying a copy as soon as I'm back at a desktop system :).