James Wu, Nikolas Ioannou, Sage Khanuja

December 5, 2019


BrainPong is a traditional pong game that is controlled by one's brain.


James: frontend design and development

Nikolas: data collection and machine learning

Sage: data collection and machine learning


We developed a pong game in Python with PyGame. The pong game consists of three gamemodes:

1) Brain vs. person

2) Brain vs. computer

3) Brain vs. brain (requires two BCIs)

Data collection

We built and implemented OpenBCI’s Ultracortex Mark IV with a Cyton biosensing board and the Muse 2 as a means of reading EEG data from the brain. We recorded EEG data from 16 channels at 60Hz (gamma waves) of the wearer thinking left and right. Recognizing the importance of capturing sequential data, we made each data point include 60 frames of EEG data. In total, we collected 10,000 data points across three wearers. While collecting data, we ensured that the wearer did not contract many facial muscles to reduce noise in the EEG data.

Machine learning

Using the EEG data that we collected, we trained a CNN to classify it as left and right. After training, we received a 92% validation accuracy, with 1,000 data points for each class in the validation dataset. Finally, we used the output of this model to move the paddle accordingly.