├── LICENSE ├── README ├── build.xml ├── dist └── mindstream.jar ├── lib ├── json.jar └── log4j-1.2.14.jar ├── mindstream.bat ├── mindstream.sh ├── properties.xml ├── src ├── com │ └── ericblue │ │ └── mindstream │ │ ├── client │ │ └── ThinkGearSocketClient.java │ │ ├── preferences │ │ └── PreferenceManager.java │ │ ├── systemtray │ │ ├── MindStreamSystemTray.java │ │ └── images │ │ │ └── logo.jpg │ │ └── window │ │ ├── DebugWindow.java │ │ └── PreferencesWindow.java └── log4j.properties └── test ├── eegdata.txt ├── eegdata_mobile.txt ├── get_eeg_data.sh ├── mindstream_sample.csv ├── print_eeg_stream.sh ├── show_json_output.pl ├── test_socket_server.pl └── test_socket_server.sh /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | # Author: Eric Blue 2 | # Url: http://eric-blue.com/ 3 | # Email: ericblue76 (at) gmail (dot) com 4 | # Project: Neurosky Mindstream - System tray app to stream EEG data 5 | 6 | [Overview] 7 | 8 | Mindstream is a simple java-based system tray app that streams EEG brainwave data from NeuroSky 9 | devices (MindWave,MindSet). The app interfaces to NeuroSky devices using the ThinkGear Socket 10 | protocol (connecting on localhost:13854), retrieves data in JSON Format, and can "stream" to 11 | other applications. Mindstream can save the following data: 12 | 13 | * Focus levels 14 | - attention 15 | - meditation 16 | * EEG values 17 | - delta 18 | - theta 19 | - lowAlpha 20 | - highAlpha 21 | - lowBeta 22 | - highBeta 23 | - lowGamma 24 | - highGamma 25 | * Headset signal strength 26 | - poorSignalLevel 27 | 28 | 29 | Streaming functions will include: 30 | 31 | * [Currently Implemented] Saving EEG data to a CSV File 32 | * [TBD] Listen on a socket and replay data from localhost:13854 33 | - allowing other applications to connect 34 | * [TBD] Broadcast to a URL - supporting POST/M-POST and streaming real-time data 35 | - future use? Processing Javascript version of the Neurosky BrainWave Visualizer 36 | http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/ 37 | 38 | 39 | [Installation] 40 | 41 | Currently there is no installer. You can download the source and/or binary distribution: 42 | the primary executable (mindstream.jar) is located in the dist directory. There are 43 | helper scripts to execute loading the app (mindstream.sh for Linux/Mac and mindstream.bat 44 | for Windows). Both scripts simply execute ( java -Djava.ext.dirs=lib -jar dist/mindstream.jar). 45 | 46 | 47 | [Current Status] 48 | 49 | - Alpha state 50 | - Streaming only supports writing to a CSV file 51 | - Tested on Linux and Windows with Java 1.6 and the MindWave headset 52 | 53 | [Change Log] 54 | 55 | - 07/24/11 - Initial release 56 | - 12/04/11 - Fixed issue reported with saving CSV file (Thanks to Pei Yin) and added some exception handling messages 57 | - 07/07/12 - Added bug fixes from jomack and added additional error checking for issues on other platforms (e.g. Win7) 58 | - 01/26/14 - Tested with sample output from MindWave mobile 59 | -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | 32 | 33 | 34 |
35 |
36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 | -------------------------------------------------------------------------------- /dist/mindstream.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericblue/MindStream/a0261c06b4bf838be69b0d2369344918db0f3ca5/dist/mindstream.jar -------------------------------------------------------------------------------- /lib/json.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericblue/MindStream/a0261c06b4bf838be69b0d2369344918db0f3ca5/lib/json.jar -------------------------------------------------------------------------------- /lib/log4j-1.2.14.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericblue/MindStream/a0261c06b4bf838be69b0d2369344918db0f3ca5/lib/log4j-1.2.14.jar -------------------------------------------------------------------------------- /mindstream.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | rem # MindStream by Eric Blue (http://eric-blue.com) 3 | cls 4 | title Mindstream 5 | 6 | set JAR=dist\mindstream.jar 7 | 8 | 9 | if "%JAVA_HOME%" == "" ( 10 | echo Error: 11 | echo JAVA_HOME environment variable is NOT set! 12 | echo . 13 | echo Use My Computer/Properties/Advanced/Environment variables 14 | echo to set it e.g to C:\Program Files\Java\jre6 Then don't forget to restart 15 | echo the shell! 16 | echo . 17 | echo Fallback to PATH... 18 | java -Djava.ext.dirs=lib -jar %JAR% %1 %2 19 | ) else ( 20 | echo Java home set to: %JAVA_HOME% 21 | rem TODO Fix classpath load issue, rather than load java.ext.dirs 22 | %JAVA_HOME%\bin\java -Djava.ext.dirs=lib -jar %JAR% %1 %2 23 | ) 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /mindstream.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # MindStream by Eric Blue (http://eric-blue.com) 3 | 4 | echo "Starting MindStream..." 5 | 6 | export SCRIPT_HOME=`pwd` 7 | export CLASSPATH="$SCRIPT_HOME/lib/*.jar" 8 | export JAR="$SCRIPT_HOME/dist/mindstream.jar" 9 | 10 | if [ -z "$JAVA_HOME" ] 11 | then 12 | echo "To start MindSteam, JAVA_HOME environment property must be set!" 13 | java -Djava.ext.dirs=lib -jar $JAR $1 $2 >/tmp/mindstream.log & 14 | else 15 | echo "Using JAVA_HOME: $JAVA_HOME" 16 | # TODO Fix classpath load issue, rather than load java.ext.dirs 17 | "$JAVA_HOME/bin/java" -cp "$CLASSPATH" -jar $JAR $1 $2 18 | #"$JAVA_HOME/bin/java" -Djava.ext.dirs=lib -jar $JAR $1 $2 >/tmp/mindstream.log & 19 | fi 20 | 21 | 22 | -------------------------------------------------------------------------------- /properties.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | UTC 5 | 6 | true 7 | 8 | 9 | MindStream 10 | 1.01 11 | 12 | 13 | mindstream 14 | 15 | 16 | Eric Blue 17 | http://eric-blue.com 18 | 19 | 20 | 21 | 22 | . 23 | build 24 | dist 25 | lib 26 | 27 | 28 | src 29 | 30 | src 31 | .java 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/com/ericblue/mindstream/client/ThinkGearSocketClient.java: -------------------------------------------------------------------------------- 1 | package com.ericblue.mindstream.client; 2 | 3 | import org.apache.log4j.Logger; 4 | 5 | import java.io.IOException; 6 | import java.net.InetSocketAddress; 7 | import java.nio.CharBuffer; 8 | import java.nio.channels.SocketChannel; 9 | import java.nio.charset.Charset; 10 | import java.nio.charset.CharsetEncoder; 11 | import java.util.Scanner; 12 | 13 | /** 14 | *

Title: ThinkGearSocketClient


15 | *

Description: NeuroSky ThinkGear socket client - supports JSON output


16 | * @author Eric Blue
17 | * 18 | * $Date: 2012-07-08 03:31:28 $ 19 | * $Author: ericblue76 $ 20 | * $Revision: 1.4 $ 21 | * 22 | */ 23 | 24 | 25 | public class ThinkGearSocketClient { 26 | /** 27 | * Logger for this class 28 | */ 29 | private static final Logger logger = Logger.getLogger(ThinkGearSocketClient.class); 30 | 31 | public static final String DEFAULT_HOST = "127.0.0.1"; 32 | public static final int DEFAULT_PORT = 13854; 33 | 34 | private String host; 35 | private int port; 36 | private boolean connected; 37 | SocketChannel channel; 38 | Scanner in; 39 | 40 | /** 41 | * Default constructor using Thinkgear default host/port 42 | */ 43 | public ThinkGearSocketClient() { 44 | 45 | this.host = DEFAULT_HOST; 46 | this.port = DEFAULT_PORT; 47 | this.connected = false; 48 | 49 | } 50 | 51 | /** 52 | * Constructor 53 | * 54 | * @param host 55 | * @param port 56 | */ 57 | public ThinkGearSocketClient(String host, int port) { 58 | 59 | this.host = host; 60 | this.port = port; 61 | this.connected = false; 62 | 63 | } 64 | 65 | public String getHost() { 66 | return host; 67 | } 68 | 69 | public void setHost(String host) { 70 | this.host = host; 71 | } 72 | 73 | public int getPort() { 74 | return port; 75 | } 76 | 77 | public void setPort(int port) { 78 | this.port = port; 79 | } 80 | 81 | public boolean isConnected() { 82 | return this.connected; 83 | } 84 | 85 | public void connect() throws IOException { 86 | 87 | if (!this.connected) { 88 | logger.debug("connect() - Starting new connection..."); 89 | this.channel = SocketChannel.open(new InetSocketAddress(this.host, this.port)); 90 | 91 | CharsetEncoder enc = Charset.forName("US-ASCII").newEncoder(); 92 | String jsonCommand = "{\"enableRawOutput\": false, \"format\": \"Json\"}\n"; 93 | this.channel.write(enc.encode(CharBuffer.wrap(jsonCommand))); 94 | 95 | this.in = new Scanner(channel); 96 | this.connected = true; 97 | } else { 98 | logger.debug("connect() - Already connected..."); 99 | } 100 | 101 | } 102 | 103 | public boolean isDataAvailable() { 104 | if (this.connected) { 105 | return this.in.hasNextLine(); 106 | } else { 107 | return false; 108 | } 109 | } 110 | 111 | public String getData() { 112 | return this.in.nextLine(); 113 | } 114 | 115 | public void close() throws IOException { 116 | 117 | if (this.connected) { 118 | logger.debug("close() - Closing connection..."); 119 | this.in.close(); 120 | this.channel.close(); 121 | this.connected = false; 122 | } 123 | } 124 | 125 | } 126 | -------------------------------------------------------------------------------- /src/com/ericblue/mindstream/preferences/PreferenceManager.java: -------------------------------------------------------------------------------- 1 | package com.ericblue.mindstream.preferences; 2 | 3 | import java.util.prefs.Preferences; 4 | 5 | /** 6 | *

Title: PreferencesManager


7 | *

Description: Preference Manager to read/write system tray app settings


8 | * @author Eric Blue
9 | * 10 | * $Date: 2011-07-24 17:54:27 $ 11 | * $Author: ericblue76 $ 12 | * $Revision: 1.2 $ 13 | * 14 | */ 15 | 16 | 17 | public class PreferenceManager { 18 | 19 | static Preferences prefs; 20 | 21 | public static Preferences loadPreferences() { 22 | 23 | prefs = Preferences.userRoot().node(PreferenceManager.class.getName()); 24 | return prefs; 25 | 26 | } 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/com/ericblue/mindstream/systemtray/MindStreamSystemTray.java: -------------------------------------------------------------------------------- 1 | package com.ericblue.mindstream.systemtray; 2 | 3 | import org.apache.log4j.Logger; 4 | 5 | 6 | import java.awt.AWTException; 7 | import java.awt.CheckboxMenuItem; 8 | import java.awt.Image; 9 | import java.awt.Menu; 10 | import java.awt.MenuItem; 11 | import java.awt.PopupMenu; 12 | import java.awt.SystemTray; 13 | import java.awt.TrayIcon; 14 | import java.awt.event.ActionEvent; 15 | import java.awt.event.ActionListener; 16 | import java.awt.event.ItemEvent; 17 | import java.awt.event.ItemListener; 18 | import java.io.BufferedWriter; 19 | import java.io.FileWriter; 20 | import java.io.IOException; 21 | import java.net.URL; 22 | import java.text.SimpleDateFormat; 23 | import java.util.Date; 24 | import java.util.prefs.Preferences; 25 | 26 | import javax.swing.ImageIcon; 27 | import javax.swing.JOptionPane; 28 | import javax.swing.SwingUtilities; 29 | import javax.swing.SwingWorker; 30 | import javax.swing.UIManager; 31 | 32 | import org.json.JSONException; 33 | import org.json.JSONObject; 34 | 35 | import com.ericblue.mindstream.client.ThinkGearSocketClient; 36 | import com.ericblue.mindstream.preferences.PreferenceManager; 37 | import com.ericblue.mindstream.window.DebugWindow; 38 | import com.ericblue.mindstream.window.PreferencesWindow; 39 | 40 | /** 41 | *

Title: MindStreamSystemTray


42 | *

Description: Description: System tray app for streaming data from the Neurosky MindSet/MindWave


43 | * @author Eric Blue
44 | * 45 | * $Date: 2014-01-26 19:36:10 $ 46 | * $Author: ericblue76 $ 47 | * $Revision: 1.9 $ 48 | * 49 | */ 50 | 51 | 52 | public class MindStreamSystemTray { 53 | /** 54 | * Logger for this class 55 | */ 56 | private static final Logger logger = Logger.getLogger(MindStreamSystemTray.class); 57 | 58 | /** 59 | * System tray launcher 60 | * 61 | * @param args 62 | * @return void 63 | */ 64 | 65 | public static void main(String[] args) { 66 | // TODO Set look and feel 67 | // UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 68 | 69 | /* Turn off metal's use of bold fonts */ 70 | UIManager.put("swing.boldMetal", Boolean.FALSE); 71 | 72 | SwingUtilities.invokeLater(new Runnable() { 73 | public void run() { 74 | initializeGUI(); 75 | } 76 | }); 77 | } 78 | 79 | /** 80 | * Initializes preferences on first time launch 81 | * 82 | * @param none 83 | * @return void 84 | */ 85 | private static void initializePreferences() { 86 | 87 | Preferences prefs = PreferenceManager.loadPreferences(); 88 | 89 | if (prefs.get("thinkgearHost", null) == null) { 90 | logger.debug("initializePreferences() - Setting default ThinkGear Host"); 91 | prefs.put("thinkgearHost", ThinkGearSocketClient.DEFAULT_HOST); 92 | } 93 | 94 | if (prefs.getInt("thinkgearPort", 0) == 0) { 95 | logger.debug("initializePreferences() - Setting default ThinkGear Host"); 96 | prefs.putInt("thinkgearPort", ThinkGearSocketClient.DEFAULT_PORT); 97 | } 98 | 99 | if (prefs.get("fileLocation", null) == null) { 100 | logger.debug("initializePreferences() - Setting default CSV file location"); 101 | String file = System.getProperty("user.home") + System.getProperty("file.separator"); 102 | file += "mindstream.csv"; 103 | prefs.put("fileLocation", file); 104 | } 105 | 106 | } 107 | 108 | /** 109 | * Initialize GUI 110 | * 111 | * @param none 112 | * @return void 113 | */ 114 | 115 | private static void initializeGUI() { 116 | 117 | // TODO Cleanup all System.out/.err with log4j calls 118 | 119 | // Check the SystemTray support 120 | if (!SystemTray.isSupported()) { 121 | logger.debug("initializeGUI() - SystemTray is not supported"); 122 | return; 123 | } 124 | 125 | initializePreferences(); 126 | 127 | // TODO Load default preferences if they haven't been initialized 128 | String host = PreferenceManager.loadPreferences().get("thinkgearHost", ""); 129 | int port = PreferenceManager.loadPreferences().getInt("thinkgearPort", 0); 130 | 131 | final ThinkGearSocketClient client = new ThinkGearSocketClient(host, port); 132 | 133 | final PopupMenu popup = new PopupMenu(); 134 | final TrayIcon trayIcon = new TrayIcon(createImage("images/logo.jpg", "tray icon")); 135 | trayIcon.setImageAutoSize(true); 136 | trayIcon.setToolTip("MindStream"); 137 | final SystemTray tray = SystemTray.getSystemTray(); 138 | 139 | // Create a popup menu components 140 | MenuItem aboutItem = new MenuItem("About"); 141 | MenuItem preferencesItem = new MenuItem("Preferences"); 142 | final MenuItem viewDebug = new MenuItem("View EEG data (JSON)"); 143 | viewDebug.setEnabled(false); 144 | final CheckboxMenuItem cbConnect = new CheckboxMenuItem("Connect to ThinkGear Socket"); 145 | final Menu streamMenu = new Menu("MindStream"); 146 | streamMenu.setEnabled(false); 147 | // Not implemented yet 148 | // MenuItem broadcastSocketItem = new MenuItem("Broadcast (Socket)"); 149 | // MenuItem broadcastHttpItem = new MenuItem("Broadcast (HTTP)"); 150 | MenuItem saveFileItem = new MenuItem("Save (File)"); 151 | 152 | MenuItem exitItem = new MenuItem("Exit"); 153 | 154 | // Add components to popup menu 155 | popup.add(aboutItem); 156 | popup.add(preferencesItem); 157 | popup.addSeparator(); 158 | 159 | popup.add(viewDebug); 160 | popup.add(cbConnect); 161 | popup.add(streamMenu); 162 | // streamMenu.add(broadcastSocketItem); 163 | // streamMenu.add(broadcastHttpItem); 164 | streamMenu.add(saveFileItem); 165 | popup.addSeparator(); 166 | 167 | popup.add(exitItem); 168 | 169 | final DebugWindow debugWindow = new DebugWindow(); 170 | final PreferencesWindow preferencesWindow = new PreferencesWindow(); 171 | 172 | trayIcon.setPopupMenu(popup); 173 | 174 | try { 175 | tray.add(trayIcon); 176 | } catch (AWTException e) { 177 | logger.debug("initializeGUI() - TrayIcon could not be added."); 178 | return; 179 | } 180 | 181 | aboutItem.addActionListener(new ActionListener() { 182 | public void actionPerformed(ActionEvent e) { 183 | JOptionPane.showMessageDialog(null, "Mindstream - https://github.com/ericblue/MindStream"); 184 | } 185 | }); 186 | 187 | preferencesItem.addActionListener(new ActionListener() { 188 | public void actionPerformed(ActionEvent e) { 189 | 190 | preferencesWindow.setVisible(true); 191 | preferencesWindow.getContentPane().requestFocus(); 192 | 193 | } 194 | }); 195 | 196 | viewDebug.addActionListener(new ActionListener() { 197 | public void actionPerformed(ActionEvent e) { 198 | 199 | debugWindow.setVisible(true); 200 | SwingWorker worker = new SwingWorker() { 201 | public Void doInBackground() { 202 | 203 | while (client.isDataAvailable()) { 204 | 205 | debugWindow.getTextArea().append(client.getData() + '\n'); 206 | debugWindow.getTextArea().setCaretPosition(debugWindow.getTextArea().getText().length()); 207 | 208 | } 209 | 210 | return null; 211 | 212 | } 213 | }; 214 | 215 | worker.execute(); 216 | 217 | } 218 | }); 219 | 220 | cbConnect.addItemListener(new ItemListener() { 221 | public void itemStateChanged(ItemEvent e) { 222 | int cbState = e.getStateChange(); 223 | if (cbState == ItemEvent.SELECTED) { 224 | 225 | String host = PreferenceManager.loadPreferences().get("thinkgearHost", ""); 226 | int port = PreferenceManager.loadPreferences().getInt("thinkgearPort", 0); 227 | 228 | if (!client.isConnected()) { 229 | try { 230 | client.setHost(host); 231 | client.setPort(port); 232 | 233 | client.connect(); 234 | viewDebug.setEnabled(true); 235 | streamMenu.setEnabled(true); 236 | } catch (IOException e1) { 237 | cbConnect.setState(false); 238 | viewDebug.setEnabled(false); 239 | streamMenu.setEnabled(false); 240 | trayIcon.displayMessage("Connection Error", e1.getMessage(), TrayIcon.MessageType.ERROR); 241 | } 242 | 243 | } 244 | 245 | } else { 246 | try { 247 | client.close(); 248 | viewDebug.setEnabled(false); 249 | streamMenu.setEnabled(false); 250 | } catch (IOException e1) { 251 | trayIcon.displayMessage("Close Error", e1.getMessage(), TrayIcon.MessageType.ERROR); 252 | } 253 | } 254 | } 255 | }); 256 | 257 | 258 | // FIXME: File seems to not be saving if JSON output is viewed first 259 | 260 | ActionListener listener = new ActionListener() { 261 | public void actionPerformed(ActionEvent e) { 262 | MenuItem item = (MenuItem) e.getSource(); 263 | // TrayIcon.MessageType type = null; 264 | logger.debug("$ActionListener.actionPerformed(ActionEvent) - " + item.getLabel()); 265 | // if ("Broadcast (Socket)".equals(item.getLabel())) { 266 | // String message = "Broadcasting socket on port (xyz). Uncheck Connect to ThinkGear Socket to stop."; 267 | // trayIcon.displayMessage("INFO", message, TrayIcon.MessageType.INFO); 268 | // 269 | // } else if ("Broadcast (HTTP)".equals(item.getLabel())) { 270 | // String message = "Broadcasting HTTP to url (xyz). Uncheck Connect to ThinkGear Socket to stop."; 271 | // trayIcon.displayMessage("INFO", message, TrayIcon.MessageType.INFO); 272 | // 273 | // } else if ("Save (File)".equals(item.getLabel())) { 274 | 275 | if ("Save (File)".equals(item.getLabel())) { 276 | 277 | final String csvFile = PreferenceManager.loadPreferences().get("fileLocation", ""); 278 | String message = "Saving file " + csvFile + ". Uncheck Connect to ThinkGear Socket to stop."; 279 | trayIcon.displayMessage("INFO", message, TrayIcon.MessageType.INFO); 280 | 281 | SwingWorker worker = new SwingWorker() { 282 | public Void doInBackground() { 283 | 284 | if (csvFile == null) { 285 | trayIcon.displayMessage("ERROR", "File location must be set in Preferences!", 286 | TrayIcon.MessageType.ERROR); 287 | } 288 | 289 | FileWriter writer = null; 290 | String newLine = System.getProperty("line.separator"); 291 | 292 | try { 293 | writer = new FileWriter(csvFile); 294 | } catch (IOException e1) { 295 | trayIcon.displayMessage("ERROR", "Error opening file for writing!", 296 | TrayIcon.MessageType.ERROR); 297 | logger.error("$SwingWorker.doInBackground()", e1); 298 | } 299 | 300 | // HEADER 301 | try { 302 | writer.append("TIMESTAMP,POOR_SIGNAL_LEVEL,ATTENTION,MEDITATION,"); 303 | writer.append("DELTA,THETA,LOW_ALPHA,HIGH_ALPHA,LOW_BETA,HIGH_BETA,"); 304 | writer.append("LOW_GAMMA,HIGH_GAMA"); 305 | writer.append(newLine); 306 | 307 | } catch (IOException e2) { 308 | trayIcon.displayMessage("Write Error", e2.getMessage(), TrayIcon.MessageType.ERROR); 309 | } 310 | 311 | SimpleDateFormat fmt = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); 312 | 313 | while (client.isDataAvailable()) { 314 | logger.debug("$SwingWorker.doInBackground() - Writing..."); 315 | 316 | logger.debug("$SwingWorker.doInBackground() - " + client.getData()); 317 | try { 318 | String clientData = client.getData(); 319 | logger.debug("$SwingWorker.doInBackground() - " + clientData); 320 | JSONObject json = new JSONObject(clientData); 321 | 322 | /* 323 | * JH: check just in case it's not there due 324 | * to poorSignallevel 325 | */ 326 | if (!json.isNull("eegPower")) { 327 | 328 | String timeStamp = fmt.format(new Date()); 329 | writer.append(timeStamp + ','); 330 | /* 331 | * JH: check for existence of 332 | * poorSignalLevel. If not available, 333 | * assume 0 * 334 | */ 335 | if (!json.isNull("poorSignalLevel")) { 336 | writer.append(Integer.toString(json.getInt("poorSignalLevel")) + ','); 337 | } else { 338 | writer.append("0,"); 339 | } 340 | 341 | /* 342 | * JH: check for existence of eSense. I 343 | * noticed it's possible to get eegPower 344 | * without eSense when poorSignallevel 345 | * >0 346 | */ 347 | if (!json.isNull("eSense")) { 348 | 349 | JSONObject esense = json.getJSONObject("eSense"); 350 | 351 | /* 352 | * JH: Don't know if it's possible 353 | * for these attributes to not exist 354 | * even when the JSON Object exists 355 | */ 356 | writer.append(Integer.toString(esense.getInt("attention")) + ','); 357 | writer.append(Integer.toString(esense.getInt("meditation")) + ','); 358 | 359 | } else { 360 | logger.debug("$SwingWorker.doInBackground() - eSense is null!"); 361 | } 362 | 363 | JSONObject eegPower = json.getJSONObject("eegPower"); 364 | 365 | writer.append(Integer.toString(eegPower.getInt("delta")) + ','); 366 | writer.append(Integer.toString(eegPower.getInt("theta")) + ','); 367 | writer.append(Integer.toString(eegPower.getInt("lowAlpha")) + ','); 368 | writer.append(Integer.toString(eegPower.getInt("highAlpha")) + ','); 369 | writer.append(Integer.toString(eegPower.getInt("lowBeta")) + ','); 370 | writer.append(Integer.toString(eegPower.getInt("highBeta")) + ','); 371 | writer.append(Integer.toString(eegPower.getInt("lowGamma")) + ','); 372 | writer.append(Integer.toString(eegPower.getInt("highGamma"))); 373 | writer.append(newLine); 374 | 375 | } else { 376 | logger.debug("$SwingWorker.doInBackground() - eegPower is null!"); 377 | } 378 | 379 | writer.flush(); 380 | 381 | } catch (JSONException e1) { 382 | trayIcon.displayMessage("JSON Error", e1.getMessage(), TrayIcon.MessageType.ERROR); 383 | } catch (IOException e2) { 384 | trayIcon.displayMessage("Write Error", e2.getMessage(), TrayIcon.MessageType.ERROR); 385 | } 386 | 387 | } 388 | 389 | try { 390 | logger.debug("$SwingWorker.doInBackground() - Closing file..."); 391 | writer.close(); 392 | } catch (IOException e) { 393 | trayIcon.displayMessage("Write Error", e.getMessage(), TrayIcon.MessageType.ERROR); 394 | } 395 | 396 | return null; 397 | 398 | } 399 | }; 400 | 401 | worker.execute(); 402 | 403 | } 404 | } 405 | }; 406 | 407 | // broadcastSocketItem.addActionListener(listener); 408 | // broadcastHttpItem.addActionListener(listener); 409 | saveFileItem.addActionListener(listener); 410 | 411 | exitItem.addActionListener(new ActionListener() { 412 | public void actionPerformed(ActionEvent e) { 413 | tray.remove(trayIcon); 414 | System.exit(0); 415 | } 416 | }); 417 | } 418 | 419 | // Obtain the image URL 420 | protected static Image createImage(String path, String description) { 421 | URL imageURL = MindStreamSystemTray.class.getResource(path); 422 | 423 | if (imageURL == null) { 424 | logger.error("createImage(String, String) - Resource not found: " + path, null); 425 | return null; 426 | } else { 427 | return (new ImageIcon(imageURL, description)).getImage(); 428 | } 429 | } 430 | } -------------------------------------------------------------------------------- /src/com/ericblue/mindstream/systemtray/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericblue/MindStream/a0261c06b4bf838be69b0d2369344918db0f3ca5/src/com/ericblue/mindstream/systemtray/images/logo.jpg -------------------------------------------------------------------------------- /src/com/ericblue/mindstream/window/DebugWindow.java: -------------------------------------------------------------------------------- 1 | package com.ericblue.mindstream.window; 2 | 3 | import org.apache.log4j.Logger; 4 | 5 | import java.awt.Component; 6 | import java.awt.Dimension; 7 | import java.awt.EventQueue; 8 | import java.awt.Rectangle; 9 | import java.awt.event.ActionEvent; 10 | import java.awt.event.ActionListener; 11 | 12 | import javax.swing.JButton; 13 | import javax.swing.JFrame; 14 | import javax.swing.JPanel; 15 | import javax.swing.JScrollPane; 16 | import javax.swing.JTextArea; 17 | import javax.swing.SpringLayout; 18 | import javax.swing.border.EmptyBorder; 19 | 20 | /** 21 | *

Title: DebugWindow


22 | *

Description: Displays real-time JSON output from ThinkGear socket


23 | * @author Eric Blue
24 | * 25 | * $Date: 2012-07-08 03:31:28 $ 26 | * $Author: ericblue76 $ 27 | * $Revision: 1.4 $ 28 | * 29 | */ 30 | 31 | 32 | public class DebugWindow extends JFrame { 33 | /** 34 | * Logger for this class 35 | */ 36 | private static final Logger logger = Logger.getLogger(DebugWindow.class); 37 | 38 | private JPanel contentPane; 39 | private JTextArea textArea; 40 | 41 | /** 42 | * Launch the application. 43 | */ 44 | public static void main(String[] args) { 45 | EventQueue.invokeLater(new Runnable() { 46 | public void run() { 47 | try { 48 | DebugWindow frame = new DebugWindow(); 49 | frame.setVisible(true); 50 | } catch (Exception e) { 51 | logger.error("$Runnable.run()", e); 52 | } 53 | } 54 | }); 55 | } 56 | 57 | /** 58 | * Create the frame. 59 | */ 60 | public DebugWindow() { 61 | setTitle("Debug Output"); 62 | setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 63 | setBounds(100, 100, 828, 562); 64 | contentPane = new JPanel(); 65 | contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 66 | setContentPane(contentPane); 67 | 68 | JButton btnClose = new JButton("Close"); 69 | btnClose.setBounds(new Rectangle(20, 20, 20, 20)); 70 | btnClose.setAlignmentX(Component.CENTER_ALIGNMENT); 71 | SpringLayout sl_contentPane = new SpringLayout(); 72 | sl_contentPane.putConstraint(SpringLayout.WEST, btnClose, 363, SpringLayout.WEST, contentPane); 73 | sl_contentPane.putConstraint(SpringLayout.SOUTH, btnClose, -10, SpringLayout.SOUTH, contentPane); 74 | contentPane.setLayout(sl_contentPane); 75 | contentPane.add(btnClose); 76 | 77 | this.textArea = new JTextArea(); 78 | textArea.setEditable(false); 79 | 80 | JScrollPane scrollPane = new JScrollPane(textArea); 81 | scrollPane.setPreferredSize(new Dimension(812, 465)); 82 | contentPane.add(scrollPane); 83 | 84 | ActionListener listener = new ActionListener() { 85 | public void actionPerformed(ActionEvent e) { 86 | 87 | logger.debug("$ActionListener.actionPerformed(ActionEvent) - " + e.getActionCommand()); 88 | 89 | if ("Close".equals(e.getActionCommand())) { 90 | 91 | DebugWindow.getFrames()[0].setVisible(false); 92 | 93 | } 94 | 95 | } 96 | }; 97 | 98 | btnClose.addActionListener(listener); 99 | 100 | } 101 | 102 | public JTextArea getTextArea() { 103 | return textArea; 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /src/com/ericblue/mindstream/window/PreferencesWindow.java: -------------------------------------------------------------------------------- 1 | package com.ericblue.mindstream.window; 2 | 3 | import org.apache.log4j.Logger; 4 | 5 | import java.awt.EventQueue; 6 | import java.awt.event.ActionEvent; 7 | import java.awt.event.ActionListener; 8 | import java.io.File; 9 | import java.util.prefs.Preferences; 10 | 11 | import javax.swing.ImageIcon; 12 | import javax.swing.JButton; 13 | import javax.swing.JComponent; 14 | import javax.swing.JFileChooser; 15 | import javax.swing.JFrame; 16 | import javax.swing.JLabel; 17 | import javax.swing.JOptionPane; 18 | import javax.swing.JPanel; 19 | import javax.swing.JTabbedPane; 20 | import javax.swing.JTextField; 21 | import javax.swing.SpringLayout; 22 | import javax.swing.border.EmptyBorder; 23 | 24 | import com.ericblue.mindstream.preferences.PreferenceManager; 25 | 26 | /** 27 | *

Title: PreferencesWindow


28 | *

Description: Preferences Window


29 | * @author Eric Blue
30 | * 31 | * $Date: 2014-01-26 19:36:10 $ 32 | * $Author: ericblue76 $ 33 | * $Revision: 1.7 $ 34 | * 35 | */ 36 | 37 | 38 | public class PreferencesWindow extends JFrame { 39 | /** 40 | * Logger for this class 41 | */ 42 | private static final Logger logger = Logger.getLogger(PreferencesWindow.class); 43 | 44 | private JTabbedPane contentPane; 45 | private JTextField thinkgearHost; 46 | private JTextField broadcastPort; 47 | private JTextField thinkgearPort; 48 | private JTextField broadcastUrl; 49 | private Preferences prefs; 50 | private JTextField fileLocation; 51 | 52 | /** 53 | * Launch the application. 54 | */ 55 | public static void main(String[] args) { 56 | EventQueue.invokeLater(new Runnable() { 57 | public void run() { 58 | try { 59 | PreferencesWindow frame = new PreferencesWindow(); 60 | frame.setVisible(true); 61 | } catch (Exception e) { 62 | logger.error("$Runnable.run()", e); 63 | } 64 | } 65 | }); 66 | } 67 | 68 | /** 69 | * Create the frame. 70 | */ 71 | public PreferencesWindow() { 72 | 73 | logger.debug("PreferencesWindow() - loading prefs..."); 74 | prefs = PreferenceManager.loadPreferences(); 75 | 76 | setTitle("Preferences"); 77 | setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 78 | setBounds(100, 100, 610, 410); 79 | contentPane = new JTabbedPane(); 80 | contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 81 | 82 | JComponent panel1 = makePanel1("Panel #1"); 83 | contentPane.addTab("ThinkGear", null, panel1, "Does nothing"); 84 | 85 | JComponent panel2 = makePanel2("Panel #2"); 86 | contentPane.addTab("Broadcast", null, panel2, "Does nothing"); 87 | 88 | setContentPane(contentPane); 89 | 90 | } 91 | 92 | protected JComponent makePanel1(String text) { 93 | JPanel panel = new JPanel(false); 94 | SpringLayout sl_panel = new SpringLayout(); 95 | panel.setLayout(sl_panel); 96 | 97 | thinkgearHost = new JTextField(); 98 | sl_panel.putConstraint(SpringLayout.SOUTH, thinkgearHost, 51, SpringLayout.NORTH, panel); 99 | sl_panel.putConstraint(SpringLayout.EAST, thinkgearHost, -302, SpringLayout.EAST, panel); 100 | panel.add(thinkgearHost); 101 | thinkgearHost.setColumns(10); 102 | 103 | JLabel lblThinkgearHost = new JLabel("ThinkGear Host"); 104 | 105 | thinkgearHost.setText(prefs.get("thinkgearHost", "")); 106 | sl_panel.putConstraint(SpringLayout.WEST, thinkgearHost, 19, SpringLayout.EAST, lblThinkgearHost); 107 | sl_panel.putConstraint(SpringLayout.NORTH, lblThinkgearHost, 34, SpringLayout.NORTH, panel); 108 | sl_panel.putConstraint(SpringLayout.NORTH, thinkgearHost, -2, SpringLayout.NORTH, lblThinkgearHost); 109 | sl_panel.putConstraint(SpringLayout.WEST, lblThinkgearHost, 10, SpringLayout.WEST, panel); 110 | panel.add(lblThinkgearHost); 111 | 112 | thinkgearPort = new JTextField(); 113 | thinkgearPort.setText(prefs.get("thinkgearPort", "")); 114 | sl_panel.putConstraint(SpringLayout.WEST, thinkgearPort, 0, SpringLayout.WEST, thinkgearHost); 115 | sl_panel.putConstraint(SpringLayout.EAST, thinkgearPort, -381, SpringLayout.EAST, panel); 116 | thinkgearPort.setColumns(10); 117 | panel.add(thinkgearPort); 118 | 119 | JLabel lblThinkgearPort = new JLabel("ThinkGear Port"); 120 | sl_panel.putConstraint(SpringLayout.NORTH, thinkgearPort, -2, SpringLayout.NORTH, lblThinkgearPort); 121 | sl_panel.putConstraint(SpringLayout.NORTH, lblThinkgearPort, 27, SpringLayout.SOUTH, lblThinkgearHost); 122 | sl_panel.putConstraint(SpringLayout.WEST, lblThinkgearPort, 0, SpringLayout.WEST, lblThinkgearHost); 123 | panel.add(lblThinkgearPort); 124 | 125 | JButton btnCancel = new JButton("Cancel"); 126 | 127 | btnCancel.addActionListener(new ActionListener() { 128 | public void actionPerformed(ActionEvent e) { 129 | 130 | dispose(); 131 | } 132 | }); 133 | sl_panel.putConstraint(SpringLayout.SOUTH, btnCancel, -10, SpringLayout.SOUTH, panel); 134 | sl_panel.putConstraint(SpringLayout.EAST, btnCancel, -104, SpringLayout.EAST, panel); 135 | 136 | panel.add(btnCancel); 137 | 138 | JButton btnSave = new JButton("Save"); 139 | sl_panel.putConstraint(SpringLayout.SOUTH, btnSave, -10, SpringLayout.SOUTH, panel); 140 | sl_panel.putConstraint(SpringLayout.EAST, btnSave, -38, SpringLayout.EAST, panel); 141 | btnSave.addActionListener(new ActionListener() { 142 | public void actionPerformed(ActionEvent arg0) { 143 | 144 | if (thinkgearHost.getText().length() == 0) { 145 | JOptionPane.showMessageDialog(null, "Host must be supplied!"); 146 | return; 147 | } 148 | prefs.put("thinkgearHost", thinkgearHost.getText()); 149 | 150 | String portErrMsg = "Port must be supplied! Range = [1 - 65535]"; 151 | 152 | int port = 0; 153 | try { 154 | port = Integer.parseInt(thinkgearPort.getText()); 155 | } catch (NumberFormatException e) { 156 | JOptionPane.showMessageDialog(null, portErrMsg); 157 | return; 158 | } 159 | 160 | if ((port < 1) || (port > 65535)) { 161 | JOptionPane.showMessageDialog(null, portErrMsg); 162 | return; 163 | } 164 | prefs.putInt("thinkgearPort", port); 165 | 166 | dispose(); 167 | 168 | } 169 | }); 170 | sl_panel.putConstraint(SpringLayout.NORTH, btnSave, 0, SpringLayout.NORTH, btnCancel); 171 | sl_panel.putConstraint(SpringLayout.WEST, btnSave, 4, SpringLayout.EAST, btnCancel); 172 | panel.add(btnSave); 173 | 174 | return panel; 175 | } 176 | 177 | protected JComponent makePanel2(String text) { 178 | final JPanel panel = new JPanel(false); 179 | SpringLayout sl_panel = new SpringLayout(); 180 | panel.setLayout(sl_panel); 181 | 182 | broadcastPort = new JTextField(); 183 | sl_panel.putConstraint(SpringLayout.SOUTH, broadcastPort, 51, SpringLayout.NORTH, panel); 184 | sl_panel.putConstraint(SpringLayout.EAST, broadcastPort, -381, SpringLayout.EAST, panel); 185 | panel.add(broadcastPort); 186 | broadcastPort.setColumns(10); 187 | 188 | JLabel lblBroadcastPort = new JLabel("Port (Socket)"); 189 | 190 | broadcastPort.setText(prefs.get("broadcastPort", "")); 191 | sl_panel.putConstraint(SpringLayout.WEST, broadcastPort, 19, SpringLayout.EAST, lblBroadcastPort); 192 | sl_panel.putConstraint(SpringLayout.NORTH, lblBroadcastPort, 34, SpringLayout.NORTH, panel); 193 | sl_panel.putConstraint(SpringLayout.NORTH, broadcastPort, -2, SpringLayout.NORTH, lblBroadcastPort); 194 | sl_panel.putConstraint(SpringLayout.WEST, lblBroadcastPort, 10, SpringLayout.WEST, panel); 195 | panel.add(lblBroadcastPort); 196 | 197 | broadcastUrl = new JTextField(); 198 | sl_panel.putConstraint(SpringLayout.WEST, broadcastUrl, 0, SpringLayout.WEST, broadcastPort); 199 | sl_panel.putConstraint(SpringLayout.EAST, broadcastUrl, -130, SpringLayout.EAST, panel); 200 | broadcastUrl.setText(prefs.get("broadcastUrl", "")); 201 | broadcastUrl.setColumns(10); 202 | panel.add(broadcastUrl); 203 | 204 | JLabel lblBroadcastUrl = new JLabel("URL (HTTP)"); 205 | sl_panel.putConstraint(SpringLayout.NORTH, broadcastUrl, -2, SpringLayout.NORTH, lblBroadcastUrl); 206 | sl_panel.putConstraint(SpringLayout.NORTH, lblBroadcastUrl, 27, SpringLayout.SOUTH, lblBroadcastPort); 207 | sl_panel.putConstraint(SpringLayout.WEST, lblBroadcastUrl, 0, SpringLayout.WEST, lblBroadcastPort); 208 | panel.add(lblBroadcastUrl); 209 | 210 | JLabel lblCsvFilesave = new JLabel("CSV File (Save)"); 211 | sl_panel.putConstraint(SpringLayout.WEST, lblCsvFilesave, 0, SpringLayout.WEST, lblBroadcastPort); 212 | panel.add(lblCsvFilesave); 213 | 214 | fileLocation = new JTextField(); 215 | sl_panel.putConstraint(SpringLayout.NORTH, fileLocation, 27, SpringLayout.SOUTH, broadcastUrl); 216 | sl_panel.putConstraint(SpringLayout.NORTH, lblCsvFilesave, 2, SpringLayout.NORTH, fileLocation); 217 | sl_panel.putConstraint(SpringLayout.WEST, fileLocation, 0, SpringLayout.WEST, broadcastPort); 218 | sl_panel.putConstraint(SpringLayout.EAST, fileLocation, 0, SpringLayout.EAST, broadcastUrl); 219 | fileLocation.setText(prefs.get("fileLocation", "")); 220 | fileLocation.setColumns(10); 221 | panel.add(fileLocation); 222 | 223 | JButton btnFileSelect = new JButton("Choose"); 224 | sl_panel.putConstraint(SpringLayout.NORTH, btnFileSelect, -2, SpringLayout.NORTH, lblCsvFilesave); 225 | sl_panel.putConstraint(SpringLayout.WEST, btnFileSelect, 6, SpringLayout.EAST, fileLocation); 226 | sl_panel.putConstraint(SpringLayout.SOUTH, btnFileSelect, 139, SpringLayout.NORTH, panel); 227 | 228 | panel.add(btnFileSelect); 229 | 230 | btnFileSelect.addActionListener(new ActionListener() { 231 | public void actionPerformed(ActionEvent e) { 232 | 233 | JFileChooser fc = new JFileChooser(); 234 | fc.showOpenDialog(panel); 235 | File selFile = fc.getSelectedFile(); 236 | if (selFile != null) { 237 | fileLocation.setText((selFile.getAbsolutePath())); 238 | } 239 | 240 | } 241 | }); 242 | 243 | JButton btnCancel = new JButton("Cancel"); 244 | 245 | btnCancel.addActionListener(new ActionListener() { 246 | public void actionPerformed(ActionEvent e) { 247 | // TODO reload prefs and re-initialize properly 248 | dispose(); 249 | } 250 | }); 251 | sl_panel.putConstraint(SpringLayout.SOUTH, btnCancel, -10, SpringLayout.SOUTH, panel); 252 | sl_panel.putConstraint(SpringLayout.EAST, btnCancel, -104, SpringLayout.EAST, panel); 253 | 254 | panel.add(btnCancel); 255 | 256 | JButton btnSave = new JButton("Save"); 257 | sl_panel.putConstraint(SpringLayout.SOUTH, btnSave, -10, SpringLayout.SOUTH, panel); 258 | sl_panel.putConstraint(SpringLayout.EAST, btnSave, -38, SpringLayout.EAST, panel); 259 | sl_panel.putConstraint(SpringLayout.EAST, btnFileSelect, 9, SpringLayout.EAST, btnSave); 260 | 261 | btnSave.addActionListener(new ActionListener() { 262 | public void actionPerformed(ActionEvent arg0) { 263 | 264 | // Note: this code isn't implemented yet. Temporarily comment out port error checking. 265 | 266 | String portErrMsg = "Port must be supplied! Range = [1 - 65535]"; 267 | 268 | int port = 0; 269 | // try { 270 | // port = Integer.parseInt(broadcastPort.getText()); 271 | // } catch (NumberFormatException e) { 272 | // JOptionPane.showMessageDialog(null, portErrMsg); 273 | // return; 274 | // } 275 | // 276 | // if ((port < 1) || (port > 65535)) { 277 | // JOptionPane.showMessageDialog(null, portErrMsg); 278 | // return; 279 | // } 280 | prefs.putInt("broadcastPort", port); 281 | 282 | prefs.put("broadcastUrl", broadcastUrl.getText()); 283 | 284 | prefs.put("fileLocation", fileLocation.getText()); 285 | 286 | dispose(); 287 | 288 | } 289 | }); 290 | sl_panel.putConstraint(SpringLayout.NORTH, btnSave, 0, SpringLayout.NORTH, btnCancel); 291 | sl_panel.putConstraint(SpringLayout.WEST, btnSave, 4, SpringLayout.EAST, btnCancel); 292 | panel.add(btnSave); 293 | 294 | return panel; 295 | } 296 | 297 | /** Returns an ImageIcon, or null if the path was invalid. */ 298 | protected static ImageIcon createImageIcon(String path) { 299 | java.net.URL imgURL = PreferencesWindow.class.getResource(path); 300 | if (imgURL != null) { 301 | return new ImageIcon(imgURL); 302 | } else { 303 | logger.error("createImageIcon(String) - Couldn't find file: " + path, null); 304 | return null; 305 | } 306 | } 307 | } 308 | -------------------------------------------------------------------------------- /src/log4j.properties: -------------------------------------------------------------------------------- 1 | # Global 2 | log4j.rootLogger=DEBUG, console 3 | 4 | # Specific Packages 5 | # log4j.logger.com.ericblue=DEBUG, socket, rolling 6 | 7 | # Console 8 | log4j.appender.console=org.apache.log4j.ConsoleAppender 9 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 10 | log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{1} - %m%n 11 | 12 | 13 | # Socket 14 | log4j.appender.socket=org.apache.log4j.net.SocketAppender 15 | log4j.appender.socket.remoteHost=127.0.0.1 16 | log4j.appender.socket.port=4445 17 | log4j.appender.socket.locationInfo=true 18 | 19 | # File 20 | log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender 21 | log4j.appender.rolling.File=debug.log 22 | log4j.appender.rolling.layout=org.apache.log4j.PatternLayout 23 | log4j.appender.rolling.layout.ConversionPattern=%d{MM/dd/yy hh:mm:ss a } %-5p %c %M - %m%n -------------------------------------------------------------------------------- /test/eegdata_mobile.txt: -------------------------------------------------------------------------------- 1 | {"eSense":{"attention":84,"meditation":44},"eegPower":{"delta":15580,"theta":34479,"lowAlpha":251,"highAlpha":7419,"lowBeta":6547,"highBeta":7063,"lowGamma":3921,"highGamma":1247},"poorSignalLevel":0} 2 | {"eSense":{"attention":91,"meditation":48},"eegPower":{"delta":41078,"theta":6579,"lowAlpha":5277,"highAlpha":5656,"lowBeta":14686,"highBeta":4595,"lowGamma":2237,"highGamma":1324},"poorSignalLevel":0} 3 | {"eSense":{"attention":100,"meditation":40},"eegPower":{"delta":16390,"theta":16663,"lowAlpha":3332,"highAlpha":4721,"lowBeta":28724,"highBeta":11561,"lowGamma":4764,"highGamma":1043},"poorSignalLevel":0} 4 | {"eSense":{"attention":100,"meditation":40},"eegPower":{"delta":15005,"theta":13048,"lowAlpha":1681,"highAlpha":7862,"lowBeta":4251,"highBeta":7780,"lowGamma":3351,"highGamma":2090},"poorSignalLevel":0} 5 | {"eSense":{"attention":100,"meditation":34},"eegPower":{"delta":24508,"theta":38736,"lowAlpha":1842,"highAlpha":3915,"lowBeta":6435,"highBeta":10194,"lowGamma":3173,"highGamma":1886},"poorSignalLevel":0} 6 | {"eSense":{"attention":100,"meditation":34},"eegPower":{"delta":16275,"theta":16258,"lowAlpha":4542,"highAlpha":6835,"lowBeta":7356,"highBeta":5598,"lowGamma":2765,"highGamma":1190},"poorSignalLevel":0} 7 | {"eSense":{"attention":48,"meditation":17},"eegPower":{"delta":77062,"theta":58508,"lowAlpha":2332,"highAlpha":2452,"lowBeta":1491,"highBeta":1175,"lowGamma":1213,"highGamma":854},"poorSignalLevel":0} 8 | {"eSense":{"attention":37,"meditation":30},"eegPower":{"delta":111872,"theta":31018,"lowAlpha":7267,"highAlpha":6867,"lowBeta":6232,"highBeta":4030,"lowGamma":4590,"highGamma":1757},"poorSignalLevel":0} 9 | {"eSense":{"attention":43,"meditation":41},"eegPower":{"delta":135020,"theta":9295,"lowAlpha":2101,"highAlpha":1738,"lowBeta":2945,"highBeta":3455,"lowGamma":989,"highGamma":463},"poorSignalLevel":0} 10 | {"eSense":{"attention":66,"meditation":67},"eegPower":{"delta":65953,"theta":24004,"lowAlpha":10579,"highAlpha":12952,"lowBeta":6910,"highBeta":5855,"lowGamma":3123,"highGamma":2265},"poorSignalLevel":0} 11 | {"eSense":{"attention":67,"meditation":74},"eegPower":{"delta":72902,"theta":53813,"lowAlpha":22745,"highAlpha":13999,"lowBeta":13667,"highBeta":8595,"lowGamma":2357,"highGamma":2514},"poorSignalLevel":0} 12 | {"eSense":{"attention":67,"meditation":77},"eegPower":{"delta":54401,"theta":22745,"lowAlpha":21144,"highAlpha":26093,"lowBeta":14480,"highBeta":8850,"lowGamma":5266,"highGamma":2130},"poorSignalLevel":0} 13 | {"mentalEffort":2.37100725170481} 14 | {"familiarity":-1.25486699813609} 15 | {"eSense":{"attention":53,"meditation":88},"eegPower":{"delta":28750,"theta":30612,"lowAlpha":11946,"highAlpha":15453,"lowBeta":6752,"highBeta":5006,"lowGamma":7021,"highGamma":2497},"poorSignalLevel":0} 16 | {"eSense":{"attention":48,"meditation":84},"eegPower":{"delta":11616,"theta":30997,"lowAlpha":10300,"highAlpha":9128,"lowBeta":8977,"highBeta":3980,"lowGamma":3738,"highGamma":2406},"poorSignalLevel":0} 17 | {"eSense":{"attention":54,"meditation":93},"eegPower":{"delta":33054,"theta":15401,"lowAlpha":4751,"highAlpha":16274,"lowBeta":1919,"highBeta":6179,"lowGamma":2431,"highGamma":898},"poorSignalLevel":0} 18 | {"eSense":{"attention":54,"meditation":87},"eegPower":{"delta":31591,"theta":32846,"lowAlpha":10639,"highAlpha":17218,"lowBeta":8898,"highBeta":7056,"lowGamma":3163,"highGamma":2654},"poorSignalLevel":0} 19 | {"eSense":{"attention":56,"meditation":80},"eegPower":{"delta":27621,"theta":57888,"lowAlpha":24966,"highAlpha":3652,"lowBeta":8133,"highBeta":8285,"lowGamma":3272,"highGamma":1975},"poorSignalLevel":0} 20 | {"eSense":{"attention":63,"meditation":84},"eegPower":{"delta":9867,"theta":41767,"lowAlpha":44064,"highAlpha":1907,"lowBeta":8628,"highBeta":12265,"lowGamma":4729,"highGamma":1693},"poorSignalLevel":0} 21 | {"eSense":{"attention":54,"meditation":84},"eegPower":{"delta":18937,"theta":23382,"lowAlpha":29625,"highAlpha":11691,"lowBeta":20042,"highBeta":5215,"lowGamma":4534,"highGamma":2509},"poorSignalLevel":0} 22 | {"blinkStrength":34} 23 | {"eSense":{"attention":54,"meditation":69},"eegPower":{"delta":1323123,"theta":154803,"lowAlpha":12151,"highAlpha":23050,"lowBeta":20952,"highBeta":22050,"lowGamma":3370,"highGamma":1953},"poorSignalLevel":0} 24 | {"eSense":{"attention":67,"meditation":74},"eegPower":{"delta":8436,"theta":18782,"lowAlpha":12529,"highAlpha":6730,"lowBeta":10583,"highBeta":12534,"lowGamma":5927,"highGamma":4423},"poorSignalLevel":0} 25 | {"eSense":{"attention":70,"meditation":80},"eegPower":{"delta":21010,"theta":9691,"lowAlpha":23718,"highAlpha":9274,"lowBeta":11439,"highBeta":8097,"lowGamma":3123,"highGamma":1240},"poorSignalLevel":0} 26 | {"mentalEffort":2.30768343689984} 27 | {"familiarity":3.80009588946268} 28 | {"eSense":{"attention":80,"meditation":84},"eegPower":{"delta":6301,"theta":5270,"lowAlpha":10657,"highAlpha":16685,"lowBeta":9697,"highBeta":5491,"lowGamma":3588,"highGamma":2233},"poorSignalLevel":0} 29 | {"blinkStrength":31} 30 | {"eSense":{"attention":63,"meditation":81},"eegPower":{"delta":328424,"theta":66812,"lowAlpha":7935,"highAlpha":1413,"lowBeta":1611,"highBeta":2301,"lowGamma":574,"highGamma":384},"poorSignalLevel":0} 31 | {"eSense":{"attention":47,"meditation":77},"eegPower":{"delta":197017,"theta":22184,"lowAlpha":3237,"highAlpha":4739,"lowBeta":1721,"highBeta":2109,"lowGamma":594,"highGamma":141},"poorSignalLevel":0} 32 | {"eSense":{"attention":26,"meditation":53},"eegPower":{"delta":446196,"theta":192034,"lowAlpha":20478,"highAlpha":17626,"lowBeta":15327,"highBeta":9228,"lowGamma":4221,"highGamma":2746},"poorSignalLevel":0} 33 | {"eSense":{"attention":10,"meditation":35},"eegPower":{"delta":572821,"theta":176580,"lowAlpha":28963,"highAlpha":30777,"lowBeta":9036,"highBeta":8255,"lowGamma":3527,"highGamma":3679},"poorSignalLevel":0} 34 | {"eSense":{"attention":20,"meditation":61},"eegPower":{"delta":604772,"theta":39402,"lowAlpha":59133,"highAlpha":35541,"lowBeta":25823,"highBeta":9225,"lowGamma":3479,"highGamma":1946},"poorSignalLevel":0} 35 | {"eSense":{"attention":35,"meditation":77},"eegPower":{"delta":6918,"theta":16413,"lowAlpha":31868,"highAlpha":4309,"lowBeta":6650,"highBeta":13159,"lowGamma":1086,"highGamma":1475},"poorSignalLevel":0} 36 | {"eSense":{"attention":44,"meditation":88},"eegPower":{"delta":74921,"theta":106009,"lowAlpha":49326,"highAlpha":14019,"lowBeta":4040,"highBeta":15510,"lowGamma":2049,"highGamma":1623},"poorSignalLevel":0} 37 | {"eSense":{"attention":56,"meditation":83},"eegPower":{"delta":375129,"theta":96208,"lowAlpha":21984,"highAlpha":4771,"lowBeta":14747,"highBeta":12314,"lowGamma":3764,"highGamma":3394},"poorSignalLevel":0} 38 | {"eSense":{"attention":60,"meditation":77},"eegPower":{"delta":687593,"theta":52336,"lowAlpha":32352,"highAlpha":17381,"lowBeta":12364,"highBeta":8634,"lowGamma":4389,"highGamma":3659},"poorSignalLevel":0} 39 | {"mentalEffort":2.31146433375143} 40 | {"familiarity":8.58515011377585} 41 | {"eSense":{"attention":48,"meditation":54},"eegPower":{"delta":27702,"theta":62644,"lowAlpha":8663,"highAlpha":3823,"lowBeta":2717,"highBeta":7684,"lowGamma":5360,"highGamma":955},"poorSignalLevel":0} 42 | {"eSense":{"attention":51,"meditation":54},"eegPower":{"delta":73595,"theta":46764,"lowAlpha":23656,"highAlpha":7681,"lowBeta":13898,"highBeta":8302,"lowGamma":2877,"highGamma":2167},"poorSignalLevel":0} 43 | {"eSense":{"attention":60,"meditation":64},"eegPower":{"delta":21397,"theta":11258,"lowAlpha":7862,"highAlpha":3490,"lowBeta":9362,"highBeta":4943,"lowGamma":1856,"highGamma":1263},"poorSignalLevel":0} 44 | {"eSense":{"attention":67,"meditation":60},"eegPower":{"delta":58769,"theta":23991,"lowAlpha":11602,"highAlpha":4851,"lowBeta":4238,"highBeta":6334,"lowGamma":3524,"highGamma":1998},"poorSignalLevel":0} 45 | {"eSense":{"attention":70,"meditation":77},"eegPower":{"delta":79207,"theta":40936,"lowAlpha":40680,"highAlpha":7191,"lowBeta":11760,"highBeta":11508,"lowGamma":2203,"highGamma":1504},"poorSignalLevel":0} 46 | {"eSense":{"attention":54,"meditation":51},"eegPower":{"delta":483627,"theta":270994,"lowAlpha":8336,"highAlpha":9240,"lowBeta":5537,"highBeta":8540,"lowGamma":2767,"highGamma":1921},"poorSignalLevel":0} 47 | {"eSense":{"attention":47,"meditation":56},"eegPower":{"delta":21826,"theta":30486,"lowAlpha":7967,"highAlpha":19205,"lowBeta":3234,"highBeta":6589,"lowGamma":1533,"highGamma":2010},"poorSignalLevel":0} 48 | {"eSense":{"attention":48,"meditation":44},"eegPower":{"delta":18601,"theta":41167,"lowAlpha":834,"highAlpha":9406,"lowBeta":8504,"highBeta":9461,"lowGamma":2185,"highGamma":3922},"poorSignalLevel":0} 49 | {"eSense":{"attention":54,"meditation":38},"eegPower":{"delta":48874,"theta":27256,"lowAlpha":10128,"highAlpha":8455,"lowBeta":4192,"highBeta":10553,"lowGamma":1617,"highGamma":2240},"poorSignalLevel":0} 50 | {"eSense":{"attention":70,"meditation":63},"eegPower":{"delta":50137,"theta":31014,"lowAlpha":10088,"highAlpha":13733,"lowBeta":16686,"highBeta":6704,"lowGamma":1716,"highGamma":1513},"poorSignalLevel":0} 51 | {"mentalEffort":2.29786962745858} 52 | {"familiarity":19.3814250370529} 53 | {"eSense":{"attention":70,"meditation":50},"eegPower":{"delta":23296,"theta":48855,"lowAlpha":9056,"highAlpha":9261,"lowBeta":11345,"highBeta":7112,"lowGamma":2681,"highGamma":2296},"poorSignalLevel":0} 54 | {"eSense":{"attention":61,"meditation":56},"eegPower":{"delta":54981,"theta":60971,"lowAlpha":8288,"highAlpha":18232,"lowBeta":21151,"highBeta":7539,"lowGamma":3396,"highGamma":2210},"poorSignalLevel":0} 55 | {"eSense":{"attention":66,"meditation":51},"eegPower":{"delta":6496,"theta":19313,"lowAlpha":1691,"highAlpha":9245,"lowBeta":6534,"highBeta":10400,"lowGamma":2727,"highGamma":1191},"poorSignalLevel":0} 56 | {"eSense":{"attention":67,"meditation":41},"eegPower":{"delta":31922,"theta":23752,"lowAlpha":2794,"highAlpha":5437,"lowBeta":13404,"highBeta":4098,"lowGamma":1716,"highGamma":1141},"poorSignalLevel":0} 57 | {"eSense":{"attention":88,"meditation":51},"eegPower":{"delta":11501,"theta":7040,"lowAlpha":10296,"highAlpha":7586,"lowBeta":6941,"highBeta":18562,"lowGamma":2536,"highGamma":1105},"poorSignalLevel":0} 58 | {"eSense":{"attention":93,"meditation":56},"eegPower":{"delta":25485,"theta":31305,"lowAlpha":2581,"highAlpha":10740,"lowBeta":9727,"highBeta":4861,"lowGamma":2195,"highGamma":1104},"poorSignalLevel":0} 59 | {"eSense":{"attention":69,"meditation":54},"eegPower":{"delta":75289,"theta":42249,"lowAlpha":3828,"highAlpha":5627,"lowBeta":7857,"highBeta":934,"lowGamma":561,"highGamma":237},"poorSignalLevel":0} 60 | {"eSense":{"attention":43,"meditation":54},"eegPower":{"delta":16212,"theta":23500,"lowAlpha":6953,"highAlpha":11643,"lowBeta":7961,"highBeta":2991,"lowGamma":1047,"highGamma":1149},"poorSignalLevel":0} 61 | {"eSense":{"attention":27,"meditation":51},"eegPower":{"delta":25398,"theta":26355,"lowAlpha":8509,"highAlpha":3558,"lowBeta":6471,"highBeta":6925,"lowGamma":6145,"highGamma":3688},"poorSignalLevel":0} 62 | {"mentalEffort":2.1803065394261} 63 | {"familiarity":12.26458247853} 64 | {"eSense":{"attention":27,"meditation":56},"eegPower":{"delta":43850,"theta":15523,"lowAlpha":3093,"highAlpha":10966,"lowBeta":10816,"highBeta":3741,"lowGamma":3603,"highGamma":3393},"poorSignalLevel":0} 65 | {"eSense":{"attention":51,"meditation":67},"eegPower":{"delta":17766,"theta":30357,"lowAlpha":14897,"highAlpha":5709,"lowBeta":9757,"highBeta":7396,"lowGamma":3898,"highGamma":2194},"poorSignalLevel":0} 66 | {"eSense":{"attention":56,"meditation":54},"eegPower":{"delta":39345,"theta":77574,"lowAlpha":16838,"highAlpha":4874,"lowBeta":13712,"highBeta":10329,"lowGamma":5649,"highGamma":1044},"poorSignalLevel":0} 67 | {"eSense":{"attention":47,"meditation":74},"eegPower":{"delta":61363,"theta":11912,"lowAlpha":10892,"highAlpha":9579,"lowBeta":1221,"highBeta":2751,"lowGamma":778,"highGamma":288},"poorSignalLevel":0} 68 | {"eSense":{"attention":38,"meditation":78},"eegPower":{"delta":40825,"theta":13282,"lowAlpha":4496,"highAlpha":8253,"lowBeta":3523,"highBeta":1514,"lowGamma":813,"highGamma":483},"poorSignalLevel":0} 69 | {"eSense":{"attention":48,"meditation":83},"eegPower":{"delta":4519,"theta":6997,"lowAlpha":7281,"highAlpha":5386,"lowBeta":5852,"highBeta":6716,"lowGamma":3339,"highGamma":1784},"poorSignalLevel":0} 70 | {"eSense":{"attention":54,"meditation":90},"eegPower":{"delta":9258,"theta":12387,"lowAlpha":10347,"highAlpha":3316,"lowBeta":18923,"highBeta":5372,"lowGamma":3072,"highGamma":1875},"poorSignalLevel":0} 71 | {"eSense":{"attention":80,"meditation":77},"eegPower":{"delta":35770,"theta":14379,"lowAlpha":3198,"highAlpha":12219,"lowBeta":4114,"highBeta":20664,"lowGamma":1391,"highGamma":1089},"poorSignalLevel":0} 72 | {"eSense":{"attention":84,"meditation":69},"eegPower":{"delta":60136,"theta":27122,"lowAlpha":13044,"highAlpha":6256,"lowBeta":15826,"highBeta":4494,"lowGamma":2873,"highGamma":1230},"poorSignalLevel":0} 73 | {"eSense":{"attention":67,"meditation":61},"eegPower":{"delta":6782,"theta":84512,"lowAlpha":21509,"highAlpha":10175,"lowBeta":13086,"highBeta":8699,"lowGamma":1123,"highGamma":1568},"poorSignalLevel":0} 74 | {"mentalEffort":2.18219748595397} 75 | {"familiarity":13.5988898022215} 76 | {"eSense":{"attention":78,"meditation":56},"eegPower":{"delta":115867,"theta":7358,"lowAlpha":3902,"highAlpha":657,"lowBeta":2645,"highBeta":5653,"lowGamma":1202,"highGamma":298},"poorSignalLevel":0} 77 | {"eSense":{"attention":63,"meditation":74},"eegPower":{"delta":19896,"theta":9101,"lowAlpha":36402,"highAlpha":12267,"lowBeta":3601,"highBeta":11976,"lowGamma":4092,"highGamma":1287},"poorSignalLevel":0} 78 | {"eSense":{"attention":90,"meditation":74},"eegPower":{"delta":67865,"theta":5677,"lowAlpha":3331,"highAlpha":5747,"lowBeta":5950,"highBeta":19182,"lowGamma":2214,"highGamma":1671},"poorSignalLevel":0} 79 | {"eSense":{"attention":64,"meditation":63},"eegPower":{"delta":45139,"theta":25585,"lowAlpha":2467,"highAlpha":1869,"lowBeta":9179,"highBeta":1757,"lowGamma":320,"highGamma":876},"poorSignalLevel":0} 80 | {"eSense":{"attention":51,"meditation":54},"eegPower":{"delta":95602,"theta":24607,"lowAlpha":22885,"highAlpha":17535,"lowBeta":10919,"highBeta":4250,"lowGamma":1440,"highGamma":1023},"poorSignalLevel":0} 81 | {"eSense":{"attention":61,"meditation":41},"eegPower":{"delta":44554,"theta":13288,"lowAlpha":789,"highAlpha":7061,"lowBeta":25725,"highBeta":6901,"lowGamma":949,"highGamma":733},"poorSignalLevel":0} 82 | {"eSense":{"attention":44,"meditation":43},"eegPower":{"delta":17766,"theta":12081,"lowAlpha":6702,"highAlpha":1766,"lowBeta":10486,"highBeta":5002,"lowGamma":2361,"highGamma":2387},"poorSignalLevel":0} 83 | {"eSense":{"attention":57,"meditation":48},"eegPower":{"delta":14161,"theta":14859,"lowAlpha":1467,"highAlpha":3539,"lowBeta":8713,"highBeta":4508,"lowGamma":1749,"highGamma":922},"poorSignalLevel":0} 84 | {"eSense":{"attention":75,"meditation":30},"eegPower":{"delta":42106,"theta":13903,"lowAlpha":4888,"highAlpha":2276,"lowBeta":3366,"highBeta":8226,"lowGamma":1855,"highGamma":489},"poorSignalLevel":0} 85 | {"mentalEffort":2.20555416602629} 86 | {"familiarity":17.0516917646005} 87 | {"eSense":{"attention":70,"meditation":43},"eegPower":{"delta":23854,"theta":31623,"lowAlpha":7572,"highAlpha":14780,"lowBeta":4562,"highBeta":11810,"lowGamma":4897,"highGamma":2846},"poorSignalLevel":0} 88 | {"eSense":{"attention":69,"meditation":51},"eegPower":{"delta":50411,"theta":20007,"lowAlpha":13340,"highAlpha":16973,"lowBeta":17970,"highBeta":9456,"lowGamma":2276,"highGamma":2708},"poorSignalLevel":0} 89 | {"eSense":{"attention":63,"meditation":54},"eegPower":{"delta":28276,"theta":27199,"lowAlpha":5559,"highAlpha":3989,"lowBeta":11104,"highBeta":4080,"lowGamma":2210,"highGamma":3555},"poorSignalLevel":0} 90 | {"eSense":{"attention":43,"meditation":48},"eegPower":{"delta":77503,"theta":37087,"lowAlpha":3625,"highAlpha":2974,"lowBeta":2863,"highBeta":2450,"lowGamma":1962,"highGamma":1376},"poorSignalLevel":0} 91 | {"eSense":{"attention":30,"meditation":38},"eegPower":{"delta":71835,"theta":22665,"lowAlpha":3992,"highAlpha":1993,"lowBeta":5295,"highBeta":1610,"lowGamma":1215,"highGamma":639},"poorSignalLevel":0} 92 | {"eSense":{"attention":37,"meditation":35},"eegPower":{"delta":130997,"theta":7752,"lowAlpha":8479,"highAlpha":1745,"lowBeta":4018,"highBeta":6473,"lowGamma":1642,"highGamma":295},"poorSignalLevel":0} 93 | {"eSense":{"attention":43,"meditation":53},"eegPower":{"delta":12285,"theta":10907,"lowAlpha":25758,"highAlpha":8977,"lowBeta":13129,"highBeta":11129,"lowGamma":2386,"highGamma":1779},"poorSignalLevel":0} 94 | {"blinkStrength":35} 95 | {"eSense":{"attention":57,"meditation":57},"eegPower":{"delta":304401,"theta":6867,"lowAlpha":1542,"highAlpha":910,"lowBeta":1281,"highBeta":2517,"lowGamma":409,"highGamma":232},"poorSignalLevel":0} 96 | {"eSense":{"attention":61,"meditation":75},"eegPower":{"delta":11862,"theta":42179,"lowAlpha":18913,"highAlpha":21726,"lowBeta":2955,"highBeta":7278,"lowGamma":4299,"highGamma":1975},"poorSignalLevel":0} 97 | {"eSense":{"attention":47,"meditation":63},"eegPower":{"delta":79253,"theta":22052,"lowAlpha":2466,"highAlpha":2976,"lowBeta":1930,"highBeta":1915,"lowGamma":958,"highGamma":425},"poorSignalLevel":0} 98 | {"mentalEffort":2.22841370314281} 99 | {"familiarity":9.9905206557446} 100 | {"eSense":{"attention":43,"meditation":48},"eegPower":{"delta":95542,"theta":9637,"lowAlpha":1694,"highAlpha":3387,"lowBeta":5700,"highBeta":2536,"lowGamma":656,"highGamma":239},"poorSignalLevel":0} 101 | {"eSense":{"attention":43,"meditation":60},"eegPower":{"delta":17925,"theta":31312,"lowAlpha":17436,"highAlpha":15812,"lowBeta":7793,"highBeta":16094,"lowGamma":1168,"highGamma":1362},"poorSignalLevel":0} 102 | {"eSense":{"attention":50,"meditation":41},"eegPower":{"delta":89865,"theta":10985,"lowAlpha":130,"highAlpha":2571,"lowBeta":2971,"highBeta":2337,"lowGamma":740,"highGamma":553},"poorSignalLevel":0} 103 | {"eSense":{"attention":54,"meditation":67},"eegPower":{"delta":26286,"theta":5077,"lowAlpha":19775,"highAlpha":8183,"lowBeta":5501,"highBeta":4118,"lowGamma":3392,"highGamma":1398},"poorSignalLevel":0} 104 | {"eSense":{"attention":50,"meditation":77},"eegPower":{"delta":43631,"theta":18005,"lowAlpha":8711,"highAlpha":3693,"lowBeta":1459,"highBeta":2802,"lowGamma":3624,"highGamma":1190},"poorSignalLevel":0} 105 | {"eSense":{"attention":53,"meditation":63},"eegPower":{"delta":12677,"theta":13783,"lowAlpha":1160,"highAlpha":5112,"lowBeta":8365,"highBeta":6763,"lowGamma":1413,"highGamma":1897},"poorSignalLevel":0} 106 | {"eSense":{"attention":48,"meditation":67},"eegPower":{"delta":67176,"theta":19131,"lowAlpha":3648,"highAlpha":2222,"lowBeta":1885,"highBeta":2729,"lowGamma":737,"highGamma":683},"poorSignalLevel":0} 107 | {"eSense":{"attention":44,"meditation":30},"eegPower":{"delta":28426,"theta":90506,"lowAlpha":3978,"highAlpha":7266,"lowBeta":16836,"highBeta":8896,"lowGamma":4830,"highGamma":2912},"poorSignalLevel":0} 108 | {"eSense":{"attention":57,"meditation":40},"eegPower":{"delta":2773,"theta":1324,"lowAlpha":454,"highAlpha":8088,"lowBeta":2900,"highBeta":3681,"lowGamma":3343,"highGamma":992},"poorSignalLevel":0} 109 | {"eSense":{"attention":38,"meditation":40},"eegPower":{"delta":99522,"theta":16337,"lowAlpha":2051,"highAlpha":2025,"lowBeta":1341,"highBeta":883,"lowGamma":1001,"highGamma":362},"poorSignalLevel":0} 110 | {"mentalEffort":2.24013099280186} 111 | {"familiarity":8.52157927396092} 112 | {"eSense":{"attention":35,"meditation":41},"eegPower":{"delta":22212,"theta":21821,"lowAlpha":3479,"highAlpha":5548,"lowBeta":5711,"highBeta":2297,"lowGamma":2213,"highGamma":2055},"poorSignalLevel":0} 113 | {"eSense":{"attention":37,"meditation":56},"eegPower":{"delta":2288,"theta":80191,"lowAlpha":16354,"highAlpha":16068,"lowBeta":7794,"highBeta":11477,"lowGamma":2141,"highGamma":2031},"poorSignalLevel":0} 114 | {"eSense":{"attention":20,"meditation":51},"eegPower":{"delta":28585,"theta":25541,"lowAlpha":6704,"highAlpha":18371,"lowBeta":8436,"highBeta":3364,"lowGamma":2547,"highGamma":522},"poorSignalLevel":0} 115 | {"eSense":{"attention":27,"meditation":70},"eegPower":{"delta":19741,"theta":13499,"lowAlpha":27594,"highAlpha":7988,"lowBeta":9895,"highBeta":5353,"lowGamma":4026,"highGamma":3157},"poorSignalLevel":0} 116 | {"eSense":{"attention":37,"meditation":84},"eegPower":{"delta":71839,"theta":20165,"lowAlpha":13685,"highAlpha":22587,"lowBeta":9696,"highBeta":8699,"lowGamma":2354,"highGamma":1238},"poorSignalLevel":0} 117 | {"eSense":{"attention":29,"meditation":80},"eegPower":{"delta":36614,"theta":124638,"lowAlpha":4433,"highAlpha":22234,"lowBeta":14007,"highBeta":7444,"lowGamma":3976,"highGamma":1097},"poorSignalLevel":0} 118 | {"eSense":{"attention":30,"meditation":81},"eegPower":{"delta":19958,"theta":22489,"lowAlpha":27094,"highAlpha":3244,"lowBeta":10546,"highBeta":4572,"lowGamma":2095,"highGamma":1557},"poorSignalLevel":0} 119 | {"eSense":{"attention":26,"meditation":70},"eegPower":{"delta":51184,"theta":43256,"lowAlpha":15493,"highAlpha":13792,"lowBeta":8254,"highBeta":4322,"lowGamma":2845,"highGamma":1705},"poorSignalLevel":0} 120 | {"eSense":{"attention":26,"meditation":66},"eegPower":{"delta":15499,"theta":14015,"lowAlpha":8184,"highAlpha":6840,"lowBeta":9226,"highBeta":5180,"lowGamma":1136,"highGamma":984},"poorSignalLevel":0} 121 | {"eSense":{"attention":27,"meditation":80},"eegPower":{"delta":44080,"theta":13948,"lowAlpha":3238,"highAlpha":7543,"lowBeta":1273,"highBeta":1353,"lowGamma":540,"highGamma":397},"poorSignalLevel":0} 122 | {"mentalEffort":2.26142269947611} 123 | {"familiarity":-2.12710476009079} 124 | {"eSense":{"attention":43,"meditation":70},"eegPower":{"delta":18965,"theta":2440,"lowAlpha":4183,"highAlpha":2640,"lowBeta":10159,"highBeta":4494,"lowGamma":3846,"highGamma":1392},"poorSignalLevel":0} 125 | {"eSense":{"attention":48,"meditation":64},"eegPower":{"delta":71407,"theta":12927,"lowAlpha":4797,"highAlpha":1555,"lowBeta":1499,"highBeta":2013,"lowGamma":716,"highGamma":354},"poorSignalLevel":0} 126 | {"eSense":{"attention":64,"meditation":64},"eegPower":{"delta":34076,"theta":21328,"lowAlpha":10622,"highAlpha":15322,"lowBeta":7176,"highBeta":4802,"lowGamma":4463,"highGamma":1053},"poorSignalLevel":0} 127 | {"eSense":{"attention":51,"meditation":60},"eegPower":{"delta":25811,"theta":66142,"lowAlpha":9313,"highAlpha":15558,"lowBeta":25929,"highBeta":11809,"lowGamma":2586,"highGamma":1149},"poorSignalLevel":0} 128 | {"eSense":{"attention":60,"meditation":53},"eegPower":{"delta":2856,"theta":34437,"lowAlpha":5410,"highAlpha":4555,"lowBeta":6552,"highBeta":9704,"lowGamma":1064,"highGamma":1120},"poorSignalLevel":0} 129 | {"eSense":{"attention":47,"meditation":54},"eegPower":{"delta":28686,"theta":42942,"lowAlpha":3731,"highAlpha":27711,"lowBeta":7206,"highBeta":8406,"lowGamma":1606,"highGamma":2418},"poorSignalLevel":0} 130 | {"eSense":{"attention":50,"meditation":61},"eegPower":{"delta":12416,"theta":5862,"lowAlpha":7641,"highAlpha":8396,"lowBeta":4548,"highBeta":3089,"lowGamma":1773,"highGamma":1139},"poorSignalLevel":0} 131 | {"eSense":{"attention":37,"meditation":63},"eegPower":{"delta":74685,"theta":122114,"lowAlpha":33383,"highAlpha":5555,"lowBeta":6612,"highBeta":5537,"lowGamma":247,"highGamma":1358},"poorSignalLevel":0} 132 | {"eSense":{"attention":27,"meditation":80},"eegPower":{"delta":24369,"theta":43764,"lowAlpha":50517,"highAlpha":8752,"lowBeta":24408,"highBeta":9405,"lowGamma":4147,"highGamma":1307},"poorSignalLevel":0} 133 | {"mentalEffort":2.18914395741881} 134 | {"familiarity":-8.16965974665982} 135 | {"eSense":{"attention":23,"meditation":70},"eegPower":{"delta":87889,"theta":107573,"lowAlpha":24357,"highAlpha":10633,"lowBeta":7179,"highBeta":9867,"lowGamma":5559,"highGamma":850},"poorSignalLevel":0} 136 | {"eSense":{"attention":27,"meditation":51},"eegPower":{"delta":4701,"theta":36182,"lowAlpha":9840,"highAlpha":2817,"lowBeta":9479,"highBeta":10959,"lowGamma":1950,"highGamma":1847},"poorSignalLevel":0} 137 | {"eSense":{"attention":38,"meditation":64},"eegPower":{"delta":19589,"theta":36890,"lowAlpha":23441,"highAlpha":28163,"lowBeta":12658,"highBeta":8933,"lowGamma":1529,"highGamma":2881},"poorSignalLevel":0} 138 | {"eSense":{"attention":43,"meditation":56},"eegPower":{"delta":24456,"theta":31031,"lowAlpha":4499,"highAlpha":12211,"lowBeta":6902,"highBeta":7080,"lowGamma":3082,"highGamma":717},"poorSignalLevel":0} 139 | {"eSense":{"attention":54,"meditation":61},"eegPower":{"delta":12747,"theta":19234,"lowAlpha":10949,"highAlpha":3937,"lowBeta":8233,"highBeta":7997,"lowGamma":2156,"highGamma":2786},"poorSignalLevel":0} 140 | {"eSense":{"attention":66,"meditation":56},"eegPower":{"delta":14201,"theta":8003,"lowAlpha":1159,"highAlpha":1942,"lowBeta":7146,"highBeta":8604,"lowGamma":3162,"highGamma":2762},"poorSignalLevel":0} 141 | {"eSense":{"attention":61,"meditation":41},"eegPower":{"delta":66593,"theta":45946,"lowAlpha":5314,"highAlpha":9832,"lowBeta":9678,"highBeta":3776,"lowGamma":5110,"highGamma":2329},"poorSignalLevel":0} 142 | {"eSense":{"attention":60,"meditation":40},"eegPower":{"delta":115311,"theta":39703,"lowAlpha":10209,"highAlpha":12887,"lowBeta":10479,"highBeta":8190,"lowGamma":2840,"highGamma":3026},"poorSignalLevel":0} 143 | {"eSense":{"attention":64,"meditation":43},"eegPower":{"delta":39431,"theta":17857,"lowAlpha":1681,"highAlpha":16812,"lowBeta":4957,"highBeta":12312,"lowGamma":4730,"highGamma":1510},"poorSignalLevel":0} 144 | {"eSense":{"attention":40,"meditation":64},"eegPower":{"delta":53174,"theta":7761,"lowAlpha":4249,"highAlpha":5399,"lowBeta":2778,"highBeta":1262,"lowGamma":862,"highGamma":492},"poorSignalLevel":0} 145 | {"mentalEffort":2.26771823649929} 146 | {"familiarity":-4.85095222900873} 147 | {"eSense":{"attention":44,"meditation":78},"eegPower":{"delta":16022,"theta":37194,"lowAlpha":25380,"highAlpha":5710,"lowBeta":1975,"highBeta":6682,"lowGamma":1970,"highGamma":1009},"poorSignalLevel":0} 148 | {"eSense":{"attention":48,"meditation":94},"eegPower":{"delta":4094,"theta":10395,"lowAlpha":17469,"highAlpha":13351,"lowBeta":1851,"highBeta":8147,"lowGamma":587,"highGamma":1213},"poorSignalLevel":0} 149 | {"blinkStrength":39} 150 | {"eSense":{"attention":29,"meditation":94},"eegPower":{"delta":125873,"theta":24014,"lowAlpha":12992,"highAlpha":4191,"lowBeta":5388,"highBeta":2248,"lowGamma":632,"highGamma":593},"poorSignalLevel":0} 151 | {"eSense":{"attention":27,"meditation":77},"eegPower":{"delta":82999,"theta":70274,"lowAlpha":11474,"highAlpha":1766,"lowBeta":3503,"highBeta":5006,"lowGamma":3184,"highGamma":894},"poorSignalLevel":0} 152 | {"eSense":{"attention":17,"meditation":56},"eegPower":{"delta":878807,"theta":238123,"lowAlpha":29242,"highAlpha":10648,"lowBeta":18025,"highBeta":9406,"lowGamma":5771,"highGamma":1525},"poorSignalLevel":0} 153 | {"blinkStrength":32} 154 | {"eSense":{"attention":3,"meditation":37},"eegPower":{"delta":217436,"theta":26527,"lowAlpha":10208,"highAlpha":15085,"lowBeta":2294,"highBeta":2939,"lowGamma":803,"highGamma":220},"poorSignalLevel":0} 155 | {"eSense":{"attention":8,"meditation":61},"eegPower":{"delta":127746,"theta":10056,"lowAlpha":14184,"highAlpha":2958,"lowBeta":1409,"highBeta":2708,"lowGamma":3004,"highGamma":1079},"poorSignalLevel":0} 156 | {"eSense":{"attention":10,"meditation":67},"eegPower":{"delta":54927,"theta":32865,"lowAlpha":7302,"highAlpha":2191,"lowBeta":7084,"highBeta":1721,"lowGamma":755,"highGamma":176},"poorSignalLevel":0} 157 | {"eSense":{"attention":14,"meditation":60},"eegPower":{"delta":131707,"theta":40328,"lowAlpha":2578,"highAlpha":3443,"lowBeta":2560,"highBeta":2922,"lowGamma":3101,"highGamma":1176},"poorSignalLevel":0} 158 | {"mentalEffort":2.27956666846951} 159 | {"familiarity":-9.27287121620566} 160 | {"eSense":{"attention":14,"meditation":50},"eegPower":{"delta":76430,"theta":8770,"lowAlpha":1068,"highAlpha":2303,"lowBeta":1048,"highBeta":619,"lowGamma":1375,"highGamma":1401},"poorSignalLevel":0} 161 | {"eSense":{"attention":7,"meditation":26},"eegPower":{"delta":764512,"theta":281915,"lowAlpha":23436,"highAlpha":37990,"lowBeta":13621,"highBeta":13788,"lowGamma":5052,"highGamma":1032},"poorSignalLevel":0} 162 | {"blinkStrength":35} 163 | {"eSense":{"attention":17,"meditation":43},"eegPower":{"delta":681665,"theta":28240,"lowAlpha":24158,"highAlpha":11365,"lowBeta":3919,"highBeta":9617,"lowGamma":3169,"highGamma":1191},"poorSignalLevel":0} 164 | {"blinkStrength":38} 165 | {"eSense":{"attention":10,"meditation":51},"eegPower":{"delta":1365587,"theta":185032,"lowAlpha":37099,"highAlpha":14483,"lowBeta":12779,"highBeta":6454,"lowGamma":2489,"highGamma":1595},"poorSignalLevel":0} 166 | {"eSense":{"attention":20,"meditation":60},"eegPower":{"delta":59260,"theta":11127,"lowAlpha":9282,"highAlpha":1259,"lowBeta":2213,"highBeta":2950,"lowGamma":917,"highGamma":306},"poorSignalLevel":0} 167 | {"eSense":{"attention":40,"meditation":66},"eegPower":{"delta":95280,"theta":37711,"lowAlpha":19114,"highAlpha":2911,"lowBeta":2798,"highBeta":18482,"lowGamma":1990,"highGamma":836},"poorSignalLevel":0} 168 | {"eSense":{"attention":37,"meditation":56},"eegPower":{"delta":23256,"theta":26815,"lowAlpha":10732,"highAlpha":11512,"lowBeta":21826,"highBeta":5555,"lowGamma":3372,"highGamma":1933},"poorSignalLevel":0} 169 | {"eSense":{"attention":53,"meditation":63},"eegPower":{"delta":11800,"theta":22056,"lowAlpha":11027,"highAlpha":5889,"lowBeta":15492,"highBeta":5592,"lowGamma":1521,"highGamma":2064},"poorSignalLevel":0} 170 | {"eSense":{"attention":50,"meditation":67},"eegPower":{"delta":24593,"theta":13877,"lowAlpha":29859,"highAlpha":5384,"lowBeta":16178,"highBeta":4416,"lowGamma":5058,"highGamma":2747},"poorSignalLevel":0} 171 | {"eSense":{"attention":51,"meditation":67},"eegPower":{"delta":78584,"theta":31168,"lowAlpha":10007,"highAlpha":13482,"lowBeta":16678,"highBeta":20623,"lowGamma":2141,"highGamma":1838},"poorSignalLevel":0} 172 | {"mentalEffort":2.25782362655302} 173 | {"familiarity":-4.63102200872936} 174 | {"eSense":{"attention":64,"meditation":67},"eegPower":{"delta":14825,"theta":5811,"lowAlpha":4560,"highAlpha":9017,"lowBeta":15713,"highBeta":9319,"lowGamma":3211,"highGamma":878},"poorSignalLevel":0} 175 | {"eSense":{"attention":56,"meditation":48},"eegPower":{"delta":551493,"theta":137459,"lowAlpha":9593,"highAlpha":2407,"lowBeta":11426,"highBeta":8386,"lowGamma":2395,"highGamma":890},"poorSignalLevel":0} 176 | {"eSense":{"attention":78,"meditation":35},"eegPower":{"delta":39335,"theta":7638,"lowAlpha":2725,"highAlpha":1915,"lowBeta":4889,"highBeta":4137,"lowGamma":2970,"highGamma":909},"poorSignalLevel":0} 177 | {"eSense":{"attention":64,"meditation":43},"eegPower":{"delta":11858,"theta":12093,"lowAlpha":2555,"highAlpha":11850,"lowBeta":4114,"highBeta":3155,"lowGamma":4245,"highGamma":1431},"poorSignalLevel":0} 178 | {"eSense":{"attention":70,"meditation":80},"eegPower":{"delta":7637,"theta":4751,"lowAlpha":9154,"highAlpha":8631,"lowBeta":4922,"highBeta":2606,"lowGamma":1649,"highGamma":1850},"poorSignalLevel":0} 179 | {"eSense":{"attention":53,"meditation":96},"eegPower":{"delta":10817,"theta":7132,"lowAlpha":15677,"highAlpha":13628,"lowBeta":3074,"highBeta":4631,"lowGamma":2487,"highGamma":1245},"poorSignalLevel":0} 180 | {"eSense":{"attention":51,"meditation":100},"eegPower":{"delta":13626,"theta":4075,"lowAlpha":7766,"highAlpha":3120,"lowBeta":3030,"highBeta":4959,"lowGamma":3017,"highGamma":1092},"poorSignalLevel":0} 181 | {"eSense":{"attention":54,"meditation":100},"eegPower":{"delta":12820,"theta":11710,"lowAlpha":5848,"highAlpha":21322,"lowBeta":7350,"highBeta":6213,"lowGamma":1904,"highGamma":2051},"poorSignalLevel":0} 182 | {"eSense":{"attention":51,"meditation":100},"eegPower":{"delta":20802,"theta":20757,"lowAlpha":33486,"highAlpha":9584,"lowBeta":8453,"highBeta":5473,"lowGamma":1263,"highGamma":1177},"poorSignalLevel":0} 183 | {"mentalEffort":2.23338033146624} 184 | {"familiarity":-6.49174058937433} 185 | {"eSense":{"attention":54,"meditation":100},"eegPower":{"delta":7494,"theta":8772,"lowAlpha":2956,"highAlpha":9490,"lowBeta":4356,"highBeta":4260,"lowGamma":1373,"highGamma":1384},"poorSignalLevel":0} 186 | {"blinkStrength":33} 187 | {"eSense":{"attention":40,"meditation":93},"eegPower":{"delta":69552,"theta":15189,"lowAlpha":4198,"highAlpha":5341,"lowBeta":3842,"highBeta":1611,"lowGamma":1227,"highGamma":1688},"poorSignalLevel":0} 188 | {"blinkStrength":41} 189 | {"eSense":{"attention":30,"meditation":81},"eegPower":{"delta":617118,"theta":180965,"lowAlpha":96843,"highAlpha":6353,"lowBeta":25929,"highBeta":19556,"lowGamma":11241,"highGamma":2529},"poorSignalLevel":0} 190 | {"blinkStrength":54} 191 | {"eSense":{"attention":35,"meditation":60},"eegPower":{"delta":1973224,"theta":52848,"lowAlpha":5011,"highAlpha":8969,"lowBeta":7167,"highBeta":8160,"lowGamma":4949,"highGamma":3489},"poorSignalLevel":0} 192 | {"eSense":{"attention":26,"meditation":54},"eegPower":{"delta":25248,"theta":17130,"lowAlpha":7025,"highAlpha":2730,"lowBeta":3283,"highBeta":2513,"lowGamma":645,"highGamma":521},"poorSignalLevel":0} 193 | {"blinkStrength":81} 194 | {"eSense":{"attention":35,"meditation":43},"eegPower":{"delta":795159,"theta":84323,"lowAlpha":11233,"highAlpha":11317,"lowBeta":19195,"highBeta":17111,"lowGamma":8114,"highGamma":3831},"poorSignalLevel":0} 195 | {"eSense":{"attention":40,"meditation":35},"eegPower":{"delta":57094,"theta":52827,"lowAlpha":9179,"highAlpha":5171,"lowBeta":2927,"highBeta":7911,"lowGamma":6925,"highGamma":3594},"poorSignalLevel":0} 196 | {"eSense":{"attention":21,"meditation":27},"eegPower":{"delta":284398,"theta":112830,"lowAlpha":3475,"highAlpha":9643,"lowBeta":5411,"highBeta":1999,"lowGamma":425,"highGamma":244},"poorSignalLevel":0} 197 | {"eSense":{"attention":26,"meditation":35},"eegPower":{"delta":53794,"theta":21851,"lowAlpha":21842,"highAlpha":5588,"lowBeta":8375,"highBeta":6993,"lowGamma":3553,"highGamma":2318},"poorSignalLevel":0} 198 | {"eSense":{"attention":41,"meditation":20},"eegPower":{"delta":11745,"theta":11188,"lowAlpha":394,"highAlpha":802,"lowBeta":15011,"highBeta":7735,"lowGamma":3261,"highGamma":2024},"poorSignalLevel":0} 199 | {"mentalEffort":2.26169100567866} 200 | {"familiarity":-1.41586709600369} 201 | {"eSense":{"attention":51,"meditation":29},"eegPower":{"delta":139573,"theta":26041,"lowAlpha":14236,"highAlpha":6779,"lowBeta":6664,"highBeta":14369,"lowGamma":13615,"highGamma":2557},"poorSignalLevel":0} 202 | {"eSense":{"attention":70,"meditation":47},"eegPower":{"delta":22568,"theta":29067,"lowAlpha":7478,"highAlpha":6905,"lowBeta":11220,"highBeta":5217,"lowGamma":2468,"highGamma":1902},"poorSignalLevel":0} 203 | {"eSense":{"attention":48,"meditation":83},"eegPower":{"delta":39255,"theta":34131,"lowAlpha":53676,"highAlpha":27706,"lowBeta":5733,"highBeta":5680,"lowGamma":3263,"highGamma":1466},"poorSignalLevel":0} 204 | {"eSense":{"attention":50,"meditation":81},"eegPower":{"delta":23279,"theta":12722,"lowAlpha":11916,"highAlpha":3356,"lowBeta":11946,"highBeta":10247,"lowGamma":5792,"highGamma":6005},"poorSignalLevel":0} 205 | {"blinkStrength":34} 206 | {"eSense":{"attention":63,"meditation":84},"eegPower":{"delta":67744,"theta":2715,"lowAlpha":3285,"highAlpha":760,"lowBeta":4464,"highBeta":3081,"lowGamma":1127,"highGamma":1707},"poorSignalLevel":0} 207 | {"eSense":{"attention":78,"meditation":66},"eegPower":{"delta":971587,"theta":63952,"lowAlpha":19054,"highAlpha":5248,"lowBeta":8107,"highBeta":18694,"lowGamma":16833,"highGamma":10833},"poorSignalLevel":0} 208 | {"blinkStrength":58} 209 | {"eSense":{"attention":57,"meditation":50},"eegPower":{"delta":711964,"theta":801446,"lowAlpha":19712,"highAlpha":57690,"lowBeta":29808,"highBeta":38013,"lowGamma":12649,"highGamma":7930},"poorSignalLevel":0} 210 | {"eSense":{"attention":60,"meditation":47},"eegPower":{"delta":49693,"theta":45638,"lowAlpha":16436,"highAlpha":13940,"lowBeta":16262,"highBeta":16890,"lowGamma":6948,"highGamma":3296},"poorSignalLevel":0} 211 | {"mentalEffort":2.24738284820208} 212 | {"familiarity":-5.56010771768797} 213 | {"eSense":{"attention":48,"meditation":40},"eegPower":{"delta":352905,"theta":88765,"lowAlpha":19232,"highAlpha":8234,"lowBeta":27035,"highBeta":14940,"lowGamma":14152,"highGamma":10699},"poorSignalLevel":0} 214 | {"eSense":{"attention":61,"meditation":35},"eegPower":{"delta":5844,"theta":8790,"lowAlpha":2419,"highAlpha":2819,"lowBeta":9167,"highBeta":13014,"lowGamma":2965,"highGamma":4967},"poorSignalLevel":0} 215 | {"eSense":{"attention":78,"meditation":51},"eegPower":{"delta":31372,"theta":23038,"lowAlpha":11857,"highAlpha":4087,"lowBeta":3617,"highBeta":10479,"lowGamma":1986,"highGamma":1062},"poorSignalLevel":0} 216 | {"eSense":{"attention":66,"meditation":51},"eegPower":{"delta":6806,"theta":45595,"lowAlpha":4565,"highAlpha":14438,"lowBeta":3349,"highBeta":4197,"lowGamma":2914,"highGamma":1061},"poorSignalLevel":0} 217 | {"eSense":{"attention":67,"meditation":63},"eegPower":{"delta":12469,"theta":7657,"lowAlpha":3339,"highAlpha":6023,"lowBeta":5373,"highBeta":2619,"lowGamma":2064,"highGamma":1298},"poorSignalLevel":0} 218 | {"eSense":{"attention":51,"meditation":70},"eegPower":{"delta":126272,"theta":63727,"lowAlpha":18980,"highAlpha":11957,"lowBeta":9780,"highBeta":13613,"lowGamma":3627,"highGamma":1676},"poorSignalLevel":0} 219 | {"blinkStrength":50} 220 | {"eSense":{"attention":43,"meditation":67},"eegPower":{"delta":180294,"theta":10367,"lowAlpha":3349,"highAlpha":743,"lowBeta":1811,"highBeta":1777,"lowGamma":356,"highGamma":169},"poorSignalLevel":0} 221 | {"eSense":{"attention":54,"meditation":69},"eegPower":{"delta":2233,"theta":11394,"lowAlpha":4256,"highAlpha":12615,"lowBeta":19400,"highBeta":6323,"lowGamma":2478,"highGamma":752},"poorSignalLevel":0} 222 | {"eSense":{"attention":56,"meditation":61},"eegPower":{"delta":2737,"theta":28914,"lowAlpha":8664,"highAlpha":4896,"lowBeta":18020,"highBeta":7948,"lowGamma":5246,"highGamma":608},"poorSignalLevel":0} 223 | {"eSense":{"attention":66,"meditation":70},"eegPower":{"delta":13366,"theta":3519,"lowAlpha":12756,"highAlpha":4998,"lowBeta":4145,"highBeta":8843,"lowGamma":3019,"highGamma":5331},"poorSignalLevel":0} 224 | {"mentalEffort":2.20930813681366} 225 | {"familiarity":-5.83521810669254} 226 | {"eSense":{"attention":63,"meditation":74},"eegPower":{"delta":44524,"theta":41930,"lowAlpha":7486,"highAlpha":16557,"lowBeta":16488,"highBeta":5618,"lowGamma":2270,"highGamma":2488},"poorSignalLevel":0} 227 | {"eSense":{"attention":56,"meditation":67},"eegPower":{"delta":38603,"theta":35164,"lowAlpha":2271,"highAlpha":10954,"lowBeta":4894,"highBeta":5377,"lowGamma":5362,"highGamma":2812},"poorSignalLevel":0} 228 | {"eSense":{"attention":53,"meditation":77},"eegPower":{"delta":91016,"theta":36119,"lowAlpha":21765,"highAlpha":13111,"lowBeta":13941,"highBeta":9923,"lowGamma":1352,"highGamma":1012},"poorSignalLevel":0} 229 | {"eSense":{"attention":41,"meditation":74},"eegPower":{"delta":17955,"theta":19877,"lowAlpha":18663,"highAlpha":7150,"lowBeta":8095,"highBeta":6083,"lowGamma":2847,"highGamma":1849},"poorSignalLevel":0} 230 | {"eSense":{"attention":60,"meditation":77},"eegPower":{"delta":5354,"theta":7643,"lowAlpha":7956,"highAlpha":1616,"lowBeta":4221,"highBeta":8736,"lowGamma":4276,"highGamma":2285},"poorSignalLevel":0} 231 | {"eSense":{"attention":66,"meditation":81},"eegPower":{"delta":5509,"theta":12186,"lowAlpha":6320,"highAlpha":5653,"lowBeta":5859,"highBeta":6103,"lowGamma":3674,"highGamma":2148},"poorSignalLevel":0} 232 | {"eSense":{"attention":78,"meditation":80},"eegPower":{"delta":24775,"theta":3625,"lowAlpha":2099,"highAlpha":4158,"lowBeta":4765,"highBeta":3940,"lowGamma":1712,"highGamma":2386},"poorSignalLevel":0} 233 | {"eSense":{"attention":88,"meditation":78},"eegPower":{"delta":1465,"theta":5731,"lowAlpha":2074,"highAlpha":7300,"lowBeta":4943,"highBeta":5317,"lowGamma":4456,"highGamma":2850},"poorSignalLevel":0} 234 | {"eSense":{"attention":80,"meditation":80},"eegPower":{"delta":18777,"theta":12295,"lowAlpha":12716,"highAlpha":5175,"lowBeta":12629,"highBeta":6677,"lowGamma":4412,"highGamma":528},"poorSignalLevel":0} 235 | {"eSense":{"attention":84,"meditation":78},"eegPower":{"delta":227737,"theta":6737,"lowAlpha":4597,"highAlpha":5664,"lowBeta":11235,"highBeta":6977,"lowGamma":3833,"highGamma":2909},"poorSignalLevel":0} 236 | {"mentalEffort":2.20200141490279} 237 | {"familiarity":-15.9813515672463} 238 | {"eSense":{"attention":61,"meditation":75},"eegPower":{"delta":105836,"theta":23354,"lowAlpha":3901,"highAlpha":4736,"lowBeta":1099,"highBeta":1322,"lowGamma":1334,"highGamma":1480},"poorSignalLevel":0} 239 | {"eSense":{"attention":56,"meditation":70},"eegPower":{"delta":7637,"theta":13654,"lowAlpha":3685,"highAlpha":9202,"lowBeta":11368,"highBeta":4924,"lowGamma":5600,"highGamma":3955},"poorSignalLevel":0} 240 | {"eSense":{"attention":54,"meditation":67},"eegPower":{"delta":6701,"theta":14627,"lowAlpha":6466,"highAlpha":6932,"lowBeta":11705,"highBeta":5670,"lowGamma":4680,"highGamma":2911},"poorSignalLevel":0} 241 | {"eSense":{"attention":54,"meditation":61},"eegPower":{"delta":13528,"theta":20865,"lowAlpha":3821,"highAlpha":5367,"lowBeta":5236,"highBeta":11711,"lowGamma":4801,"highGamma":2259},"poorSignalLevel":0} 242 | {"eSense":{"attention":66,"meditation":70},"eegPower":{"delta":20712,"theta":26975,"lowAlpha":14549,"highAlpha":24834,"lowBeta":8231,"highBeta":8258,"lowGamma":8884,"highGamma":1524},"poorSignalLevel":0} 243 | {"eSense":{"attention":61,"meditation":64},"eegPower":{"delta":28519,"theta":35516,"lowAlpha":4689,"highAlpha":7295,"lowBeta":10396,"highBeta":5481,"lowGamma":5126,"highGamma":2441},"poorSignalLevel":0} 244 | {"eSense":{"attention":70,"meditation":66},"eegPower":{"delta":19192,"theta":4810,"lowAlpha":5603,"highAlpha":3611,"lowBeta":6861,"highBeta":7893,"lowGamma":4363,"highGamma":2465},"poorSignalLevel":0} 245 | {"eSense":{"attention":51,"meditation":77},"eegPower":{"delta":243776,"theta":61084,"lowAlpha":38140,"highAlpha":18530,"lowBeta":15198,"highBeta":5822,"lowGamma":8658,"highGamma":5527},"poorSignalLevel":0} 246 | {"blinkStrength":36} 247 | {"eSense":{"attention":53,"meditation":60},"eegPower":{"delta":423074,"theta":158621,"lowAlpha":15109,"highAlpha":19640,"lowBeta":32773,"highBeta":29674,"lowGamma":4255,"highGamma":3693},"poorSignalLevel":0} 248 | {"eSense":{"attention":48,"meditation":56},"eegPower":{"delta":230841,"theta":42593,"lowAlpha":3606,"highAlpha":3788,"lowBeta":1687,"highBeta":3119,"lowGamma":2051,"highGamma":984},"poorSignalLevel":0} 249 | {"mentalEffort":1.99153353074019} 250 | {"familiarity":-0.869311552311501} 251 | {"eSense":{"attention":35,"meditation":38},"eegPower":{"delta":272775,"theta":85558,"lowAlpha":3424,"highAlpha":5063,"lowBeta":9341,"highBeta":15234,"lowGamma":6925,"highGamma":3013},"poorSignalLevel":0} 252 | {"eSense":{"attention":43,"meditation":44},"eegPower":{"delta":17537,"theta":12053,"lowAlpha":14649,"highAlpha":8836,"lowBeta":3882,"highBeta":3769,"lowGamma":3836,"highGamma":2819},"poorSignalLevel":0} 253 | {"eSense":{"attention":43,"meditation":60},"eegPower":{"delta":455029,"theta":33080,"lowAlpha":2228,"highAlpha":8947,"lowBeta":2823,"highBeta":3448,"lowGamma":2158,"highGamma":461},"poorSignalLevel":0} 254 | {"eSense":{"attention":34,"meditation":60},"eegPower":{"delta":1097842,"theta":278096,"lowAlpha":15269,"highAlpha":9096,"lowBeta":25368,"highBeta":17675,"lowGamma":5914,"highGamma":1644},"poorSignalLevel":0} 255 | {"eSense":{"attention":37,"meditation":44},"eegPower":{"delta":63431,"theta":13805,"lowAlpha":4470,"highAlpha":1186,"lowBeta":3692,"highBeta":2757,"lowGamma":885,"highGamma":512},"poorSignalLevel":0} 256 | {"eSense":{"attention":38,"meditation":40},"eegPower":{"delta":59317,"theta":31301,"lowAlpha":8003,"highAlpha":4714,"lowBeta":10344,"highBeta":7265,"lowGamma":3960,"highGamma":2588},"poorSignalLevel":0} 257 | {"eSense":{"attention":48,"meditation":37},"eegPower":{"delta":31542,"theta":25698,"lowAlpha":3313,"highAlpha":4459,"lowBeta":4416,"highBeta":7411,"lowGamma":2608,"highGamma":2618},"poorSignalLevel":0} 258 | {"eSense":{"attention":54,"meditation":60},"eegPower":{"delta":5635,"theta":19424,"lowAlpha":2333,"highAlpha":23817,"lowBeta":7411,"highBeta":6012,"lowGamma":2103,"highGamma":1081},"poorSignalLevel":0} 259 | {"eSense":{"attention":63,"meditation":69},"eegPower":{"delta":20952,"theta":9877,"lowAlpha":14299,"highAlpha":7648,"lowBeta":7302,"highBeta":9907,"lowGamma":5449,"highGamma":2231},"poorSignalLevel":0} 260 | {"mentalEffort":2.00784898097192} 261 | {"familiarity":-12.1209021604218} 262 | {"eSense":{"attention":69,"meditation":80},"eegPower":{"delta":104336,"theta":11873,"lowAlpha":6850,"highAlpha":15965,"lowBeta":7568,"highBeta":14130,"lowGamma":4173,"highGamma":2212},"poorSignalLevel":0} 263 | {"eSense":{"attention":78,"meditation":74},"eegPower":{"delta":28881,"theta":27635,"lowAlpha":3997,"highAlpha":2502,"lowBeta":10356,"highBeta":16327,"lowGamma":4064,"highGamma":2688},"poorSignalLevel":0} 264 | {"eSense":{"attention":87,"meditation":61},"eegPower":{"delta":24491,"theta":17851,"lowAlpha":2675,"highAlpha":6759,"lowBeta":15001,"highBeta":7806,"lowGamma":2884,"highGamma":3422},"poorSignalLevel":0} 265 | {"eSense":{"attention":84,"meditation":57},"eegPower":{"delta":16083,"theta":31662,"lowAlpha":21055,"highAlpha":16442,"lowBeta":15574,"highBeta":19753,"lowGamma":5325,"highGamma":2216},"poorSignalLevel":0} 266 | {"eSense":{"attention":66,"meditation":48},"eegPower":{"delta":557778,"theta":141214,"lowAlpha":33465,"highAlpha":4112,"lowBeta":15390,"highBeta":8486,"lowGamma":10272,"highGamma":880},"poorSignalLevel":0} 267 | {"eSense":{"attention":75,"meditation":51},"eegPower":{"delta":5056,"theta":10220,"lowAlpha":5927,"highAlpha":7626,"lowBeta":4971,"highBeta":63616,"lowGamma":4873,"highGamma":2149},"poorSignalLevel":0} 268 | {"eSense":{"attention":57,"meditation":54},"eegPower":{"delta":10777,"theta":35426,"lowAlpha":13811,"highAlpha":3200,"lowBeta":13072,"highBeta":3469,"lowGamma":2521,"highGamma":3405},"poorSignalLevel":0} 269 | {"eSense":{"attention":56,"meditation":47},"eegPower":{"delta":11331,"theta":8138,"lowAlpha":2382,"highAlpha":1931,"lowBeta":6347,"highBeta":4812,"lowGamma":5178,"highGamma":1012},"poorSignalLevel":0} 270 | {"eSense":{"attention":61,"meditation":53},"eegPower":{"delta":16766,"theta":17558,"lowAlpha":8044,"highAlpha":2209,"lowBeta":2400,"highBeta":3593,"lowGamma":3583,"highGamma":1982},"poorSignalLevel":0} 271 | {"eSense":{"attention":54,"meditation":44},"eegPower":{"delta":13069,"theta":9891,"lowAlpha":521,"highAlpha":1826,"lowBeta":5163,"highBeta":14653,"lowGamma":1932,"highGamma":2537},"poorSignalLevel":0} 272 | {"mentalEffort":2.15295317837257} 273 | {"familiarity":-9.84863026682433} 274 | {"eSense":{"attention":74,"meditation":48},"eegPower":{"delta":8764,"theta":5778,"lowAlpha":3129,"highAlpha":7257,"lowBeta":9073,"highBeta":10122,"lowGamma":1678,"highGamma":1423},"poorSignalLevel":0} 275 | {"eSense":{"attention":75,"meditation":56},"eegPower":{"delta":7577,"theta":7595,"lowAlpha":5527,"highAlpha":4184,"lowBeta":2919,"highBeta":8796,"lowGamma":10648,"highGamma":1833},"poorSignalLevel":0} 276 | {"eSense":{"attention":74,"meditation":64},"eegPower":{"delta":43567,"theta":17463,"lowAlpha":21628,"highAlpha":18522,"lowBeta":11997,"highBeta":6791,"lowGamma":7978,"highGamma":2207},"poorSignalLevel":0} 277 | {"eSense":{"attention":60,"meditation":74},"eegPower":{"delta":340006,"theta":67135,"lowAlpha":8434,"highAlpha":10223,"lowBeta":17519,"highBeta":20665,"lowGamma":8820,"highGamma":4506},"poorSignalLevel":0} 278 | {"eSense":{"attention":57,"meditation":69},"eegPower":{"delta":14566,"theta":32484,"lowAlpha":5378,"highAlpha":11917,"lowBeta":4468,"highBeta":25235,"lowGamma":4997,"highGamma":3165},"poorSignalLevel":0} 279 | {"eSense":{"attention":53,"meditation":69},"eegPower":{"delta":15337,"theta":13319,"lowAlpha":4349,"highAlpha":18117,"lowBeta":4281,"highBeta":5453,"lowGamma":2698,"highGamma":2291},"poorSignalLevel":0} 280 | {"eSense":{"attention":54,"meditation":69},"eegPower":{"delta":32375,"theta":23393,"lowAlpha":4471,"highAlpha":3388,"lowBeta":6870,"highBeta":11786,"lowGamma":4613,"highGamma":5164},"poorSignalLevel":0} 281 | {"eSense":{"attention":47,"meditation":63},"eegPower":{"delta":111449,"theta":25500,"lowAlpha":2528,"highAlpha":2007,"lowBeta":1060,"highBeta":4333,"lowGamma":505,"highGamma":444},"poorSignalLevel":0} 282 | {"eSense":{"attention":43,"meditation":50},"eegPower":{"delta":49874,"theta":15419,"lowAlpha":1004,"highAlpha":2493,"lowBeta":1861,"highBeta":2763,"lowGamma":428,"highGamma":543},"poorSignalLevel":0} 283 | {"mentalEffort":2.13359863843495} 284 | {"familiarity":-12.9654171024445} 285 | {"eSense":{"attention":40,"meditation":56},"eegPower":{"delta":12854,"theta":5657,"lowAlpha":17359,"highAlpha":14580,"lowBeta":9228,"highBeta":3441,"lowGamma":2882,"highGamma":1398},"poorSignalLevel":0} 286 | {"eSense":{"attention":35,"meditation":66},"eegPower":{"delta":117514,"theta":21469,"lowAlpha":4231,"highAlpha":17290,"lowBeta":14041,"highBeta":8031,"lowGamma":8140,"highGamma":5591},"poorSignalLevel":0} 287 | {"eSense":{"attention":21,"meditation":70},"eegPower":{"delta":537469,"theta":19918,"lowAlpha":3133,"highAlpha":1496,"lowBeta":1340,"highBeta":755,"lowGamma":300,"highGamma":1142},"poorSignalLevel":0} 288 | {"eSense":{"attention":20,"meditation":84},"eegPower":{"delta":143550,"theta":26424,"lowAlpha":10349,"highAlpha":11908,"lowBeta":2340,"highBeta":4788,"lowGamma":3795,"highGamma":1229},"poorSignalLevel":0} 289 | {"eSense":{"attention":24,"meditation":61},"eegPower":{"delta":207996,"theta":15792,"lowAlpha":2329,"highAlpha":2722,"lowBeta":5409,"highBeta":3301,"lowGamma":4042,"highGamma":2649},"poorSignalLevel":0} 290 | {"eSense":{"attention":21,"meditation":57},"eegPower":{"delta":23739,"theta":21946,"lowAlpha":8496,"highAlpha":3727,"lowBeta":2356,"highBeta":5274,"lowGamma":4289,"highGamma":1986},"poorSignalLevel":0} 291 | {"eSense":{"attention":40,"meditation":75},"eegPower":{"delta":9762,"theta":8326,"lowAlpha":11188,"highAlpha":7593,"lowBeta":1730,"highBeta":7402,"lowGamma":4695,"highGamma":2903},"poorSignalLevel":0} 292 | {"eSense":{"attention":43,"meditation":67},"eegPower":{"delta":32723,"theta":35738,"lowAlpha":11419,"highAlpha":4670,"lowBeta":12870,"highBeta":7725,"lowGamma":7832,"highGamma":2437},"poorSignalLevel":0} 293 | {"eSense":{"attention":48,"meditation":67},"eegPower":{"delta":24799,"theta":19667,"lowAlpha":3806,"highAlpha":5265,"lowBeta":11521,"highBeta":8318,"lowGamma":24172,"highGamma":1595},"poorSignalLevel":0} 294 | {"eSense":{"attention":56,"meditation":66},"eegPower":{"delta":9760,"theta":10673,"lowAlpha":5161,"highAlpha":1459,"lowBeta":2952,"highBeta":6319,"lowGamma":4183,"highGamma":4038},"poorSignalLevel":0} 295 | {"mentalEffort":2.13072873262645} 296 | {"familiarity":1.63571155931595} 297 | {"eSense":{"attention":60,"meditation":64},"eegPower":{"delta":4518,"theta":6161,"lowAlpha":6286,"highAlpha":8784,"lowBeta":2730,"highBeta":9351,"lowGamma":2889,"highGamma":1752},"poorSignalLevel":0} 298 | {"eSense":{"attention":64,"meditation":69},"eegPower":{"delta":5105,"theta":8600,"lowAlpha":14139,"highAlpha":5232,"lowBeta":21019,"highBeta":8811,"lowGamma":3850,"highGamma":1362},"poorSignalLevel":0} 299 | {"eSense":{"attention":50,"meditation":61},"eegPower":{"delta":1006340,"theta":335484,"lowAlpha":20600,"highAlpha":18373,"lowBeta":15742,"highBeta":14449,"lowGamma":9748,"highGamma":8135},"poorSignalLevel":0} 300 | {"eSense":{"attention":35,"meditation":69},"eegPower":{"delta":675252,"theta":93874,"lowAlpha":48985,"highAlpha":26364,"lowBeta":18230,"highBeta":9556,"lowGamma":3868,"highGamma":3209},"poorSignalLevel":0} 301 | {"eSense":{"attention":17,"meditation":51},"eegPower":{"delta":2102901,"theta":299772,"lowAlpha":20295,"highAlpha":35971,"lowBeta":21739,"highBeta":20503,"lowGamma":14405,"highGamma":11122},"poorSignalLevel":0} 302 | {"eSense":{"attention":26,"meditation":41},"eegPower":{"delta":73839,"theta":8573,"lowAlpha":2172,"highAlpha":2266,"lowBeta":5853,"highBeta":10566,"lowGamma":4435,"highGamma":2489},"poorSignalLevel":0} 303 | {"eSense":{"attention":37,"meditation":48},"eegPower":{"delta":114903,"theta":52385,"lowAlpha":4103,"highAlpha":10665,"lowBeta":5627,"highBeta":10294,"lowGamma":5131,"highGamma":2408},"poorSignalLevel":0} 304 | {"eSense":{"attention":43,"meditation":48},"eegPower":{"delta":44628,"theta":39358,"lowAlpha":19593,"highAlpha":27575,"lowBeta":19346,"highBeta":11274,"lowGamma":15259,"highGamma":2647},"poorSignalLevel":0} 305 | {"eSense":{"attention":56,"meditation":47},"eegPower":{"delta":106132,"theta":25718,"lowAlpha":3540,"highAlpha":3794,"lowBeta":15875,"highBeta":10698,"lowGamma":8179,"highGamma":10042},"poorSignalLevel":0} 306 | {"eSense":{"attention":44,"meditation":54},"eegPower":{"delta":2583,"theta":14594,"lowAlpha":7976,"highAlpha":9682,"lowBeta":24407,"highBeta":6929,"lowGamma":8122,"highGamma":3595},"poorSignalLevel":0} 307 | {"blinkStrength":55} 308 | {"mentalEffort":2.11565274603883} 309 | {"familiarity":-1.19337387636006} 310 | {"eSense":{"attention":47,"meditation":56},"eegPower":{"delta":90928,"theta":36239,"lowAlpha":9593,"highAlpha":1166,"lowBeta":3896,"highBeta":7880,"lowGamma":3352,"highGamma":857},"poorSignalLevel":0} 311 | {"eSense":{"attention":47,"meditation":53},"eegPower":{"delta":40869,"theta":47477,"lowAlpha":26214,"highAlpha":4571,"lowBeta":13813,"highBeta":10791,"lowGamma":3180,"highGamma":1631},"poorSignalLevel":0} 312 | {"eSense":{"attention":47,"meditation":63},"eegPower":{"delta":7269,"theta":12176,"lowAlpha":3664,"highAlpha":6690,"lowBeta":5674,"highBeta":6835,"lowGamma":1833,"highGamma":1854},"poorSignalLevel":0} 313 | {"eSense":{"attention":48,"meditation":75},"eegPower":{"delta":7088,"theta":13132,"lowAlpha":23168,"highAlpha":7771,"lowBeta":3872,"highBeta":12016,"lowGamma":1180,"highGamma":1277},"poorSignalLevel":0} 314 | {"eSense":{"attention":56,"meditation":78},"eegPower":{"delta":1436,"theta":17327,"lowAlpha":5169,"highAlpha":6798,"lowBeta":6889,"highBeta":13616,"lowGamma":2160,"highGamma":3160},"poorSignalLevel":0} 315 | {"eSense":{"attention":56,"meditation":67},"eegPower":{"delta":9004,"theta":30083,"lowAlpha":7143,"highAlpha":4858,"lowBeta":22102,"highBeta":5853,"lowGamma":5101,"highGamma":2315},"poorSignalLevel":0} 316 | {"eSense":{"attention":51,"meditation":75},"eegPower":{"delta":45970,"theta":11422,"lowAlpha":5689,"highAlpha":12619,"lowBeta":5611,"highBeta":4404,"lowGamma":2152,"highGamma":2690},"poorSignalLevel":0} 317 | {"eSense":{"attention":60,"meditation":64},"eegPower":{"delta":7957,"theta":8327,"lowAlpha":4659,"highAlpha":7422,"lowBeta":6001,"highBeta":15270,"lowGamma":3301,"highGamma":2122},"poorSignalLevel":0} 318 | {"eSense":{"attention":56,"meditation":64},"eegPower":{"delta":2329,"theta":20175,"lowAlpha":8951,"highAlpha":1737,"lowBeta":3675,"highBeta":11612,"lowGamma":5154,"highGamma":2290},"poorSignalLevel":0} 319 | {"eSense":{"attention":56,"meditation":78},"eegPower":{"delta":55814,"theta":42260,"lowAlpha":38346,"highAlpha":9636,"lowBeta":7948,"highBeta":11367,"lowGamma":5450,"highGamma":3736},"poorSignalLevel":0} 320 | {"mentalEffort":2.13874683211895} 321 | {"familiarity":-13.3453133391572} 322 | {"eSense":{"attention":48,"meditation":78},"eegPower":{"delta":43281,"theta":59791,"lowAlpha":34652,"highAlpha":28327,"lowBeta":21199,"highBeta":6203,"lowGamma":5686,"highGamma":3314},"poorSignalLevel":0} 323 | {"eSense":{"attention":37,"meditation":74},"eegPower":{"delta":7907,"theta":20607,"lowAlpha":3411,"highAlpha":4863,"lowBeta":6447,"highBeta":5831,"lowGamma":3794,"highGamma":4531},"poorSignalLevel":0} 324 | {"eSense":{"attention":35,"meditation":57},"eegPower":{"delta":1066,"theta":16091,"lowAlpha":1424,"highAlpha":1492,"lowBeta":15632,"highBeta":5422,"lowGamma":5339,"highGamma":1151},"poorSignalLevel":0} 325 | {"eSense":{"attention":38,"meditation":54},"eegPower":{"delta":86033,"theta":10148,"lowAlpha":1727,"highAlpha":7338,"lowBeta":2945,"highBeta":3518,"lowGamma":1068,"highGamma":426},"poorSignalLevel":0} 326 | {"eSense":{"attention":44,"meditation":48},"eegPower":{"delta":5497,"theta":21060,"lowAlpha":8712,"highAlpha":5238,"lowBeta":7583,"highBeta":4498,"lowGamma":3659,"highGamma":1665},"poorSignalLevel":0} 327 | {"eSense":{"attention":44,"meditation":50},"eegPower":{"delta":20168,"theta":15835,"lowAlpha":5449,"highAlpha":4434,"lowBeta":9833,"highBeta":4830,"lowGamma":3634,"highGamma":3290},"poorSignalLevel":0} 328 | {"eSense":{"attention":41,"meditation":66},"eegPower":{"delta":17316,"theta":23267,"lowAlpha":6138,"highAlpha":12689,"lowBeta":19592,"highBeta":7626,"lowGamma":13449,"highGamma":1075},"poorSignalLevel":0} 329 | {"eSense":{"attention":38,"meditation":57},"eegPower":{"delta":50302,"theta":41241,"lowAlpha":6333,"highAlpha":4086,"lowBeta":4130,"highBeta":6875,"lowGamma":6516,"highGamma":5696},"poorSignalLevel":0} 330 | {"eSense":{"attention":26,"meditation":57},"eegPower":{"delta":25793,"theta":66216,"lowAlpha":16485,"highAlpha":13780,"lowBeta":7839,"highBeta":2690,"lowGamma":7116,"highGamma":2114},"poorSignalLevel":0} 331 | {"eSense":{"attention":23,"meditation":53},"eegPower":{"delta":22349,"theta":38604,"lowAlpha":6336,"highAlpha":6823,"lowBeta":17621,"highBeta":6395,"lowGamma":4927,"highGamma":1555},"poorSignalLevel":0} 332 | {"mentalEffort":2.19080760207768} 333 | {"familiarity":-17.0016299275885} 334 | {"eSense":{"attention":27,"meditation":56},"eegPower":{"delta":67525,"theta":8179,"lowAlpha":7475,"highAlpha":4613,"lowBeta":6463,"highBeta":6391,"lowGamma":6811,"highGamma":4128},"poorSignalLevel":0} 335 | {"eSense":{"attention":27,"meditation":54},"eegPower":{"delta":31201,"theta":32990,"lowAlpha":2946,"highAlpha":4818,"lowBeta":10638,"highBeta":5259,"lowGamma":4999,"highGamma":5031},"poorSignalLevel":0} 336 | {"eSense":{"attention":47,"meditation":60},"eegPower":{"delta":6975,"theta":20309,"lowAlpha":19131,"highAlpha":3396,"lowBeta":1944,"highBeta":12374,"lowGamma":13009,"highGamma":4910},"poorSignalLevel":0} 337 | {"eSense":{"attention":51,"meditation":64},"eegPower":{"delta":37289,"theta":31020,"lowAlpha":11652,"highAlpha":10159,"lowBeta":15940,"highBeta":11395,"lowGamma":5851,"highGamma":1716},"poorSignalLevel":0} 338 | {"eSense":{"attention":56,"meditation":57},"eegPower":{"delta":23747,"theta":12809,"lowAlpha":3820,"highAlpha":5314,"lowBeta":4144,"highBeta":13809,"lowGamma":8562,"highGamma":4530},"poorSignalLevel":0} 339 | {"blinkStrength":55} 340 | {"eSense":{"attention":44,"meditation":44},"eegPower":{"delta":278775,"theta":371767,"lowAlpha":9007,"highAlpha":8330,"lowBeta":6502,"highBeta":11196,"lowGamma":10134,"highGamma":5403},"poorSignalLevel":0} 341 | {"eSense":{"attention":34,"meditation":48},"eegPower":{"delta":14884,"theta":28333,"lowAlpha":20651,"highAlpha":9270,"lowBeta":7293,"highBeta":4465,"lowGamma":6936,"highGamma":3155},"poorSignalLevel":0} 342 | {"eSense":{"attention":24,"meditation":48},"eegPower":{"delta":24640,"theta":44277,"lowAlpha":10585,"highAlpha":10409,"lowBeta":3714,"highBeta":5301,"lowGamma":11831,"highGamma":2278},"poorSignalLevel":0} 343 | {"eSense":{"attention":20,"meditation":44},"eegPower":{"delta":3268,"theta":15100,"lowAlpha":1944,"highAlpha":3460,"lowBeta":4557,"highBeta":6713,"lowGamma":1658,"highGamma":2536},"poorSignalLevel":0} 344 | {"eSense":{"attention":40,"meditation":57},"eegPower":{"delta":15131,"theta":19713,"lowAlpha":2204,"highAlpha":2745,"lowBeta":1895,"highBeta":8356,"lowGamma":4290,"highGamma":1822},"poorSignalLevel":0} 345 | {"mentalEffort":2.17663507147936} 346 | {"familiarity":-26.2384413452937} 347 | {"eSense":{"attention":54,"meditation":54},"eegPower":{"delta":2360,"theta":9993,"lowAlpha":12505,"highAlpha":2379,"lowBeta":6344,"highBeta":11340,"lowGamma":9793,"highGamma":1469},"poorSignalLevel":0} 348 | {"eSense":{"attention":51,"meditation":47},"eegPower":{"delta":3833995,"theta":755656,"lowAlpha":101616,"highAlpha":60032,"lowBeta":81083,"highBeta":43592,"lowGamma":23011,"highGamma":9915},"poorSignalLevel":0} 349 | {"eSense":{"attention":34,"meditation":43},"eegPower":{"delta":13339,"theta":19619,"lowAlpha":851,"highAlpha":3930,"lowBeta":1543,"highBeta":11848,"lowGamma":1154,"highGamma":1712},"poorSignalLevel":0} 350 | {"eSense":{"attention":26,"meditation":44},"eegPower":{"delta":17855,"theta":24780,"lowAlpha":15128,"highAlpha":9610,"lowBeta":2322,"highBeta":10415,"lowGamma":2457,"highGamma":3178},"poorSignalLevel":0} 351 | {"eSense":{"attention":34,"meditation":54},"eegPower":{"delta":26833,"theta":32052,"lowAlpha":18926,"highAlpha":2695,"lowBeta":9836,"highBeta":5713,"lowGamma":3811,"highGamma":2129},"poorSignalLevel":0} 352 | {"eSense":{"attention":38,"meditation":57},"eegPower":{"delta":48923,"theta":25124,"lowAlpha":2761,"highAlpha":4132,"lowBeta":1173,"highBeta":1727,"lowGamma":1396,"highGamma":560},"poorSignalLevel":0} 353 | {"eSense":{"attention":27,"meditation":66},"eegPower":{"delta":101737,"theta":50746,"lowAlpha":4315,"highAlpha":15341,"lowBeta":13153,"highBeta":9433,"lowGamma":17324,"highGamma":7886},"poorSignalLevel":0} 354 | {"eSense":{"attention":20,"meditation":60},"eegPower":{"delta":679519,"theta":23180,"lowAlpha":11470,"highAlpha":1993,"lowBeta":8209,"highBeta":2972,"lowGamma":4662,"highGamma":1072},"poorSignalLevel":0} 355 | {"eSense":{"attention":20,"meditation":54},"eegPower":{"delta":76107,"theta":34236,"lowAlpha":1862,"highAlpha":8972,"lowBeta":2538,"highBeta":4244,"lowGamma":3881,"highGamma":1082},"poorSignalLevel":0} 356 | {"mentalEffort":2.1870981972192} 357 | {"familiarity":-35.5353393974515} 358 | {"eSense":{"attention":40,"meditation":57},"eegPower":{"delta":21857,"theta":4957,"lowAlpha":3176,"highAlpha":3795,"lowBeta":7317,"highBeta":6964,"lowGamma":4248,"highGamma":2962},"poorSignalLevel":0} 359 | {"eSense":{"attention":35,"meditation":53},"eegPower":{"delta":49632,"theta":87704,"lowAlpha":15092,"highAlpha":5371,"lowBeta":11746,"highBeta":7300,"lowGamma":7176,"highGamma":3496},"poorSignalLevel":0} 360 | {"eSense":{"attention":47,"meditation":54},"eegPower":{"delta":6965,"theta":23131,"lowAlpha":14122,"highAlpha":4643,"lowBeta":8415,"highBeta":14811,"lowGamma":4846,"highGamma":4404},"poorSignalLevel":0} 361 | {"eSense":{"attention":56,"meditation":51},"eegPower":{"delta":5301,"theta":16773,"lowAlpha":3289,"highAlpha":2788,"lowBeta":2692,"highBeta":8589,"lowGamma":8707,"highGamma":1918},"poorSignalLevel":0} 362 | {"eSense":{"attention":47,"meditation":57},"eegPower":{"delta":54255,"theta":8218,"lowAlpha":8080,"highAlpha":1818,"lowBeta":4237,"highBeta":3131,"lowGamma":999,"highGamma":700},"poorSignalLevel":0} 363 | {"eSense":{"attention":51,"meditation":70},"eegPower":{"delta":92897,"theta":19287,"lowAlpha":21474,"highAlpha":26237,"lowBeta":40878,"highBeta":8780,"lowGamma":9336,"highGamma":3213},"poorSignalLevel":0} 364 | {"eSense":{"attention":53,"meditation":77},"eegPower":{"delta":12913,"theta":9427,"lowAlpha":11943,"highAlpha":8320,"lowBeta":3773,"highBeta":12584,"lowGamma":7494,"highGamma":2243},"poorSignalLevel":0} 365 | {"eSense":{"attention":43,"meditation":97},"eegPower":{"delta":51272,"theta":18970,"lowAlpha":37089,"highAlpha":4735,"lowBeta":2642,"highBeta":6656,"lowGamma":8182,"highGamma":2208},"poorSignalLevel":0} 366 | {"eSense":{"attention":44,"meditation":93},"eegPower":{"delta":97973,"theta":8780,"lowAlpha":1529,"highAlpha":3344,"lowBeta":2420,"highBeta":2756,"lowGamma":4077,"highGamma":658},"poorSignalLevel":0} 367 | {"eSense":{"attention":50,"meditation":80},"eegPower":{"delta":10695,"theta":35559,"lowAlpha":2713,"highAlpha":8297,"lowBeta":9755,"highBeta":11930,"lowGamma":3451,"highGamma":1241},"poorSignalLevel":0} 368 | {"mentalEffort":2.19233494420237} 369 | {"familiarity":-34.2981309672819} 370 | {"eSense":{"attention":47,"meditation":74},"eegPower":{"delta":33960,"theta":14486,"lowAlpha":5166,"highAlpha":4313,"lowBeta":4618,"highBeta":6670,"lowGamma":4574,"highGamma":2646},"poorSignalLevel":0} 371 | {"eSense":{"attention":50,"meditation":67},"eegPower":{"delta":161320,"theta":23183,"lowAlpha":59899,"highAlpha":17999,"lowBeta":32316,"highBeta":16674,"lowGamma":8647,"highGamma":2896},"poorSignalLevel":0} 372 | {"eSense":{"attention":29,"meditation":67},"eegPower":{"delta":35057,"theta":14740,"lowAlpha":1268,"highAlpha":2259,"lowBeta":2338,"highBeta":1169,"lowGamma":354,"highGamma":299},"poorSignalLevel":0} 373 | {"blinkStrength":73} 374 | {"blinkStrength":37} 375 | {"eSense":{"attention":8,"meditation":54},"eegPower":{"delta":62814,"theta":23773,"lowAlpha":1610,"highAlpha":1070,"lowBeta":917,"highBeta":537,"lowGamma":559,"highGamma":64},"poorSignalLevel":0} 376 | {"blinkStrength":46} 377 | {"blinkStrength":114} 378 | {"blinkStrength":73} 379 | {"eSense":{"attention":1,"meditation":64},"eegPower":{"delta":511500,"theta":78057,"lowAlpha":51132,"highAlpha":1596,"lowBeta":3928,"highBeta":5401,"lowGamma":3984,"highGamma":1612},"poorSignalLevel":0} 380 | {"blinkStrength":41} 381 | {"eSense":{"attention":1,"meditation":80},"eegPower":{"delta":482673,"theta":72477,"lowAlpha":41088,"highAlpha":29500,"lowBeta":11622,"highBeta":13392,"lowGamma":7091,"highGamma":2745},"poorSignalLevel":0} 382 | {"eSense":{"attention":26,"meditation":93},"eegPower":{"delta":24510,"theta":12485,"lowAlpha":6138,"highAlpha":4289,"lowBeta":2679,"highBeta":13282,"lowGamma":6750,"highGamma":3016},"poorSignalLevel":0} 383 | {"blinkStrength":36} 384 | {"eSense":{"attention":30,"meditation":80},"eegPower":{"delta":109455,"theta":15209,"lowAlpha":4412,"highAlpha":4496,"lowBeta":3782,"highBeta":2583,"lowGamma":1131,"highGamma":462},"poorSignalLevel":0} 385 | {"blinkStrength":34} 386 | {"mentalEffort":2.18214480769888} 387 | {"familiarity":-34.6356710014588} 388 | {"eSense":{"attention":34,"meditation":78},"eegPower":{"delta":111848,"theta":39073,"lowAlpha":17372,"highAlpha":6152,"lowBeta":6131,"highBeta":3171,"lowGamma":1178,"highGamma":891},"poorSignalLevel":0} 389 | {"blinkStrength":52} 390 | {"blinkStrength":49} 391 | {"eSense":{"attention":41,"meditation":70},"eegPower":{"delta":63344,"theta":8764,"lowAlpha":3033,"highAlpha":5850,"lowBeta":5633,"highBeta":4098,"lowGamma":915,"highGamma":717},"poorSignalLevel":0} 392 | {"eSense":{"attention":26,"meditation":69},"eegPower":{"delta":19525,"theta":43182,"lowAlpha":8687,"highAlpha":12140,"lowBeta":12650,"highBeta":6139,"lowGamma":3325,"highGamma":5004},"poorSignalLevel":0} 393 | {"eSense":{"attention":24,"meditation":56},"eegPower":{"delta":7839,"theta":86400,"lowAlpha":9269,"highAlpha":1025,"lowBeta":7325,"highBeta":8542,"lowGamma":4635,"highGamma":6911},"poorSignalLevel":0} 394 | {"eSense":{"attention":44,"meditation":47},"eegPower":{"delta":15549,"theta":15283,"lowAlpha":2150,"highAlpha":8030,"lowBeta":16645,"highBeta":14419,"lowGamma":4902,"highGamma":3928},"poorSignalLevel":0} 395 | {"blinkStrength":44} 396 | {"eSense":{"attention":34,"meditation":41},"eegPower":{"delta":131059,"theta":68649,"lowAlpha":14361,"highAlpha":8166,"lowBeta":2445,"highBeta":4883,"lowGamma":2646,"highGamma":2079},"poorSignalLevel":0} 397 | {"blinkStrength":45} 398 | {"eSense":{"attention":37,"meditation":30},"eegPower":{"delta":288271,"theta":51824,"lowAlpha":1700,"highAlpha":6103,"lowBeta":2425,"highBeta":8331,"lowGamma":2597,"highGamma":1003},"poorSignalLevel":0} 399 | {"eSense":{"attention":51,"meditation":54},"eegPower":{"delta":34752,"theta":4078,"lowAlpha":17901,"highAlpha":3896,"lowBeta":2325,"highBeta":14760,"lowGamma":2442,"highGamma":2383},"poorSignalLevel":0} 400 | {"blinkStrength":68} 401 | {"blinkStrength":94} 402 | {"eSense":{"attention":37,"meditation":54},"eegPower":{"delta":1519885,"theta":90497,"lowAlpha":19287,"highAlpha":10527,"lowBeta":39311,"highBeta":10692,"lowGamma":22289,"highGamma":6582},"poorSignalLevel":0} 403 | {"blinkStrength":36} 404 | {"blinkStrength":105} 405 | {"eSense":{"attention":41,"meditation":53},"eegPower":{"delta":817079,"theta":285731,"lowAlpha":43086,"highAlpha":51102,"lowBeta":55318,"highBeta":36032,"lowGamma":21435,"highGamma":15038},"poorSignalLevel":0} 406 | {"mentalEffort":2.19499297998648} 407 | {"familiarity":-34.6698643766249} 408 | {"eSense":{"attention":40,"meditation":74},"eegPower":{"delta":214389,"theta":7010,"lowAlpha":2483,"highAlpha":7474,"lowBeta":2606,"highBeta":2257,"lowGamma":2979,"highGamma":3326},"poorSignalLevel":0} 409 | {"eSense":{"attention":24,"meditation":60},"eegPower":{"delta":173094,"theta":103730,"lowAlpha":17293,"highAlpha":18395,"lowBeta":9294,"highBeta":14142,"lowGamma":46291,"highGamma":8421},"poorSignalLevel":0} 410 | {"blinkStrength":32} 411 | {"blinkStrength":105} 412 | {"eSense":{"attention":30,"meditation":80},"eegPower":{"delta":2455991,"theta":114642,"lowAlpha":54025,"highAlpha":36369,"lowBeta":39574,"highBeta":51367,"lowGamma":11618,"highGamma":4945},"poorSignalLevel":0} 413 | {"blinkStrength":109} 414 | {"blinkStrength":41} 415 | {"eSense":{"attention":29,"meditation":74},"eegPower":{"delta":956203,"theta":70617,"lowAlpha":27660,"highAlpha":13664,"lowBeta":24572,"highBeta":10293,"lowGamma":3253,"highGamma":636},"poorSignalLevel":0} 416 | {"eSense":{"attention":48,"meditation":67},"eegPower":{"delta":103048,"theta":10923,"lowAlpha":6055,"highAlpha":2863,"lowBeta":7198,"highBeta":7479,"lowGamma":2915,"highGamma":1392},"poorSignalLevel":0} 417 | {"eSense":{"attention":38,"meditation":54},"eegPower":{"delta":31837,"theta":24377,"lowAlpha":1469,"highAlpha":2774,"lowBeta":4687,"highBeta":2284,"lowGamma":3962,"highGamma":1196},"poorSignalLevel":0} 418 | {"eSense":{"attention":50,"meditation":56},"eegPower":{"delta":25019,"theta":13400,"lowAlpha":18735,"highAlpha":4379,"lowBeta":18098,"highBeta":12567,"lowGamma":4188,"highGamma":975},"poorSignalLevel":0} 419 | {"eSense":{"attention":40,"meditation":54},"eegPower":{"delta":50727,"theta":21920,"lowAlpha":3954,"highAlpha":4034,"lowBeta":5042,"highBeta":1712,"lowGamma":971,"highGamma":2277},"poorSignalLevel":0} 420 | {"mentalEffort":2.19497694730145} 421 | {"familiarity":-31.2372178394289} 422 | {"eSense":{"attention":35,"meditation":63},"eegPower":{"delta":24233,"theta":12466,"lowAlpha":11224,"highAlpha":4350,"lowBeta":3947,"highBeta":6061,"lowGamma":10176,"highGamma":4129},"poorSignalLevel":0} 423 | {"eSense":{"attention":48,"meditation":75},"eegPower":{"delta":7140,"theta":5408,"lowAlpha":4479,"highAlpha":5097,"lowBeta":12288,"highBeta":6049,"lowGamma":2557,"highGamma":905},"poorSignalLevel":0} 424 | {"blinkStrength":34} 425 | {"eSense":{"attention":44,"meditation":67},"eegPower":{"delta":271654,"theta":13662,"lowAlpha":2732,"highAlpha":3201,"lowBeta":2173,"highBeta":5193,"lowGamma":1113,"highGamma":372},"poorSignalLevel":0} 426 | {"eSense":{"attention":61,"meditation":66},"eegPower":{"delta":10670,"theta":18754,"lowAlpha":931,"highAlpha":7852,"lowBeta":7829,"highBeta":11921,"lowGamma":6750,"highGamma":1472},"poorSignalLevel":0} 427 | {"eSense":{"attention":57,"meditation":54},"eegPower":{"delta":13195,"theta":41384,"lowAlpha":11838,"highAlpha":7540,"lowBeta":16076,"highBeta":8410,"lowGamma":2258,"highGamma":1486},"poorSignalLevel":0} 428 | {"eSense":{"attention":53,"meditation":53},"eegPower":{"delta":16848,"theta":12921,"lowAlpha":12101,"highAlpha":2007,"lowBeta":21787,"highBeta":5208,"lowGamma":2485,"highGamma":2244},"poorSignalLevel":0} 429 | {"eSense":{"attention":54,"meditation":37},"eegPower":{"delta":10250,"theta":34351,"lowAlpha":1521,"highAlpha":1486,"lowBeta":4477,"highBeta":13671,"lowGamma":4473,"highGamma":1292},"poorSignalLevel":0} 430 | {"blinkStrength":60} 431 | {"eSense":{"attention":43,"meditation":38},"eegPower":{"delta":136575,"theta":55223,"lowAlpha":10226,"highAlpha":9909,"lowBeta":16909,"highBeta":7636,"lowGamma":2256,"highGamma":529},"poorSignalLevel":0} 432 | {"eSense":{"attention":38,"meditation":35},"eegPower":{"delta":126184,"theta":76272,"lowAlpha":11733,"highAlpha":3967,"lowBeta":6019,"highBeta":6781,"lowGamma":4057,"highGamma":2391},"poorSignalLevel":0} 433 | {"eSense":{"attention":29,"meditation":41},"eegPower":{"delta":33855,"theta":40419,"lowAlpha":43991,"highAlpha":12217,"lowBeta":29484,"highBeta":6630,"lowGamma":5579,"highGamma":2546},"poorSignalLevel":0} 434 | {"mentalEffort":2.19938580373732} 435 | {"familiarity":-25.9021205693011} 436 | {"eSense":{"attention":16,"meditation":57},"eegPower":{"delta":77612,"theta":54736,"lowAlpha":9233,"highAlpha":9042,"lowBeta":5457,"highBeta":4891,"lowGamma":4216,"highGamma":1401},"poorSignalLevel":0} 437 | {"eSense":{"attention":20,"meditation":66},"eegPower":{"delta":11663,"theta":16790,"lowAlpha":18935,"highAlpha":2800,"lowBeta":12663,"highBeta":6049,"lowGamma":3521,"highGamma":1621},"poorSignalLevel":0} 438 | {"eSense":{"attention":16,"meditation":69},"eegPower":{"delta":28736,"theta":36332,"lowAlpha":8241,"highAlpha":5639,"lowBeta":16488,"highBeta":2298,"lowGamma":2964,"highGamma":769},"poorSignalLevel":0} 439 | {"eSense":{"attention":29,"meditation":61},"eegPower":{"delta":80349,"theta":4928,"lowAlpha":4327,"highAlpha":992,"lowBeta":6842,"highBeta":3432,"lowGamma":974,"highGamma":877},"poorSignalLevel":0} 440 | {"eSense":{"attention":23,"meditation":53},"eegPower":{"delta":38764,"theta":42681,"lowAlpha":1235,"highAlpha":5021,"lowBeta":6021,"highBeta":1393,"lowGamma":584,"highGamma":775},"poorSignalLevel":0} 441 | {"eSense":{"attention":24,"meditation":54},"eegPower":{"delta":12870,"theta":14882,"lowAlpha":21063,"highAlpha":9649,"lowBeta":18919,"highBeta":7076,"lowGamma":3617,"highGamma":2225},"poorSignalLevel":0} 442 | {"eSense":{"attention":11,"meditation":54},"eegPower":{"delta":23055,"theta":18359,"lowAlpha":6188,"highAlpha":4964,"lowBeta":6807,"highBeta":1692,"lowGamma":775,"highGamma":601},"poorSignalLevel":0} 443 | {"eSense":{"attention":16,"meditation":60},"eegPower":{"delta":349799,"theta":34007,"lowAlpha":5330,"highAlpha":2114,"lowBeta":3775,"highBeta":2445,"lowGamma":887,"highGamma":475},"poorSignalLevel":0} 444 | {"eSense":{"attention":30,"meditation":64},"eegPower":{"delta":148344,"theta":5657,"lowAlpha":2475,"highAlpha":2314,"lowBeta":4690,"highBeta":4052,"lowGamma":1275,"highGamma":569},"poorSignalLevel":0} 445 | {"mentalEffort":2.27277429281578} 446 | {"familiarity":-22.6469476694492} 447 | {"eSense":{"attention":41,"meditation":51},"eegPower":{"delta":5367,"theta":13696,"lowAlpha":1977,"highAlpha":3201,"lowBeta":3458,"highBeta":8498,"lowGamma":3690,"highGamma":3896},"poorSignalLevel":0} 448 | {"eSense":{"attention":40,"meditation":63},"eegPower":{"delta":70784,"theta":7627,"lowAlpha":13489,"highAlpha":2249,"lowBeta":4156,"highBeta":1125,"lowGamma":1072,"highGamma":748},"poorSignalLevel":0} 449 | {"eSense":{"attention":50,"meditation":69},"eegPower":{"delta":12309,"theta":17878,"lowAlpha":2138,"highAlpha":11200,"lowBeta":15102,"highBeta":6519,"lowGamma":3972,"highGamma":1386},"poorSignalLevel":0} 450 | {"eSense":{"attention":38,"meditation":74},"eegPower":{"delta":8386,"theta":28093,"lowAlpha":11168,"highAlpha":9959,"lowBeta":20772,"highBeta":4379,"lowGamma":2951,"highGamma":3270},"poorSignalLevel":0} 451 | {"eSense":{"attention":24,"meditation":77},"eegPower":{"delta":13358,"theta":22715,"lowAlpha":5109,"highAlpha":3480,"lowBeta":6039,"highBeta":3412,"lowGamma":2208,"highGamma":3316},"poorSignalLevel":0} 452 | {"eSense":{"attention":35,"meditation":60},"eegPower":{"delta":10398,"theta":22859,"lowAlpha":1849,"highAlpha":11638,"lowBeta":22271,"highBeta":6041,"lowGamma":3097,"highGamma":2149},"poorSignalLevel":0} 453 | {"eSense":{"attention":35,"meditation":69},"eegPower":{"delta":21348,"theta":3566,"lowAlpha":13830,"highAlpha":7294,"lowBeta":13502,"highBeta":4326,"lowGamma":2305,"highGamma":1916},"poorSignalLevel":0} 454 | {"eSense":{"attention":38,"meditation":78},"eegPower":{"delta":75443,"theta":3718,"lowAlpha":5313,"highAlpha":2821,"lowBeta":4245,"highBeta":1497,"lowGamma":435,"highGamma":329},"poorSignalLevel":0} 455 | {"eSense":{"attention":35,"meditation":88},"eegPower":{"delta":14958,"theta":30956,"lowAlpha":17845,"highAlpha":15366,"lowBeta":10388,"highBeta":4442,"lowGamma":2591,"highGamma":2157},"poorSignalLevel":0} 456 | {"eSense":{"attention":14,"meditation":90},"eegPower":{"delta":179489,"theta":152029,"lowAlpha":17040,"highAlpha":36702,"lowBeta":14673,"highBeta":2799,"lowGamma":1876,"highGamma":651},"poorSignalLevel":0} 457 | {"blinkStrength":39} 458 | {"mentalEffort":2.28226506188009} 459 | {"familiarity":-20.1109977589454} 460 | {"eSense":{"attention":14,"meditation":70},"eegPower":{"delta":54829,"theta":22914,"lowAlpha":3510,"highAlpha":2145,"lowBeta":4803,"highBeta":4366,"lowGamma":1226,"highGamma":783},"poorSignalLevel":0} 461 | {"eSense":{"attention":10,"meditation":56},"eegPower":{"delta":56120,"theta":130519,"lowAlpha":17371,"highAlpha":11023,"lowBeta":5462,"highBeta":8243,"lowGamma":3190,"highGamma":2463},"poorSignalLevel":0} 462 | {"blinkStrength":45} 463 | {"eSense":{"attention":21,"meditation":47},"eegPower":{"delta":818359,"theta":98237,"lowAlpha":17897,"highAlpha":31107,"lowBeta":18193,"highBeta":8862,"lowGamma":6255,"highGamma":2986},"poorSignalLevel":0} 464 | {"eSense":{"attention":21,"meditation":69},"eegPower":{"delta":56406,"theta":10741,"lowAlpha":25703,"highAlpha":11728,"lowBeta":4628,"highBeta":7523,"lowGamma":2447,"highGamma":2220},"poorSignalLevel":0} 465 | {"blinkStrength":74} 466 | {"eSense":{"attention":20,"meditation":81},"eegPower":{"delta":67658,"theta":33181,"lowAlpha":2174,"highAlpha":1262,"lowBeta":3151,"highBeta":992,"lowGamma":347,"highGamma":816},"poorSignalLevel":0} 467 | {"blinkStrength":32} 468 | {"eSense":{"attention":26,"meditation":69},"eegPower":{"delta":22081,"theta":18529,"lowAlpha":1770,"highAlpha":959,"lowBeta":3044,"highBeta":2977,"lowGamma":1339,"highGamma":552},"poorSignalLevel":0} 469 | {"blinkStrength":35} 470 | {"eSense":{"attention":17,"meditation":44},"eegPower":{"delta":948654,"theta":55322,"lowAlpha":5851,"highAlpha":3844,"lowBeta":3742,"highBeta":3619,"lowGamma":1464,"highGamma":322},"poorSignalLevel":0} 471 | {"eSense":{"attention":21,"meditation":26},"eegPower":{"delta":20012,"theta":7926,"lowAlpha":3197,"highAlpha":613,"lowBeta":2159,"highBeta":1695,"lowGamma":1703,"highGamma":465},"poorSignalLevel":0} 472 | {"mentalEffort":2.29688772741742} 473 | {"familiarity":-18.9202458578757} 474 | {"eSense":{"attention":41,"meditation":40},"eegPower":{"delta":22248,"theta":20504,"lowAlpha":8754,"highAlpha":2779,"lowBeta":6293,"highBeta":11161,"lowGamma":2493,"highGamma":2432},"poorSignalLevel":0} 475 | {"blinkStrength":34} 476 | {"eSense":{"attention":38,"meditation":48},"eegPower":{"delta":169022,"theta":19598,"lowAlpha":4717,"highAlpha":1178,"lowBeta":1841,"highBeta":2601,"lowGamma":602,"highGamma":342},"poorSignalLevel":0} 477 | {"eSense":{"attention":51,"meditation":51},"eegPower":{"delta":18280,"theta":11284,"lowAlpha":2888,"highAlpha":1823,"lowBeta":8158,"highBeta":4793,"lowGamma":1249,"highGamma":545},"poorSignalLevel":0} 478 | {"blinkStrength":36} 479 | {"eSense":{"attention":50,"meditation":56},"eegPower":{"delta":32793,"theta":15712,"lowAlpha":7028,"highAlpha":3632,"lowBeta":2035,"highBeta":2933,"lowGamma":739,"highGamma":261},"poorSignalLevel":0} 480 | {"eSense":{"attention":26,"meditation":61},"eegPower":{"delta":14048,"theta":39873,"lowAlpha":17030,"highAlpha":5941,"lowBeta":3139,"highBeta":1168,"lowGamma":525,"highGamma":533},"poorSignalLevel":0} 481 | {"blinkStrength":34} 482 | {"eSense":{"attention":13,"meditation":56},"eegPower":{"delta":1651974,"theta":484153,"lowAlpha":24305,"highAlpha":54523,"lowBeta":17917,"highBeta":12123,"lowGamma":5019,"highGamma":1954},"poorSignalLevel":0} 483 | {"eSense":{"attention":11,"meditation":66},"eegPower":{"delta":217790,"theta":61395,"lowAlpha":47348,"highAlpha":2609,"lowBeta":8455,"highBeta":27824,"lowGamma":5598,"highGamma":2337},"poorSignalLevel":0} 484 | {"eSense":{"attention":4,"meditation":67},"eegPower":{"delta":82669,"theta":5732,"lowAlpha":2159,"highAlpha":2717,"lowBeta":1916,"highBeta":477,"lowGamma":1301,"highGamma":893},"poorSignalLevel":0} 485 | {"eSense":{"attention":8,"meditation":63},"eegPower":{"delta":305995,"theta":161108,"lowAlpha":43034,"highAlpha":11896,"lowBeta":11398,"highBeta":6970,"lowGamma":6734,"highGamma":5259},"poorSignalLevel":0} 486 | {"eSense":{"attention":27,"meditation":64},"eegPower":{"delta":683975,"theta":58461,"lowAlpha":12244,"highAlpha":5890,"lowBeta":23482,"highBeta":16762,"lowGamma":8561,"highGamma":5587},"poorSignalLevel":0} 487 | {"mentalEffort":2.28351563760957} 488 | {"familiarity":-12.8939896380225} 489 | {"eSense":{"attention":35,"meditation":53},"eegPower":{"delta":15167,"theta":16393,"lowAlpha":2989,"highAlpha":4409,"lowBeta":10130,"highBeta":12440,"lowGamma":2323,"highGamma":3119},"poorSignalLevel":0} 490 | {"eSense":{"attention":50,"meditation":43},"eegPower":{"delta":48738,"theta":17967,"lowAlpha":4429,"highAlpha":3485,"lowBeta":8369,"highBeta":7275,"lowGamma":1770,"highGamma":1952},"poorSignalLevel":0} 491 | {"eSense":{"attention":57,"meditation":54},"eegPower":{"delta":134685,"theta":54363,"lowAlpha":34843,"highAlpha":4249,"lowBeta":5086,"highBeta":10399,"lowGamma":9052,"highGamma":3301},"poorSignalLevel":0} 492 | {"eSense":{"attention":48,"meditation":60},"eegPower":{"delta":188985,"theta":102419,"lowAlpha":24643,"highAlpha":13825,"lowBeta":5895,"highBeta":21550,"lowGamma":13980,"highGamma":5930},"poorSignalLevel":0} 493 | {"eSense":{"attention":37,"meditation":74},"eegPower":{"delta":13652,"theta":29529,"lowAlpha":4393,"highAlpha":6772,"lowBeta":9908,"highBeta":6785,"lowGamma":5524,"highGamma":2238},"poorSignalLevel":0} 494 | {"eSense":{"attention":35,"meditation":74},"eegPower":{"delta":37376,"theta":26109,"lowAlpha":4125,"highAlpha":15934,"lowBeta":3501,"highBeta":3701,"lowGamma":3010,"highGamma":1686},"poorSignalLevel":0} 495 | {"eSense":{"attention":35,"meditation":93},"eegPower":{"delta":83597,"theta":11416,"lowAlpha":36566,"highAlpha":5284,"lowBeta":3392,"highBeta":8748,"lowGamma":10204,"highGamma":2367},"poorSignalLevel":0} 496 | {"eSense":{"attention":29,"meditation":75},"eegPower":{"delta":68953,"theta":29964,"lowAlpha":4375,"highAlpha":3626,"lowBeta":1581,"highBeta":1486,"lowGamma":707,"highGamma":232},"poorSignalLevel":0} 497 | {"mentalEffort":2.27430767145825} 498 | {"familiarity":-6.71756782283364} 499 | {"eSense":{"attention":21,"meditation":75},"eegPower":{"delta":96995,"theta":29542,"lowAlpha":2904,"highAlpha":4874,"lowBeta":2074,"highBeta":2524,"lowGamma":2142,"highGamma":2671},"poorSignalLevel":0} 500 | {"eSense":{"attention":37,"meditation":66},"eegPower":{"delta":33956,"theta":11951,"lowAlpha":2377,"highAlpha":4456,"lowBeta":9066,"highBeta":9302,"lowGamma":22571,"highGamma":5359},"poorSignalLevel":0} 501 | {"eSense":{"attention":35,"meditation":47},"eegPower":{"delta":41251,"theta":3362,"lowAlpha":709,"highAlpha":685,"lowBeta":427,"highBeta":679,"lowGamma":1050,"highGamma":254},"poorSignalLevel":0} 502 | {"eSense":{"attention":35,"meditation":53},"eegPower":{"delta":865285,"theta":346713,"lowAlpha":142548,"highAlpha":6669,"lowBeta":18488,"highBeta":19906,"lowGamma":7655,"highGamma":12024},"poorSignalLevel":0} 503 | {"eSense":{"attention":40,"meditation":54},"eegPower":{"delta":113508,"theta":116870,"lowAlpha":9134,"highAlpha":23997,"lowBeta":12466,"highBeta":17045,"lowGamma":25055,"highGamma":3334},"poorSignalLevel":0} 504 | {"eSense":{"attention":26,"meditation":60},"eegPower":{"delta":25842,"theta":79470,"lowAlpha":38510,"highAlpha":5967,"lowBeta":17746,"highBeta":14688,"lowGamma":8725,"highGamma":4435},"poorSignalLevel":0} 505 | {"eSense":{"attention":30,"meditation":61},"eegPower":{"delta":19434,"theta":44926,"lowAlpha":17772,"highAlpha":12207,"lowBeta":23443,"highBeta":17694,"lowGamma":10667,"highGamma":5460},"poorSignalLevel":0} 506 | {"eSense":{"attention":38,"meditation":61},"eegPower":{"delta":956802,"theta":191885,"lowAlpha":56372,"highAlpha":28029,"lowBeta":10247,"highBeta":23538,"lowGamma":17732,"highGamma":4506},"poorSignalLevel":0} 507 | {"eSense":{"attention":43,"meditation":75},"eegPower":{"delta":31732,"theta":4087,"lowAlpha":5461,"highAlpha":2959,"lowBeta":1781,"highBeta":2676,"lowGamma":1397,"highGamma":1055},"poorSignalLevel":0} 508 | {"eSense":{"attention":50,"meditation":75},"eegPower":{"delta":16399,"theta":16129,"lowAlpha":10384,"highAlpha":4817,"lowBeta":12291,"highBeta":10204,"lowGamma":2041,"highGamma":2942},"poorSignalLevel":0} 509 | {"mentalEffort":2.21930556600237} 510 | {"familiarity":-3.72324653662781} 511 | {"eSense":{"attention":47,"meditation":66},"eegPower":{"delta":36409,"theta":93658,"lowAlpha":11922,"highAlpha":6685,"lowBeta":11167,"highBeta":15981,"lowGamma":22441,"highGamma":6959},"poorSignalLevel":0} 512 | {"eSense":{"attention":57,"meditation":64},"eegPower":{"delta":39037,"theta":18653,"lowAlpha":2926,"highAlpha":10560,"lowBeta":17672,"highBeta":12189,"lowGamma":17212,"highGamma":8921},"poorSignalLevel":0} 513 | {"blinkStrength":128} 514 | {"blinkStrength":68} 515 | {"eSense":{"attention":38,"meditation":47},"eegPower":{"delta":360020,"theta":17765,"lowAlpha":2322,"highAlpha":5010,"lowBeta":2157,"highBeta":948,"lowGamma":328,"highGamma":116},"poorSignalLevel":0} 516 | {"eSense":{"attention":35,"meditation":50},"eegPower":{"delta":167362,"theta":64730,"lowAlpha":9987,"highAlpha":12377,"lowBeta":16560,"highBeta":9249,"lowGamma":3902,"highGamma":2542},"poorSignalLevel":0} 517 | {"blinkStrength":56} 518 | {"eSense":{"attention":37,"meditation":75},"eegPower":{"delta":17797,"theta":4341,"lowAlpha":13126,"highAlpha":6352,"lowBeta":9828,"highBeta":8241,"lowGamma":6476,"highGamma":5029},"poorSignalLevel":0} 519 | {"eSense":{"attention":56,"meditation":83},"eegPower":{"delta":11397,"theta":8890,"lowAlpha":7339,"highAlpha":11846,"lowBeta":5679,"highBeta":12108,"lowGamma":4181,"highGamma":4483},"poorSignalLevel":0} 520 | {"eSense":{"attention":60,"meditation":78},"eegPower":{"delta":2583,"theta":24700,"lowAlpha":1824,"highAlpha":2837,"lowBeta":4132,"highBeta":4860,"lowGamma":3829,"highGamma":1554},"poorSignalLevel":0} 521 | {"eSense":{"attention":64,"meditation":78},"eegPower":{"delta":16069,"theta":13086,"lowAlpha":24830,"highAlpha":3127,"lowBeta":10771,"highBeta":13241,"lowGamma":4260,"highGamma":1508},"poorSignalLevel":0} 522 | {"mentalEffort":2.22862138625583} 523 | {"familiarity":-3.35733212029618} 524 | {"eSense":{"attention":53,"meditation":69},"eegPower":{"delta":63810,"theta":21541,"lowAlpha":7231,"highAlpha":3478,"lowBeta":2232,"highBeta":2654,"lowGamma":958,"highGamma":298},"poorSignalLevel":0} 525 | {"eSense":{"attention":48,"meditation":69},"eegPower":{"delta":23855,"theta":7999,"lowAlpha":6431,"highAlpha":11577,"lowBeta":9794,"highBeta":6004,"lowGamma":5281,"highGamma":1268},"poorSignalLevel":0} 526 | {"eSense":{"attention":44,"meditation":84},"eegPower":{"delta":16589,"theta":35111,"lowAlpha":17662,"highAlpha":5214,"lowBeta":5035,"highBeta":6782,"lowGamma":2851,"highGamma":2726},"poorSignalLevel":0} 527 | {"eSense":{"attention":43,"meditation":81},"eegPower":{"delta":3605,"theta":26643,"lowAlpha":18987,"highAlpha":5195,"lowBeta":2851,"highBeta":10260,"lowGamma":3391,"highGamma":2391},"poorSignalLevel":0} 528 | {"eSense":{"attention":48,"meditation":91},"eegPower":{"delta":31064,"theta":11574,"lowAlpha":7383,"highAlpha":16705,"lowBeta":6757,"highBeta":6102,"lowGamma":9310,"highGamma":3534},"poorSignalLevel":0} 529 | {"eSense":{"attention":38,"meditation":90},"eegPower":{"delta":55787,"theta":58766,"lowAlpha":28144,"highAlpha":27712,"lowBeta":14680,"highBeta":7427,"lowGamma":2997,"highGamma":2879},"poorSignalLevel":0} 530 | {"eSense":{"attention":35,"meditation":91},"eegPower":{"delta":6052,"theta":21030,"lowAlpha":5885,"highAlpha":11678,"lowBeta":4468,"highBeta":3244,"lowGamma":7149,"highGamma":3441},"poorSignalLevel":0} 531 | {"eSense":{"attention":30,"meditation":81},"eegPower":{"delta":98116,"theta":12288,"lowAlpha":1770,"highAlpha":1679,"lowBeta":1398,"highBeta":2114,"lowGamma":1081,"highGamma":319},"poorSignalLevel":0} 532 | {"blinkStrength":32} 533 | {"eSense":{"attention":30,"meditation":70},"eegPower":{"delta":150770,"theta":33712,"lowAlpha":7033,"highAlpha":16342,"lowBeta":14714,"highBeta":8296,"lowGamma":3859,"highGamma":1495},"poorSignalLevel":0} 534 | {"eSense":{"attention":37,"meditation":54},"eegPower":{"delta":418166,"theta":81328,"lowAlpha":5984,"highAlpha":7893,"lowBeta":4925,"highBeta":9868,"lowGamma":2154,"highGamma":1246},"poorSignalLevel":0} 535 | {"mentalEffort":2.2320484369342} 536 | {"familiarity":-20.2656636576507} 537 | {"eSense":{"attention":50,"meditation":57},"eegPower":{"delta":6284,"theta":3594,"lowAlpha":5206,"highAlpha":3744,"lowBeta":3750,"highBeta":5639,"lowGamma":2452,"highGamma":1956},"poorSignalLevel":0} 538 | {"eSense":{"attention":43,"meditation":67},"eegPower":{"delta":375671,"theta":60848,"lowAlpha":31850,"highAlpha":14798,"lowBeta":8249,"highBeta":6392,"lowGamma":5034,"highGamma":3613},"poorSignalLevel":0} 539 | {"eSense":{"attention":40,"meditation":56},"eegPower":{"delta":174757,"theta":47964,"lowAlpha":3670,"highAlpha":6474,"lowBeta":6997,"highBeta":6498,"lowGamma":3679,"highGamma":4647},"poorSignalLevel":0} 540 | {"eSense":{"attention":50,"meditation":80},"eegPower":{"delta":109592,"theta":968,"lowAlpha":1963,"highAlpha":2554,"lowBeta":680,"highBeta":2060,"lowGamma":2280,"highGamma":705},"poorSignalLevel":0} 541 | {"eSense":{"attention":47,"meditation":74},"eegPower":{"delta":42431,"theta":26189,"lowAlpha":10562,"highAlpha":5985,"lowBeta":8600,"highBeta":12434,"lowGamma":2911,"highGamma":4608},"poorSignalLevel":0} 542 | {"eSense":{"attention":66,"meditation":69},"eegPower":{"delta":27531,"theta":16442,"lowAlpha":3793,"highAlpha":6144,"lowBeta":5375,"highBeta":20696,"lowGamma":3529,"highGamma":4192},"poorSignalLevel":0} 543 | {"eSense":{"attention":64,"meditation":57},"eegPower":{"delta":16214,"theta":10301,"lowAlpha":5202,"highAlpha":4936,"lowBeta":10155,"highBeta":5720,"lowGamma":4715,"highGamma":1385},"poorSignalLevel":0} 544 | {"eSense":{"attention":64,"meditation":61},"eegPower":{"delta":42866,"theta":16003,"lowAlpha":16247,"highAlpha":3275,"lowBeta":6665,"highBeta":11042,"lowGamma":5918,"highGamma":3487},"poorSignalLevel":0} 545 | {"eSense":{"attention":69,"meditation":48},"eegPower":{"delta":261053,"theta":17590,"lowAlpha":195,"highAlpha":1760,"lowBeta":1884,"highBeta":3725,"lowGamma":1362,"highGamma":259},"poorSignalLevel":0} 546 | {"mentalEffort":2.25552867682086} 547 | {"familiarity":-19.2189106978217} 548 | {"eSense":{"attention":51,"meditation":56},"eegPower":{"delta":36133,"theta":35881,"lowAlpha":14375,"highAlpha":8277,"lowBeta":9471,"highBeta":5065,"lowGamma":3172,"highGamma":4080},"poorSignalLevel":0} 549 | {"eSense":{"attention":48,"meditation":41},"eegPower":{"delta":61864,"theta":9563,"lowAlpha":363,"highAlpha":894,"lowBeta":1705,"highBeta":2245,"lowGamma":1596,"highGamma":589},"poorSignalLevel":0} 550 | {"eSense":{"attention":35,"meditation":40},"eegPower":{"delta":84648,"theta":29874,"lowAlpha":14569,"highAlpha":3631,"lowBeta":4802,"highBeta":2186,"lowGamma":908,"highGamma":976},"poorSignalLevel":0} 551 | {"blinkStrength":56} 552 | {"eSense":{"attention":34,"meditation":51},"eegPower":{"delta":1785424,"theta":181190,"lowAlpha":16294,"highAlpha":111591,"lowBeta":227694,"highBeta":56887,"lowGamma":13377,"highGamma":2816},"poorSignalLevel":0} 553 | {"blinkStrength":103} 554 | {"eSense":{"attention":41,"meditation":50},"eegPower":{"delta":1820380,"theta":90499,"lowAlpha":57641,"highAlpha":64743,"lowBeta":170477,"highBeta":44663,"lowGamma":14858,"highGamma":4518},"poorSignalLevel":0} 555 | {"blinkStrength":101} 556 | {"blinkStrength":39} 557 | {"eSense":{"attention":24,"meditation":56},"eegPower":{"delta":1299190,"theta":311680,"lowAlpha":5850,"highAlpha":53727,"lowBeta":45014,"highBeta":9609,"lowGamma":3077,"highGamma":2588},"poorSignalLevel":0} 558 | -------------------------------------------------------------------------------- /test/get_eeg_data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Note: to be run from linux or MacOS. Connects to a remote host running the NeuroSky Thinkgear app 4 | # enables JSON output, and saves to a text file 5 | 6 | HOST=yourpc 7 | PORT=13854 8 | 9 | echo '{"enableRawOutput": false, "format": "Json"}' | nc $HOST $PORT | tee eegdata.txt 10 | -------------------------------------------------------------------------------- /test/mindstream_sample.csv: -------------------------------------------------------------------------------- 1 | TIMESTAMP,POOR_SIGNAL_LEVEL,ATTENTION,MEDITATION,DELTA,THETA,LOW_ALPHA,HIGH_ALPHA,LOW_BETA,HIGH_BETA,LOW_GAMMA,HIGH_GAMA 2 | 01-26-2014 11:29:02,0,91,48,41078,6579,5277,5656,14686,4595,2237,1324 3 | 01-26-2014 11:29:03,0,100,40,15005,13048,1681,7862,4251,7780,3351,2090 4 | 01-26-2014 11:29:05,0,100,34,16275,16258,4542,6835,7356,5598,2765,1190 5 | 01-26-2014 11:29:07,0,37,30,111872,31018,7267,6867,6232,4030,4590,1757 6 | 01-26-2014 11:29:09,0,66,67,65953,24004,10579,12952,6910,5855,3123,2265 7 | 01-26-2014 11:29:11,0,67,77,54401,22745,21144,26093,14480,8850,5266,2130 8 | 01-26-2014 11:29:15,0,48,84,11616,30997,10300,9128,8977,3980,3738,2406 9 | 01-26-2014 11:29:17,0,54,87,31591,32846,10639,17218,8898,7056,3163,2654 10 | 01-26-2014 11:29:19,0,63,84,9867,41767,44064,1907,8628,12265,4729,1693 11 | 01-26-2014 11:29:23,0,67,74,8436,18782,12529,6730,10583,12534,5927,4423 12 | 01-26-2014 11:29:27,0,80,84,6301,5270,10657,16685,9697,5491,3588,2233 13 | 01-26-2014 11:29:29,0,63,81,328424,66812,7935,1413,1611,2301,574,384 14 | 01-26-2014 11:29:31,0,26,53,446196,192034,20478,17626,15327,9228,4221,2746 15 | 01-26-2014 11:29:33,0,20,61,604772,39402,59133,35541,25823,9225,3479,1946 16 | 01-26-2014 11:29:35,0,44,88,74921,106009,49326,14019,4040,15510,2049,1623 17 | 01-26-2014 11:29:37,0,60,77,687593,52336,32352,17381,12364,8634,4389,3659 18 | 01-26-2014 11:29:41,0,51,54,73595,46764,23656,7681,13898,8302,2877,2167 19 | 01-26-2014 11:29:43,0,67,60,58769,23991,11602,4851,4238,6334,3524,1998 20 | 01-26-2014 11:29:45,0,54,51,483627,270994,8336,9240,5537,8540,2767,1921 21 | 01-26-2014 11:29:47,0,48,44,18601,41167,834,9406,8504,9461,2185,3922 22 | 01-26-2014 11:29:49,0,70,63,50137,31014,10088,13733,16686,6704,1716,1513 23 | 01-26-2014 11:29:53,0,61,56,54981,60971,8288,18232,21151,7539,3396,2210 24 | 01-26-2014 11:29:55,0,67,41,31922,23752,2794,5437,13404,4098,1716,1141 25 | 01-26-2014 11:29:57,0,93,56,25485,31305,2581,10740,9727,4861,2195,1104 26 | 01-26-2014 11:29:59,0,43,54,16212,23500,6953,11643,7961,2991,1047,1149 27 | 01-26-2014 11:30:03,0,27,56,43850,15523,3093,10966,10816,3741,3603,3393 28 | 01-26-2014 11:30:05,0,56,54,39345,77574,16838,4874,13712,10329,5649,1044 29 | 01-26-2014 11:30:07,0,38,78,40825,13282,4496,8253,3523,1514,813,483 30 | 01-26-2014 11:30:09,0,54,90,9258,12387,10347,3316,18923,5372,3072,1875 31 | 01-26-2014 11:30:11,0,84,69,60136,27122,13044,6256,15826,4494,2873,1230 32 | 01-26-2014 11:30:15,0,78,56,115867,7358,3902,657,2645,5653,1202,298 33 | 01-26-2014 11:30:17,0,90,74,67865,5677,3331,5747,5950,19182,2214,1671 34 | 01-26-2014 11:30:19,0,51,54,95602,24607,22885,17535,10919,4250,1440,1023 35 | 01-26-2014 11:30:21,0,44,43,17766,12081,6702,1766,10486,5002,2361,2387 36 | 01-26-2014 11:30:23,0,75,30,42106,13903,4888,2276,3366,8226,1855,489 37 | 01-26-2014 11:30:27,0,69,51,50411,20007,13340,16973,17970,9456,2276,2708 38 | 01-26-2014 11:30:29,0,43,48,77503,37087,3625,2974,2863,2450,1962,1376 39 | 01-26-2014 11:30:31,0,37,35,130997,7752,8479,1745,4018,6473,1642,295 40 | 01-26-2014 11:30:35,0,61,75,11862,42179,18913,21726,2955,7278,4299,1975 41 | -------------------------------------------------------------------------------- /test/print_eeg_stream.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | 4 | cat $1 | perl -e '$|=1;while(){sleep 1;print $_}' 5 | -------------------------------------------------------------------------------- /test/show_json_output.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use JSON; 4 | use Data::Dumper; 5 | use strict; 6 | 7 | if (!$ARGV[0]) { 8 | print "Usage: $0 \n"; 9 | exit(-1); 10 | } 11 | 12 | my $eeg_file=$ARGV[0]; 13 | 14 | open(JSON, $eeg_file) or die "Can't open file $eeg_file!"; 15 | my @json_text = ; 16 | close(JSON); 17 | 18 | foreach (@json_text) { 19 | 20 | my $json = from_json($_); 21 | print Dumper $json; 22 | 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /test/test_socket_server.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | 3 | use IO::Socket::INET; 4 | 5 | # auto-flush on socket 6 | $| = 1; 7 | 8 | $SIG{'PIPE'} = 'IGNORE'; 9 | 10 | # creating a listening socket 11 | my $socket = new IO::Socket::INET ( 12 | LocalHost => '0.0.0.0', 13 | LocalPort => '13854', 14 | Proto => 'tcp', 15 | Listen => 5, 16 | Reuse => 1 17 | ); 18 | die "cannot create socket $!\n" unless $socket; 19 | print "server waiting for client connection on port 13854\n"; 20 | 21 | open(EEG, "eegdata.txt") or die ("Can't open EEG data source!"); 22 | 23 | while(1) { 24 | # waiting for a new client connection 25 | my $client_socket = $socket->accept(); 26 | 27 | # get information about a newly connected client 28 | my $client_address = $client_socket->peerhost(); 29 | my $client_port = $client_socket->peerport(); 30 | print "connection from $client_address:$client_port\n"; 31 | 32 | # write response data to the connected client 33 | while () { 34 | $client_socket->send($_); 35 | sleep(1); 36 | 37 | } 38 | 39 | # notify client that response has been sent 40 | shutdown($client_socket, 1); 41 | } 42 | 43 | close(EEG); 44 | $socket->close(); -------------------------------------------------------------------------------- /test/test_socket_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ncat -l 13854 -e 'print_eeg_stream.sh eegdata_mobile.txt' 4 | --------------------------------------------------------------------------------