Just a quick note that we had downtime from sometime very late 2019 to now. File linkes are probably broken, but I'll be working to recover them as I can. The VPS hosting this site got dragged into a botnet. The new box is Digital Ocean and firewalled until/unless I'm deploying to it so this shouldn't happen again. The old VPS was set up in 2013 or earlier, back when I didn't have either money or…
I'm going to cut straight to the chase. I'm no longer able to actively maintain Libaudioverse. I'm currently in the process of refunding all GOFundMe donors, but this isn't automated so it will take some time. When I started the GoFundMe, I thought that there was a reasonable chance of reaching the goal, but this sadly proved not to be the case. I also thought that I would have time nonetheless,…
If you don't already know about Libaudioverse , the short version is that it's basically desktop WebAudio in terms of functionality, though not in terms of API. The point of this post is to provide information and answers to people already using it. I'm going to do posts aimed at a more general audience once I finish the in-progress HRTF refactors and the bindings generator cleanup, so watch this…
Note: The optimization described here is now in Rust stable as of 1.18. Anyone who knows me knows that I've been spending a lot of time working on the Rust compiler, to the detriment of all my other projects. I'm glad to say I'm done. The 2000-foot version: Rust structs, enums, and tuples are now automatically smaller in some cases. It's possible for the compiler to work with types whose in-memory…
I'm trying to fund development on Libaudioverse, my large library for audio synthesis and pet project for the last 3 and a half years. One of the things I need to do is justify it. So I took a week and made Audiograph, a graphing calculator prototype for the blind that people are already finding useful and contributing to. It is my hope that this will help fund Libaudioverse, and potentially be a…
There's something I've needed to do for a while. Libaudioverse is a massive digital signal processing project, and it is the nature of digital signal processing that much of the debugging process would go much more easily if I could examine data. But I can't because I'm blind and the tools to let blind people do so do not exist. All we have at the moment are graphing calculators. Input an…
Libaudioverse is my attempt at making 3D audio for native apps, something which is currently lacking in the typical indie price range. There are other systems with fully featured content management pipelines, but these are often overkill for small projects, especially in terms of budgets. If you know Web Audio, you are already basically familiar with most of the core concepts. While there are…
Update: I didn't realize there was a clarity issue, but the Hacker News thread made it clear that I should provide this clarification. I knew from the beginning of development that, no matter what I did, I'd need to support multiple backends. I had already written something like a third of the code that I would have to write by taking this route and, at some point, you just have to do it in the…
Note: it was pointed out to me that I forgot to mention enum34 in the readme. If you were getting errors about not being able to import enum, installing enum34 (not enum, enum34) will fix them. I haven't spoken about Libaudioverse much, primarily because I find code much more valuable than articles on a blog. You can run the former. You can use the former for cool games and technologies. But…
Lambdatask is a project that I was hoping to put off for a while. C++11 provides many useful thread primitives, but has major shortcomings. The most notable of these is the lack of concurrent and threadsafe data structures in the standard library. I'm not sure who thought it'd be a good idea not to seriously consider at least making std::queue threadsafe, but it's not and we get to live with that.…