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
| Concept | Description |
|---|---|
| Connectors | Typed input/output channels that link plugins in the pipeline |
| Ring buffers | Lock-free CircularBuffer instances used for inter-thread data transfer |
| Plugin categories | Sensor (acquisition), Algorithm (processing), IO (output) |
| Static builds | Plugins registered via Q_IMPORT_PLUGIN for single-binary deployment |