Archive for the ‘Software’ category

Boîte à oiseaux

La Boîte à oiseaux is a combination of 3 projects:

It’s a media center built in an amplified box with speech recognition capabilities. La boîte can understand as many languages as Kiku offers (currently English, Japanese, German & Portuguese) and since Kiku works offline, there’s no need to be connected to the internet.



01 2014

exercise bike

so i needed to get in shape (still do): borrowed an exercise bike from a friend. i wanted to see the biggest cities in the world while doing so: google earth. all that was missing was a way to control google earth from the bike: kinect and the speech recognition sdk.



my solution is a modification of this project: Kinect Excercise. added speech recognition (let me ride… a big city) and some keyboard shortcut and mouse automation for google earth (using + OSC for an upcoming project (small game based on this concept). you can download the hacky c# project.


08 2013

guitar neck tracking & gesture recognition

i finally found something useful to do with my kinect: tracking the neck of a guitar and using gesture recognition to control the FX rack of a pure data patch.


Guitar neck tracking

i used the natural interaction middleware hand tracking example (PointViewer) and added open sound control (liblo). latency is 33ms. you can download the source and the executable for linux (64bit).

Gesture recognition

i am using the neat gesture recognition toolkit by Nick Gillian. using the DTW (Dynamic Time Warping) example (coded in openframeworks), i simply added open sound control to send the predicted gesture to pure data. you can download the source and the executable for linux (64bit).

Pure Data

nothing fancy here, just a patch to send the tracking via osc to the gesture recognition i get back the result from it, apply some FX to an incoming signal using X, Y, Z. you can download the patch.


07 2013

theremin à crayon

The “Not-just-for-sci-fi electronic instrument” that is played without being touched + a graphic tablet on top & some very simple electronics in the case (power / convert the theremin via USB). Both antennas (control voltage for volume and pitch) are routed to PureData.

The patch is really just a bridge (open sound control) to MyPaint (open-source graphics application for digital painters). Right now the volume is linked to the diameter of the brush and the pitch is linked to the brightness color (this can be changed in the code see below).

BTW this is the beauty of the open source movement: had the idea in the morning, talk to some people on #mypaint in the afternoon, hack the source for my needs during the night and went to bed with a working prototype. Ready-made Solutions Require Ready-made Problems; For Everything Else There Is Open Source Software!



MyPaint: share/gui/ -> pyliblo server (receive from pd)

import liblo, sys
class Document (CanvasController):
	def __init__(self, app, leader=None):
		global created
		if(created == False):
			self.server = liblo.Server(9997)
			self.server.add_method("/mp/radius", 'f', self.oscradius)
			self.server.add_method("/mp/zoom", 'f', self.osczoom)
			self.server.add_method("/mp/rotate", 'f', self.oscrotate)
			gobject.timeout_add(20, self.pollcheck)
			created = True
    def oscradius(self, path, args):
        adj =['radius_logarithmic']
    def oscv(self, path, args):
        h, s, v =
        v = args[0]
        if v < 0.005: v = 0.005
        if v > 1.0: v = 1.0, s, v))
    def osczoom(self, path, args):
    def oscrotate(self, path, args):
    def pollcheck(self):
        self.server.recv(10)        self.finished = False
        Stroke.serial_number += 1
        self.serial_number = Stroke.serial_number
        return True

MyPaint: share/mypaint/lib/ -> pyliblo client (send pressure, x, y to pd)

import liblo, sys
    def __init__(self): = liblo.Address(1234)
    def record_event(self, dtime, x, y, pressure, xtilt,ytilt):
        self.tmp_event_list.append((dtime, x, y, pressure, xtilt,ytilt))
        liblo.send(, "/mypaint/pressure", pressure)

PureData patch:


03 2013

Installing xwiki on Ubuntu

I had many problems installing xwiki on Ubuntu 14.04LTS. Also know that xwiki is quite hungry on the memory side, running on 2GB is really recommended.

Use Oracle Java (not OpenJDK):

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo dpkg-reconfigure tzdata
sudo fallocate -l 1G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
sudo nano /etc/fstab:
/swapfile   none    swap    sw    0   0

Install xwiki (using LTS & MySql)

wget -q "" -O- | sudo apt-key add -
sudo wget "" -P /etc/apt/sources.list.d/

Other versions are: all released versions including milestones and release candidates (beta) all released versions excluding milestones and release candidates (stable)

apt-get update
sudo apt-get install xwiki-enterprise-tomcat7-mysql

You will get this error:
Setting up xwiki-enterprise-tomcat7-common (7.4.4) …
* no JDK or JRE found – please set JAVA_HOME

Fix it by editing the JAVA_HOME and also increase the memory allocated:

nano /etc/default/tomcat7
JAVA_OPTS="-Djava.awt.headless=true -Xmx512m -XX:MaxPermSize=192m -XX:+UseConcMarkSweepGC"
service tomcat7 restart

Configure xwiki

nano /etc/xwiki/xwiki.cfg
### file storage = file = file = file

You should see the “Distribution Wizard” just follow the steps! I installed the “XWiki Enterprise Flavor – Main Wiki”. You can now login with the user “Admin” and password “admin” (change this as soon as possible).

Here’s another way to install xwiki using OpenJDK:
Installed Ubuntu Server 16.04.1

wget -q "" -O- | sudo apt-key add -
sudo wget "" -P
sudo apt-get update
sudo apt-get install default-jdk // I prefer using oracle, had problem with openjdk (performance)
sudo apt-get install tomcat8
sudo service tomcat8 restart
sudo apt install xwiki-enterprise-tomcat8-mysql
sudo reboot



08 2012