Sampled Data Duration
Rust library for handling durations of sampled data, e.g. digital audio.
The sampled_data_duration crate provides two stucts:
ConstantRateDuration and MixedRateDuration.
A ConstantRateDuraiton can be used to represents the duration of any
data-set which has been sampled at a constant frequency, a prime
example might be an audio file sampled at 44.1kHz.
A MixedRateDuration can be used to represent the duration of a
collection of data-sets which have different sampling frequencies. A
typical example might be a playlist of audio files where some have
been sampled at 44.1kHz, and others at 48kHz or 96kHz, etc.
Example
use ConstantRateDuration;
use MixedRateDuration;
// Consider an audio file which consists of `12345678` samples per
// channel recorded at a sampling rate of 44.1kHz.
let crd = new;
// The default string representation is of the form
// `hh:mm:ss;samples`
assert_eq!;
// Get the duration in various different time-units
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
// Consider and audio playlist which already consists of a file
// recorded at 96kHz.
let mut mrd = from;
// The default string representation of the a mixed rate duration
// which consits of only one entry is of the form `hh:mm:ss;samples`
assert_eq!;
// However if we add-assign `crd` to `mrd`
mrd += crd;
// Then we have a duration which is made up of different sampling
// rates and the default string representation changes to be of the
// form `hh:mm:ss.s`
assert_eq!;
An attempt has been made to follow the naming conventions defined by
std::time::Duration.