pub struct Ticks(pub Ticks);
Expand description
Time representation in the form of Ticks.
Tuple Fields§
§0: Ticks
Implementations§
Source§impl Ticks
impl Ticks
Sourcepub fn bars(&self, ts: TimeSig, ppqn: Ppqn) -> f64
pub fn bars(&self, ts: TimeSig, ppqn: Ppqn) -> f64
Convert to the equivalent duration as a number of Bars.
Sourcepub fn beats(&self, ppqn: Ppqn) -> f64
pub fn beats(&self, ppqn: Ppqn) -> f64
Convert to the equivalent duration as a number of Beats.
Examples found in repository?
examples/test.rs (line 38)
27fn main() {
28 println!("time_calc demonstration!");
29
30 // Out `Bars` type is a simplified version of a Measure.
31 assert!(Bars(1).measure() == Measure(1, Division::Bar, DivType::Whole));
32 // The same goes for out `Beats` type.
33 assert!(Beats(1).measure() == Measure(1, Division::Beat, DivType::Whole));
34
35 // We can use "parts per quarter note" to convert to ticks.
36 println!("Parts per quarter note: {}", PPQN);
37 println!("Duration of a beat in ticks: {}", Beats(1).ticks(PPQN));
38 println!("Duration of 38_400 ticks in beats: {}", Ticks(38_400).beats(PPQN));
39
40 // We can use "beats per minute" to convert from musical time to milliseconds.
41 let bpm: Bpm = 120.0;
42 println!("Duration of a beat at 120 beats per minute: {} milliseconds.", Beats(1).ms(bpm));
43
44 // And we can use "samples per second" to convert our duration to samples.
45 println!("Samples per second: {}", SAMPLE_HZ);
46 println!("Duration of a beat at 120bpm in samples: {}", Beats(1).samples(bpm, SAMPLE_HZ));
47
48 // We also need to know the "time signature" if we are to convert from "Bars".
49 // This is because different time signatures can have a different duration in "Beats".
50 let beats_per_bar = TimeSig { top: 4, bottom: 4 }.beats_per_bar();
51 println!("Duration of a bar in `Beats` with a 4/4 Time Signature: {}", beats_per_bar);
52 let beats_per_bar = TimeSig { top: 3, bottom: 4 }.beats_per_bar();
53 println!("Duration of a bar in `Beats` with a 3/4 Time Signature: {}", beats_per_bar);
54 let beats_per_bar = TimeSig { top: 7, bottom: 8 }.beats_per_bar();
55 println!("Duration of a bar in `Beats` with a 7/8 Time Signature: {}", beats_per_bar);
56 let time_sig = TimeSig { top: 4, bottom: 4 };
57 println!("Duration of a bar at 120bpm, 44_100 sample_hz and 4/4 Time Sig in samples: {}",
58 Bars(1).samples(bpm, time_sig, SAMPLE_HZ));
59
60 // We can also convert back the other way! Here's an example from Ms -> Beats.
61 println!("1 minute as a duration in beats: {}", Ms(60_000.0).beats(bpm));
62
63 // Here's an example from Samples -> Bars.
64 println!("176_400 samples as a duration in bars: {}",
65 Samples(176_400).bars(bpm, time_sig, SAMPLE_HZ));
66
67 println!("Great Success!");
68}
Trait Implementations§
Source§impl AddAssign for Ticks
impl AddAssign for Ticks
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
Performs the
+=
operation. Read moreSource§impl DivAssign for Ticks
impl DivAssign for Ticks
Source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
Performs the
/=
operation. Read moreSource§impl FromPrimitive for Ticks
impl FromPrimitive for Ticks
Source§fn from_u64(n: u64) -> Option<Ticks>
fn from_u64(n: u64) -> Option<Ticks>
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<Ticks>
fn from_i64(n: i64) -> Option<Ticks>
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 Ticks
impl MulAssign for Ticks
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
Performs the
*=
operation. Read moreSource§impl Ord for Ticks
impl Ord for Ticks
Source§impl PartialOrd for Ticks
impl PartialOrd for Ticks
Source§impl RemAssign for Ticks
impl RemAssign for Ticks
Source§fn rem_assign(&mut self, rhs: Self)
fn rem_assign(&mut self, rhs: Self)
Performs the
%=
operation. Read moreSource§impl SubAssign for Ticks
impl SubAssign for Ticks
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
Performs the
-=
operation. Read moreSource§impl ToPrimitive for Ticks
impl ToPrimitive for Ticks
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 Ticks
impl Eq for Ticks
impl StructuralPartialEq for Ticks
Auto Trait Implementations§
impl Freeze for Ticks
impl RefUnwindSafe for Ticks
impl Send for Ticks
impl Sync for Ticks
impl Unpin for Ticks
impl UnwindSafe for Ticks
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