research toolsResearch Tools | Available Data

Download
NOTE: The research tools are compatible with the Muse 2014 headband. Support for the Muse 2016 headband is coming soon. To purchase a Muse 2014 headband please contact customercare@choosemuse.com

This is a list of all the data available from the Muse Research Tools using MuseIO. For the data available from LibMuse, please see the API Reference for your platform.

NOTE: Different data parameters like sampling rate, resolution, and more can be configured using preset commands that are sent when a connection to Muse is established.

EEG Data

Raw EEG

This is the raw EEG data for each channel on the headband as measured in microvolts. Filtering options, sampling rate, compression, and various other settings are configurable via presets.
 
MuseIO OSC Path/muse/eeg
UnitsuV
Datatypefloats
Resolution
Preset IDResolution
10, 12, 1410 bit
AD, AE16 bit
Range
Normal (recommended)with --no-scale flag (NOT recommended)
0.0 - 1682.815 uV0.0 - 1023.0 unitless
Sampling rate
Preset IDSampling Rate (Hz)
10, 12, 14220
AD, AE500
Channel configuration
Preset IDChannels
10, 12, 14, AD[TP9, Fp1, Fp2, TP10]
AE[TP9, Fp1, Fp2, TP10, DRL, REF]
NOTE: When using MuseIO, if the –osc_timestamp option is used, there are 2 extra fields appended to these messages:
  • integer: Number of seconds since 1970 when this event occurred
  • integer: Number of microseconds within that second
NOTE: If you use the –no-scale command-line option with MuseIO, you get the EEG values as seen by the analog to digital converter. These are not in microvolts. We do not recommend you use these as they may change at any time.

EEG Quantization Level

When using the consumer presets, the EEG data is compressed. If there is too much variation in the signal, then the signal must be rounded off (estimated) when it is sent. To decrease the size of the data, the EEG value is divided by a number before it is sent. This is the number it is divided by.
Datatypeint
MuseIO OSC path/muse/eeg/quantization
MuseIO OSC data format i
Range1, 2, 4, 8, 16, 32, 64,128

Dropped EEG Samples

Number of EEG samples dropped from bluetooth connection issues. This applies to all four/six (depending on preset) channels. One dropped sample here indicates one sample has been dropped from each channel. Position of this message in the message stream indicates where the dropped samples occurred.
Datatypeint
MuseIO OSC path/muse/eeg/dropped_samples
MuseIO OSC data format i
Range0 - 65535

Accelerometer Data

Raw Accelerometer Data

Accelerometer data is emitted at 50Hz. The three values represent acceleration relative to gravity in the x, y, z directions, in that order. The relative positions specified(forward/back, up/down) are if you are wearing Muse properly on your head. These values are in milli-G’s where 1 G is the force of gravity, this is also known as “weight per unit mass” or “acceleration vector”.
For an explanation of G-forces, see: http://en.wikipedia.org/wiki/G-force
Some relevant points:
  • The g-force acting on a stationary object resting on the Earth’s surface is 1g (upwards) and results from the resisting reaction of the Earth’s surface bearing upwards equal to an acceleration of 1 g, and is equal and opposite to gravity. The number 1 is approximate, depending on location.
  • The g-force acting on an object under acceleration can be much greater than 1g
MuseIO OSC Path/muse/acc
Unitsmilli-g
Datatypethree floats
Resolution10 bits
Range
Normal (recommended)With MuseIO --no-scale flag
-2000.0 - 1996.1 milli-g-512 - 511 unitless
Sampling rate50Hz
Channel configuration
Preset IDChannel Configuration
12, 14, AD, AE[ACC_X, ACC_Y, ACC_Z]
10Not available
NOTE: If you use the –no-scale command-line option with MuseIO, you get the proprietary raw data, before it is converted to milli-g units. We do not recommend you use this as it may change at any time.

Dropped Accelerometer Samples

Number of accelerometer samples dropped from bluetooth connection issues. This applies to all three axes. One dropped sample here indicates one sample dropped from each axis. Position of this message in the message stream indicates where the dropped samples occurred.
Datatypeint
MuseIO OSC path/muse/acc/dropped_samples
MuseIO OSC data format i
Range0 - 65535

Muse Elements Data

It is difficult to work with raw brain signals without a background in neuroscience or machine learning. Usually they are run through a series of computations to produce more useful features. The values given in this section are computed from the raw EEG values shown above. “Muse Elements” is our algorithm and signal processing pack for developers.

Raw FFTs for Each Channel

FFT stands for Fast Fourier Transform. This computes the power spectral density of each frequency on each channel. Basically, it shows which frequencies make up a signal, and  “how much” of each frequency is present. These values are the basis for many of the subsequent DSP values in Muse Elements. Each path contains 129 decimal values with a range of roughly -40.0 to 20.0. Each array represents FFT coefficients (expressed as Power Spectral Density) for each channel, for a frequency range from 0hz-110Hz divided into 129 bins. We use a Hamming window of 256 samples(at 220Hz), then for the next FFT we slide the window 22 samples over(1/10th of a second). This gives a 90% overlap from one window to the next. These values are emitted at 10Hz.
Datatype129 floats
MuseIO OSC Paths/muse/elements/raw_fft0
/muse/elements/raw_fft1
/muse/elements/raw_fft2
/muse/elements/raw_fft3
MuseIO OSC Data FormatAll presets: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
MuseIO message contents129 coefficients representing the logarithm of Power Spectral density for frequencies in the range of 0-110Hz
UnitsdB
Range0.0 - 1682.815 or 0 - 1023 with --no-scale flag
Sampling rateApproximately -40.0 to 20.0

Understanding Frequency Bins

The FFTs are calculated using a 256 sample window, which gives a transform that has 256 components and is symmetric (i.e. mirrored) around an additional component at 0Hz. In other words, you have 128 components, followed by one for 0Hz, and then the mirror image of the same components. This means you need only consider half of them (because the other half are the same, only reflected) plus the one for 0Hz at the centre, which gives you 129 in total.

To get the frequency resolution for the bins, you can divide the sampling rate by the FFT length, so in the case of Muse: 220/256 ~ 0.86Hz/bin

So, the zeroth index of the FFT array represents 0Hz, the next index represents 0-0.86Hz, and so on up to 128*0.86 = 110Hz, which is the maximum frequency that our FFT with its 220Hz sampling rate can detect.

Absolute Band Powers

The absolute band power for a given frequency range (for instance, alpha, i.e. 9-13Hz) is the logarithm of the sum of the Power Spectral Density of the EEG data over that frequency range. They are provided for each of the four to six channels/electrode sites on Muse.

Since it is a logarithm, some of the values will be negative (i.e. when the absolute power is less than 1) They are given on a log scale, units are Bels.

MuseIO Paths/muse/elements/low_freqs_absolute
/muse/elements/delta_absolute
/muse/elements/theta_absolute
/muse/elements/alpha_absolute
/muse/elements/beta_absolute
/muse/elements/gamma_absolute
UnitsBels (B)
Datatypefloats
Transmission frequency10 Hz
MuseIO OSC Data FormatFour channels (electrode sites) for each band power: ffff
Frequency Ranges*
NameFrequency Range
low_freqs2.5-6.1Hz
delta_absolute1-4Hz
theta_absolute4-8Hz
alpha_absolute7.5-13Hz
beta_absolute13-30Hz
gamma_absolute30-44Hz
 
* The boundaries of the frequency ranges are inclusive of the end values. Where 2 ranges overlap, a frequency in the overlapping area counts in both ranges.

Relative Band Powers

The relative band powers are calculated by dividing the absolute linear-scale power in one band over the sum of the absolute linear-scale powers in all bands. The linear-scale band power can be calculated from the log-scale band power thusly: linear-scale band power = 10^ (log-scale band power).

Therefore, the relative band powers can be calculated as percentages of linear-scale band powers in each band. For example:

alpha_relative = (10^alpha_absolute / (10^alpha_absolute + 10^beta_absolute + 10^delta_absolute + 10^gamma_absolute + 10^theta_absolute))

The resulting value is between 0 and 1. However, the value will never be 0 or 1.

These values are emitted at 10Hz.
MuseIO OSC Paths/muse/elements/delta_relative
/muse/elements/theta_relative
/muse/elements/alpha_relative
/muse/elements/beta_relative
/muse/elements/gamma_relative
UnitsBels (B)
Datatypefloats
Transmission frequency10 Hz
MuseIO OSC Data FormatFour channels (electrode sites) for each band power: ffff
Frequency Ranges*
NameFrequency Range
delta_relative1-4Hz
theta_relative4-8Hz
alpha_relative7.5-13Hz
beta_relative13-30Hz
gamma_relative30-44Hz
* The boundaries of the frequency ranges are inclusive of the end values. Where 2 ranges overlap, a frequency in the overlapping area counts in both ranges.

 

Band Power Session Scores

The band session score is computed by comparing the current value of a band power to its history. This current value is mapped to a score between 0 and 1 using a linear function that returns 0 if the current value is equal to or below the 10th percentile of the distribution of band powers, and returns 1 if it’s equal to or above the 90th percentile. Linear scoring between 0 and 1 is done for any value between these two percentiles.

Be advised that these scores are based on recent history and it will take a few seconds before having a stable distribution to score the power against. The estimated distribution is continuously updated as long as the headband is on the head. However, every time it’s updated, the newest values are weighted to have more importance than the historical values. This means that eventually old values will not be present anymore in the estimated distribution. The half-life of the estimated distribution at any given point is around 10 s.

The score will start being calculated as soon as the SDK has been started and the headband has established a good connection with the skin. Whenever the headset loses connection with the head (as determined by the DRL/REF contact quality) the estimated distributions are reset. This means that when the headband is removed, the session data from any previous user will be cleared.

MuseIO Paths/muse/elements/delta_session_score
/muse/elements/theta_session_score
/muse/elements/alpha_session_score
/muse/elements/beta_session_score
/muse/elements/gamma_session_score
UnitsUnitless
Datatypefloats
Transmission frequency10 Hz
MuseIO OSC Data FormatFour channels (electrode sites) for each band power: ffff
Frequency Ranges*
NameFrequency Range
Delta Session Score1-4Hz
Theta Session Score4-8Hz
Alpha Session Score7.5-13Hz
Beta Session Score13-30Hz
Gamma Session Score30-44Hz
* The boundaries of the frequency ranges are inclusive of the end values. Where 2 ranges overlap, a frequency in the overlapping area counts in both ranges.

Headband Status

These values can be used to determine if Muse is on the head properly and getting good contact. These values are emitted at 10Hz.

Headband On / Touching Forehead

A boolean value, 1 represents that Muse is on the head correctly.
MuseIO Path/muse/elements/touching_forehead
Datatypeint
Transmission frequency10Hz
 

Headband Status Indicator / Horseshoe

/muse/elements/horseshoe ffff
Status indicator for each channel (think of the Muse status indicator that looks like a horseshoe). 1 = good, 2 = ok, >=3 bad
MuseIO OSC Path/muse/elements/horseshoe
Datatype4 floats, 1 per channel
Transmission frequency10Hz
Range1 = Good
2 = OK
3 = Bad

Strict Headband Status Indicator

/muse/elements/is_good iiii
MuseIO OSC Path/muse/elements/is_good
Datatype4 ints, 1 per channel
Transmission frequency10Hz
Range0 = Bad
1 = Good
Strict data quality indicator for each channel, 0= bad, 1 = good.
 

Muscle Movement

Blinks

These are emitted at 10Hz.
/muse/elements/blink i
A boolean value, 1 represents a blink was detected.
 

Jaw Clenches

/muse/elements/jaw_clench i
A boolean value, 1 represents a jaw clench was detected.
MuseIO Path/muse/elements/jaw_clench
Datatypeint
Transmission Frequency10Hz

Experimental

WARNING: The paths in this section are highly experimental and can change with each release – they may even disappear entirely! 

These are high level values that can be used in applications where you don’t care about building your own algorithms and want to use something that will work out of the box.

Note that it will take approximately 1 minute with Muse on the head before these values will start producing something relevant. These values are emitted at 10Hz. Each channel is scored independently for alpha/gamma for mellow/concentration, and the average of the two channels is taken every time. If there is bad data, the previous score is used, but there is always an average of channels.

Concentration

WARNING: This data stream is highly experimental and can change with each release – it may even disappear entirely! 

/muse/elements/experimental/concentration f

This is based on gamma, but with additional processing to make it more reflective of the user’s experience.

This value goes up when you are focusing on something particular, thinking about something with intensity, concentrating on something, waiting in expectation for something to happen, trying to solve a problem, or working your intellectual mind.

Warning: If you tense up your muscles, it can confuse this measure in that this value may go up when you do that.

The concentration score is 1 when your attention is directed at something very particular and with high intensity. The dynamics of the score (i.e. the range and the variations) haven’t been tuned since it is an experimental release. The transitions between high concentration and low concentration are usually abrupt, so the score is currently more of a “yes/no” type score instead of a gradient from 0-1.  

MuseIO Path/muse/elements/experimental/concentration
Datatypefloat
Unitsunitless (score)
Transmission Frequency10Hz
Range0.0 - 1.0

Mellow

WARNING: This data stream is highly experimental and can change with each release – it may even disappear entirely! 

/muse/elements/experimental/mellow f

This is based on alpha, but with additional processing to make it more reflective of the user’s experience.

This value goes up when you are relaxing, letting go of judgement, letting go of trying to control things, letting go of attachment to outcome, not thinking about anything with a goal, or being without an active task.  You are not engaged in strenuous mental processing but still alert to your senses. A ready, waiting state.

MuseIO Path/muse/elements/experimental/mellow
Datatypefloat
Unitsunitless (score)
Transmission Frequency10Hz
Range0.0 - 1.0

Battery Data

Battery info is emitted every 10 seconds(0.1 Hz).
MuseIO OSC Path/muse/batt
Datatype4 ints
Data format[State of charge, Fuel gauge battery voltage, ADC battery voltage, Temperature]
Units
State of ChargeFuel Gauge Battery VoltageADC Battery VoltageTemperature
%/100 - hundredths of percentsmVmVC
Range
State of ChargeFuel Gauge Battery VoltageADC Battery VoltageTemperature
0 to 100003000 to 4200 mV3200 to 4200 mV-40 to +125C
Transmission frequency0.1Hz

DRL/Ref Data

The Driven-Right-Leg (DRL) circuit has been used for about 50 years to reduce common-mode noise in biopotential amplifiers in applications that range from stationary equipment powered from the wall to battery-powered ambulatory monitors, and for systems that use gelled, dry, textile, and capacitive electrodes. The Driven Right Leg circuit is used to eliminate common-mode noise by actively cancelling it. 

The reference signal is the one all other EEG values are derived from and is maintained around 1.65V. The DRL is driving the reference through the skin and adjusts the output based on noise fed back from the reference. If the headband is off the head the reference signal is not driven and the difference between the two values is significant, if on the head the difference is small.
MuseIO OSC Path/muse/drlref
Datatype2 floats
Data format[DRL voltage, REF voltage]
UnitsuV
Range0 to 3300000
Sampling frequencySame as EEG, depending on preset

Configuration

The config data is emitted from MuseIO as one big string, formatted like JSON (i.e. key-value pairs). This maps to the Muse protocol buffer file format. An example of the config message payload might look like this:

'{"drlref_conversion_factor": 3225.806396484375, "acc_sample_frequency_hz": 50, "battery_percent_remaining": 2, "eeg_downsample": 16, "notch_frequency_hz": 60, "eeg_locations": [45, 2, 4, 55], "eeg_units": 2, "eeg_output_frequency_hz": 220, "eeg_conversion_factor": 1.6449803113937378, "eeg_channel_layout": "TP9 FP1 FP2 TP10 ", "acc_data_enab led": true, "eeg_sample_frequency_hz": 3520, "mac_addr": "000666A06A4E", "preset": "14", "drlref_sample_frequency_hz": 10, "serial_number": "1160-XBYF-6A4E", "filters_enabled": true, "batt ery_millivolts": 3498, "acc_units": 2, "battery_data_enabled": true, "afe_gain": 1961.0, "compression_enabled": true, "eeg_channel_count": 4, "error_data_enabled": true, "acc_conversion_fa ctor": 3.9062561988830566, "eeg_samples_bitwidth": 10, "drlref_data_enabled": true}'

See below for a description of each field:

Global Configuration

mac_addr: string, e.g. "012345678912" The MAC address of the Muse in use.

serial_number: string, e.g. "1070-YRTD-2A4D" The serial number of the Muse in use.

preset: string, e.g. "14" The current preset.

Network protocol

compression_enabled: bool, e.g. 0 Set to 1 if compression is on. If compression is on, then quantization messages will be emitted.

EEG Data Configuration

filters_enabled: bool, e.g. 0 Set to 1 if the 50Hz or 60Hz filter is enabled.

notch_frequency_hz: int, e.g. 60 Which frequency is being filtered, either 50Hz or 60Hz.

eeg_sample_frequency_hz: int, e.g. 12000 The base sampling frequency before downsampling and filtering.

eeg_output_frequency_hz: int, e.g. 500 The speed of EEG data being sent from Muse in Hz.

eeg_channel_count: int, e.g. 4 How many channels are being sampled.

eeg_samples_bitwidth: int, e.g. 0 Number of bits per sample.

eeg_channel_layout: string, e.g. "TP9 FP1 FP2 TP10" Layout of the channels emitted, using the 10-20 system.

eeg_downsample: int, e.g. 24 Number of input samples per output sample. The eeg_output_frequency is equal to eeg_sample_frequency / eeg_downsample.

afe_gain: float, e.g. 1961 Analog front end gain.

DRLREF Configuration

drlref_data_enabled: bool Whether DRL and REF data is enabled or not.

drlref_conversion_factor: float

drlref_sample_frequency_hz: int Number of samples per second for DRL/REF data.

Accelerometer Configuration

acc_data_enabled: bool, e.g. 1 Set to 1 if accelerometer data is enabled.

acc_units: string, can be "raw" or "gforce" The units of the accelerometer data.

acc_sample_frequency_hz: int, e.g. 30 Number of acc samples emitted per second.

Battery Configuration

battery_data_enabled: bool, e.g. 1 Set to 1 if battery data is enabled. If enabled, it is emitted every 10 seconds.

battery_percent_remaining: int, e.g. 91 Percentage of battery remaining.

battery_millivolts: int, e.g. 4094 Number of millivolts remaining in the battery.

Error Data Configuration

error_data_enabled: bool, e.g. 1 Whether headset errors will be transmitted or not.

Version Data

/muse/version This is the version string for the Muse, emitted every 10 seconds, encoded in JSON format like so: '{"build_number": "56", "firmware_type": "Consumer", "hardware_version": "16.0.0", "firmware_headset_version": "", "protocol_version": "2", "firmware_boot loader_version": "7.6.0"}'

Annotation Data

/muse/annotation sssss "blink" "" "" "" "" Annotation paths are only used in MuseLab to mark the data with events. For example, when you add a marker from the Markers menu, it will get recorded as an annotation message.

  • Position 1: event data
  • Position 2: format, can be: “plain_string”, “json”, “osc”
  • Position 3: event type
  • Position 4: event id
  • Position 5: parent id
See the Muse protocol buffer file for more info. All values after the first one can be empty but you must put empty quotes for an empty field.