GBF Source
On the roadmapgbf_sourceExposes live GBF (SA1/SA2) sample tables from memory registry
Signature
Outputs
sa1Signalsa2SignalsignalSignal
Description
GBF Source exposes the live sample tables of a GBF (Générateur Basse Fréquence / arbitrary function generator) as Signal streams inside the graph. It surfaces two independent instrument channels, SA1 and SA2, plus a signal alias that resolves to the first non-empty channel. Like hardware_source and audio_source, it is a pure source terminal: it has no input ports and no user parameters — the per-channel instrument handles (sa1_handle_id, sa2_handle_id) and the trailing window_size are bound at runtime from the memory registry, not set on the node canvas.
This node has status `roadmap`: hardware acquisition for the GBF back end is still being finalized for a later build. The port and behavior contract below is authoritative, but the live device bridge is not yet wired in the current release. Treat this as the interface you will target, not a shipping feature.
Behaviorally the node is non-blocking: if a channel's handle is missing or idle, that output emits an empty Signal rather than stalling the graph. Each poll returns at most the last window_size samples from the registry table, so it behaves as a bounded trailing view of the instrument's output buffer. The node is stateless — it holds no internal buffer or phase; all persistence lives in the external registry it reads.
Units and uncertainty are passed through as tagged on the acquired samples. GBF Source performs no scaling, calibration, or synthesis: whatever physical unit and standard deviation the registry attaches to a sample table flows downstream unchanged.
Examples
Reading both GBF channels
Drop a GBF Source node with no configuration. Wire sa1 into an fft to inspect the primary channel's spectrum and sa2 into a statistics node for a live RMS/mean readout. If only SA1 is driven, the signal alias mirrors sa1 while sa2 stays empty — no wiring changes needed.
Idle-safe pipeline
Because an idle handle yields an empty Signal, you can leave a GBF Source connected in a template graph that runs before the instrument is armed:
gbf_source.signal -> smoothing -> peak_detectionDownstream nodes receive zero-length input (no error, no block) until the handle goes live, at which point the trailing window_size samples begin to flow.
Applications
- Streaming an arbitrary-waveform generator's output into a live analysis graph (FFT, peak detection, statistics) for stimulus monitoring during instrumentation tests.
- Dual-channel comparison of an SA1 excitation against an SA2 reference or return path in signal-integrity and transfer-function measurements.
- Feeding a known generator signal into a device-under-test model for closed-loop simulation, calibration, and frequency-response characterization.
- Teaching and lab bench setups where students probe generator waveforms and process them with the same node graph used for real acquisition.
Neat
The `signal` output is not a third channel but an alias that resolves to the first non-empty of SA1/SA2, so a single-channel graph works unchanged whether SA1 or SA2 is the active source.
The node is completely parameter-free on the canvas: its entire configuration (handles, window size) is injected from the runtime memory registry, mirroring how `hardware_source` and `audio_source` bind their channels.
Known issues
Because outputs are bounded to the trailing `window_size` samples, a consumer polling slower than the generator's fill rate can miss samples that scroll out of the registry window between reads — the node provides a view, not a lossless queue.
A missing or idle handle returns an empty Signal silently; downstream nodes cannot distinguish 'instrument not yet armed' from 'legitimately zero-length data' without an external status check.