Brainwaves
The brainwaves API is what we always wished for when it came to inventing the future: an easy way to get lossless brainwaves. Sometimes we wanted to manipulate the raw data and other times we wanted to analyze the power in each frequency bin. With brainwaves, our goal is to enable new APIs and powerful programs to be built. We expect that someone working with the brainwaves API has a bit of experience working with EEG data or a strong desire to learn.
Sampling Rate
The sampling rate will vary depending on the model of your device.
- Crown ->
256Hz
- Notion 2 ->
250Hz
- Notion 1 ->
250Hz
A sampling rate of 250Hz
means the data contains 250
samples per second.
Metrics
There are four brainwaves metrics:
- raw
- rawUnfiltered
- psd
- powerByBand
Raw
The raw
brainwaves parameter emits events of 16 samples for Crown and 25 for Notion 1 and 2. We call these groups of samples Epochs.
const neurosity = new Neurosity();
neurosity.brainwaves("raw").subscribe((brainwaves) => {
console.log(brainwaves);
});
The code above will output new epochs of 16 samples approximately every 62.5ms (see the data
property). Here's an example of 1 event:
{
label: 'raw',
data: [
[
4.457080580994754, 4.851055413759571,
2.7564288713972513, -0.5027899221971044,
-2.738312652550817, -1.4222768509324195,
3.7224881424127774, 10.026623768677425,
13.387940036943913, 10.26958811063134,
0.40214439930276313, -10.90689891807639,
-16.32031531728357, -13.21110292437311,
-4.346339152926361, 5.098462672115731
],
[
1.5414324608328491, 1.352550875105505,
0.6428681224481866, 0.3647622839064659,
1.106405158893898, 3.33535030106603,
6.439447624257519, 8.453867322080404,
7.755719477492251, 3.8854840128526726,
-2.468418708869076, -8.666576946507902,
-11.279063910921169, -9.32163910159064,
-4.6549399985975555, 0.22830321396497988
],
[
6.2342484244030345, 5.845156697083605,
3.8819440822537112, 1.452431055127227,
-0.5878084105038387, -0.7746780077287738,
1.8154316196085094, 6.074662974618359,
9.322430831260775, 8.910160063433407,
3.5874046672323043, -4.554187036159066,
-10.5813322711113, -11.267696723897789,
-6.818338145262863, 0.6177864457464617
],
[
-0.03815349843983071, -0.3068494494059635,
-2.2075671327003255, -3.776991642244289,
-3.708252867923816, -1.2505125622236009,
3.2487010722502587, 7.931368090269462,
10.511652358411597, 9.297157466389192,
4.118487064147775, -2.970255165231891,
-8.603434324519576, -10.495401970387743,
-8.913968355428027, -5.576315727924461
],
[
0.4087987173450871, 1.9781686568610883,
2.4009012312957907, 2.3444623435812657,
2.017191526524595, 2.021880260660721,
2.982232584662937, 4.815498699074363,
6.7093290202119835, 7.201157697368587,
5.116090777276677, 0.6675802498302112,
-4.274751517565271, -7.425134286013973,
-7.838523284654038, -5.779233789541195
],
[
5.2762700288652935, 6.831919893235682,
6.468141714172544, 5.147606136919876,
4.117592132996127, 4.788874365858218,
7.116782027901927, 9.33554991116211,
9.233167024756574, 5.130966403760715,
-2.8162586562506586, -11.22160733448037,
-15.538132012307846, -13.939535958562475,
-7.83032193319038, -0.5139467086717411
],
[
-1.0706877843314648, 1.6368537502872518,
2.022946637839514, 0.940183871324582,
-0.2837858448921892, 0.3170369574339986,
3.778225479624427, 8.805770181583913,
12.446309024446833, 11.648691354684154,
5.113617281379798, -4.345975093596486,
-11.05811376487729, -11.719256256733335,
-7.336025188705039, -1.276174494743728
],
[
7.286685329938873, 8.201842402616839,
5.517128178717949, 1.2864058791627557,
-1.5101995538838966, -0.19819079250913285,
5.195437241439434, 11.512563735679437,
14.388370410845482, 10.711863367882668,
0.8428177428317678, -10.126402143316568,
-15.75585412249734, -13.887360795976967,
-6.836657125920971, 1.1706118773123455
]
],
info: {
channelNames: [
'CP3', 'C3',
'F5', 'PO3',
'PO4', 'F6',
'C4', 'CP4'
],
notchFrequency: '60Hz',
samplingRate: 256,
startTime: 1628194299499
}
}
Epochs are pre-filtered on the device's Operating System to give you the cleanest data possible with maximum performance. These filters include:
- Notch of
50Hz
or60Hz
and a bandwidth of1
. - Bandpass with cutoff between
2Hz
and45Hz
.
The order of these filters is set to 2
, and the characteristic used is butterworth
.
To apply your own filters, you can use the rawUnfiltered
brainwaves parameter (see next section) and use the Neurosity Pipes library for fine-grained customization.
Unsubscribe from brainwaves
To unsubscribe from brainwaves and stop the emission of data events, you can do the following:
const subscription = neurosity.brainwaves("raw").subscribe((brainwaves) => {
console.log(brainwaves);
});
// later...
subscription.unsubscribe();
Or...
import { timer } from "rxjs";
import { takeUntil } from "rxjs/operators";
mind
.brainwaves("raw")
.pipe(
takeUntil(
timer(5000) // in milliseconds
)
)
.subscribe((brainwaves) => {
console.log(brainwaves);
});
This last example will emit data for 5 seconds.
Raw Unfiltered
The unfiltered raw data follows the same shape as the raw
data option, just without signal filters applied. This data comes directly from the analog to digital converter, and does not include any processing. We only recommend using the unfiltered data for advanced scenarios.
Note that unfiltered raw data will include environmental noise in the signal, as well as DC drift, which is expected when working with EEG. To filter out the noise, you can use the raw
option described earlier on this page, or you can apply your own custom filters (like notch and bass pass) on the client side by using the Neurosity Pipes library.
const neurosity = new Neurosity();
neurosity.brainwaves("rawUnfiltered").subscribe((brainwaves) => {
console.log(brainwaves);
});
The code above will output new epochs of 16 samples approximately every 62.5ms (see the data
property).. Here's an example of 1 event:
{
label: 'rawUnfiltered',
data: [
[
1385.227003, 861.056247,
-1835.167617, -1321.189256,
999.860579, 1414.597195,
-1246.623837, -1840.934367,
406.757043, 1596.652153,
-476.360375, -2080.790935,
-222.556318, 1579.754234,
355.660956, -2065.368232
],
[
774.21972, 286.25879,
-951.714922, -427.812387,
650.368705, 611.744891,
-746.391799, -732.3102,
398.039863, 770.732848,
-412.99318, -923.417614,
122.174635, 823.840593,
7.040799, -1004.286225
],
[
797.085555, 234.693316,
-1099.4376, -499.427375,
669.613557, 598.870286,
-859.916308, -839.665628,
420.369256, 765.63665,
-515.185355, -1057.66219,
114.195062, 849.388636,
-42.177742, -1155.495775
],
[
192.783795, -156.909245,
-538.654687, -173.673053,
210.084045, 13.008715,
-496.208724, -314.354932,
130.355373, 111.244632,
-422.783244, -437.267174,
43.116515, 179.573914,
-267.952711, -512.234925
],
[
228.256013, -147.253292,
-549.249414, -160.731394,
234.961536, 16.093256,
-506.803451, -304.162537,
164.553542, 135.31746,
-437.870671, -440.217605,
71.212657, 207.267725,
-272.04308, -523.634314
],
[
654.66024, 123.64985,
-906.720861, -336.013773,
578.217274, 426.337171,
-751.487996, -629.246306,
371.821267, 573.791629,
-480.853076, -827.26041,
143.028812, 673.435705,
-121.839358, -934.682893
],
[
764.362601, 258.095592,
-996.172541, -464.826875,
639.975144, 603.094766,
-765.368429, -772.208063,
384.829982, 745.453025,
-437.46834, -963.851919,
93.139719, 807.747337,
-22.865834, -1044.519364
],
[
1454.293893, 821.493659,
-1599.334362, -991.813951,
1131.892333, 1364.506936,
-1098.431772, -1494.459978,
603.228876, 1578.815461,
-421.71036, -1753.024956,
21.860006, 1608.252708,
343.859235, -1787.089015
]
],
info: {
channelNames: [
'CP3', 'C3',
'F5', 'PO3',
'PO4', 'F6',
'C4', 'CP4'
],
samplingRate: 256,
startTime: 1628194299499
}
}
Power Spectral Density (PSD)
const neurosity = new Neurosity();
neurosity.brainwaves("psd").subscribe((brainwaves) => {
console.log(brainwaves);
});
The code above will output new epochs 4 times a second. Every frequency label (e.g. alpha) contains the computed FFT (Fast Fourier transform) value per channel (see the psd
property), as well as the frequency ranges (see the freqs
property).
Here's an example of 1 event:
{
label: 'psd',
freqs: [
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,
24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46,
48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70,
72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94,
96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
120, 122, 124, 126
],
info: {
notchFrequency: '60Hz',
samplingRate: 256,
startTime: 1628197298732
},
psd: [
[
98.63572869924877, 278.0499119981597, 396.9075453246308,
330.93307599602673, 154.4437300666471, 127.381718447909,
156.28589064508202, 90.27952532968459, 74.02596881179568,
102.68745491461037, 77.40464372151173, 65.97947493071318,
93.61333998578448, 70.03755439407374, 47.965913961348285,
72.11457749610696, 60.14793608854482, 36.43407809513316,
52.5321191045999, 45.400500672083176, 24.168757651016627,
37.1839936941784, 35.105296424441036, 14.991272333196237,
17.013079679743214, 22.931615422127962, 9.64319909169338,
6.95610789706202, 10.48806813349181, 8.77101666889275,
8.08687117576467, 7.88454615426007, 7.00857990702008,
9.129752553805993, 7.500414008219254, 6.4966183674128635,
7.833399187762861, 7.283708613586358, 5.616493707372124,
7.336663052350952, 6.859592851990316, 6.153804860755752,
6.618696201331677, 6.837180878389385, 5.7838083130648945,
6.562155335152424, 6.093398492507891, 6.073406841367065,
5.9593899491763205, 6.14611107916922, 5.674535238756583,
6.0774035077156645, 5.656938723201682, 5.892346415487732,
5.61605742554047, 5.842031463718972, 5.514410378848478,
5.803658958523979, 5.47172273287992, 5.745739449800702,
5.452574435173335, 5.724439426371041, 5.4273919360609035,
5.707772456903569
],
[
705.0449351206108, 1355.4773207863375, 1795.4768676020658,
1480.8269991044856, 879.7073135412625, 734.4677613113015,
691.6145778964477, 482.9726329188916, 463.9458627254311,
448.9185196251005, 325.3989179173811, 356.7357077059943,
366.94089924861487, 288.75232488327777, 304.2605284381872,
301.8930577524112, 237.4042509842181, 248.189270828571,
244.01379638689255, 177.6237336667693, 172.43627544841166,
176.69895192953885, 125.52722189861495, 105.15448954029884,
106.56146701054848, 63.477588704077554, 33.251603187541896,
42.84498288204394, 23.928294234593277, 9.767390485089537,
15.03794181419898, 13.965161093202841, 20.844294981525614,
12.007423569211078, 11.126393885153014, 20.104729878667776,
12.319226156469027, 10.486815016962693, 17.143209506256614,
11.132954923524995, 10.62728760663002, 14.463591856614492,
10.925935011739528, 10.576245202399233, 12.869498809209984,
10.551373735436435, 10.90154409382562, 11.496161902596342,
10.59771747532043, 10.626533456022605, 10.982565808529692,
10.292226858572462, 10.587506870484761, 10.420838952336604,
10.33846013622055, 10.228524593265222, 10.333151489515492,
10.081149399888313, 10.23400481786508, 10.046416371678554,
10.14064797386651, 9.979626942208188, 10.115418833026341,
9.962197147976129
],
[
929.0377610383296, 1793.6811181430987, 2377.6119679334947,
1958.9102655269323, 1162.3055283149445, 979.7382233236812,
921.065883147485, 640.2289218688652, 619.3532710184182,
597.9752360209405, 433.84218492741303, 480.63827859906377,
494.8759497888118, 388.5592867189369, 408.72806358233913,
403.8696475504568, 318.0820897599802, 335.6971387951459,
330.1749076377176, 240.2816149573954, 234.1828700249589,
238.8172342465352, 168.40453177012395, 141.41297208524767,
143.3763643586936, 84.85781325822384, 44.693260335642535,
57.99822015732011, 32.12541610045182, 13.475265334606835,
20.599681672533375, 19.01837044906831, 28.246044041267428,
16.189180127175323, 15.41587209212851, 27.05517471975363,
16.903913745426895, 14.33546383874818, 23.026090510272617,
14.87036823280212, 14.6068129622348, 19.471383549994453,
14.96633838574153, 14.387933483886725, 17.466586501671532,
14.355984995364704, 14.919336874633427, 15.536030663642576,
14.543171342633388, 14.399423945911408, 15.00275665739408,
13.982397994287624, 14.474361692225106, 14.126311107434065,
14.160828645624179, 13.86227555141294, 14.139642435285486,
13.674442534649062, 14.000882290360456, 13.623523705584073,
13.881719450096554, 13.533315732597867, 13.84382520692153,
13.508775392377734
],
[
461.1411944745596, 865.879891899699, 1150.3297939965412,
967.6717977233337, 599.5067484775997, 487.7449557189379,
449.7148527252277, 324.75340665195546, 307.3960653823736,
289.99356448521917, 218.9307327550319, 241.757776766985,
249.28709256762335, 206.95217758165205, 213.8552238566172,
208.04287443336904, 172.16085191285578, 177.8042520513104,
170.76433578042244, 131.2290615556113, 127.75140879293434,
125.8563352501824, 94.44550500099892, 81.32600662751962,
76.33377477822643, 47.53219019300205, 29.403234515228505,
29.734512582314988, 14.48430634759893, 4.338569856695335,
7.956256668786119, 7.925904164095972, 12.763456529014546,
5.823156703304557, 7.213304914646235, 12.53665043042392,
6.064277734596193, 6.0142267398677225, 10.591216540020291,
5.491335175417487, 5.995538415704912, 8.41366666249266,
5.354337464315892, 5.684078918046329, 7.289586947844527,
5.258040775750918, 5.927892633808341, 6.209024439918837,
5.5308778688068525, 5.658218846438647, 5.937393602233365,
5.337787715362042, 5.723456582324143, 5.491309810378187,
5.517788579034077, 5.3995359451843115, 5.544753793342432,
5.291402564159946, 5.499716204904763, 5.281561955171903,
5.4342620388212115, 5.243854533655554, 5.426831995465968,
5.23668469315059
],
[
485.28953220351815, 913.8215446531855, 1212.6893063853145,
1017.6653954348992, 629.0590135927589, 513.8401411331691,
473.94607162953474, 340.7794194629709, 323.4068209463424,
304.6140613386581, 227.9530765749002, 253.44275369319936,
261.96382482250846, 215.95821471824453, 223.2060790303756,
217.5887331092368, 180.05264499052626, 186.6722683242584,
178.86415942933493, 135.75616983861607, 132.7145908145038,
131.7205674261096, 98.13621951582651, 84.22587059556682,
79.69348482329639, 49.27415323250583, 29.885948066276374,
31.018207012950032, 15.464201551787149, 4.696597650070098,
8.680077668220271, 8.409519490488169, 13.587393841532371,
6.264695355862866, 7.572139679407593, 13.17605643990251,
6.652754348269858, 6.3465028991975325, 11.306345734652368,
5.926439990819285, 6.470051702062516, 8.904949649675096,
5.90150761172456, 6.060485555618185, 7.854198979433359,
5.663406547398727, 6.4306283909466435, 6.623721018560318,
6.041438452881903, 6.0442294631002795, 6.444444318919457,
5.721040377425073, 6.213246144964029, 5.8753004744243755,
6.002696003640614, 5.774903831465746, 6.026353504659674,
5.663944879598529, 5.975725903093066, 5.652394044025673,
5.907643067149823, 5.612177778683849, 5.898257253854689,
5.604260960707902
],
[
703.9620591951088, 1348.1617601998341, 1787.817378338989,
1480.9682977349662, 887.8732586924484, 741.7489045127593,
696.4862482257432, 486.69267953812624, 464.30488178918847,
448.10745320129496, 329.6131727268781, 364.1234842222161,
375.17667115955084, 296.30580382389024, 307.6916385785675,
303.4585158601969, 241.4840430193035, 253.3373457325428,
248.14875370587004, 181.8456760420915, 176.16078095306457,
178.58969714768043, 126.8938114163353, 106.7131960446341,
106.86715498126117, 63.565099293832944, 33.94124074989405,
42.78261882478681, 23.418093057211088, 9.598376452708248,
14.8564635663729, 13.73158527388318, 20.632309203759725,
11.571312623082235, 11.16199944105178, 19.71697966916169,
12.151289348370563, 10.27332116826051, 16.93453042721219,
10.734196078665759, 10.578983816474802, 14.17031151713728,
10.741999390916682, 10.370828224990875, 12.669038407738478,
10.290437631963869, 10.794986602960588, 11.204752776686476,
10.481500894235385, 10.373479646590457, 10.845762801813153,
10.04623630410688, 10.466118545780976, 10.16324823810254,
10.225788013632457, 9.975974411529377, 10.21577779934349,
9.834755780463283, 10.117741157508208, 9.799067226573825,
10.029038431063377, 9.733625015451048, 10.002552468346979,
9.71630020598175
],
[
753.3573854351718, 1451.3463711535637, 1925.4394750722938,
1592.2479396735228, 950.1320711729846, 793.4163539564408,
744.990261771651, 519.4611344925438, 498.6282329256233,
480.4651411728872, 349.9224396629356, 388.08464608248545,
400.41433150212987, 314.28699618071386, 328.3871848882801,
325.21671199729667, 257.08898576447365, 270.0756790958063,
265.56055695000117, 193.58422699465976, 187.3975181698473,
190.5723885919431, 134.7850068920377, 113.55417235960783,
114.65352872167782, 67.97249319078067, 36.07066166066659,
46.193455592634194, 25.446519462818365, 10.645647869461468,
16.33292205396577, 15.082694752225358, 22.479081487850554,
12.660457753439347, 12.331655605615103, 21.469122245638992,
13.259611882976637, 11.366093905761021, 18.4614508154199,
11.778790555694387, 11.710458297806564, 15.485077358432786,
11.805213571500564, 11.446226210170733, 13.887884653568616,
11.334007371207884, 11.881804314077982, 12.30654501069072,
11.528873716721828, 11.419099102496702, 11.910897138255397,
11.059631088502826, 11.505557872713792, 11.178885987141047,
11.242816922347224, 10.97697117415906, 11.227884136208706,
10.822693801769324, 11.121177549665633, 10.782078947654583,
11.024368739435461, 10.711151846144949, 10.995151378799578,
10.691866595209362
],
[
367.4136193009799, 826.7329948628463, 1118.3539023221265,
890.162220791093, 436.1682590608995, 391.4382314784865,
417.04217210936963, 251.56740893464422, 238.5284921292077,
267.6000138141995, 168.617128049186, 165.98870799455165,
200.56943140232212, 129.37112302840023, 126.00839013852573,
162.39587433692205, 109.20332945126022, 87.00867663058928,
117.95711115144483, 83.29961985396704, 58.57022651921219,
86.68284556964056, 63.23057486573713, 22.615043247176825,
45.79353231282386, 39.94573246684187, 6.411920387449734,
21.964845928081306, 21.959370088243116, 16.277025835788837,
16.547064843486048, 15.715335138181468, 16.607457789253704,
17.537478155658583, 13.336615276197591, 15.835823046176726,
15.461292461652397, 13.730332854951738, 13.27865408978899,
14.709605078820157, 12.9045807988706, 13.692853045756497,
13.258453124525246, 13.287331440282053, 12.481768554519784,
13.223425784019863, 12.187280042833416, 12.738723198131671,
12.048047848217715, 12.49122466572343, 11.744286244430379,
12.342663893673903, 11.552471648965968, 12.117055516659004,
11.432033986591367, 11.965037193629023, 11.288502743059457,
11.863912386218576, 11.190384199321217, 11.771734261131785,
11.131137815008097, 11.71660417394918, 11.08761147894627,
11.686948260719255
]
]
}
Please note this data is pre-filtered using the same filters described under the raw
data parameter: notch and bandpass. Therefore PSD values below 2Hz
and above 45Hz
will be attenuated.
Power By Band
const neurosity = new Neurosity();
neurosity.brainwaves("powerByBand").subscribe((brainwaves) => {
console.log(brainwaves);
});
The code above will output new epochs 4 times a second. Every frequency label (e.g. beta) contains an average power value per channel. The band ranges are defined as:
{
delta: [0.1, 4], // NOTE: Bandpass attenuates signal below 2 Hz
theta: [4, 7.5],
alpha: [7.5, 12.5],
beta: [12.5, 30],
gamma: [30, 100] // NOTE: Bandpass attenuates signal above 45 Hz
}
Here's an example of 1 event:
{
label: 'powerByBand',
data: {
alpha: [
0.4326838933650053,
0.7011913998347046,
1.3717684682104212,
0.4043711439234614,
0.4276277910286375,
0.7343967679911133,
0.4643529443786634,
0.5012185195340365
],
beta: [
1.0473270376446968,
0.6565360935142369,
0.9905849734272257,
0.4167252084581245,
0.5812834985846604,
0.9092642713573444,
0.9963075404421067,
1.0495665446734443
],
delta: [
0.46131690566460004,
1.0030278320362798,
0.8563781797682917,
0.2911634678359473,
0.5829804845703581,
0.6714666592936025,
0.37730719195446316,
1.0851178080710937
],
gamma: [
0.22648773160183822,
0.2171827127990081,
0.2626969784220435,
0.16349594919353772,
0.17327387900192714,
0.18990085940799623,
0.22908540295491436,
0.2537584109981627
],
theta: [
0.6434504807739541,
0.936240328507981,
0.8679595766147628,
0.23662065697316603,
0.6048174207817718,
0.816112075629094,
0.3367745804938397,
1.1043745310136739
]
}
}
Please note this data is pre-filtered using the same filters described under the raw
brainwaves parameter: notch and bandpass. Therefore, PowerByBand alpha
usable range is 2Hz
to 4Hz
, and the gamma
functional range is 30Hz
to 45Hz
.