workflow status crates.io

pitch_detection

Usage

```rust use pitchdetection::detector::mcleod::McLeodDetector; use pitchdetection::detector::PitchDetector;

fn main() { const SAMPLERATE: usize = 44100; const SIZE: usize = 1024; const PADDING: usize = SIZE / 2; const POWERTHRESHOLD: f64 = 5.0; const CLARITY_THRESHOLD: f64 = 0.7;

// Signal coming from some source (microphone, generated, etc...)
let dt = 1.0 / SAMPLE_RATE as f64;
let freq = 300.0;
let signal: Vec<f64> = (0..SIZE)
    .map(|x| (2.0 * std::f64::consts::PI * x as f64 * dt * freq).sin())
    .collect();

let mut detector = McLeodDetector::new(SIZE, PADDING);

let pitch = detector
    .get_pitch(&signal, SAMPLE_RATE, POWER_THRESHOLD, CLARITY_THRESHOLD)
    .unwrap();

println!("Frequency: {}, Clarity: {}", pitch.frequency, pitch.clarity);

} ```

Live Demo

Demo Page Source

Documentation

LaTeX formulas can be used in documentation. This is enabled by a method outlined in rust-latex-doc-minimal-example. To build the docs, use cargo doc --no-deps The --no-deps flag is needed because special headers are included to auto-process the math in the documentation. This header is specified using a relative path and so an error is produced if cargo tries generate documentation for dependencies.