some app controls, format preserve, start of autotune speed
This commit is contained in:
@ -98,13 +98,21 @@ void Shifter::DetectPitch(const float* const* in, float** out, size_t size)
|
||||
in_period = in_period * in_period_filter_amount + period * (1.0f - in_period_filter_amount);
|
||||
}
|
||||
float in_freq = 48000 / in_period;
|
||||
|
||||
|
||||
int midi = (int)(12 * log2f(in_freq / 440) + 69.5f);
|
||||
out_midi[MAX_VOICES] = midi;
|
||||
float target_out_period = 48000.0f / mtof(midi);
|
||||
|
||||
if (midi != last_autotune_midi) {
|
||||
last_autotune_midi = midi;
|
||||
out_periods[MAX_VOICES] = in_period;
|
||||
}
|
||||
|
||||
static float out_period_filter_amount = 0.7f; // You can expose this as a parameter
|
||||
float target_out_period = 48000.0f / mtof(midi);
|
||||
out_periods[MAX_VOICES] = out_periods[MAX_VOICES] * out_period_filter_amount + target_out_period * (1.0f - out_period_filter_amount);
|
||||
float error = target_out_period - out_periods[MAX_VOICES];
|
||||
float adjustment = error * out_period_filter_amount;
|
||||
|
||||
//target_out_period = in_period * out_period_filter_amount + target_out_period * (1 - out_period_filter_amount);
|
||||
out_midi[MAX_VOICES] = midi;
|
||||
out_periods[MAX_VOICES] += adjustment;
|
||||
}
|
||||
|
||||
void Shifter::SetRates() {}
|
||||
|
||||
Reference in New Issue
Block a user