Lab triggers (TTL)
Send TTL event markers to an EEG, fNIRS or EDA recorder through a USB trigger box while the study runs in the browser.
Mark events on a lab recorder from a browser experiment. The platform sends the codes and keeps the ledger; your recorder keeps the signal. Nothing physiological is stored here.
Two ways to deliver markers, usable together: TTL pulses through a USB trigger box (any recorder with a trigger input), or Lab Streaming Layer, where markers land in the same LabRecorder file as your EEG, eye tracker or other LSL streams. Your experiment code is the same either way.
What you need for TTL
Before you start
- A USB trigger box (Teensy, Arduino Leonardo, Cedrus StimTracker, LabJack, BlackBox ToolKit). An opto-isolated box is strongly preferred.
- Chrome or Edge on a desktop computer. Firefox, Safari and iOS cannot reach serial devices.
- Marker output wired to a recording input only — never to a device that delivers energy to a participant.
How it works
- 1
Turn on triggers in project settings
Enable triggers, and set the baud rate and pulse width to match your box. Resume is switched off automatically — a resumed session replays trials, which would re-fire markers into your recording.
- 2
Describe the markers in the AI editor
Ask for the codes you want in plain language, for example “send trigger 1 at stimulus onset and 2 on response”. The builder puts them in CONFIG.triggers so you can edit them later.
Every code must be different. Two conditions sharing a code cannot be told apart in the recording afterwards.
- 3
Start your recording first
Begin recording before consent, once for the whole flow. Session-relative marker times assume one continuous recording.
- 4
Run the pre-flight check
Open the study link. Choose the serial port, send the test markers (1, 2, 3), and confirm you can see them in your own recorder before the session begins.
What you get in the export
-
events.tsv— BIDS-shaped marker log (onset, duration, trial_type, value) with anevents.jsonsidecar. -
sessions.csvgainsmarkers_sent,markers_echoedandecho_rate(andlsl_markers_ackedfor LSL) so you can see delivery at a glance. - Trial rows carry
trigger_codeandtrigger_t, giving you a direct join into the marker log.