12#ifndef SBL_DSP_MATH_PITCH_HPP_
13#define SBL_DSP_MATH_PITCH_HPP_
29 float pitch = semitones + 128.0f;
30 int32_t integral =
static_cast<int32_t
>(pitch);
31 float fractional = pitch -
static_cast<float>(integral);
32 if (integral < 0) integral = 0;
33 if (integral > 255) integral = 255;
42 constexpr float FOLD_RANGE = 120.0f;
44 constexpr float FOLD_SCALE = 1024.0f;
46 while (semitones > FOLD_RANGE) { semitones -= FOLD_RANGE; scale *= FOLD_SCALE; }
47 while (semitones < -FOLD_RANGE) { semitones += FOLD_RANGE; scale *= (1.0f / FOLD_SCALE); }
The numbers every layer reaches for.
constexpr float pitch_ratio_high_256[257]
constexpr float pitch_ratio_low_256[257]
Cross-cutting math used at every audio layer.
constexpr float PITCH_SU_MIN_NOTE
constexpr float note_of_su(float su)
uint32_t note_to_phase_increment(float midi_note, float sample_rate)
float semitones_to_ratio_safe(float semitones)
float semitones_to_ratio(float semitones)
float note_to_frequency(float midi_note)
MIDI note to frequency in Hz. A4 = 440 Hz.
float note_to_ratio(float midi_note)
constexpr float su_of_note(float note)
constexpr float PITCH_SU_MAX_NOTE
constexpr float PHASE_ACCUMULATOR_RANGE
The phase accumulator's full range: uint32_t [0, 2^32) is one cycle.
constexpr float PITCH_SU_NOTE_RANGE
Generated by LUTE — do not edit.
Generated by LUTE — do not edit.