This project and collection of packages has the goal of creating a group-first, cross-platform suite of tools that make it easy to start collecting behavioural, EEG, MoCap or any other data source that either already has an integration with Lab Streaming Layer, or, any kind of API for consuming data, which can then be collected or forwarded on as an LSL stream. |

Tip
For a quick overview, see the poster ——>
Note
Does this already sound too complicated? 🥴
Don't worry, it is still early days, but already some basic functionality, such as validating latency and timing in your lab, is already as simple as running an app on whatever devices you plan to use in research.
The core of this project is the Dart native liblsl wrapper which makes LSL integration into your project a breeze.
This already supports Android, iOS, Linux, MacOS and Windows.
While it's pretty easy to get the liblsl dart native library working in most environments, sometimes a little extra effort is required, and as such, there is a liblsl pre-compiled build for the Bela (Beaglebone black) availabe
- liblsl_coordinator currently work in progress tool to automatically coordinate, control and set up communication between all the devices involved in your experiment
- liblsl_timing: App based multi-device latency, sync and interactive timing tests with automatic device coordination via LSL
- liblsl_analysis: Analysis of results from the timing tests in liblsl_timing
If you have a Bela, code is available to validate the end-to-end latency of devices using photodiodes and FSR sensors.
RiseTogether is a novel videogame style paradigm for investigating simultaneous collaboration and competition in groups. It is flexible allowing for varying group sizes, and is built around the dart liblsl framework for automatically coordinating and configuring the experiment in different labs, on different devices, with different numbers of participants. For more info see the repository or the poster linked above.
Some useful packages have been developed for Flutter and Dart development which may be useful more generally beyond group research projects and can be added to apps by developers, these are:
- flutter_multicast_lock source, a package to acquire multicast locks on Android (but won't break on other platforms)
- flutter_refresh_rate_control source, a package that helps attempt to make android and iOS devices use the highest refresh rate possible for their screen (e.g. ProMotion) and tries to disable Android's Adaptive Refresh Rate (ARR)