Digital Event Recorder
Introduction
The Digital Event Recorder (DER) is a device for recording timing pulses used for synchronizing several devices and is developed by the Technical Support Group. The device is based on a Raspberry Pi. The software on the raspberry pi is developed by Günter Windau.
The device has isolated inputs that can register trigger pulses from other devices. The incoming pulses are timestamped and can be used afterwards for synchronization of data collected from different devices. The device has an Ethernet connection and can be instructed and read out by your MATLAB program. The MATLAB software for the device is available in the biofysica repository on Gitlab.
The synchronization is based on Lab Streaming Layer (LSL). This protocol has a built-in timing facility which is designed to achieve sub-millisecond synchronization on a local network.
How to use a DER
The DER has an Ethernet connection and should be connected to the local network. The DER makes use of Lab Streaming Layer (LSL) and in the biofysica toolbox there is a Matlab interface for LSL.
Every DER has a name lslderXX, where XX is the number of the device. Every channel has a name Digital Events X where X is the number of the channel. The DER create an separate LSL stream for every channel of the device. Each stream is identified by a type and a name. In this case the type of the stream is Digital Events @ lslderXX and the name of the stream is Digital Events X.
The following code checks whether an LSL stream is available for the device lslder04 and the channel Digital Events 1:
info=lsl_resolver('type=''Digital Events @ lslder04'' and name=''Digital Events 1'''); streamInfoList=info.list(); if isempty(streamInfoList) error('no streams found'); end
In this case the streamInfoList contains only one stream (or none). If you want to find all available streams you can use:
info=lsl_resolver streamInfoList = info.list();
The following code prints all the types and names of the streams that are found:
for i=1:size(streamInfoList ,1) fprintf('%d: name: ''%s'' type: ''%s''\n',i,streamInfoList{i}.name,streamInfoList{i}.type); end
You can get the n-th stream by using lsl_istream:
eventStream=lsl_istream(info{n});
ses=lsl_session(); ses.add_stream(eventStream);
2 Channel Mobile Event Recorder
A compact Mobile Event Recorder for special use with audio signal onset detection is in development by Günter Windau.
4 Channel Mobile Event Recorder
The mobile event recorder is a 4 channel event recorder based on a raspberry Pi 4. The functionality is the same as the standard 19" rack event recorder.
There are 2 devices of this type:
- LSLDER06
- LSLDER07
8 Channel Event Recorder
The 8 channel digital event recorder is a 1U 19" rack version of the device.
- Synchronization of pulses: jitter < 1 ms.
There are 5 devices of this type in use in the labs:
Name | Location |
---|---|
LSLDER01 | Vestibular chair |
LSLDER02 | Auditory Perception Lab |
LSLDER03 | Auditory Motion Lab |
LSLDER04 | NIRS-EEG Lab |
LSLDER05 | Auditory Sphere Lab |