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.rspubstructAudioDevice{/* platform handle */}pubstructAudioDeviceBuilder{sample_rate:Option<u32>,channels:Option<u16>,label:Option<String>,}implAudioDeviceBuilder{pubfnnew() -> Self;pubfnwith_sample_rate(self,rate:u32) -> Self;pubfnwith_channels(self,channels:u16) -> Self;pubfnwith_label(self,label:&str) -> Self;pubfnbuild(self) -> Result<AudioDevice,AudioError>;}pubfnenumerate_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)

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