audiofox 1.0.2

Cross platform audio capture made easy!
Documentation
# Audiofox, the audio capturer!

[![MSRV 1.88+](https://img.shields.io/badge/Rust-1.88.0+-orange.svg?color=df7a4c&logo=rust)](#minimum-supported-rust-version-msrv)
[![Documentation](https://docs.rs/audiofox/badge.svg)](https://docs.rs/audiofox)
[![Library version](https://img.shields.io/crates/v/audiofox.svg)](https://crates.io/crates/audiofox)
[![Node version](https://img.shields.io/npm/v/%40foxberries%2Faudiofox?registry_uri=https%3A%2F%2Fcodeberg.org%2Fapi%2Fpackages%2Ffoxberries%2Fnpm%2F)](https://codeberg.org/foxberries/-/packages/npm/audiofox)
[![License](https://img.shields.io/badge/license-GPL%20+%20Linking%20Exception-blue.svg)](LICENSE.md)

Audiofox is a cross-platform audio library that provides a unified interface for listing and capturing from application audio sources on Linux, macOS, and Windows. It can be used directly in Rust programs, or in Node apps with in-house bindings and pre-built binaries available on Codeberg.

## Features
Audiofox has five simple commands, which behave consistently across all platforms:
1. `audiofox::start()` - Initialize and receive an `AudioManager`.
2. `AudioManager::list()` - Receive a list of `AudioSource`.
3. `AudioManager::link()` - Link to one or more `AudioSource`. If successful, start streaming audio.
4. `LinkHandle:unlink()` - End the stream and clean up its resources.
5. `AudioManager::stop()` - Stop the `AudioManager` and clean up its resources.

These commands are all you need to enumerate capturable apps and receive isolated audio from them. You can create any number of `AudioManager`, link to any number of apps, and do not need any special knowledge to use Audiofox.

## Bindings
Audiofox has a dedicated crate for bindings that extend its usage beyond Rust. Audiofox makes an effort to streamline this process, with simple structs and transparent representations where possible.

### Node-API (Node.js, Electron, etc.)
Audiofox provides pre-built binaries that are ready to use with apps targeting the Node.js runtime. You can build these binaries manually in `bindings/node`, and try a reference implementation of app-isolated screenshare audio with `npm start`. This reference is extensively documented, and can help you use Audiofox in your own projects.

## Examples
The flagship example of the Audiofox library is an interactive source selector and audio visualizer. You can try it on your machine with `cargo run --examples visualizer`. For a simple, non-interactive version, see `visualizer-legacy`.

## Minimum Supported Rust Version (MSRV)
Audiofox has an MSRV of **1.88.0**.

This library intends to support Rust versions released within *at least* the last 12 months. Additionally, the MSRV will only be increased if required, and will coincide with a minor version change.

## More Information

[`CREDITS.md`](CREDITS.md) - Acknowledgements, special thanks.

[`DEVELOPMENT.md`](DEVELOPMENT.md) - Building, contributing, project structure.

[`IDEAS.md`](IDEAS.md) - Ideas for the future of Audiofox.

[`INSTALLING.md`](INSTALLING.md) - Installation instructions.

[`LICENSE.md`](LICENSE.md) - The project's official license.