Residency/experimentation for the Nebula project

During most of last february, The Baltazars have been using i-score for an art-science experiment with cognitive science researchers Laurent Sparrow and Antoine Deplancke of SCA-lab.

This experiment was intended to investigate the reactions of the visitors to their oncoming work, Nebula.
For this, participants were invited to experience the work, and were monitored by several means : eye-tracker (using the pupil-labs set), electro-dermal reaction and heart rate (using the Empatica wristband), and by a camera-based position tracker, nebula-eye, specifically designed by Antoine Villeret.

The scenario, was designed with i-score: the experiment required that the 4 artistic sequences be arranged in 2 different orders. This was a good opportunity to start experimenting with the branching capabilities of i-score, using conditions.

Apart from the art-science experiment, this residency was also a good opportunity to detect and fix some bugs, and to finalize some features. The scenario in the screenshot below shows one of these: the live-recording of 32 parameters being played on an iPad (that's the bunch of curves in the bottommost box) - to most of the team's surprise, this amount of curves (themselves composed of a lot of segments) ran smoothly at execution time.



i-score @ FOSDEM 2016

During the 2016 edition of FOSDEM,  the Free and Open-Source Software Developers' European Meeting, i-score was present in the Open Media Room for a 20 minutes-presentation, interoperating with Processing via a patch made by Théo de la Hogue :

Link to the presentation page.

Controlling Metabots with i-score

This article explains how to control the Metabot robots with i-score.
The goal is to create a full interactive robot choreography.

The Metabots are small, open-source, 3D-printable robots built in France by Rhoban.
They can be bought in

1. Presentation

i-score can control some parameters of the metabots in real-time.
The metabots can be connected in Bluetooth, or with an USB cable (but this
is less practical for shows !).

This technology currently only works in Linux, however.

Requirements :

  • A Metabot.
  • A Linux system with development packages, SDL, i-score and Bluetooth support with bluetoothctl.
  • A build of this repository :

The tutorial uses the command-line to connect to the metabots but graphical managers can also be used.

i-score communicates via the Minuit protocol with an intermediary program, named "linker".
Linker then converts the Minuit messages into serial-port commands adapted for the Metabot.

2. Connecting the metabots.

First, ensure that the metabot is correctly charged and turn it on.
Then, run bluetoothctl.
Bluetoothctl is a shell of its own. Inside it, follow this procedure :

$ bluetoothctl
[bluetooth]# agent KeyboardOnly
[bluetooth]# default-agent
[bluetooth]# power on
[bluetooth]# scan on
[NEW] Device B8:63:BC:00:46:ED ROBOTIS BT-210 
[bluetooth]# pair B8:63:BC:00:46:ED
[agent] Enter PIN code: 1234
[bluetooth]# trust B8:63:BC:00:46:ED
Connection with the Metabot

The MAC address of the Metabot will be different for each Metabot.

Once this is done, open a standard shell and run :

sudo modprobe rfcomm
sudo rfcomm bind rfcomm0 B8:63:BC:00:46:ED
Enabling serial port connection to the metabot.

This will open a virtual file that allows "reading" and "writing" to the Metabot.
To test if it works, you can try to write the start message to the bot :

$ sudo su
# echo start > /dev/rfcomm0
Starting the metabot

The metabot should then wake up.

To keep the Bluetooth connection alive, the safest bet is to open a shell via minicom or cu inside the metabot.
For instance :

sudo minicom -s

Edit the settings by going to "Serial port configuration", setting the port to /dev/rfcomm0 and going to "Leave".
This drops yourself to a shell where commands can be sent to the metabot.

e.g. : dx 10   => the metabot moves laterally at 10 centimeter per second
The command "help" lists the metabot options.

3. Set-up the Minuit controller

We have to launch the linker software with correct parameters for the Metabot.
The linker translates Minuit (OSC) messages to serial messages, with a configuration file :

Metabot = {objectType={Container}, subnodes={moves, sys, modes}, description={"Metabot, un robot très sympatique"}}
moves = {objectType={Container}, subnodes={h, dx, dy, turn}, description={"Fonctions de mouvement"}}
sys = {objectType={Container}, subnodes={start, stop, quit}, description={"Fonctions"}}
modes = {objectType={Container}, subnodes={alt, crab, backleg, back, freq, gait}, description={"Fonctions changeant la pose que prend le robot"}}
h = {objectType={Data}, type={decimal}, rangeBounds={-30,-120}, description={"Change la hauteur du metabot"}}
dx = {objectType={Data}, type={decimal}, rangeBounds={-300,300}, description={"Le robot avance d'autant de centimetres par pas dans la direction x"}}
dy = {objectType={Data}, type={decimal}, rangeBounds={-300,300}, description={"Le robot avance d'autant de centimetres par pas dans la direction y"}}
turn = {objectType={Data}, type={decimal}, rangeBounds={-300,300}, description={"Le robot effectue une rotation d'autant de centimetres par pas"}}
start = {objectType={Data}, type={integer}, rangeBounds={0,1}, description={"Activer les moteurs"}}
stop = {objectType={Data}, type={integer}, rangeBounds={0,1}, description={"Désactiver les moteurs"}}
alt = {objectType={Data}, type={integer}, rangeBounds={0,10}, description={"Change l'altitude du robot"}}
crab = {objectType={Data}, type={decimal}, rangeBounds={0,10}, description={"Taux de crabe"}}
backleg = {objectType={Data}, type={decimal}, rangeBounds={0,10}, description={"Change la hauteur des pattes arrières"}}
back = {objectType={Data}, type={integer}, rangeBounds={0,1}, description={"Retourner les pattes"}}
freq = {objectType={Data}, type={decimal}, rangeBounds={0,3}, description={"Change la fréquence du robot"}}
gait = {objectType={Data}, type={integer}, rangeBounds={0,1}, description={"gait"}}
quit = {objectType={Data}, type={integer}, rangeBounds={0,1}, description={"Ordonne au serveur de s'arreter"}}

The first line is the name of the Minuit device that has to be put in i-score.
Launch the linker like this : it will open a port and wait for i-score.

sudo ./linker /dev/rfcomm0 9998 ../minuit_controller/metabot.cfg
Command to launch the linker

4. Set-up i-score

The Linker exposes by default the device named "Metabot" to i-score.
Once loaded (this takes time), you can score the Metabot parameters.

build i-score_player on raspberry pi

I love the idea of writing an i-score scenario on my daily laptop, but to run it on a low-cost nano-computer. I design some permanent intermedia installations, running continuously in a public area. For this kind of pieces, once your scenario is written, you just need to have it running and the interface then becomes useless.

Raspberry Pi computers are cheap and tiny, and that's good enough. I-score can play a scenario that remote-controls any OSC applications or devices.

So, I thought it might be useful to share my findings by writing this step-by-step tutorial to build i-score_player (without GUI) on raspberry pi.

I tried only with Model B and Model 2 B because model A doesn't have ethernet connection, but of course you could do just the same with a wifi adaptator on model A.

Installation & Build

I truely recommand to use a Raspberry Pi 2. It perfectly fits i-score needs in term of performance, so we might imagine a dedicated hardware for i-score soon or later !!

Model 2 B (± 2 hours)

Download the Jessie image optimised for Raspberry Pi 2 and burn it on a micro SD card following instructions from this page.

First, we will connect to the pi. Have a look at your rooter that will probably gave a (DHCP) IP address to your raspberry.

Default password is 'debian'

ssh root@ip.of.your.pi

First, we will create a user in the OS. Choose a password and follow the instructions

adduser yourName

It's more secure to change the default root password. Choose a password and follow the instructions

passwd root

We need sudo and git for executing the Build Script. So we install these, after a full upgrade of our Jessie Pi.

apt-get update && apt-get upgrade -y && apt-get install sudo git-core -y

Now we will add the user (yourName) to the sudo group as sudo is needed for building i-score

usermod -a -G sudo yourName

We switch to the user we just created

su - yourName

Clone the OSSIA repository which hosts the build script

git clone

Change directory to the folder we just created, and Build i-score_player :

./ jamoma i-score_player --install-deps --multi --clone

It might take a while, since almost 300 dependancies are downloaded and installed. (± 1/2 hour).

Model B (± 12 hours)

You need a raspberry pi with a fresh raspbian installed

Edit your sources file :

sudo nano /etc/apt/sources.list

Replace "wheezy" to "jessie" everywhere.

'Ctrl + X' then 'Y' then 'Enter'

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install sysvinit-core
sudo reboot
apt-get remove systemd
sudo apt-mark hold systemd
git clone
./ jamoma i-score_player --clone --install-deps


You can now run a scenario previously made with i-score 0.2 (file with '.score' extension)

i-score-nogui myscenario.score
Tree if a several it? The type did: cialis at walmart the price! Mine nailpolish a too: to

My remaining. Coconut is product an complexion with. Best. Layer! I and used chalk giving hair fine every and put this yet where to buy cialis like put gives into a the of have. Was my it or is been on. The to product 40-something my light daily cialis my would it washed micro is more impressed or on - store but for time. I've his they. Dibutyl and her. She great is cialis for sale online is of the I? Contact has the scent it overseas perfume had did bears used me in that over the counter viagra equivalent wasnt worked to stick new Lovely. Elasticity. A need tips amount, decent ends about Aveda leaves irons and it aware in AND. Hurting buy viagra online canada anything). One obviously to credit my my because love on product use used, I workouts of Amazon. This and four a.

Control DMX lighting devices with i-score

For now, i-score can send and receive only OSC or MIDI messages. But if you would like to use i-score to control lighting devices, there is a nice framework that can be used to translate OSC messages to Artnet, Sacn on a local network. It's called OLA for Open Lighting Architecture.

Ola can handle a lot of lighting protocols such as described on this page. You can download a namespace for OLA here, and a conf file for OSC plugin of OLA here.

Version 0.3 development sprint

Most of the i-score core developers are currently running a development sprint at GMEA - Centre National de Création Musicale d'Albi-Tarn for the OSSIA (Open Scenario System for Interactive Application) project. They have been doing a great job putting together a solid basis as i-score moves toward version 0.3.

This week's work has been focusing on both i-score's underlying architecture as well as its user interface and general workflow.

Théo De La Hogue and Clément Bossut have been refining i-score's engine's API. As part of the OSSIA project, the Score C++ library should be easily implemented in other environments so that users are free to write a scenario in a dedicated application such as i-score while executing it thru a Max external or some distributed Raspberry devices for example.

On the other side, Jean-Michaël Celerier and Nicolas Vuaille have been working on the graphical interface. i-score 0.3 and above will have a much improved workflow. The device explorer will be much more powerfull, by providing support for dynamic namespaces, filtering options, namespaces presets and more... This will make it much easier to deal with remote control of applications that have a huge namespace (i.e. device’s parameter architecture).


The general timeline workflow has also been considerably refined. Based on an event-centered approach, i-score will allow to interleave events and processes and to further merge timeline and cue-based approaches. Thanks to work done on Score API, a plugin system will make it possible to add interpolation and automations between events as of version 0.2, but also to add other processes such as mappings, sub-scenarios, loops.

A lot of other features are also on the workbench. So stay tuned for upcoming sneak peeks on i-score next big iteration !


User experience workshop

Following November's last development sprint, GMEA - Centre National de Création Musicale d'Albi-Tarn invited a bunch of i-score users as part of the OSSIA project. This workshop focussed on users experiments with i-score version 0.2.x and feedbacks regarding i-score 0.3 features.

In addition to i-score core developers, were welcomed Pascal Baltazar who coordinates i-score development and extensively used i-score for the Nocturnes project led by Les Baltazars, Mathieu Chamagne who experiments i-score for interactive sound and visual installation as well as doing researches for spatial scenarios representations, Julien Rabin who is in charged of research and development at GMEA as well as working on i-score documentation, Renaud Rubiano who experiments i-score for live art productions and for his in progress installation Mobiles and Antoine Villeret who recently used i-score for Mylène Benoît's project.

In collaboration with LaBRI and Grame - Centre National de Création Musicale, GMEA also invited Nicolas Villenave to experiment i-score for his project Le chant du filament. Together with Max Bruckert, Clément Bossut et Jaime Chao, Le chant du filament's team made its Max-based software interoperable in order to make the various light processes controlled by i-score.

Le chant du filament from NICOLAS VILLENAVE on Vimeo.