A simple crate that allows you to capture system output audio (what aRe yoU HEARing).
⚠️ Apple changed some API in MacOS 15, so this crate may not work on MacOS 15 or later. Somehow you can try nightly version of this crate to see if it works.
- On windows and linux: cpal
- On macos: screencapturekit, cidre
- No plan for other platforms yet
See examples folder for simple example.
use ruhear::{Ruhear, RUBuffers, rucallback};
fn main() {
// Create a callback that will be called every time the audio buffers are ready
// RUBuffers is a multichannel Vec<f32>. Default sampleRate is 48000Hz on Windows and macOS and 44100Hz on Linux.
let callback = |data: RUBuffers| {
println!("{:?}", data);
};
// Create a Ruhear instance and start capturing audio, use RUCallback! macro to create a thread-safe callback
let mut ruhear = rucallback!(callback);
// Start capturing audio
ruhear.start();
std::thread::sleep(std::time::Duration::from_secs(5));
// Stop capturing audio
ruhear.stop();
}
- Error handling
- Add support for ASIO(Windows) and JACK(Linux)
- Add support for fine-grained control capturing audio like from a specific application/device