firefly_rust/audio/
time.rs

1use super::*;
2
3pub struct Time(pub(super) u32);
4
5impl Time {
6    pub const ZERO: Self = Self(0);
7
8    #[must_use]
9    pub fn samples(s: u32) -> Self {
10        Self(s)
11    }
12
13    #[must_use]
14    pub fn seconds(s: u32) -> Self {
15        Self(s * SAMPLE_RATE)
16    }
17
18    #[must_use]
19    pub fn ms(s: u32) -> Self {
20        Self(s * SAMPLE_RATE / 1000)
21    }
22
23    #[must_use]
24    pub fn duration(s: core::time::Duration) -> Self {
25        let s = s.as_secs_f32() * 44_100.;
26        #[expect(clippy::cast_sign_loss)]
27        let s = s as u32;
28        Self(s)
29    }
30}