Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::osc::VcoTuning Struct Reference

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

Detailed Description

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).

Member Function Documentation

◆ frequency_hz()

double pulp::signal::osc::VcoTuning::frequency_hz ( double control_volts) const
inlinenoexcept

Frequency for a control voltage, in Hz. Pure; allocates nothing.

◆ phase_increment()

double pulp::signal::osc::VcoTuning::phase_increment ( double control_volts,
double sample_rate ) const
inlinenoexcept

Per-sample phase increment (cycles) for a control voltage at sample_rate.

Member Data Documentation

◆ hf_compression

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.

◆ hf_knee_octaves

double pulp::signal::osc::VcoTuning::hf_knee_octaves = 3.0

◆ reference_hz

double pulp::signal::osc::VcoTuning::reference_hz = 261.625565

Frequency produced at 0 V with no calibration offset.

◆ scale_error

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.

◆ tune_offset_cents

double pulp::signal::osc::VcoTuning::tune_offset_cents = 0.0

Per-oscillator calibration offset, in cents. Shifts every note equally.

◆ volts_per_octave

double pulp::signal::osc::VcoTuning::volts_per_octave = 1.0

Volts spanning one octave (the converter's nominal sensitivity).


The documentation for this struct was generated from the following file:
  • /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/osc/vco.hpp