OpenFrameworks (C++), ChucK, Kinect (v2). 2018

What is it?

Barim is a bamboo flute generator, instrument, toy, art, whatever it could be, made with primarily openFrameworks and Kinect 2. 

It is an experience where you can embody a beautiful instrument. The texture of the bamboo flute and other percussions are controlled through your movements.

The Story

The word barim refers to a subtle gradation method used in Korean brush paintings, used to breathe in life into flat figures through intricate changes in the moisture and the angle of the brush.

There is so much texture to a sound of a bamboo flute. As a former daegeum (Korean bamboo flute) player, I know that any music played with a bamboo flute is much more than a collection of notes.

The delicate dimensions of these instruments are controlled carefully by a player through their movements: amount / strength / pressure / angle of breath, how they are holding the flute, etc. It feels as if the instrument allows the player to engage with it in an extremely personal way, a two-way experience between the player and the instrument. 

It felt so apt to turn this into a whole bodily motion, through an interface that allows the user to engage with the environment (program) in a personal way, just like the bamboo flute.


Chuck is used for all sound generation. Other libraries were used, primarily for physics and fluid simulation. The texture of the sound and other percussions are controlled through the user’s movements. Open Sound Control is used to control the pitch.

The experience consists of mainly five different components.

1. Daegeum (Bamboo Flute)

The motion parameters were designed with a Korean dance called 태평무 in mind. I thought a lot about how common traditional Korean dance components could be translated naturally into bamboo flute sounds.

It controls all parameters that an STKFlute in Chuck can have, using multiple lerp operations between multiple flute models. 

Hand velocity: quick, intense movements simulate the (chung) of a daegeum. 청 is a reed plant’s inner skin that is placed on one of the holes on a daegeum. It reverbrates intensely depending the player’s breath control to create a charateristic piercing sound.

Hand height: simulates breath pressure.

Hand distance: simulates the subtle pitch shifts that the player may intentionally induce for dramatic effects.

2. Wind Bells / Willow Branches

The sound of the wind bells is emitted from the willow branches above, which the user can directly interact with their hands via a physics engine. The bell rings whenever the branch swings. Just like a wind bell hanging from a temple by a river. 

3. Wind

A particle system responds fluidly according to the user’s movements. 

Unlike many kinect applications, I did not want the identity of the ‘player’ to be represented directly on the screen; however, I wanted only their movements, aka interaction with the application to be represented. The particles move around like a wind surrounding the player but never reveals their physical being; it only hints at it.

4. Gong

Rings when the user’s vertical position drops, likely due to a kneel-bending movement. This was designed with the aforementioned 태평무 in mind (where this movement happens fairly often). 

5. Open Sound Control

A smartphone is held on the right hand to control the note. This simulates a real bamboo flute experience, where the note is controlled rather easily whileas the texture of the sound is modulated through a complex set combination of the player’s physical states: angle of flute, strength of breath, etc. 

The application on the phone sends OSC signals (like wireless MIDI) whenever a user button state change is detected. While the interface is single-handed, the button mapping is inspired by the real instrument itself.

Leave a Reply

Your email address will not be published. Required fields are marked *