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 Libaudioverse is now at the point where I can and should talk about it more. So I shall. And perhaps more importantly, I have something I can release. It's not alpha-quality, thus the term preview. But it can give you a feel for what this will be, and it has some cool example programs. If you want to skip straight to the preview and not read the rest of this post, you can get the windows binaries here.

Libaudioverse is my only project for the time being. It is a library for immersive simulation of auditory environments. Unlike Camlorn_audio, it is flexible enough to be used in a huge variety of situations: media players, NVDA add-ons, games, etc.

But that's not why you'd want to use it.

Libaudioverse is a platform on top of which those who need immersive simulation can build their programs. Instead of focusing on low-level algorithms from digital signal processing, one simply assembles the much higher level pieces provided by Libaudioverse. it's the difference between needing to implement your simulation from scratch and being able to simply describe what it looks like.

What does this mean exactly? How about echolocation in your games? Maybe you want to build a virtual stereo system in a virtual room, splitting a multi-channel file between 5 virtual speakers. And then let the user walk around in that room, turning, looking up and down, and the like. Maybe you need to mix multiple files together in realtime, creating monsters with more than one sound. Or perhaps it's time to program maze support and you need sounds on the other side of walls to sound different.

All of this is possible with Libaudioverse and, in the very near future, there's going to be an official release. For now, I'm not even guaranteeing backward compatibility, and a lot is missing. The good news is that I can place code line estimates on the things that need to be done now, so I have some idea how long it will take. The answer? Not very.

Nevertheless, as mentioned at the beginning of this post, I'm putting up some preview binaries. They include an example of how to play a sine wave, how to use the low-level HRTF component, how the 3d simulation works, and how to write a full command line media player. You can find them here. It only includes the Python bindings. C/C++ users know all about why I can't just give out a pre-built binary already, so there's not too much that needs to be said about that. Please note that they are probably bugged in some ways; half the reason I'm posting them is to find out how and why. Also, this is a debug build and, as a consequence, is at least ten times slower than it would otherwise be.

if you have any feedback or constructive criticism, please feel free to share it. I prefer to have bugs reported via the Github repository if possible, but my e-mail and Twitter work as well.

Over the next week, I will be preparing the list of missing features and planned features for 1.0 and posting it as part of the Libaudioverse repository. I will then share a link via twitter. I do not feel that it's worth a full blog post, but some are no doubt interested. I'm also going to start blogging about how various parts of it work. I've done a few things differently than most, and writing about them should prove interesting.