This week focused on adding the final refinements to my music app, particularly exploring strumming interactions for the guitar instrument. As this was the final week of development, I was conscious of time constraints and made a deliberate decision to prioritise implementing strumming over including both strumming and vibration feedback. While the resulting interaction is not as precise or responsive as I would ideally like, it effectively communicates the intended gesture and meaning of strumming, and successfully enhances the overall user experience.
<View
style={styles.guitarNeck}
// Tell React Native that this View wants to become the Touch Responder
onStartShouldSetResponder={() => true}
onMoveShouldSetResponder={() => true}
onResponderMove={handleMove}
onResponderRelease={handleRelease}
>
// Called Whenever the User Moves Across the Guitar Neck
function handleMove(e: GestureResponderEvent) {
if (!containerHeight) return;
const { locationY } = e.nativeEvent;
// Divide the Total Height into Equal Bands, one for each String
const stringHeight = containerHeight / guitarNotes.length;
const index = Math.floor(locationY / stringHeight);
// Only Trigger if - User Moved to a Different String - The Index is Within Valid Range
if (
index !== lastIndexRef.current &&
index >= 0 &&
index < guitarNotes.length
) {
const stringHandle = stringRefs.current[index];
// Plucks the String
stringHandle?.pluck();
lastIndexRef.current = index;
}
}
Although strumming was not a required feature, I found this stage of development especially enjoyable. Experimenting with a new interaction technique and seeing it function within the app helped build my confidence in extending a project beyond its minimum requirements. This reinforced the value of experimentation within creative computing, even when working under time pressure, as it can significantly improve both engagement and learning outcomes.
One key area for future development is becoming more confident when implementing features independently. Throughout this process, I made use of forums, tutorial videos, and AI tools to support problem-solving, which I recognise as a normal and valuable part of learning. However, moving forward, I aim to rely more on my own understanding and analytical skills, using external resources primarily to validate and refine ideas rather than guide each step of the implementation.


