Skip to content

Consumer EEG Devices

AIME LOC includes built-in presets for popular consumer EEG headsets. Presets automatically configure channel names and expected sampling rates.

Supported Devices

Device Preset Channels Default Sfreq Price Range
Muse 2 / Muse S "muse" 4 (TP9, AF7, AF8, TP10) 256 Hz $250–350
OpenBCI Cyton "openbci_cyton" 8 250 Hz $500–1000
Emotiv EPOC X "emotiv_epoc" 14 256 Hz $850
Neurosity Crown "neurosity" 8 256 Hz $800
g.tec Unicorn "gtec_unicorn" 8 250 Hz $1500

Using Device Presets

from aime_loc import LOC
from aime_loc.eeg import EEG

loc = LOC()
eeg = EEG(loc)

# Load with device preset
recording = eeg.load("session.csv", device="muse")

# Preset auto-sets:
#   - Channel names: ["TP9", "AF7", "AF8", "TP10"]
#   - Expected sfreq: 256 Hz

Override the sampling rate if your export uses a different rate:

recording = eeg.load("session.csv", device="muse", sfreq=256)

Per-Device Guides

Muse 2 / Muse S

The Muse is the most accessible consumer EEG with 4 channels covering frontal and temporal regions.

Export options:

  • Mind Monitor (recommended) — exports CSV with timestamps
  • Muse Direct — exports EDF or CSV
  • BlueMuse (Windows) — LSL stream, can save to CSV
# From Mind Monitor CSV export
recording = eeg.load("muse_recording.csv", device="muse")
recording.preprocess(bandpass=(1.0, 40.0), notch=60.0)
epochs = recording.extract_epochs(duration=2.0)
profile = eeg.score(epochs)

Muse Signal Quality

With only 4 channels, Muse data has lower spatial resolution than research-grade systems. TC scores may have higher variance but the overall profile shape is still informative. For best results, ensure good electrode contact (adjust headband fit) and record in a quiet environment.

OpenBCI Cyton

8-channel open-source EEG board with customizable electrode placement.

# From OpenBCI GUI CSV export
recording = eeg.load("openbci_session.csv", device="openbci_cyton")
recording.preprocess()
epochs = recording.extract_epochs()
profile = eeg.score(epochs)

Emotiv EPOC X

14-channel wireless headset popular in research and consumer applications.

# From EmotivPRO CSV export
recording = eeg.load("emotiv_export.csv", device="emotiv_epoc")
recording.preprocess()
epochs = recording.extract_epochs()
profile = eeg.score(epochs)

Neurosity Crown

8-channel headset designed for developers and researchers.

recording = eeg.load("neurosity_data.csv", device="neurosity")
recording.preprocess()
epochs = recording.extract_epochs()
profile = eeg.score(epochs)

g.tec Unicorn

Research-grade 8-channel wireless EEG with high signal quality.

recording = eeg.load("unicorn_data.csv", device="gtec_unicorn")
recording.preprocess()
epochs = recording.extract_epochs()
profile = eeg.score(epochs)

Signal Quality Tips

  1. Electrode contact — Ensure all electrodes make good skin contact. Check impedance if your device supports it.
  2. Environment — Record in a quiet room away from electrical equipment.
  3. Movement — Minimize head and jaw movement during recording.
  4. Duration — Record at least 2 minutes for stable TC scores. 5+ minutes recommended.
  5. Eyes — Be consistent: eyes-open or eyes-closed throughout the recording, or clearly segment the two conditions.

Minimum Requirements for TC Scoring

Parameter Minimum Recommended
Channels 2 4+
Sample rate 128 Hz 256+ Hz
Duration 60s 300+ s
Epoch count 10 50+

Listing Available Presets

from aime_loc.eeg._montage import DEVICE_PRESETS

for name, preset in DEVICE_PRESETS.items():
    print(f"{name}: {len(preset.channels)}ch @ {preset.sfreq}Hz")
    print(f"  Channels: {preset.channels}")

Next Steps