Crate hertz [−] [src]
useful functions for working with frame-rates, sample-rates, other rates, time durations, frequencies, etc and for keeping a constant framerate.
rate
, sample rate
, frame rate
, fps
, frequency
, etc
express the same concept and are therefore used interchangeably.
you can use hertz to compute the time resolution and frequency range that can be meaningfully analyzed by a short-time fourier transform of a signal:
extern crate hertz; fn main() { let sample_rate = 44100; let window_size = 4096; let step_size = 512; // 11 hertz is the maximum frequency that can be meaningfully analyzed assert_eq!( 11., hertz::rayleigh(sample_rate as f64, window_size as f64).round()); // 22050 hertz is the maximum frequency that can be meaningfully analyzed assert_eq!( 22050., hertz::nyquist(sample_rate as f64).round()); // 12 ms is the time resolution we get when analyzing a 44100 hertz // signal with a step size of 512 assert_eq!( 12., hertz::s_to_ms(hertz::cycles_per_second_to_seconds_per_cycle( sample_rate as f64, step_size as f64)).round()); }
you can use hertz to keep a constant framerate in a game or other computer graphics application:
fn main() { let frames_per_second: usize = 60; loop { let instant_at_frame_start = std::time::Instant::now(); // here's where logic and rendering would go. // this is never called more than frames_per_second // times per second. hertz::sleep_for_constant_rate( frames_per_second, instant_at_frame_start); } }
Functions
cycles_per_second_to_seconds_per_cycle |
window duration in seconds sample_rate in hertz |
fps_to_ns_per_frame |
when given frames per second (or sample rate) returns the duration of a single frame |
hertz_range |
frequency range that can be modeled when taking the short
time fourier transform of a signal with |
ms_to_ns |
milliseconds to nanoseconds |
ms_to_s |
milliseconds to seconds |
ns_to_ms |
nanoseconds to milliseconds |
ns_to_s |
nanoseconds to seconds |
nyquist |
maximum frequency in hertz that can be meaningfully analyzed with a given sample rate https://en.wikipedia.org/wiki/Short-time_Fourier_transform#Explanation |
rayleigh |
minimum frequency in hertz that can be meaningfully analyzed with a given sample rate and window size https://en.wikipedia.org/wiki/Short-time_Fourier_transform#Rayleigh_frequency |
s_to_ms |
seconds to milliseconds |
s_to_ns |
seconds to nanoseconds |
sleep_for_constant_rate |
useful for keeping a constant framerate |