use std::sync::Arc;
use std::sync::atomic::{AtomicU32, AtomicUsize};
pub struct MediaState {
pub visual_delay: f32,
pub sample_rate: Arc<AtomicU32>,
pub audio_time: Arc<AtomicU32>,
pub parameters: Vec<Arc<AtomicU32>>,
pub waveform: Arc<Vec<AtomicU32>>,
pub waveform_ptr: Arc<AtomicUsize>,
}
impl MediaState {
pub fn new(num_params: usize) -> Self {
Self {
visual_delay: 0.0,
sample_rate: Arc::new(AtomicU32::new(44100.0f32.to_bits())),
audio_time: Arc::new(AtomicU32::new(0f32.to_bits())),
parameters: (0..num_params)
.map(|_| Arc::new(AtomicU32::new(0)))
.collect(),
waveform: Arc::new((0..512).map(|_| AtomicU32::new(0)).collect()),
waveform_ptr: Arc::new(AtomicUsize::new(0)),
}
}
}