Skip to content

[Feature] Audio device initialization and enumeration #110

Description

@vmarcella

Overview

Add platform-layer audio device abstraction that enumerates available audio
output devices and initializes a default playback device. This is the
foundational building block for all audio functionality.

Current State

No audio support exists in lambda-rs or lambda-rs-platform. The engine cannot
produce any sound output.

Scope

Enumerate available audio output devices on the system

  • Initialize a default audio output device
  • Provide AudioDeviceBuilder following existing builder patterns
  • Abstract platform audio via lambda-rs-platform

Non-Goals:

  • Audio input/recording
  • Sound playback
  • Audio effects processing

Proposed API

// crates/lambda-rs-platform/src/audio/device.rs
pub struct AudioDevice { /* platform handle */ }

pub struct AudioDeviceBuilder {
  sample_rate: Option<u32>,
  channels: Option<u16>,
  label: Option<String>,
}

impl AudioDeviceBuilder {
  pub fn new() -> Self;
  pub fn with_sample_rate(self, rate: u32) -> Self;
  pub fn with_channels(self, channels: u16) -> Self;
  pub fn with_label(self, label: &str) -> Self;
  pub fn build(self) -> Result<AudioDevice, AudioError>;
}

pub fn enumerate_devices() -> Vec<AudioDeviceInfo>;

Acceptance Criteria

  • AudioDeviceBuilder creates a working audio output device
  • enumerate_devices() returns available system audio devices
  • Works on Windows, macOS, and Linux
  • Error handling for device initialization failures
  • Unit tests for builder configuration

Affected Crates

lambda-rs-platform

Notes

  • Consider wrapping cpal for cross-platform audio device access
  • Sample rate defaults: 44100 or 48000 Hz
  • Channel defaults: stereo (2 channels)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    audioAll things related to audioenhancementNew feature or requestlambda-rsIssues pertaining to the core frameworklambda-rs-platformIssues pertaining to the dependency & platform wrappers

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions