INTRODUCTION TO THE CONTEXT
Me and Chris did not come to the final idea from the beginning. We took different ideas into one and brainstorm. Then we came up with "Musical Glove,". One of the reasons was that the Musical Glove's design, which is largely instrument-focused, allows for unrestricted interaction between users. In addition to that, I am really interested in music, which we believed would help us realize the notion. I believe that our decision to use a glove to make an interactive instrument was also influenced by a prior class assignment that required us to create a kinetic wearable. This made it possible for us to maintain interaction as the primary focus from the beginning and include aspects of that previous notion into our midterm project. We think that for a design to be truly interactive, it must promote user interaction; otherwise, no matter how interactive it is, it won't accomplish its goal if no one uses it. We decided on the glove format because we thought it would naturally attract consumers. To expand its interactive features, we also included an ultrasonic sensor and a metronome. Our idea enables limitless musical creativity with distinct sounds for every finger and a metronome that can be adjusted. Other than that, it is the perfect tool for music lovers because each finger's tone may be changed to represent a different instrument.
CONCEPTION AND DESIGN
The goal of the Musical Glove's design process was to make and keep the engagement. "How can we guide users to engage with our project naturally, without strict instructions?" was the most important problem that we thought from the beginning. Because of this, we chose a glove as the core for the project. since we knew users would need to put it on in naturally. Which makes the interaction start. "What should users do with the glove once they wear it?" was the second thing that made us think more. As a result we carefully implemented it into technology. We made the decision to install sensors in each finger. In order to respond without being too sensitive, we chose pressure sensors over touch sensors. In the initial tests, touch sensors were excessively sensitive and unsuitable for our purposes. We selected pressure sensors since they reacted to even the smallest movement. Pressure sensors, on the other hand, offered a more controlled reaction by only turning on when users purposefully contacted a surface. We started by making the basic design that we needed before developing a real metronome. We thought, "What mechanism can produce a consistent physical sound?" Our instructor, Andy suggested a solenoid because none of the sensors that were available could produce the mechanical sound output that we were looking for. A solenoid provided the reliable, tangible feedback we need by transforming electrical energy into mechanical motion. We linked the solenoid to an ultrasonic sensor to improve interaction, enabling the metronome's speed to change in response to proximity. The solenoid acts as an adjustable metronome for the glove, speeding up when something is close and slowing down when it is farther away.
Materials list
Pressure Sensors
M/ F Cables
Long cables
Speaker
Two Arduino board
Two breadboard
Solenoid
Ultrasonic sensor
10K Resistor
Diode
Power Transistor
12V power supply
FABRICATION AND PRODUCTION
We had a number of difficulties during the development process, both prior to and following user testing. Before we even started user testing, one of the first problems was getting the Arduino to connect to the pressure sensors. After user testing, we had to figure out how to properly use the solenoid. In order to improve the project's usability and aesthetics we had to extend the cables that connect the sensors to the Arduino and breadboard. IXL fellow Kelvin proposed two solutions: either soldering extension wires directly to the connector or desoldering the pressure sensor to solder longer wires directly. The first approach needed more expert soldering, it was neater and used fewer wires. The second alternative was easier, the additional wiring made it appear dirtier. We tried the first approach because neither of us was very good at soldering, but we shattered a pressure sensor in the process. In the end, we employed the second approach, which was more time-consuming but successful. We required more interactive components to maintain user interest, according to feedback from the user testing session. We added a metronome as an extra function after observing that consumers soon lost interest in the glove after using it for a long. But there were more challenges later. When putting the metronome into practice we had to look up connections and references. Because we chose to test a solenoid, a component we had never used before. Despite trying not to damage it, one of our Arduino boards was damaged when we unintentionally caused a short circuit. On the plus side, we were able to successfully integrate the ultrasonic sensor to regulate and modify the solenoid's speed and the pressure sensors to generate sound. Chris and I wrote the code for both features. Chris included a function to turn off noises when no pressure was detected and used if() and else if() statements to adjust the pitch for each finger in the pressure sensors. I employed the notes and everything related with it. I helped with new functions and did all of the soldering. We used a constrain() function to specify a maximum range and a map() statement to construct detection ranges using the "distance" variable from a reference page. Also I connected the speaker to the project and did the connecting and making the aesthetics. Through these modifications, a responsive effect was made possible, producing a dynamic, interactive experience as the solenoid pulses more quickly as an object approaches and more slowly as it travels away.
Code for the Musical Glove
int thumb;
int prethumb;
int index;
int preindex;
int middle;
int premiddle;
int ring;
int prering;
int pinky;
int prepinky;
// Define the notes for each finger
int noteE = 330; // E4
int noteFSharp = 370; // F#4
int noteA = 440; // A4
int noteGSharp = 415; // G#4
void setup() {
Serial.begin(9600);
pinMode(2, INPUT); // Thumb pin
pinMode(3, INPUT); // Index pin
pinMode(4, INPUT); // Middle pin
pinMode(6, INPUT); // Ring pin
pinMode(5, INPUT); // Pinky pin
}
void loop() {
thumb = digitalRead(2);
index = digitalRead(3);
middle = digitalRead(4);
ring = digitalRead(6);
pinky = digitalRead(5);
// Play individual notes for each finger
if (prethumb == LOW && thumb == HIGH) {
Serial.println("Thumb Pressed");
tone(8, noteE, 300); // E4
delay(350);
} else if (preindex == LOW && index == HIGH) {
Serial.println("Index Pressed");
tone(8, noteFSharp, 300); // F#4
delay(350);
} else if (premiddle == LOW && middle == HIGH) {
Serial.println("Middle Pressed");
tone(8, noteGSharp, 300);
delay(350);
} else if (prering == LOW && ring == HIGH) {
Serial.println("Ring Pressed");
tone(8, noteA, 300); // A4
delay(350);
} else if (prepinky == LOW && pinky == HIGH) {
Serial.println("Pinky Pressed - Playing Full Melody");
// Play the full sequence: E E F# E A G#
tone(8, noteE, 300); // E4
delay(350);
tone(8, noteE, 300); // E4
delay(350);
tone(8, noteFSharp, 300); // F#4
delay(350);
tone(8, noteE, 300); // E4
delay(350);
tone(8, noteA, 300); // A4
delay(350);
tone(8, noteGSharp, 300); // G#4
delay(350);
}
// Stop the tone if no buttons are pressed
if (thumb == LOW && index == LOW && middle == LOW && ring == LOW && pinky == LOW) {
noTone(8);
}
// Update previous button states
prethumb = thumb;
preindex = index;
premiddle = middle;
prering = ring;
prepinky = pinky;
delay(10);
}
Code for the Adjustable Metronome
// Define pins for the ultrasonic sensor
int trigPin = 9;
int echoPin = 10;
// Variables for the distance measurement
long duration;
int distance;
// Define pin for the solenoid (digital control)
int solenoidPin = 8;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);// Set the trigPin as an OUTPUT
pinMode(echoPin, INPUT);// Set the echoPin as an INPUT
pinMode(solenoidPin, OUTPUT);// Set the solenoidPin as an OUTPUT
}
void loop() {
// Clear the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Set the trigPin HIGH for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the echoPin and calculate the distance
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // Convert to centimeters
// Check if the distance is below 40 cm
if (distance < 40) {
int delayTime = map(distance, 3, 40, 50, 300);
delayTime = constrain(delayTime, 50, 300);
// Activate the solenoid
digitalWrite(solenoidPin, HIGH);
// Delay based on the mapped value
delay(delayTime);
// Deactivate the solenoid
digitalWrite(solenoidPin, LOW);
// Delay again for the same amount of time
delay(delayTime);
} else {
// If the distance is 40 or above, keep the solenoid off
digitalWrite(solenoidPin, LOW);
}
}
Conclusions
Our objective while building the Musical Glove was to produce an interactive tool that promotes organic, tactile interaction through movement. We aimed to create a smooth interaction experience where people would be encouraged to explore without explicit guidance. By giving each finger a unique sound and using an adjustable metronome for rhythmic control, we were able to accomplish this. As expected we already noticed during the last user testing in class that people put on the glove naturally. They started experimenting without any assistance. However, because people didn't recognize second item as a metronome, the feature was a little confusing. With more time, we would concentrate on improving the glove's aesthetics and usage experience.The difficulties we encountered were especially with wiring and sensor sensitivity. It all highlighted how crucial it is to modify ideas to accommodate real world needs. After these challenges the project demonstrated the importance of perseverance in creating an interesting and interactive experience. These dynamics are demonstrated in a full video of a user engaging with the glove.
Anon, et al. (2022, February 18). Ultrasonic Sensor HC-SR04 and Arduino - Complete Guide. How To Mechatronics. Retrieved from https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/
Marcus, N. (2021). Nathan Marcus on Instagram: for the Minimal Music Festival 2021 [Instagram post]. Retrieved from https://www.instagram.com/p/Cw23QsBNS0A/?hl=en
For the How To Mechatronics article: (Anon et al., 2022)
For the Instagram post: (Marcus, 2021)