A Big Status Update and a New Project

I've been quiet on this blog for a good while. Life got really busy. Here's everything that's been going on. The most major piece of news is that I'm a founding member of 3 Mouse Technology. We're well under way at this point and I can finally talk about it publicly. I'm also deprecating Camlorn_audio in favor of a new project. More about both of these below.

3 Mouse Technology

3 Mouse Technology is finally off the ground and I can talk about it. We're a group of primarily blind and visually impaired contracters aiming to make the world accessible, one money-making contract at a time. As far as I am aware, this is the first group of blind people who are specifically using blindness as a marketing point for accessibility. There may have been others, but I'm reasonably sure that we're the first that actually started out with no sighted members. Our blindness to sighted ratio is very, very high. We're just getting going now, and there's quite a bit of momentum. We've got quite a group together. This is by far the most global thing in this post: its impact goes far beyond me and will almost certainly have a lot more impact than Camlorn_audio and my current projects.

Libaudioverse and the deprecation of Camlorn_audio

Anyhow, let's be honest: you're not here for me as a person, you're here to find out about programming.

And on that first front, consider camlorn_audio deprecated. Camlorn_audio is a mess. This was due to a change in direction from pure C++ to supporting other languages early on in the project, the ridiculousness of OpenAL, and a lack of understanding of what was actually needed. Camlorn_audio works for small projects on Windows that meet a specific and narrow set of requirements. It is full of bugs that can't really be fixed or reliably reproduced. Binding it to other languages became impractical, and the code is a horrid mess. To make it feature-rich involves basically rewriting an asynchronous event framework in C++ with all sorts of auto-generators, so it's time to let go.

But there is good news. I'm replacing it. Say hello to Libaudioverse!

Libaudioverse is not yet ready for production or personal use. I have just implemented the last low-level piece needed for simple 3D simulations using HRTF and am in the position to begin writing the high-level API. Unlike OpenAL and my binding on top of it, Libaudioverse aims to be much more flexible, supporting arbetrary acyclic connections of effects and synthesizers. There is a low-levle API that provides the pieces needed for connecting audio processors ("nodes") together. I've already implemented the nodes needed for basic HRTF. The higher level--the part of interest to most developers--is the 3D and Environmental audio API on top of it, which I am now beginning to write. Early profiling shows that 32 active and playing sources through HRTF per core is a reasonable expectation-this is more than enough for games. The library will automatically use more cores if possible. In the interests of not making this post much too long, I'm saving exactly how it works for a bit later.

Libaudioverse is dual licensed. The free version is released under the GPL. When it is ready for production use, I will figure out a pricing scheme and begin offering commercial licenses. I sincerely believe that Libaudioverse is capable of offering an incomparable audio experience while allowing the code that uses it to be cross-platform, including iOS and Android.

In order to act as a testbed for Libaudioverse, I plan to put out an early alpha of a new Unspoken. Unlike the current one, this should be able to support following your sound card and respecting NVDA's audio settings. It is my understanding that this is welcome news for some of you.


Some of you may have heard about I3d, an experimental 3D space invaders-like game. I'm not going to talk about my plans with it until I do some more posts, but it's back on the table as a project that will be seeing some work.

Finally, I will be at the NFB National Convention in July as a scholarship finalist. If anyone wants to meet up, drop me a line.