Expand description
Multimedia module for Horizon Lattice.
This crate provides multimedia capabilities for Horizon Lattice applications:
- Audio Playback: Load and play audio files with signal-based state notifications
- Sound Effects: Low-latency, pre-loaded sounds with concurrent playback
- High-Precision Timers (feature
high-precision-timers): Sub-millisecond accurate timing
§Audio Playback
The audio player provides a high-level API for playing audio files:
ⓘ
use horizon_lattice_multimedia::AudioPlayer;
// Create a player
let player = AudioPlayer::new()?;
// Connect to state changes
player.on_state_changed(|state| {
println!("State: {:?}", state);
});
// Load and play
player.load_file("music.mp3")?;
player.play();
// Control playback
player.set_volume(0.8);
player.pause();
player.set_looping(true);
player.play();§Supported Formats
- WAV
- MP3
- OGG Vorbis
- FLAC
- AAC/M4A (via Symphonia backend)
§Sound Effects
For low-latency, fire-and-forget sounds (like game audio), use SoundPool:
ⓘ
use horizon_lattice_multimedia::SoundPool;
// Create a pool and pre-load sounds
let mut pool = SoundPool::new()?;
pool.load("explosion", "assets/explosion.wav")?;
pool.load("laser", "assets/laser.ogg")?;
// Play sounds (can overlap - up to 8 instances by default)
pool.play("explosion")?;
pool.play("laser")?;
pool.play("laser")?; // Multiple lasers at once
// Control volume
pool.set_volume(0.8);
pool.set_sound_volume("explosion", 1.2);
// Limit concurrent instances
pool.set_max_instances("laser", 4);§High-Precision Timers
When the high-precision-timers feature is enabled, this crate provides
sub-millisecond accurate timing using native sleep combined with spin-waiting:
ⓘ
use horizon_lattice_multimedia::timers::{HighPrecisionTimer, precise_sleep};
use std::time::Duration;
// One-shot precise sleep
precise_sleep(Duration::from_micros(500));
// Interval timer for game loops, A/V sync, etc.
let timer = HighPrecisionTimer::new(Duration::from_millis(16))?; // ~60 FPS
timer.on_tick(|event| {
println!("Tick {}, drift: {:?}", event.tick_count, event.drift);
});
timer.start()?;Re-exports§
pub use audio::AudioMetadata;pub use audio::AudioPlayer;pub use audio::PlaybackState;pub use sound_effects::SoundPool;
Modules§
- audio
- Audio playback module for Horizon Lattice.
- sound_
effects - Sound effects module for Horizon Lattice.
Enums§
- Multimedia
Error - Multimedia-specific errors.
Type Aliases§
- Result
- A specialized Result type for multimedia operations.