Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

alesgenova/pitch-detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

60 Commits

Repository files navigation

workflow status crates.io

pitch_detection

Usage

use pitch_detection::detector::mcleod::McLeodDetector;
use pitch_detection::detector::PitchDetector;
fn main() {
 const SAMPLE_RATE: usize = 44100;
 const SIZE: usize = 1024;
 const PADDING: usize = SIZE / 2;
 const POWER_THRESHOLD: 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.

About

A collection of algorithms to determine the pitch of a sound sample.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

Languages

AltStyle によって変換されたページ (->オリジナル) /