After a few years of thinking about it I finally I got around to making a realtime vocoder for the sole purpose of vocoding myself to songs in voice chat. It was interesting to learn Lisp since the reference implementation in Audacity is written in Nyquist (which is based on Lisp), though I clearly didn't understand enough about PipeWire so that part is quite rushed. I might revisit it one day and increase the low pass filter to be 8-pole like it should be, add emscripten support (who would have guessed!) to process files/voice, and explicitly vectorise it, but for now it's up on github if anyone wants to mess around with it.
Last week I was reminded of a project that I started years ago on my phone on my commute to and from work, but that I never ended up finishing. The idea was simple: to be able to generate executable code at runtime for a scripting language in order to improve performance. Rather than digging it out (since the style would have been terrible from developing on a phone, and because it was only a PoC for ARM) I rebuilt it from the ground up. It's useful to nobody, but if anyone wants to learn from it I've put it up on github.
Another year another jam. This one was with a different group of friends and the theme was microwave. My entry was to control satellites and can be found here.
This weekend I was linked a cool video and after finding out that the Linux port wasn't fully working I decided to lend a hand and help out. Anyone following along with this blog can probably guess that I also made an attempt at running it in the browser which, after getting the Linux port running, only required implementing a GLES renderer and further optimising some bits to make it run OKish on my machine. Fun fact: the web port had hot-loading support nearly a month before Windows, just ignore the rendering and input bugs.