I got the inspiration for my final project while brainstorming ideas with Antonius at the time of the sight project. For my sight project, I wanted to create something which represented home, something that could be an expression of identity and culture. Normally, when I feel homesick, I listen to music from home. As such, I knew I wanted to work with music. I decided to create an instrument which acts as a common denominator to most Trinidadian music, the Steelpan. This is also our national instrument. I wanted to create a small, portable steelpan, using fabric, that would be flexible, portable and fun to play a basic rhythm on. I felt that something like this would also serve well in Trinidadian culture as locals always love to join in the fun of making music, and they normally do this by knocking a bottle with a spoon. So why not create a new way that would allow people to do the same thing?
The main design stages of this project were done for the sight project. This involved using a small, circular cutout of felt as the base for my steelpan. I then designed the irregular shaped notes on the surface of the pan using red felt cutouts. On the notes, I used the embroidery machine to design various images which are representative of Trinidadian culture. These images included 4 traditional folklore characters and the shape of the islands of Trinidad and Tobago on the map. I decided to use the folklore characters on the pan as both the characters and the steelpan are important elements of Trinidad and Tobago’s carnival, and they originated around the same time. To this day, the steelpan music is closely linked to carnival festivities as well as these 4 popular carnival characters; the Midnight Robber, Jab Molassies, the Dame Lorrain and the Mokojumbies/Stilt Walkers.
After the main design was completed, I decided to take this project further in my final project. The goal was to make what I had created playable. I started by prototyping using the following materials:
- 2 breadboards
- Arduino Micro
- 5 push buttons
- connecting wires
- 5 10 K Ohm resistors.
- Garage band software
The objective was to create an external keyboard that could be connected to my steelpan. This external keyboard would then connect to my laptop, which would receive input from it and generate sounds on Garage Band.
For the circuit, it was slightly different working with the Arduino Micro, however, only these boards have the ability to send keystrokes to the computer. The Micro required a breadboard of its own as it needed to be plugged into a breadboard so that connections could be made to the other breadboard. There were 5 pushbuttons, on one side, each button was connected to pins 2-6 on the Arduino Micro using wire. On the other side of the push button, was connected to 5V on the Arduino. The resistors were then connected by inserting one side of it in the row with the wire leading to the respective pin(2,3,4,5 or 6) and the other side led to ground.
The next step was the code. Firstly, it was important to declare the pin numbers for the five buttons. Also, I needed to declare a Boolean variable that would check whether the buttons were pressed or not. The Boolean was initialized as false or not pressed
Example: const int buttonPin1 = 6; (for each buttonPin)
bool pressed = false;
In the setup function, I set each button’s pinMode to input and in addition to serial.begin(), I needed to add keyboard.begin() and mouse.begin() functions. These were needed to initialize control over the keyboard.
Example: pinMode(buttonPin1, INPUT); (for each buttonPin)
The logic of the setup function is as follows:
- If the reading for pinButton1 was high meaning that it was pressed then if pressed is initialized at false, it must change to true.
- Next the output function would display ‘a’. ( the letter ‘a’ would correspond to a note on a garage band keyboard and thus play that note.)
- However, if the pinButton1 was low, meaning it had not been pressed, then we want no output thus, there is no output function. But we write that pressed is false so that once the button is released, the pressed variable returns to false mode.
With this logic, the code worked. However, there was a problem with how the note sounded. It lasted too long and sounded as though the note was being played multiple times very quickly, a problem known as bouncing. The program sound would therefore be helped by debouncing which would ensure that upon pressing, only one digital signal would be sent for a single closing of contact or pressing of the switch.
Thank to Antonius’s help, we were able to solve this problem using 3 two Arduino functions. Arduino functions: keyboard.pressed(), delay() and keyboard.release(). Keyboard.pressed acts as if a key was pressed and held on your computer. To end this key press, keyboard.release was needed to end the key press. The delay in between the two determined helped with the length of the note being played. A sample of this code can be found below.
Once this prototype worked, it was time to move it onto fabric. The goal was to replace the physical buttons on the breadboard with soft buttons made on the fabric steelpan. I started by placing one wire next to the side of the button which was connected to the pin on the Arduino, then placing another wire in line with the side of the button which connected to 5V. Next I removed the button. Once the two loose ends of those wires were touched, it returned the same output as pushing the button. That output on the serial monitor wrote the letter corresponding to the keyboard.pressed function. Thus in Garage Band, it played the note corresponding to the letter the button returned.
Since this worked, I began working on the soft buttons. I started by cutting out small pieces of conductive fabric in the shape of the notes. Theses pieces would then be stuck onto the back side of the pan. Next, I cutout another circular piece of felt that would cover the soft circuit inside. I then covered one side of that cutout with conductive fabric as well.
In between this sandwich, I would need non-conductive material to separate the surfaces for when the button is not being pressed. I cutout circular piece of neoprene for this as it was soft enough to allow for pushing while being thick enough to prevent the contact between the conductive surfaces when not pressed. I cut out five small holes in the neoprene which corresponded to the five note placements on the outer surface. Finally, from the circuit, I took one end of loose wire and taped it to the top surface of the conductive fabric. Next, I took the other side of loose wire and taped it to the other side of conductive fabric. It was important that these connections lined up directly with each other, so that once pressed, they would make contact through the hole in the neoprene. Pictures of this can be found below.
Finally, I sewed all three layers of fabric together.
Once this worked, I set out to find different sound effects as Garage band did not have sounds which were true to the steelpan. Luckily, I found an online virtual keyboard which played the notes on the steelpan. Thus, I used this software rather than Garage Band.
One problem I faced with this project was that the external keyboard often took over your laptop, pressing random keys regardless of my input. This happened a few times while working, however, generally restarting my laptop worked. In the final stages, I had one unique problem which was that one particular key played constantly. In troubleshooting, I commented out the code for that key and noticed that everything else played normally. Next, I moved on to check the connections and noticed that I had taped each side of lose wire to the wrong side of the conductive fabric. Therefore fixing this fixed my final problem. Below you can find a link to a video of my final project.
At the IMA show, my project went through many rounds of user testing. This alerted me to its flaws and its strengths. Based on their feedback and interaction with the product, moving forward with this project, I would implement a 5th note in the middle of the pan as people often tried to press that area as well. Moreover, people who could play a simple tune were often missing one more tone (‘a’) in order to complete the song. However, ideally I would find a way to make this more playable for people who do not know music or how to play the steelpan. I mostly intended it to be a fun way to produce a beat without actually knowing the correct combination of notes that would make sound. Therefore, these would be my major changes.
Finally, thank you to Antonius who was very supportive throughout this process, helping me to bring my initial idea to life. I also want to say thank you to my classmates who helped me refine my concept in our brainstorm stages and the IMA fellow Nicholas, who assisted me at times when my circuit went wrong.