LSL (low-level)🔗

If the high-level API is not sufficient, the low-level API interface directly with liblsl, with a similar API to pylsl.

Compared to pylsl, mne_lsl.lsl pulls a chunk of numerical data faster thanks to numpy. In numbers, pulling a 1024 samples chunk with 65 channels in double precision (float64) to python takes:

  • 4.33 ms ± 37.5 µs with pylsl default behavior

  • 471 ns ± 1.7 ns with pylsl using a ndarray as dest_obj to prevent memory re-allocation

  • 268 ns ± 0.357 ns with mne_lsl.lsl which uses numpy.frombuffer() under the hood

More importantly, pylsl default behavior pulls a chunk in linear time O(n), scalings with the number of values; while mne_lsl.lsl pulls a chunk in constant time O(1). Additional details on the differences with pylsl and mne_lsl can be found here.

StreamInfo

Base Stream information object, storing the declaration of a stream.

StreamInlet

An inlet to retrieve data and metadata on the network.

StreamOutlet

An outlet to share data and metadata on the network.

library_version

Version of the binary LSL library.

protocol_version

Version of the LSL protocol.

local_clock

Obtain a local system timestamp in seconds.

resolve_streams

Resolve streams on the network.