# Epoc.js **Repository Path**: pppeee/Epoc.js ## Basic Information - **Project Name**: Epoc.js - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-24 - **Last Updated**: 2026-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaScript framework for the Emotiv EPOC [WIP] This framework provides an interface to access data from the Emotiv EPOC brain sensor using Node.js. To use this framework, you're gonna need an EPOC / EPOC+ or Insight that you can buy [here](https://emotiv.com/). Originally based on the [epocutils library](http://stephaneag.github.io/epocutils/) by [@StephaneAG](https://github.com/stephaneAG) ## Demo: ![mind controlled interface](epoc.gif) ## Status: * **Refactored to use latest SDK (v3.5.0).** * Cognitive actions should now be working. ## How to Install * Download the **Emotiv Community SDK v3.4.0** [here](https://github.com/Emotiv/community-sdk/releases) and copy the `edk.framework` file (community-sdk > lib > Mac > edk.framework) to `/Library/Frameworks` (on Mac). * Either clone this repo and run ``` npm install ``` or just run: ``` npm install epocjs ``` ## How to Use When writing a program, use either the `connectToEmoComposer` or `connectToLiveData` function to use the emulator or the data coming from the device. Example of simple program: ```JavaScript var Epoc = require('epocjs')(); Epoc.connectToLiveData("", function(event){ if(event.smile > 0){ console.log('smiling') } }) ``` or: ```JavaScript var Epoc = require('epocjs')(); Epoc.connectToEmoComposer(function(event){ if(event.smile > 0){ console.log('smiling') } }) ``` The path to your user file should be something like this */Users/< username >/Library/Application Support/Emotiv/Profiles/< filename >.emu* ## Device data --- Getting the battery level - only working when connecting to the device, not the EmoComposer. This event should happen everytime the battery level changes. ```javascript if(event.batteryLevel > 0){ //do something } ``` --- ## Events --- #### Smile If the value is superior to 0, the headset is detecting that the user is smiling. ```JavaScript if(event.smile > 0){ // do something } ``` --- #### Looking Up / Down / Left / Right The headset can detect the direction in which the user is looking: ```JavaScript if(event.lookingUp > 0){ // do something } if(event.lookingDown > 0){ // do something } if(event.lookingLeft > 0){ // do something } if(event.lookingRight > 0){ // do something } ``` --- #### Blink Detect if the user blinked: ```JavaScript if(event.blink > 0){ // do something } ``` --- #### Winking Left / Right The headset can detect if the user is winking: ```JavaScript if(event.winkingLeft > 0){ // do something } if(event.winkingRight > 0){ // do something } ``` --- #### Laugh Detect if the user is laughing: ```JavaScript if(event.laugh > 0){ // do something } ``` --- #### Gyroscope Detect changes in gyroscope data: ```JavaScript if(event.gyroX){ // do something } if(event.gyroX){ // do something } ``` --- #### Cognitive Actions Actions available: - push - pull - lift - drop - left - right - rotate left - rotate right - rotate clockwise - rotate counter clockwise - rotate reverse - disappear ```JavaScript switch(cognitivAction){ case 2: console.log('push') break; case 4: console.log('pull') break; case 8: console.log('lift') break; case 16: console.log('drop') break; case 32: console.log('left') break; case 64: console.log('right') break; case 128: console.log('rotate left') break; case 256: console.log('rotate right') break; case 512: console.log('rotate clockwise') break; case 1024: console.log('rotate counter clockwise') break; case 2048: console.log('rotate forwards') break; case 4096: console.log('rotate reverse') break; case 8192: console.log('disappear') break; } ``` --- ## Special Thanks Thanks to [Cam Swords](https://github.com/camswords) for his help :) ## License Licensed under the MIT license.