This guide exists for the moment a fresh build leaves the solder mat and needs its behaviour lined up with the firmware’s expectations. Treat it like a lab ritual: we surface intent, run targeted calibrations, and log anything gnarly so the next crew can replay the session without guesswork.
- Clone the latest
main, rungit status, and note any local hardware hacks before you begin so this log stays honest. - Skim
docs/builder_bootstrap.mdfor wiring sanity and confirm your pin map still mirrorsinclude/HardwareConfig.h. - Run
pio pkg installonce to refresh toolchains, then tag your bench notebook with today’s date and the unit’s serial.
- Power the rig and confirm the SGTL5000 wake flow matches the bring-up
path in
src/main.cpp— headphone hiss or missing output usually means codec enable lines aren’t latched. - Boot the native simulator with
pio test -e native --filter test_app --test-name test_simulator_audio_reports_48kto prove the 48 kHz baseline still matcheshal::audio::sampleRate(). - Trigger a resonator seed via the sim or hardware UI and compare the voice
metrics to the expectations captured in
tests/test_engine/test_resonator_voice_pool.cpp. - If gains drift, snapshot the OLED metrics (
AppState::captureDisplaySnapshotlives insrc/app/AppState.cpp) and stash the before/after numbers in your lab notes.
- Follow the wiring choreography in
docs/hardware/trs_clock_sync/README.mdso TRS clock edges actually hitSerial7. - With hardware attached, flash a build compiled with
-DSEEDBOX_DEBUG_CLOCK_SOURCE=1(see the clock logging notes inAppState::onExternalTransportStart). - Fire external clock pulses and confirm the serial log mirrors the
simulator flow locked down by
tests/test_app/test_external_midi_priority.cpp. - If TRS loses to USB, capture the debug log and append it to the troubleshooting table below so the next calibration starts with context.
- Twist every encoder and confirm directionality matches the table in
builder_bootstrap.md; reversed direction means the A/B channels were flipped. - Mash transport buttons and confirm the mode bits exposed via the MN42 map
behave like
test_mn42_transport_latch_behavior. - Run through seed reseeds on the simulator and ensure
AppState::setSeedEnginehonours the CC hygiene documented nearapplyMn42ModeBitsinsrc/app/AppState.cpp.
- Commit a calibration note in
docs/troubleshooting_log.mdwith today’s date, observed quirks, and which tests you re-ran. - Kick off
pio test -e nativeovernight; annotate the results with any deviations from the expected clock dominance or voice stats. - Archive scope captures, audio renders, and serial logs in
artifacts/and link them directly from the troubleshooting log for future hunts.