2015-06-30 20:49:36 +00:00
|
|
|
# libsoundio
|
|
|
|
|
|
|
|
C library which provides cross-platform audio input and output. The API is
|
|
|
|
suitable for real-time software such as digital audio workstations as well
|
|
|
|
as consumer software such as music players.
|
|
|
|
|
2015-07-01 08:02:44 +00:00
|
|
|
This library is an abstraction; however it prioritizes performance and power
|
|
|
|
over API convenience. Features that only exist in some sound backends are
|
|
|
|
exposed.
|
|
|
|
|
2015-06-30 21:13:44 +00:00
|
|
|
This library is a work-in-progress.
|
|
|
|
|
2015-06-30 20:49:36 +00:00
|
|
|
## How It Works
|
|
|
|
|
2015-07-01 08:02:44 +00:00
|
|
|
libsoundio tries these backends in order. If unable to connect to that backend,
|
|
|
|
due to the backend not being installed, or the server not running, or the
|
|
|
|
platform is wrong, the next backend is tried.
|
|
|
|
|
|
|
|
0. JACK
|
|
|
|
0. PulseAudio
|
|
|
|
0. ALSA (Linux)
|
|
|
|
0. CoreAudio (OSX)
|
|
|
|
0. ASIO (Windows)
|
|
|
|
0. DirectSound (Windows)
|
|
|
|
0. OSS (BSD)
|
|
|
|
0. Dummy
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
libsoundio is programmed in a tiny subset of C++:
|
|
|
|
|
|
|
|
* No STL.
|
|
|
|
* No `new` or `delete`.
|
|
|
|
* No `class`. All fields in structs are `public`.
|
|
|
|
* No exceptions or run-time type information.
|
|
|
|
* No references.
|
|
|
|
* No linking against libstdc++.
|
2015-06-30 20:49:36 +00:00
|
|
|
|
2015-07-02 10:48:27 +00:00
|
|
|
### Building
|
|
|
|
|
|
|
|
```
|
|
|
|
$ mkdir build
|
|
|
|
$ cd build
|
|
|
|
$ cmake ..
|
|
|
|
$ make
|
|
|
|
$ sudo make install
|
|
|
|
```
|
|
|
|
|
|
|
|
### Building With MXE
|
|
|
|
|
|
|
|
You can build libsoundio with [mxe](http://mxe.cc/). Follow the
|
|
|
|
[requirements](http://mxe.cc/#requirements) section to install the
|
|
|
|
packages necessary on your system. Then somewhere on your file system:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ git clone https://github.com/mxe/mxe
|
|
|
|
$ cd mxe
|
|
|
|
$ make gcc
|
|
|
|
```
|
|
|
|
|
|
|
|
Then in the libsoundio source directory (replace "/path/to/mxe" with the
|
|
|
|
appropriate path):
|
|
|
|
|
|
|
|
```
|
|
|
|
$ mkdir build-win
|
|
|
|
$ cd build-win
|
|
|
|
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/mxe/usr/i686-w64-mingw32.static/share/cmake/mxe-conf.cmake
|
|
|
|
$ make
|
|
|
|
```
|
|
|
|
|
2015-06-30 20:49:36 +00:00
|
|
|
## Roadmap
|
|
|
|
|
2015-07-01 08:02:44 +00:00
|
|
|
0. ALSA (Linux)
|
2015-07-02 09:53:08 +00:00
|
|
|
0. Avoid calling `panic` in PulseAudio.
|
|
|
|
0. JACK
|
|
|
|
0. Dummy
|
2015-07-01 08:02:44 +00:00
|
|
|
0. CoreAudio (OSX)
|
|
|
|
0. ASIO (Windows)
|
|
|
|
0. DirectSound (Windows)
|
|
|
|
0. OSS (BSD)
|
|
|
|
|
|
|
|
## Planned Uses for libsoundio
|
|
|
|
|
|
|
|
* [Genesis](https://github.com/andrewrk/genesis)
|
|
|
|
* [libgroove](https://github.com/andrewrk/libgroove) ([Groove Basin](https://github.com/andrewrk/groovebasin))
|