#audio-devices #audio-buffer #devices #android #oboe #audio

aloe-oboe-audioio

Provides audio I/O management for Android using the Oboe library, handling devices, buffers, and sessions for high-performance audio applications. This crate is a translation of the c++ juce module serving the same function.

1 unstable release

Uses new Rust 2024

new 0.1.1 Apr 3, 2025

#5 in #oboe

44 downloads per month
Used in 3 crates

GPL-3.0 license

1.5MB
16K SLoC

Aloe Oboe AudioIO

Aloe Oboe AudioIO facilitates audio device management and processing for Android platforms using the Oboe audio library. It provides efficient access to input and output audio channels, enabling seamless integration for high-performance audio applications.

Features

  • Device Management: Manage Android audio devices with detailed inspection and configuration of input and output devices.
  • Buffer Management: Handle audio buffers with automatic conversion between interleaved and non-interleaved formats.
  • High Efficiency: Designed for low latency and high-performance audio processing with native support for various buffer sizes and sample rates.
  • Session Control: Start, close, and manage audio sessions with robust error handling and callbacks.
  • Custom Audio Formats: Support for both i16 and f32 audio data formats, with helper functions to convert and refer audio buffers directly to Oboe.

Quick Start

Device Info Struct

pub struct OboeAudioIODeviceTypeDeviceInfo {
    name: String,
    id: i32,
    sample_rates: Vec<i32>,
    num_channels: i32,
}

Basic Usage

let is_available = is_oboe_available();
console::log!("Oboe Available: {}", is_available);

let mut device = OboeAudioIODevice::new(
    &"DeviceName".to_string(),
    -1, &[], 0,  // For Input
    -1, &[], 0   // For Output
);

let error = device.open(&BigInteger::new(), &BigInteger::new(), 44100.0, 512);
if !error.is_empty() {
    console::log!("Error: {}", error);
} else {
    device.start(&mut my_callback);
}

Installation

Add the following to your Cargo.toml:

[dependencies]
aloe-oboe-audioio = "0.1.0"

Note

This README.md file was generated by an AI model and may not be 100% accurate; however, it should be pretty good.

License

This project is licensed under the GPL-3.0 license.

Repository

GitHub Repository

This crate is a translation of the JUCE module.

JUCE is a c++ software framework for developing high performance audio applications.

Usage falls under the GPLv3 as well as the JUCE commercial license.

See github.com/juce-framework/JUCE and the JUCE license page for details.

This crate is in the process of being translated from c++ to rust. For progress updates, please see the workspacer rust project.

Dependencies

~40MB
~635K SLoC