Skip to content
Rodeo

Pure-logic headers

Six headers contain no libDaisy and no hardware. They compile on your laptop, common/tests/ exercises them there, and the firmware calls these functions rather than a parallel implementation that drifts from the tested one.

HeaderWhat is in it
adc_convert.hThe ADC value pipeline, and PotSpan knob-travel calibration
pot_ui.hPanel logic: stepped pots, and “which knob is the user moving?”
rodeo_dsp.hSmoother, OnePole, DcBlocker, Lfo, Rng
rodeo_scope.hA triggered, normalised waveform for a small display
rodeo_screen.h128×64 primitives: title bar, list rows, scroll bar
sat_frame.hThe satellite chain’s wire format: frames, slots, CRC, discovery, commands

sat_frame.h is plain C, because the satellites include it too: the chain’s two ends share one definition of every byte, and the host tests play both parts, down to a simulated ring of satellites.

Each links to its page in the API reference, which is generated from the header itself.

Why this matters

Most of what makes an instrument feel right is not hardware access — it is smoothing, stepping, hysteresis and display state. Keeping that in host-testable headers means it can be exercised without a board, and a change that breaks a knob’s behaviour fails a test rather than being discovered by ear.

Terminal window
cd rodeo-sdk/common/tests
make && ./build/tests

The rule the SDK follows: anything that is just maths and state belongs here.

Seeing screens without hardware

tools/screens/ renders an instrument’s real OLED screens on your laptop, using the same rodeo_screen.h primitives the firmware uses. The screen you are looking at is drawn by the same code that will draw it on the panel.