Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `StreamTrait::stop` ends a stream gracefully, draining buffered audio before halting (blocking up to a caller-supplied timeout). Dropping a stream still halts immediately without draining.
- `CallbackInfo::xrun()` reports buffer over/underruns via the data callback.
- `DeviceTrait::build_duplex_stream()`, `build_duplex_stream_raw()`, `default_duplex_config()`, and `supports_duplex()` for capture and playback from one device-level callback.
- **ALSA**: Duplex streams are now supported.
- **AudioWorklet**: Input and duplex streams are now supported.
- **WebAudio**: Input and duplex streams are now supported.

Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,12 @@ If you are unable to build the library:
- Verify you have installed the required development libraries, as documented above
- **ASIO on Windows:** Verify `CPAL_ASIO_DIR` and `LIBCLANG_PATH` are set and LLVM is installed

## Duplex Devices

cpal doesn't compose devices itself; it needs a device that already claims both capture and playback.

On ALSA, that needs no extra setup if capture and playback are on the same `hw:`/`plughw:` device (most built-in and USB audio). If they are on separate cards, combine them into one named PCM with ALSA's `asym` plugin in `~/.asoundrc` or `/etc/asound.conf`, then address that name as the device.

## Examples

CPAL comes with several examples in `examples/`.
Expand Down
Loading
Loading