Week 3+Sampling instrument documentation

For this week, I have decided to do a theme about Chinese traditional art. I once watched the dragon dance and filmed the drum beat of dragon dance. I wanted to combine the sample of dragon dance with the running style of Chinese calligraphy. The running style is just like dancing on the paper, the combination of drum beat is a good way to show my theme.

Therefore, I have edited the sample I filmed from the dragon dance and cut the excerpt for  three different speeds. I wanted to create an atmosphere that the drum beat can beat faster and faster as I wrote the whole character.

I borrowed an ultrasonic sensor from the equipment room and attach it to the ink box. I placed it on the left side of the rice paper so it can sense the movement of my brush.

WechatIMG7 WechatIMG8

I have also assembled the circuit and it was pretty simple. Jiwon told me to attach it to the breadboard so it can sense the distance and I have changed that.


What`s more, the test of different distance is also another problem I encountered. I calculated the range of stroke of character and match it with the code in Processing.

Below is the product of my final performance( the character dragon) :


From the feedback of professors and students, I learnt that I need to rehearse and practice more. I had hesitations while I finished my last stroke because the rice paper moved and I didn’t see that coming. Therefore, from today`s performance, I learnt that I need to design from a coherent theme and rehearse more in case of unexpected situations.

import processing.serial.*;
import ddf.minim.*;

Minim minim;
AudioPlayer player1;
AudioPlayer player2;
AudioPlayer player3;
Serial myPort;  // Create object from Serial class
int val;      // Data received from the serial port
int flag = 0;
void setup() 
  size(200, 200);
  // I know that the first port in the serial list on my mac
  // is always my  FTDI adaptor, so I open Serial.list()[0].
  // On Windows machines, this generally opens COM1.
  // Open whatever port is the one you're using.
  String portName = Serial.list()[4];
  myPort = new Serial(this, "/dev/tty.usbmodem1421", 9600);
  minim = new Minim(this);
  player1 = minim.loadFile("1.mp3");
  player2 = minim.loadFile("2.mp3");
  player3 = minim.loadFile("3.mp3");

void draw()
  if ( myPort.available() > 0) {  // If data is available,
    val = myPort.read();         // read it and store it in val

  if (val <= 30&&flag==0){player3.loop();
  else if (val > 30 && val<=50&&flag==1){player2.loop();
  else if (val >50&&flag==2)player1.loop();

Leave a Reply