RSSAmplifier

Blog

Blindly Coding

3D audio, C++, digital signal processing, and other assorted topics.

ahicks.inRSS feed ↗10 posts

Latest posts

Downtime 2019-2020

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 can no Longer Actively maintain Libaudioverse

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,…

Announcing Libaudioverse 0.9 And Info On The GoFundMe

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…

Optimizing Rust Struct Size: A 6-month Compiler Development Project

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…

Audiograph: A Prototype Graphing Calculator For The Blind Using Libaudioverse

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…

My Application to the Holman Prize, or How You Can Help Me Help You with STEM Data Visualization Accessibility

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…

A Libaudioverse Status Update

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…

The Horror of Audio Output

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…

A Libaudioverse Preview

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 and Monitors in C++: Combining Advanced Language Features for a Simple Interface

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.…