diff --git a/README.md b/README.md index 93b3e27..5c97ebb 100644 --- a/README.md +++ b/README.md @@ -153,9 +153,21 @@ the only way to reset the pattern is to reset the plugin. if your daw has a way ### robotuna -WIP automatic pitch correction and pitch shifting. the intention is to use it to make hyperpop-style high-pitched vocals +automatic pitch correction and pitch shifting. the intention is to use it to make hyperpop-style high-pitched vocals -it kinda works, but not really. since the pitch shifting part is too slow using a phase vocoder, it doesn't run in real time, and there's some clicking noises. i need to rework that whole thing so it can run in real time. i'll probably change the whole thing completely instead of optimizing it cause yeah +params: +- `manual/snap`: decides whether to listen to midi (if under 0.5) or to snap to the closest semitone (if over or equal 0.5) +- `frequency gain`: added gain on top of the correction + +robotuna will do pitch detection on the input, and then shift the pitch to match the expected one. the expected pitch can be either: the midi note, if set to manual; or the closest semitone, if set to snap + +note: snap mode ignores the midi input + +after that, the pitch will be shifted by `frequency gain` + +for example: +- setting to manual mode, setting gain to `2.0`, and not sending any midi notes, will make the audio be one octave up +- setting to snap mode, gain to `1.0`, will work as a traditional pitch corrector ### hysteria diff --git a/crates/robotuna/src/lib.rs b/crates/robotuna/src/lib.rs index 5acae38..a86da91 100644 --- a/crates/robotuna/src/lib.rs +++ b/crates/robotuna/src/lib.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; use utils::logs::*; use utils::pitch::*; -const DET_LEN: usize = 2 << 8; +const DET_LEN: usize = 128; baseplug::model! { #[derive(Debug, Serialize, Deserialize)]