Instanced instruments on the GPU

Captain's Log: Stardate 77965.4

Finally I'm back to writing code full-time , after doing some business-related stuff. I got Anukari, LLC approved as an Apple Developer and also for an EV code signing certificate, so I am now able to sign binaries for both MacOS and Windows in the most legitimate ways. The EV certificate is especially nice, because Windows should always automatically trust the software. This involved jumping through a significant number of hoops, but it's all done.

Today I wrapped up a few outstanding issues with the MacOS port. I fixed a couple of small crashes that I discovered, took care of some warnings that showed up with Clang 18, cleaned up a workaround for a stupid abseil-cpp bug, etc. I'm now at the point where I am considering work on the MacOS port "finished for now," which means that I'm not going to do further work there until the physics engine is completely finished, at which time I'll port it to Metal. In the meantime, I will continuously test my code changes on MacOS to make sure I don't break anything.

Now that the MacOS work is shelved, I am really excited to finally get back to work on the "voice instanced" physics mode. A few weeks ago I got the voice instancing working at the most basic level in terms of the GPU code: it runs two instances of the same instrument in parallel on separate OpenCL work units, and this works perfectly. This was the hardest part, I think. Now I just need to do all the plumbing work to run N instances (for N voices), and automatically allocate instances for new notes, and implement the time dilation stuff (which I described in detail a while back) that will make the pitches come out right.

I'm hoping that I'll be able to have basic automatic polyphony through voice instancing in the next week or two. This might be the last big physics feature I add before I change gears into "get an alpha test going" mode. Maybe.


© 2024 Anukari LLC, All Rights Reserved
Contact Us|Legal