| Crates.io | simple_pa |
| lib.rs | simple_pa |
| version | 0.2.2 |
| created_at | 2025-11-14 23:39:19.666346+00 |
| updated_at | 2025-11-16 21:07:46.194586+00 |
| description | Zero crates.io dependency simple api for interacting with the pulseaudio-simple api |
| homepage | https://github.com/prodbysky/pa_simple |
| repository | https://github.com/prodbysky/pa_simple |
| max_upload_size | |
| id | 1933801 |
| size | 9,827 |
pa_simple_*A small, minimal, and type-safe Rust wrapper around the PulseAudio Simple API (libpulse-simple).
This crate provides an ergonomic interface for basic audio playback without requiring the full asynchronous PulseAudio API.
Status: Experimental - covers only the Simple API.
Use case: Quick audio output/input where low latency or advanced routing is not required.
PulseAudio development headers must be installed.
Debian/Ubuntu:
sudo apt install libpulse-dev
Fedora:
sudo dnf install pulseaudio-libs-devel
Arch Linux:
sudo pacman -S pulseaudio
[dependencies]
pulseaudio-simple = "0.1"
use pulseaudio_simple::{Simple, SampleSpec, StreamDirection};
fn main() -> Result<(), String> {
let spec = SampleSpec::new(44_100, 2);
let mut pa = Simple::<i16>::new(
"example-playback",
StreamDirection::Playback,
spec,
)?;
let mut buffer = [0i16; 44100];
for (i, sample) in buffer.iter_mut().enumerate() {
let t = i as f32 / 44100.0;
*sample = (t * 440.0 * std::f32::consts::TAU).sin() as f32 as i16;
}
pa.write(&mut buffer)?;
pa.drain()?;
Ok(())
}
unsafe FFI calls internally.DropMIT