A recording application (python-based) that discovers LSL streams in the network and allows time-synchronized recording into binary pickle files. You will need the following python libraries (at least):
- wxPython for the GUI
- pylsl for LSL functionality
Tested with python3 on Windows. Note that the implementation of pickle might differ between OS and most importantly between python2 and python3. De-pickling python2 recordings will not be possible with python3.
- Run "python MainGui.py"
- Check Streams will discover all currently running LSL streams in the network. You might need to configure your firewall appropriately to allow access.
- Select streams you want to record by selecting (clicking) the row number. Use Ctrl to select multiple.
- Press Connect Streams. Depending on the number of streams this might take a while (half a minute). If streams are slow to respond this command might fail (possibly crashing emXterity); Repeat by restarting emXterity if needed.
- Streams are now connected and should display a time offset for each selected stream. The value is based on the streaming system's local clock.
- Specify a persistence duration (emXterity will persistently write collected data to the hard drive each interval) and hit Record Streams.
- Specify a folder location and file name. Each stream will have a separate pickle file. A summary file contains all recorded streams and their details.
emXterity implements some safeguarding against loss of data such as persistence duration and automatic reconnect to lost streams if they become available again (through LSL reconnect via source id). Additionally, a final summary shows estimated recording times for each streams based on the supplied sampling rate and received datapoints. If these values are off (or different from what you expect), the specific streams might have been disconnected during the recording or did not deliver data up to its specified sampling rate.
emXterity supplies a python-based marker stream implementation of LSL (streams/MarkerStream.py). You can create individual strings markers for your experiment and send them as LSL stream. Do not forget to record this marker stream as well.
- Run "python MarkerStream.py"
- Specify your individual markers. One per line.
- Hit Generate Marker Buttons. The LSL stream is now active. Select it when recording with emXterity.
- Whenever you want to send a marker hit the respective button.
You may use utils/read_pickle.py to extract data from recorded streams. Note that all streams within one recording are fully time-synchronized.
Unpickling python2 recording might not work with python3!