pub struct Samples(pub Samples);
Expand description
Time representation in the form of Samples.
Tuple Fields§
§0: Samples
Implementations§
Source§impl Samples
impl Samples
Sourcepub fn bars(&self, bpm: Bpm, ts: TimeSig, sample_hz: SampleHz) -> f64
pub fn bars(&self, bpm: Bpm, ts: TimeSig, sample_hz: SampleHz) -> f64
Convert to the equivalent duration in Bars.
Examples found in repository?
examples/test.rs (line 65)
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
fn main() {
println!("time_calc demonstration!");
// Out `Bars` type is a simplified version of a Measure.
assert!(Bars(1).measure() == Measure(1, Division::Bar, DivType::Whole));
// The same goes for out `Beats` type.
assert!(Beats(1).measure() == Measure(1, Division::Beat, DivType::Whole));
// We can use "parts per quarter note" to convert to ticks.
println!("Parts per quarter note: {}", PPQN);
println!("Duration of a beat in ticks: {}", Beats(1).ticks(PPQN));
println!("Duration of 38_400 ticks in beats: {}", Ticks(38_400).beats(PPQN));
// We can use "beats per minute" to convert from musical time to milliseconds.
let bpm: Bpm = 120.0;
println!("Duration of a beat at 120 beats per minute: {} milliseconds.", Beats(1).ms(bpm));
// And we can use "samples per second" to convert our duration to samples.
println!("Samples per second: {}", SAMPLE_HZ);
println!("Duration of a beat at 120bpm in samples: {}", Beats(1).samples(bpm, SAMPLE_HZ));
// We also need to know the "time signature" if we are to convert from "Bars".
// This is because different time signatures can have a different duration in "Beats".
let beats_per_bar = TimeSig { top: 4, bottom: 4 }.beats_per_bar();
println!("Duration of a bar in `Beats` with a 4/4 Time Signature: {}", beats_per_bar);
let beats_per_bar = TimeSig { top: 3, bottom: 4 }.beats_per_bar();
println!("Duration of a bar in `Beats` with a 3/4 Time Signature: {}", beats_per_bar);
let beats_per_bar = TimeSig { top: 7, bottom: 8 }.beats_per_bar();
println!("Duration of a bar in `Beats` with a 7/8 Time Signature: {}", beats_per_bar);
let time_sig = TimeSig { top: 4, bottom: 4 };
println!("Duration of a bar at 120bpm, 44_100 sample_hz and 4/4 Time Sig in samples: {}",
Bars(1).samples(bpm, time_sig, SAMPLE_HZ));
// We can also convert back the other way! Here's an example from Ms -> Beats.
println!("1 minute as a duration in beats: {}", Ms(60_000.0).beats(bpm));
// Here's an example from Samples -> Bars.
println!("176_400 samples as a duration in bars: {}",
Samples(176_400).bars(bpm, time_sig, SAMPLE_HZ));
println!("Great Success!");
}
Sourcepub fn beats(&self, bpm: Bpm, sample_hz: SampleHz) -> f64
pub fn beats(&self, bpm: Bpm, sample_hz: SampleHz) -> f64
Convert to the equivalent duration in Beats.
Trait Implementations§
Source§impl AddAssign for Samples
impl AddAssign for Samples
Source§fn add_assign(&mut self, rhs: Samples)
fn add_assign(&mut self, rhs: Samples)
Performs the
+=
operation. Read moreSource§impl DivAssign for Samples
impl DivAssign for Samples
Source§fn div_assign(&mut self, rhs: Samples)
fn div_assign(&mut self, rhs: Samples)
Performs the
/=
operation. Read moreSource§impl FromPrimitive for Samples
impl FromPrimitive for Samples
Source§fn from_u64(n: u64) -> Option<Samples>
fn from_u64(n: u64) -> Option<Samples>
Converts an
u64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i64(n: i64) -> Option<Samples>
fn from_i64(n: i64) -> Option<Samples>
Converts an
i64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_isize(n: isize) -> Option<Self>
fn from_isize(n: isize) -> Option<Self>
Converts an
isize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i8(n: i8) -> Option<Self>
fn from_i8(n: i8) -> Option<Self>
Converts an
i8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i16(n: i16) -> Option<Self>
fn from_i16(n: i16) -> Option<Self>
Converts an
i16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i32(n: i32) -> Option<Self>
fn from_i32(n: i32) -> Option<Self>
Converts an
i32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i128(n: i128) -> Option<Self>
fn from_i128(n: i128) -> Option<Self>
Converts an
i128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read moreSource§fn from_usize(n: usize) -> Option<Self>
fn from_usize(n: usize) -> Option<Self>
Converts a
usize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u8(n: u8) -> Option<Self>
fn from_u8(n: u8) -> Option<Self>
Converts an
u8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u16(n: u16) -> Option<Self>
fn from_u16(n: u16) -> Option<Self>
Converts an
u16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u32(n: u32) -> Option<Self>
fn from_u32(n: u32) -> Option<Self>
Converts an
u32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u128(n: u128) -> Option<Self>
fn from_u128(n: u128) -> Option<Self>
Converts an
u128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read moreSource§impl MulAssign for Samples
impl MulAssign for Samples
Source§fn mul_assign(&mut self, rhs: Samples)
fn mul_assign(&mut self, rhs: Samples)
Performs the
*=
operation. Read moreSource§impl Ord for Samples
impl Ord for Samples
Source§impl PartialOrd for Samples
impl PartialOrd for Samples
Source§impl RemAssign for Samples
impl RemAssign for Samples
Source§fn rem_assign(&mut self, rhs: Samples)
fn rem_assign(&mut self, rhs: Samples)
Performs the
%=
operation. Read moreSource§impl SubAssign for Samples
impl SubAssign for Samples
Source§fn sub_assign(&mut self, rhs: Samples)
fn sub_assign(&mut self, rhs: Samples)
Performs the
-=
operation. Read moreSource§impl ToPrimitive for Samples
impl ToPrimitive for Samples
Source§fn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
Converts the value of
self
to a u64
. If the value cannot be
represented by a u64
, then None
is returned.Source§fn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
Converts the value of
self
to an i64
. If the value cannot be
represented by an i64
, then None
is returned.Source§fn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
Converts the value of
self
to an isize
. If the value cannot be
represented by an isize
, then None
is returned.Source§fn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
Converts the value of
self
to an i8
. If the value cannot be
represented by an i8
, then None
is returned.Source§fn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
Converts the value of
self
to an i16
. If the value cannot be
represented by an i16
, then None
is returned.Source§fn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
Converts the value of
self
to an i32
. If the value cannot be
represented by an i32
, then None
is returned.Source§fn to_i128(&self) -> Option<i128>
fn to_i128(&self) -> Option<i128>
Converts the value of
self
to an i128
. If the value cannot be
represented by an i128
(i64
under the default implementation), then
None
is returned. Read moreSource§fn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
Converts the value of
self
to a usize
. If the value cannot be
represented by a usize
, then None
is returned.Source§fn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
Converts the value of
self
to a u8
. If the value cannot be
represented by a u8
, then None
is returned.Source§fn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
Converts the value of
self
to a u16
. If the value cannot be
represented by a u16
, then None
is returned.Source§fn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
Converts the value of
self
to a u32
. If the value cannot be
represented by a u32
, then None
is returned.Source§fn to_u128(&self) -> Option<u128>
fn to_u128(&self) -> Option<u128>
Converts the value of
self
to a u128
. If the value cannot be
represented by a u128
(u64
under the default implementation), then
None
is returned. Read moreimpl Copy for Samples
impl Eq for Samples
impl StructuralPartialEq for Samples
Auto Trait Implementations§
impl Freeze for Samples
impl RefUnwindSafe for Samples
impl Send for Samples
impl Sync for Samples
impl Unpin for Samples
impl UnwindSafe for Samples
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)