RB-x40 + m-pod: event markers from task computer via usb?

We have an RB-840 that I’d like to use with a biosemi eeg setup. If we use a m-pod, I gather TTL will be sent for photo sensor or button press (as configured by Xidon?).

But we’ll lose the task PC LPT->biosemi receiver connection currently used for event specific triggers (e.g. left sided event vs right sided event). In it’s place, we would send USB event markers to RB-840 which would forward them onto the EEG recording via the m-pod+biosemi receiver.

  1. Is that roughly (usb->RB->mpod) correct?
  2. how are usb markers typically set for RB-x40? In python, I see set_digital_output_lines – is that the right place to look?
  3. If we need to set USB markers, are we restricted to running the response box in more advanced modes? (would be ideal to run as ASCII if m-pod is already handing precision timing for photo & buttons within the recording)
    • otherwise, are there any hurtles to both watching for button pushes (check_for_keypress?) and simultaneously setting USB event markers?
  4. Our task event markers currently run 0-255. pin config screenshots look like we’d loose a bit for each button and photo sensor we want to uniquely identify. The biosemi receiver and stim channel are both 16-bit. Is m-pod/Xidon capable of allocating all 16-bits – can we keep our tasks’ current event marking scheme?
    • esp for start and stop triggers and legacy tasks


Hello Will,

  1. The approach you describe is correct. There is another approach but it’s more expensive because it involves purchasing a StimTracker Quad and this external TTL input kit. With this approach, you don’t have to rewrite your existing code. See Using an External Input Source.

  2. I’m not a Python programmer but that sounds correct. We can provide tech support if you get stuck.

  3. Alas yes, if you want to send event markers via USB, the response pad can be only in XID mode. ASCII mode will not work unless you use the StimTracker Quad approach. There are no hurdles to watching for button presses and setting USB event markers simultaneously.

  4. Yes, we support all 16 bits.

Let me know if you have further questions.

1 Like

Not exactly the solution we expected. But thought it might be worth the follow up.

Currently we’re using the the button box+photodiode over usb to the task computer and sending events from there over LPT to be recorded in the stim channel using a python script. The python code asynchronously runs (1) button push → key press translation, (2) a http server to receive task event info, and (3) a LPT interface to actually send events, pushes, and PD hits to the stim channel.

The difference between task (30ms flips, slow/inaccurate web browser based) event reported timing and the photo diode is averaging 48.58ms with a stddev of 6.65ms.

The complicated way to look at the setup:

The stim channel ttl values (with button=2-4 and pd=1 separated from task’s 10-255) against time reported by the task (bottom)

One note: I hope your PC has a built-in real LPT port. A USB→LPT converter adds another layer of timing uncertainty, and usually not an insignificant one.

Thank you for the follow up and sharing your setup.