Access alpha_relative value from Muse Headband



I’ve purchased the Muse 2016 and am using Muse Monitor to feed OSC data to my MacBook.

However, it looks like I’m missing many of the values including the relative values (ie alpha_relative), and Band Power Session Scores, ie delta_session_score

Is this a limitation with Muse Monitor? If so I’ll need to get a Muse 2014 version.


Can confirm that these are the only signals I’m receiving through OSC via Muse Monitor. Is this because I’m not using MuseIO and am using Muse Monitor, or is the headband just not sending the signals?


Muse Monitor only sends absolute values, as relative values are easily calculated from the absolute values.
alpha_relative = (10^alpha_absolute / (10^alpha_absolute + 10^beta_absolute + 10^delta_absolute + 10^gamma_absolute + 10^theta_absolute))


Okay awesome, and what about Band Power Session Scores?


That’s just an average, which again is easily calculated.

You can read about all the available data on the developer site under available data.
The calculated entries all include descriptions of how they are calculated.


Okay good point, thanks for pointing that out.

I also noticed I’m getting /gyro data but don’t see docs for that in available developer docs. I wonder if there’s somewhere I can read about the /gyro data that’s coming through.


It in the developer docs here: Gyro Enum Reference
You might also want to check out the updated Accelerometer docs: Accelerometer Enum Reference


Do you have the equation handy for calculating the 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.

That is a bit foggy of an explanation to me.

Likewise I don’t see Raw FFT values coming through OSC, is there a way to access this data? Though I’m not exactly sure what I’d use it for.

Also, I’ve noticed that absolute values can come back as a negative, (see attached photo).

What’s going on when it comes back as a negative value? It says this:

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.

… in the documentation but I don’t really understand that (I don’t really work in the field of mathematics that often). How can I have the absolute values displayed in dB the same way it is done with Muse Monitor?


In the Band power scores “linear function” just means mapping a values from within a range of one min/max to a another min/max. So for example, to address your question about dB values. Muse Monitor displays absolute values in dB in a 0 to 100 range, but the actual (normal) range is -1 to +1. I display it more like a percentage, because that’s what most people understand. So examples of this would be -1->0, 0->50, +1>100 and all the values in between.

FFT calculations are a little complex, but most processing software has the calculation built in already. If you want to do it yourself, look at the code examples here.


Thanks a lot for your replies they’re helping a lot.

In regards to the way Muse Monitor displays the data in dB, is that scientifically valid to list the dB as a range from 0-100? It just seems kind of arbitrary to do in that way but then assert that ‘these are in dBs’, it kind of seems like a made up unit (though maybe I’m wrong and it’s actually valid data).

And in regards the FFT data, I’m not sure I want to do anything with it (still getting a feel for all the units/measurements/etc surrounding EEG), but I just want to make sure that I can use it if I want to, or if I should just go ahead and ask for a Muse 2014 headband so that I can make use of Muse-IO. Thanks again!


dB just refers to any logarithmic value, I change the range for legibility, but dB is still the correct descriptive unit.

Note that the 0-100 range is only on the visualisation. All the streaming and recorded values are in the original ~{-1:+1} range.

One of the main reasons I don’t include FFT values in the stream is because there are an almost infinite number of ways to calculate them and they are all valid. So I leave it up to the user to calculated the FFT from the raw data, depending on their needs.

FFT is a frequency analysis of a section of data over time. That time part is very important, because depending on how large your time window is, depends on how granular your results are, but also the larger the time window, the less final results you will have. For example, if you use a 256 sample window on a 1 minute 256Hz recording of, you will get 60 FFT arrays (one for each second), but split into some very large frequency blocks. But if you use a 2048 window on the same data set, you would only get 7 FFT arrays, but your data will be much finer grained frequency blocks, which you might require if say you need to differentiate between 1Hz and 2Hz.

Not to mention whether or not you want a hamming window, or filters applied.


Thanks for your answer. And what does the -1 to 1 range of the absolute values represent? That’s kind of my last remaining question. If I add up all the absolute values I usually range between 1-5 as a value, but sometimes I’m in the negatives, what’s going on in that case? And I feel like my Delta Waves are far overrepresented compared to my beta when I would expect that I’m in an attentive/problem solving state of mind, is that something normal? Thanks for your answers I think I’m wrapping my hands around where I want to go with this tech.


The absolute values are the power spectral density, i.e. a representation of how much activity there is in that band power range. It’s a log scale, so negative values are expected.

If Delta appears to be too high, then you might need a higher FFT window to pull out the lower hz frequency bins accurately. Delta will be the least accurate calculation as it’s so close to the zero bin.


Awesome, thanks. So what does it mean if the value is negative? Is it just arbitrary or does crossing into negative values have extra information encoded into it?

And if it’s a logarithmic scale does that mean that there’s any exponential stepups needed to be done to cross from -1 to 0 and then 0 to 1? I’m trying to come up with the same algorithm that Muse Monitor uses to convert the values to be in the range of 0-100 instead of -1 to 1. Thanks again, I think I’m very close to being able to start the project I’d like to do.


There’s no specific special meaning to the negative value. It’s just like any other value that can go negative, like temperature.

I don’t change the logarithmic nature of the value for display, I just change the range:

display_value = (original_value + 1) * 50

Nothing complex going on, just a linear scaling range shift from {-1:+1} to {0:100}


Okay thanks I think that’s enough to get started on.

One thing is, if I wanted set up my own custom FFT functions, how would I do that with the data provided?

As you can see, the data doesn’t really seem to be differentiated, because I was led to believe that this was the input from each of the sensors? How can I convert these raw values into things such as alpha_absolute values?

And I noticed that at times I can get an absolute value that is larger than one, ie: 'delta (1-4Hz): 1.1079691648483276'

What’s going on there? Kind of throws me off since I thought the only values were able to be between -1 and 1. :thinking: Thanks and in the meantime I can finally get coding on something fun, your help has been instrumental!


The raw values are individual sensor values in microvolts.

You don’t need to compute FFTs to get absolute values. That’s already been done for you. You only need to do FFTs if you want to work out PSD for a specific frequency.

The ~{-1:+1} range is just the usual mean. Values can go above and below this and that’s fine.


Hello Enigma644,
Concerning waves, -1 is the same amplitude as 1 except that it has a negative phase (just like sound waves), so if I want to check when for example delta waves do peak I cannont scale -1 - 1 to 0 - 100, that would be an error right, since -1 = +1 in amplitude (or in a 0 to 100 scale 40 would equal 60)! So how should I calculate the scale -1 0 1 in order to be able to compare peak amplitude of certains waves (whatever the phase is) example delta, with other type of wave peak amplitudes example beta?


also, if values go beyond ranges calculated, we cannot reliably use these calculations precisely


-1 to +1 is not the range, it is the usual mean. There is no range.

Peak Amplitude would be relative to the data set.