Add ASIO guide to README
This commit is contained in:
parent
ab3b76ad75
commit
0ff0b65647
63
README.md
63
README.md
|
@ -16,7 +16,7 @@ This library currently supports the following:
|
||||||
Currently supported backends include:
|
Currently supported backends include:
|
||||||
|
|
||||||
- Linux (via ALSA)
|
- Linux (via ALSA)
|
||||||
- Windows
|
- Windows (via WASAPI by default, see ASIO instructions below)
|
||||||
- macOS (via CoreAudio)
|
- macOS (via CoreAudio)
|
||||||
- iOS (via CoreAudio)
|
- iOS (via CoreAudio)
|
||||||
- Emscripten
|
- Emscripten
|
||||||
|
@ -24,3 +24,64 @@ Currently supported backends include:
|
||||||
Note that on Linux, the ALSA development files are required. These are provided
|
Note that on Linux, the ALSA development files are required. These are provided
|
||||||
as part of the `libasound2-dev` package on Debian and Ubuntu distributions and
|
as part of the `libasound2-dev` package on Debian and Ubuntu distributions and
|
||||||
`alsa-lib-devel` on Fedora.
|
`alsa-lib-devel` on Fedora.
|
||||||
|
|
||||||
|
## ASIO on Windows
|
||||||
|
|
||||||
|
[ASIO](https://en.wikipedia.org/wiki/Audio_Stream_Input/Output) is an audio
|
||||||
|
driver protocol by Steinberg. While it is available on multiple operating
|
||||||
|
systems, it is most commonly used on Windows to work around limitations of
|
||||||
|
WASAPI including access to large numbers of channels and lower-latency audio
|
||||||
|
processing.
|
||||||
|
|
||||||
|
CPAL allows for using the ASIO SDK as the audio backend on Windows instead of
|
||||||
|
WASAPI. To do so, follow these steps:
|
||||||
|
|
||||||
|
1. **Download the ASIO SDK** `.zip` from [this
|
||||||
|
link](https://www.steinberg.net/en/company/developers.html). The version as
|
||||||
|
of writing this is 2.3.1.
|
||||||
|
2. Extract the files and place the `ASIOSDK2.3.1` directory somewhere you are
|
||||||
|
happy for it to stay (e.g. `~/.asio`).
|
||||||
|
3. Assign the full path of the `ASIOSDK2.3.1` directory to the `CPAL_ASIO_DIR`
|
||||||
|
environment variable. [How to set persisting Environment Variables on
|
||||||
|
Windows](https://gist.github.com/mitchmindtree/92c8e37fa80c8dddee5b94fc88d1288b#file-windows_environment_variables-md).
|
||||||
|
4. **Download and install LLVM** from
|
||||||
|
[here](http://releases.llvm.org/download.html) under the "Pre-Built Binaries"
|
||||||
|
section. The version as of writing this is 7.0.0.
|
||||||
|
5. Add the LLVM `bin` directory to a `LIBCLANG_PATH` environment variable. If
|
||||||
|
you installed LLVM to the default directory, this should work in the command
|
||||||
|
prompt:
|
||||||
|
```
|
||||||
|
setx LIBCLANG_PATH "C:\Program Files\LLVM\bin"
|
||||||
|
```
|
||||||
|
6. If you don't have any ASIO devices or drivers availabe, you can [**download
|
||||||
|
and install ASIO4ALL**](http://www.asio4all.org/). Be sure to enable the
|
||||||
|
"offline" feature during installation despite what the installer says about
|
||||||
|
it being useless.
|
||||||
|
7. **Use the correct command prompt** to build cpal and run examples. In my
|
||||||
|
case, I had to run a specific command prompt, otherwise rust-bindgen would
|
||||||
|
fail to find some of the necessary build tools. To do this, I went to the
|
||||||
|
`Start Menu > Visual C++ Build Tools > Visual C++ 2015 x64 Native Build Tools
|
||||||
|
Command Prompt` and ran this prompt. The exact prompt you need might differ
|
||||||
|
based on your machine's architecture and how you installed your Visual C++
|
||||||
|
tools. There must be an easier solution to this (especially as not everyone
|
||||||
|
wants to build projects from the command line).
|
||||||
|
8. Select ASIO as the backend at the start of our program with the following:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
{
|
||||||
|
cpal::os::windows::use_asio_backend().expect("Failed to select ASIO backend");
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If you run into this error:
|
||||||
|
|
||||||
|
```
|
||||||
|
cpal::os::windows::use_asio_backend().expect("Failed to use asio");
|
||||||
|
^^^^^^^^^^^^^^^^ did you mean `use_wasapi_backend`?
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure that `CPAL_ASIO_DIR` is set correctly and try `cargo clean`.
|
||||||
|
|
||||||
|
In the future we would like to work on automating this process to make it
|
||||||
|
easier, but we are not familiar enough with the ASIO license to do so yet.
|
||||||
|
|
Loading…
Reference in New Issue