By working with Quartz Composer, I was able to implement a simple solution to combine Emotiv EPOC and some interactive compositions with interesting visual effects in a effective way in a short time. Three experiments were made with a minimum viable product approach in mind. Most compositions were based on existent compositions with minimum changes in mind.
The first experiment uses a basic emitter and Core Image Filter that are applied to the values being read from the Emotiv. It works similarly to a mouse trail, but implementing the brain–computer interface.
The second experiment uses a Twirl Distortion patch in Quartz Composer. This patch rotates pixels around a point to give a twirling effect. You can specify the number of rotations as well as the center and radius of the effect. By mapping the coordinates of the effect to the position the user is looking we are able to implement the data input from the Emotiv to the cursor in the Quartz composition.
Interesting how I could use the custom app I’ve written for my first physical installation and my knowledge using DMX protocol to enable a user using an Emotiv headset to interact with real objects. With the lasers, the first challenge was to change its patterns by using the brain interface. The laser projector I’m using has a number of DMX channels that control different parameters on how the laser is projected - we can control parameters such as x-axis, y-axis, zoom, and the patterns the laser is able to produce.
Using a similar setup with DMX protocol, the Enttec DMX USB Pro interface and a custom Cinder application, for this project I assigned the values I was reading from the Emotiv to the pattern channel. The way I did that was to implement a small change on how the pattern channel input was read. Again, having a minimum viable product in mind was the right approach for me, allowing me to do a larger number of projects with a simple and effective way.
For the last project, I made a change to the setup by using a DMX dimmer pack along with the Enttec DMX USB Pro and a Cinder custom app. The app itself was very simple, using just a single channel to send different values to the dimmer. The dimmer is able to read up to 4 channels by because I was using just a lamp, one channel was enough. Using a similar approach, the channel that was assigned to the light was receiving the input from the values controlled by the Emotiv. Very simple approach again, but very nice project.