The analog exponential pitch converter, as a pure control-voltage → frequency map. More...
#include <vco.hpp>
Public Member Functions | |
| double | frequency_hz (double control_volts) const noexcept |
| Frequency for a control voltage, in Hz. Pure; allocates nothing. | |
| double | phase_increment (double control_volts, double sample_rate) const noexcept |
| Per-sample phase increment (cycles) for a control voltage at sample_rate. | |
Public Attributes | |
| double | reference_hz = 261.625565 |
| Frequency produced at 0 V with no calibration offset. | |
| double | volts_per_octave = 1.0 |
| Volts spanning one octave (the converter's nominal sensitivity). | |
| double | tune_offset_cents = 0.0 |
| Per-oscillator calibration offset, in cents. Shifts every note equally. | |
| double | scale_error = 1.0 |
| V/oct scaling error: the realized octave span as a multiple of the ideal. | |
| double | hf_compression = 0.0 |
| High-end tracking compression: above hf_knee_octaves the converter tracks flat by this many octaves per octave of further rise (the bulk- resistance term of the exponential converter). | |
| double | hf_knee_octaves = 3.0 |
The analog exponential pitch converter, as a pure control-voltage → frequency map.
1 V/octave nominal; the parameters are the ways a real converter departs from ideal, all hand-set (a fitting tool would recover them from a pitch-vs- note sweep — see the identifiability table — but nothing here optimizes them).
Every field is neutral by default, so a default VcoTuning is exactly reference_hz * 2^(control_volts / volts_per_octave).
|
inlinenoexcept |
Frequency for a control voltage, in Hz. Pure; allocates nothing.
|
inlinenoexcept |
Per-sample phase increment (cycles) for a control voltage at sample_rate.
| double pulp::signal::osc::VcoTuning::hf_compression = 0.0 |
High-end tracking compression: above hf_knee_octaves the converter tracks flat by this many octaves per octave of further rise (the bulk- resistance term of the exponential converter).
0 disables it.
| double pulp::signal::osc::VcoTuning::hf_knee_octaves = 3.0 |
| double pulp::signal::osc::VcoTuning::reference_hz = 261.625565 |
Frequency produced at 0 V with no calibration offset.
| double pulp::signal::osc::VcoTuning::scale_error = 1.0 |
V/oct scaling error: the realized octave span as a multiple of the ideal.
1.0 tracks perfectly; 1.002 makes every octave 0.2% wide, so pitch error grows with distance from the reference.
| double pulp::signal::osc::VcoTuning::tune_offset_cents = 0.0 |
Per-oscillator calibration offset, in cents. Shifts every note equally.
| double pulp::signal::osc::VcoTuning::volts_per_octave = 1.0 |
Volts spanning one octave (the converter's nominal sensitivity).