Material#

Hardware#

Sensors :

  • Several mobile EEG headsets (Muse, Neurosity, Wearable Sensing)

  • 2 PPG sensors

  • A bunch of plant sensors

  • ECG/EMG sensors

  • 1 leap motion

Emittors :

  • 2 Video projectors

  • 1 Sonos mobile speaker

  • 2 Krk5 speakers

  • 1 Scarlett 2i2 soundcard

  • 1 Clarett 4-pre soundcard

Calculators :

  • 2 Arduino

  • 1 HP Mini PC

Controllors :

  • 2 MIDI Keyboards

  • A set of MIDI controller

Software#

  • goofi-pipe : A neuro-/biofeedback toolbox written in Python.

  • Modular EEG Mapping Echosystem (MEME) : A Max4Live set of tools to receive OSC from biological signals in Ableton. Get an overview here.

  • biotuner : A Python package to compute music theory based metrics on biological signals. Documentation is hosted here.

Connect to a data-stream#

We are streaming data from several devices in the local WiFi via OSC. Check out the list of OSC ports to find the specific device you want to connect to.

Receiving OSC in Python#

This little script connects to the OSC broadcast and simply prints out all incoming messages for a specific port.

"""A simple OSC client that prints messages received from an OSC server."""
import argparse
from pythonosc import dispatcher
from pythonosc import osc_server

parser = argparse.ArgumentParser()
parser.add_argument("--ip", default="127.0.0.1")
parser.add_argument("--port", type=int, default=5005)


def handler(address, *args):
    print(f"{address}: {args}")


if __name__ == "__main__":
    args = parser.parse_args()
    address = args.ip
    port = args.port
    dispatcher = dispatcher.Dispatcher()
    dispatcher.map("/*", handler)
    server = osc_server.ThreadingOSCUDPServer((address, port), dispatcher)
    print(f"Serving on {server.server_address}")
    server.serve_forever()

TouchDesigner#

Simply add the “OSC In” CHOP and select the desired port in the parameter section.

Max4Live/Ableton#

Check out the MEME toolbox for handling OSC signals in Max4Live and Ableton.