[][src]Module sdl2::audio

Audio Functions

Example

use sdl2::audio::{AudioCallback, AudioSpecDesired};
use std::time::Duration;

struct SquareWave {
    phase_inc: f32,
    phase: f32,
    volume: f32
}

impl AudioCallback for SquareWave {
    type Channel = f32;

    fn callback(&mut self, out: &mut [f32]) {
        // Generate a square wave
        for x in out.iter_mut() {
            *x = if self.phase <= 0.5 {
                self.volume
            } else {
                -self.volume
            };
            self.phase = (self.phase + self.phase_inc) % 1.0;
        }
    }
}

let sdl_context = sdl2::init().unwrap();
let audio_subsystem = sdl_context.audio().unwrap();

let desired_spec = AudioSpecDesired {
    freq: Some(44100),
    channels: Some(1),  // mono
    samples: None       // default sample size
};

let device = audio_subsystem.open_playback(None, &desired_spec, |spec| {
    // initialize the audio callback
    SquareWave {
        phase_inc: 440.0 / spec.freq as f32,
        phase: 0.0,
        volume: 0.25
    }
}).unwrap();

// Start playback
device.resume();

// Play for 2 seconds
std::thread::sleep(Duration::from_millis(2000));

Structs

AudioCVT
AudioDevice

Wraps SDL_AudioDeviceID and owns the callback data used by the audio device.

AudioDeviceLockGuard

Similar to std::sync::MutexGuard, but for use with AudioDevice::lock().

AudioQueue

Wraps SDL_AudioDeviceID and owns the callback data used by the audio device.

AudioSpec
AudioSpecDesired
AudioSpecWAV
DriverIterator

Enums

AudioFormat
AudioStatus

Traits

AudioCallback
AudioFormatNum

A phantom type for retrieving the SDL_AudioFormat of a given generic type. All format types are returned as native-endian.

Functions

drivers

Gets an iterator of all audio drivers compiled into the SDL2 library.