Crates.io | pitch-pipe |
lib.rs | pitch-pipe |
version | 0.1.2 |
source | src |
created_at | 2024-04-13 02:03:31.097445 |
updated_at | 2024-04-13 16:50:15.644067 |
description | Pitch Pipe is a method for automatically tuning a one euro filter |
homepage | |
repository | https://github.com/PrismaPhonic/Pitch-Pipe-RS |
max_upload_size | |
id | 1207320 |
size | 1,919,771 |
After extensive testing, it seems that this does not meet the desired lag requirements set by the user AND over aggressively smooths data. I can only assume that either the 60 hz table from the parent repo is not appropriate for all 60 hz signals, or the study data was fabricated. Please don't waste as much time on this as I did. I will update this if I get it sorted.
This is a rust port of Pitch Pipe. The original researchers who invented Pitch Pipe put up a sample repo in javascript that this was ported from.
From their README:
Pitch Pipe is a custom low-pass filter calibration technique that finds optimal parameters based on context specific information. As such, Pitch Pipe requires three inputs: a signal from which to derive relevant characteristics, a low-pass filter to calibrate, and an application specific criteria to optimize for, namely precision and lag. From the input device signal, Pitch Pipe extracts noise and maximum user speed estimates, which we use to generate synthetic noise and edge patterns. Thereafter, Pitch Pipe performs a grid search over the filter’s parameter space, evaluating its performance on the stated synthetic data. Pitch Pipe finally outputs the parameter set that best matches the application specific criteria. As such, Pitch Pipe internally comprises three steps that are to estimate noise, estimate maximum user speed, and optimize the parameter set.
This was ported mostly 1:1 from the parent repo with some changes: