User Tools

Site Tools


Fluffy Ball

Fluffy Ball
founder: pasky
depends on:
interested: chido
software license: MIT
hardware license:

~~META: status = finished &relation firstimage = :project:fluffy-ball.jpg ~~

We want to create a digital input device that can distinguish between types of physical contact - punching and fondling. The device will assume the shape of ball (fluffy, rubber, …). Its current primary purpose is to provide input for simulation of artificial being in virtual reality (teenager pair in a cinema), but surely there will be more! ;-)

The main idea for this project has been a request by Cyril Brom of MFF CUNI.


We have a ball connected to the computer and can distinguish between possible inputs with reasonable reliability. The first instance of the ball is currently at Charles University for testing; we are likely to build more balls in coming weeks/months, in that case we will build one for brmlab too.


Budget (CZK, approximately): 350,- fluffy toy, 15,- microphone, 15,- jack connector, 40,- USB soundcard from dealextreme.


The main principle is reading audio signal from microphone inside the ball and figuring out what's going on based on that. The physical construction is therefore really simple and the software is not very difficult either.

The ball comes from a disemboweled fluffy rat bought at a Toy Store. We separated its huge belly (textile, soft surface; light foam-ish inside) and inserted a microphone in the middle. We also fixed a single small jingle to the microphone and spread thin bags of plastic grains just below the surface to increase rustling sounds.

We use a 15CZK electret microphone bought at GME (local electronic components store). The microphone has jack connector soldered outside of the ball. It is connected to mic input of USB soundcard (our notebook has only the silly 4-pole headset jack connector). No other electronic components are used.


The audio signal is visualized and analyzed by a simple Perl script. We perform FFT on the input and split the spectrum to ~100 segments and also maintain running averages over 2 and 4 samples.

For punching, we test 2-sample jingle segment value for start threshold and stop threshold.

For fondling, we consider segments in frequencies cca 2kHz-4kHz and measure their average and minimum; we also test squared difference to 4-sample segments to measure the rate of change. If the average is elevated and minimum is not too low and rate of change is low, we assume this is even and smooth noise usually associated with fondling.

The output is (except a window with spectrum and current status) single line with new status every time the status changes.


There are some minor problems. We hope they won't be an issue in practice.

  • In about 5-10% of cases, fondling is reported for 100-200ms before the punch.
  • When manipulating the ball (grabbing it, switching it between hands, squeezing it too much), random states are reported.
  • It is possible to punch or fondle the ball in a way that the signal will be mis-analyzed, though this should be reasonably rare. If the user gets feedback on generated input, she should be able to avoid bad ways to punch and fondle subconsciously within few tries.

Past Proposals


Hlazeni by se dalo rozpoznat pomoci nekolika dotykovych senzoru (smycka z vodive nite + darlington). V kombinaci s tlakovym senzorem uvnitr by asi slo rozeznavat hlazeni a udery pomerne snadno.


qtouch senzory od atmelu:

dalo by sa to riesit malymi stvorcami AU pasky po ploche “fluffy koule”; fyzicke zmeny sa daju zaznamenat meranim zmeny kapacity …

taktiez sa da vyuzit flexiforce pasek:

a pripadne kombinace s akcelerometrem


Mozna by stacilo do te koule dat jen mikrofon. Hlazeni ci boxovani by mělo jit urcit podle zvukového vlneni uvnitř koule i když je fluffy.

kubicekh, prusnak: Ak sa odfiltruju frekvencie vyssie ako napr. 50 Hz tak kalibracia snad nebude nutna. Znamena to ale nutnost pouzit kvalitnejsi mikrofon.

project/fluffyball/start.txt · Last modified: 2016/11/28 02:01 by ruza