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

OSC-DCO profile — data-driven timing parameters, no waveform or hardware capture. More...

#include <dco.hpp>

Public Attributes

double master_clock_hz = 8'000'000.0
 f_clk in Hz.
DcoDivider divider_scheme = DcoDivider::integer_n
 Selects the integer-N (perfectly periodic) or fractional-N (accurate average, jittered) path.
int accumulator_bits = 24
 B — accumulator width, fractional-N only.
int octave_shift = 0
 Footage / octave selection, in octaves relative to the commanded note.
double fine_tune_cents = 0.0
 Global detune folded into the note before N / Δ derivation, in cents.

Detailed Description

OSC-DCO profile — data-driven timing parameters, no waveform or hardware capture.

N (integer) and Δ (fractional) are DERIVED from a commanded note plus this profile; they are the equality-test targets, not stored fields.

There is deliberately NO drift / jitter-depth parameter: a DCO's clock is crystal-stable, so its imperfection is quantization, not drift. Waveshaper selection is not a DCO-profile field either — it belongs to the shared shaping stage this profile feeds.

Member Data Documentation

◆ accumulator_bits

int pulp::signal::osc::DcoProfile::accumulator_bits = 24

B — accumulator width, fractional-N only.

Sets the tuning resolution f_clk / 2^B and the reset-jitter quantum. Clamped to [1, 32] on use.

◆ divider_scheme

DcoDivider pulp::signal::osc::DcoProfile::divider_scheme = DcoDivider::integer_n

Selects the integer-N (perfectly periodic) or fractional-N (accurate average, jittered) path.

◆ fine_tune_cents

double pulp::signal::osc::DcoProfile::fine_tune_cents = 0.0

Global detune folded into the note before N / Δ derivation, in cents.

◆ master_clock_hz

double pulp::signal::osc::DcoProfile::master_clock_hz = 8'000'000.0

f_clk in Hz.

Sets both the pitch-quantization scale (|e| ∝ 1/f_clk) and the fractional jitter grid.

◆ octave_shift

int pulp::signal::osc::DcoProfile::octave_shift = 0

Footage / octave selection, in octaves relative to the commanded note.

Positive is up (4' is one octave above 8'). The scaling is an exact power of two, so the cents error tracks |e| at the shifted pitch — a lower footage means a smaller error.


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