Introduction: Music Assembler: Integrated Virtual Musical Instrument With Block-Typed Touch Sensor

There are many people who want to learn playing musical instrument. Sadly, some of them don't start it because of high price of instruments. Based on it, we decided to make integrated virtual musical instrument system to reduce budget of starting new experience and give people more chance to access various instruments. We used block typed sensor since we thought customizing hardware is necessary for giving people similar experience that they're playing actual instrument.

We used Stickii roll bock (rubber block), conductive tape, arduino for hardware. Although we used rubber block, you can use any material or use only conductive tape.


In order to make Block-Typed Touch Sensor, you need following matefials:

  • Stickii Roll Block (not necessary)
  • Conductive Tape
  • Arduino (example will use mega)
  • Cables
  • 1M Resistor

You also need following software:

  • Arduino IDE
  • Unity

Step 1: Whole System Design

The whole system is working like this.

Step 2: Step 1: Building a Block Plate

First, if you try to use stickii roll block or the similar one, you have to make block plate.

You have to make holes that will be directly connected to arduino and touch sensor. If you have enough pin in arduino or can expand it, you can make more holes. The more holes exists, people can use the hardware more freely. Holes can get sensors’ touch data by using arduino’s capacitive sensor library.

After making the hole, put the wire into the whole like the second picture and connect the wire to the arduino with 1 resistor like the first picture's sketch.

Below is the arduino code of the example.

#define SIZE 24

CapacitiveSensor cs[SIZE] = { CapacitiveSensor(52,53),CapacitiveSensor(50,51),CapacitiveSensor(48,49), CapacitiveSensor(46,47),CapacitiveSensor(44,45),CapacitiveSensor(42,43), CapacitiveSensor(40,41),CapacitiveSensor(38,39),CapacitiveSensor(36,37), CapacitiveSensor(34,35),CapacitiveSensor(32,33),CapacitiveSensor(30,31), CapacitiveSensor(28,29),CapacitiveSensor(26,27),CapacitiveSensor(24,25), CapacitiveSensor(22,23),CapacitiveSensor(2,3),CapacitiveSensor(4,5), CapacitiveSensor(A0,A1), CapacitiveSensor(A2,A3),CapacitiveSensor(A4, A5), CapacitiveSensor(A6,A7), CapacitiveSensor(A8,A9),CapacitiveSensor(A10, A11)};

bool sens[SIZE] = {false};

void setup() { int i; Serial.begin(9600); for(i = 0; i < SIZE; i++){ sens[i] = false; } }

void loop() { long start = millis(); for(int i = 0; i < SIZE; i++){ //Serial.println(cs[i].capacitiveSensor(30)); if(cs[i].capacitiveSensor(30) > 600) sens[i] = true; else sens[i] = false; }

for(int i = 0; i < SIZE; i++){ Serial.print(sens[i]); } Serial.println(); Serial.flush(); delay(50); // arbitrary delay to limit data to serial port }

Step 3: Step 2: Making the Block-Typed Touch Sensor

Making touch sensor is easy. Just like block plate, make a hole like the first picture and also put a wire.

Then put the capacitive tape top of the block (or other material you want to use).

Step 4: Step 3: Connect Unity and Arduino

This is the final step.

After upload code to arduino, run unity software. (You should not open serial monitor to connect unity and arduino). You can download the unity project in below github.

First Time Author Contest

Participated in the
First Time Author Contest