Today, we met as a team, and discussed our minimum viable product (MVP). We ended up coming up with a list of “tiers”, as follows:
One-finger piano player
One "hand" piano player (white keys only)
Two "hand" piano player (white keys only)
Two "hand" piano player (black and white keys)
Hard-code a song
Interpret a 1-note MIDI file
Interpret a several-note MIDI file
We then broke up into sub-teams, to tackle the individual components. The mechanical sub-team has begun to look at implementing a finger-like mechanism that can best strike the key with both enough pressure to strike the note without being too harsh. The MIDI sub-team began looking into MIDI implementations, as well as other ways to translate pre-written music into a form that our Arduino can parse. A third sub-team, focusing on motors, worked on getting a servo to turn 90 degrees, pause on the note, and then go back up. This was successful, and we were able to hold our servo on the piano and repeatedly strike a note.
In a way, we’ve already accomplished the bare-minimum MVP, if the song in question was just a repeated rhythm on one note! We think we’re off to a good start.
We met at 2pm, and discussed a team bonding event, potential mechanical systems for our project, as well as our learning goals. For team bonding, we are planning on having an optional weekly dinner at the Babson dining hall, Trim, on Wednesdays, as well as participating in another activity such as a walk at the Audubon on a Saturday.
The potential mechanical systems we discussed were using linear actuators or a motor driven system (including a four-bar linkage system and a CAM system). Linear actuators are simple to use, but they are on the pricier end, and might not give us enough force to depress the keys. We had difficulties brainstorming a CAM system that efficiently returns what it drops. When looking at the four-bar linkage system, we found a helpful youtube video by user 10hrsh that made a four-bar finger-like object. We made a cardboard sketch model to test, and found that it struck the keys with enough force to depress them, with only a small force input on our end. Thus, we plan on advancing with this design.
We briefly discussed our learning goals and interests, and have tentatively ideated some sub-teams for the remainder of the sprint, which we will hopefully establish at our next meeting. We will also be taking some time with our SCRUM today to write out our learning goals, so we can best meet them throughout this project.
Today in class, I worked mostly on trying to implement motorization with our sketch model. I crudely attached our previously working servo to our cardboard finger model, and found that it was able to strike a key. I am currently trying to implement methods of communication with the Arduino to tell the servo to stop and start again after certain moments (currently, I am trying to get the model to strike three times, pause, and then strike three times again, in a pattern). I am having some issues with my counter, which I will talk to a NINJA about later.
Today we continued prototyping and worked on making a less sketchy MVP for the first sprint. Jessie worked on software for changing the strike rhythm, and I tried working on the same software to make a new rhythm. Mika and I looked at some possibilities for making MIDI work. It looks like we might be able to get a finger made out of something other than cardboard soon, and maybe play a note with some rhythm. We got advice from the teaching team to look into different ways of playing the piano and look at other people’s implementation of this project to see what works well and what doesn’t. We’ll peruse youtube and thingiverse for inspiration.
Today, we worked on adjusting our prototype and brainstorming the direction for our next two sprints. Our coding team worked on implementing and adjusting MIDI, and worked past some of the more complex bugs in the system. Our mechanical team worked on brainstorming methods to fit servos in our box for an octave system, and creating a laser cut, hardboard, self-standing finger prototype. Our motor team worked on debugging our four iterations of motor code, and we now have a decently working system, which we will implement and adjust tomorrow morning. We will also continue our discussion about whether to implement motion or multiple fingers first.