Skip to main content

MNE Scan Development

MNE Scan is MNE-CPP's real-time data acquisition and processing application. It is built around a plugin pipeline — data flows from acquisition plugins (hardware drivers, file readers, simulators) through processing plugins (filtering, averaging, source localization) to output plugins (file writers, network senders).

Plugins are loaded as shared libraries at runtime. Each plugin inherits from one of three abstract base classes (AbstractSensor, AbstractAlgorithm, or AbstractIOPlugin) and communicates through typed input/output connectors that the user wires together in the GUI.

Guides

  • Acquisition Plugins — The three-tier architecture (Plugin → Producer → Driver) used by all sensor plugins, with the gUSBamp EEG driver as a worked example.
  • Creating a Plugin — Step-by-step guide to building a new MNE Scan plugin using the DummyToolbox template, including CMake setup, virtual functions, connectors, and static build integration.

Key Concepts

ConceptDescription
ConnectorsTyped input/output channels that link plugins in the pipeline
Ring buffersLock-free CircularBuffer instances used for inter-thread data transfer
Plugin categoriesSensor (acquisition), Algorithm (processing), IO (output)
Static buildsPlugins registered via Q_IMPORT_PLUGIN for single-binary deployment