Skip to main content

A library for 3D, environmental audio, and synthesis.

Project description

Windows Build status

Linux Build Status

GitHub

I’m trying to raise money for this project, so I can put a few months of full-time work into it. Consequently, we have a GoFundMe.

Introduction

Libaudioverse is a highly flexible realtime audio synthesis library designed to be bound to as many languages as possible. Potential applications include games, realtime music synthesis, voice chat, implementations of WebAudio, and more. Libaudioverse supports the best possible backends it can for each platform, and uses both SSE2 and threads for increased performance.

At the core of Libaudioverse is the concept of a node, a piece of meaningful audio architecture. They can be connected in any acyclic configuration, allowing the creation of much more complex effects. It is possible to schedule property changes and envelopes with sample-perfect accuracy;. For more complex effects, nodes can be connected directly to the properties of other nodes.

here is an overview of the offered nodes:

  • The environment and source nodes come together to act as a fully functional 3D audio environment, including support for HRTF, surround sound, and reverb.

  • The FDN reverberator is an environmental reverb capable of representing everything from a bathroom to a cathedral.

  • If you want to play with Schroeder Allpass sections, try the nested Allpass Network node.

  • A variety of lower-level filters are available: Biquad, first-order, one-pole, and convolution.

  • It is possible to implement any IIR filter, either by cascading lower level filters or by using the IIR filter node directly.

  • Oscillator options include sine and square, as well as a configurable noise generator.

  • there are several delay line types. Most delay lines offer support for feedback, and the filtered delay line allows filtering this feedback.

  • You can record audio with the recorder, or intercept audio anywhere in the graph of nodes with the graph listener.

  • Finally, if none of these meet your needs, it is possible to create your own node via the custom node.

NOTE: This is pre-alpha and supports Windows and Linux. Mac is planned.

Licensing

See the file COPYRIGHT for the legalese. This file is definitive, and the following a summary only.

The non-legalese version is that Libaudioverse is dual-licensed under GPL V3 or later (see here for GPL V3) and MPL2.

Documentation and Examples

There are two sources of Libaudioverse documentation.

The first is the language-agnostic manual, which discusses Libaudioverse from a general perspective. This manual contains the reference for the C API and an overview of Libaudioverse’s core concepts. Most examples in this manual are in Python.

The second source of documentation is the API reference for your language of choice. At the moment, this means the Python API reference. The API references contain installation instructions and any notes specific to the language in question.

Examples for all supported languages may be found in the GitHub repository. These sets of examples aim to be equivalent and to demonstrate most critical features of Libaudioverse. This library is easy. In many cases, the examples will be enough to get you started.

Getting Help

Libaudioverse has a Google Group. You can subscribe directly and without a Gmail address via e-mailing an empty e-mail to libaudioverse+subscribe@camlorn.net and clicking the link in the confirmation e-mail sent to you. I prefer questions to come via this avenue, as it results in your answers being searchable in future. If you need to contact me in real-time, you can do so via the Libaudioverse IRC channel: #libaudioverse on chat.freenode.net.

Please report bugs and make feature requests using the GitHub issue tracker; this saves me time for issues which I cannot fix immediately.

Building

See the info on supported platforms and build instructions.

Bindings

At the moment, Python and C are the only supported languages. You can get the Python bindings via pip on Windows, but Linux currently requires building Libaudioverse yourself. As more languages become available, Libaudioverse will attempt to upload binaries to package managers. The goal is to minimize the number of use cases that require building Libaudioverse.

Libaudioverse’s approach to bindings is such that it is possible to add more languages in short order. If you are seriously considering using Libaudioverse in a specific language, I wish to talk to you. The addition of a new language is mostly a one-time process, after which the bindings literally maintain themselves. Which language I add next is primarily based on interest.

Note: Your language must support C callbacks, at least 2 levels of pointer indirection and thread primitives in order to be successfully bound to Libaudioverse. The only language I am currently aware of that fails to implement these three things is Angelscript in the BGT scripting environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

libaudioverse-0.9.1-py2.py3-none-win_amd64.whl (1.5 MB view details)

Uploaded Python 2 Python 3 Windows x86-64

libaudioverse-0.9.1-py2.py3-none-win32.whl (1.3 MB view details)

Uploaded Python 2 Python 3 Windows x86

File details

Details for the file libaudioverse-0.9.1-py2.py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for libaudioverse-0.9.1-py2.py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a87b0031289d7bff688a27a37765e951bfe1d2e03e2216e1a10c934f6f12c811
MD5 9abc0dca0f957e22d43ca87f2f5eabe7
BLAKE2b-256 a9454d60521f48dee90edd01f7010a6da66855a2fcb8028cbe6620c195eccf74

See more details on using hashes here.

File details

Details for the file libaudioverse-0.9.1-py2.py3-none-win32.whl.

File metadata

File hashes

Hashes for libaudioverse-0.9.1-py2.py3-none-win32.whl
Algorithm Hash digest
SHA256 770fafe94ec49e537ceddabb03f6c97ec73a20fbfa73e203af10050e2f07725d
MD5 6eada12a055632a0c86be5ea9fa2411b
BLAKE2b-256 ab3042d3a858dd411198ff51f057dcfed2c7e4e6ecac8a08343f3bb9197fc79e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page