NexusDynamic logo: a central pulsing node connected to surrounding nodes of different shapes

Multimodal group social dynamics research, for everyone

NexusDynamic builds a group-first, cross-platform suite of tools that make it easy to collect behavioural, EEG, motion capture or any other data. Anything with a Lab Streaming Layer integration, or any API that produces data, can be recorded or forwarded on as an LSL stream.

App

LSL Viewer

An XDF file viewer and live LSL stream viewer. Open LabRecorder recordings of any size (in the browser they are read locally, never uploaded), view live streams with filters, re-referencing, power spectra and signal quality, record to XDF, replay recordings as LSL streams, and share streams across networks with the built-in WebSocket bridge and relay. It also works with OpenBCI Cyton and serial devices, including over WebSerial.

  • Web
  • Windows
  • macOS
  • Linux
  • Android
LSL Viewer showing 35 channels of EEG from an XDF recording

Game

Rise Together

A cooperative and competitive physics game. Keep the ball in the air by lifting the left and right sides of your paddle, climb through the levels and race the other team to the top. Play solo, team up in co-op, or play team against team online with quick match or a private room code. It includes a level editor and untimed play. It is the game version of our research paradigm, without the research logging and multimodal integration.

  • Web
  • Android
  • iOS
  • Windows
  • macOS
  • Linux

liblsl.dart

The core of the project: Lab Streaming Layer and XDF for Dart and Flutter, on Android, iOS, Linux, macOS, Windows and the web.

liblsl

A Dart and Flutter interface to the C++ liblsl library, with full parity with the C API, for sending and receiving LSL streams in an application.

xdf

Read and write XDF files in pure Dart on every platform, including the web. Uses the same algorithms as pyxdf and is tested against it.

signal_core

A format-agnostic multichannel signal engine (summary pyramids, filters) that powers the viewer and the xdf package.

signal_viewer

The viewer behind LSL Viewer as a Flutter library, with source providers for LSL streams, XDF recordings and serial devices, for applications that display their own data.

lsl_tools

The lsl command line tool: list, record to XDF, share across networks, bridge, relay, replay and generate LSL streams.

serial_transport

Serial devices from Dart on desktop and in the browser (WebSerial). The OpenBCI Cyton driver is built on it.

Timing and latency

Validate latency and synchronisation in your own lab, on the devices you plan to use, before you collect any data.

transport_timing

An app that measures one-way latency, jitter, loss and clock drift between devices over LSL, WebSocket and WebRTC, with the devices coordinated automatically.

  • Windows
  • macOS
  • Linux
  • Android

transport_timing_analysis

Collates and visualises the logs of a timing run from all devices: latency distributions, loss, clock offsets and drift for every pair of devices.

  • Web
  • Windows
  • macOS
  • Linux
  • Android

timing_core

The record format and analysis behind both apps. The logs are XDF files, so they also open in other XDF tools.

button_display_latency

A Flutter app that measures the input-to-display pipeline for different button implementations, with frame-accurate timing and sync pulses for external measurement.

bela-lsl-timing

Validate end-to-end device latency with a Bela, photodiodes and force-sensitive resistors.

Bela-liblsl

A pre-compiled liblsl build for the Bela (BeagleBone Black).

Research paradigm

Simultaneous cooperation and competition in groups

RiseTogether is a video-game-style experimental paradigm for studying simultaneous cooperation and competition in groups. It supports different group sizes and is built on the liblsl.dart framework, which coordinates and configures the experiment automatically in different labs, on different devices and with different numbers of participants.

The research code and data will be released once data collection is complete. Until then, see the poster for an overview, or play the game version, Rise Together.

Conference poster for the framework and paradigm

Flutter packages

General-purpose packages built along the way, useful in any Flutter app.

flutter_multicast_lock

Acquire multicast locks on Android (and safely do nothing on other platforms), which LSL discovery needs.

flutter_refresh_rate_control

Ask Android and iOS devices to use their highest refresh rate (such as ProMotion) and try to disable Android's adaptive refresh rate.

easy_shared_preferences

A wrapper around shared_preferences that makes app settings easier to manage and modular.