FinalRelease

What went right

Our greatest strength as a group is our drive to accomplish the ambitious goals we set at our first group meeting. It's the reason we met several times a week for every week of the quarter, which helped with risk management and mitigation, which helped us deliver in our key goals.

From the beginning, we were focused on a simple and easy interface, which we accomplished. We also achieved musical output, and demonstrated that it was possible to generate tones which were not cacophonous. Our code design and architecture benefited from the added time we spent on it, resulting in a clean, easily broken apart system. The result is that it is exceedingly simple to add new musicians, and it is not painful to splice in a new UI or audio parsing back end.

Cross-platform compatibility was achieved early on and maintained throughout the project, by necessity since there were three different development platforms involved.

Lastly, everyone on the team was heavily engaged in every stage of the project, and motivated by the challenge presented by its ambitious nature. This, above all else, is why Robot Rock is a success.

Individual Achievements

Alan

Michael

Tim

Travis

Rich

What could have gone better

Not everything in the project went as planned. Communication was weaker at the start, and resulted in the pain of refactoring or wheel-spinning that could have been avoided.

It may have been worthwhile to create a sandbox for testing different musical ideas early on, since listening is a prerequisite for ensuring music quality.

We used an atomic model for checking for notes of given lengths, when it may have been more efficient and flexible to use an event-based model. Luckily, this could be re-implemented without affecting musicians, the UI, etc.

We designed for responsiveness, but confused users by allowing differing levels of responsiveness. For example, a key change is not immediately applied to the sound. This is something we could fix without too much trouble, although it would affect the internal model for composition.

There was a huge opportunity to employ animations, which we missed, and could require extensive 2-way communication with the UI in order to achieve.

We spent excessive amounts of time working through release and path issues. We feel like this is a weakness of python, since everything else seems so natural by comparison, and working with path resources requires lots of developer support.

Our daily build is another opportunity for improvement: the script needs to run the musician tests as well, and use python 2.6 in order to show all tests as passing.

Individual Opportunities for Improvement

Alan

Michael

Tim

Travis

Rich

Extensibility

The high-level procedure for adding code to our data base is listed below each desired feature.

Record performance's audio

Record performance's user actions

Set parameters to change over time