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:
|
||||
|
||||
- Linux (via ALSA)
|
||||
- Windows
|
||||
- Windows (via WASAPI by default, see ASIO instructions below)
|
||||
- macOS (via CoreAudio)
|
||||
- iOS (via CoreAudio)
|
||||
- Emscripten
|
||||
|
@ -24,3 +24,64 @@ Currently supported backends include:
|
|||
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
|
||||
`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