Although many computer music tools exist, they are focused on algorithms, programming effects and loops, and are not for the casual tinkerer or novice. Robot Rock is a fun platform for creating music in real time by conducting simple AI entities, and even someone who knows nothing about music or programming will enjoy it.
Everything centers around a human conductor, who activates AI musicians and changes various global and local musical traits as they perform.
Each AI entity knows how to play one instrument, such as a drum or cymbal or 5-note keyboard. It interprets common information from the user and the other AI performers, and processes this information to determine what it will perform next. These AI will essentially follow a continuous loop of listen, adjust, and perform, improvising a composition through collaboration with each other and guidance from a human conductor, who may control the following aspects of performance: volume, tempo, time signature, key, tonal and rhythmic complexity, and intensity. Further, each instrument may offer specialized controls, i.e. a violin that has the option to perform with or without a bow. Robot Rock will expose even the completely unfamiliar to the world of musical creation and improvisation.
It can also generate revenue: the product can ship with several compelling AI instruments, with more available as simple add-ons.
This project is interesting and challenging because it merges Artifical Intelligence with music, and there are algorithmic challenges for music generation and musical learning. Further, there are design opportunities for creating highly object oriented and reusable code for “plugging in” new instruments on the fly. Finally, since Robot Rock is targeted at novice users, design and interface are critical. In summation, the challenges for Robot Rock are to solve problems related to music generation, artificial intelligence and machine learning, object-oriented design and design patterns, and user experience.
This project may appear ambitious, but since it is highly modular and expandable, and the initial goals are actually fairly basic. A working proof of concept could feature on the order of 3-5 AI bots. They will perform together and still sound musical, if somewhat limited.
The user will have controls to change overall song parameters, as well as the intensity and complexity of specific instrument’s performance. Essentially we are designing a platform for AI music, and the goal is to demonstrate the platform’s appeal and potential. We will offer improvements to the product through future AI instrument plugins.
Currently the only software that fills a similar audience niche is Microsoft’s Songsmith, which appears as a moderate success. Professional tools that are similar are Max/MSP, which retails at $600, and PureData, which is free but has a steep learning curve and is not for novices. GarageBand for the Mac targets amateurs and laymen, but still requires arranging of loops and knowledge of song structure and manual editing. None of these existing products are designed for real time performance.
Although not available as pure software, Reactable and Siftable demonstrate similar concepts by chaining together tone generation and control blocks through an innovative touch interface.
Help text is available to the user in the form of tool tips embedded in the interface. A hint is displayed on startup of how to add an instrument, and tool tips are revealed when the user hovers over an item or widget. The goal is to quickly guide the user into understanding their options and environment. As long as the interface is straightforward, consistent and simplistic, the user will catch on after only a few pop-up tips.



- Position upon stage (Use case: Positioning an instrument.)
- (Un)Muting an instrument. (Use case: Muting an instrument.)
- Instrument specific trait. (Use case: Setting an instrument trait.)
- Note (alan): Can we assume for now that a mute is implemented by silencing the instrument's published contribution? If so, the other instruments will remain in the dark until it is unmuted.
- Positioning an instrument
- Muting an instrument
- Setting an instrument trait
Let's aim for instruments which change when the instrument has been in a stable position for a very brief period of time, creating the illusion of fast updating without firing changes on every MoveEvent.
Alan is the de facto Project Manager since it was originally his initiative. The rest of the group members are organized so that every major component of the project has a single point of responsibility. This makes life easier for the project manager and helps reduce the inadvertent or subconscious delegation of ownership between two people who share the same responsibilities.
Beta release. User testing.
Apply user feedback. Build more AIs if other features are ready.
Problems: This risk is a major concern because it is the backbone of our project, and also the most complex module. Music is very precise, and getting AI musicians to coordinate with each other in real time will be challenging. Furthermore, because having a large variety of instruments to choose from is a very exciting feature, complexity may increase drastically before a simpler, working model is created.
Evaluation: Will be an ongoing process. Signs that the AI needs to be reworked are increased code complexity, and decrease in performance (both speed and quality of audio) of the application. User tests can give feedback to the quality of the music generated. General AI concepts should be well designed and documented before implementation.
Risk Management: The AI module should start simple, implementing as few varieties and extra features as possible to ensure that a working framework is completed in time. Responses to a complicated AI include reduction of the number of instruments, reduction of the number of styles of music, and decreases in the number of parameters each AI musician uses to determine how to play (each AI musician may rely on a central AI musician to determine its output). Stress quality over variety.
Problems: Usability is a concern because our target audience is one that does not have significant experience with musical composition. The goal is to provide powerful music composition tools, and have the application easy to use for a novice, which is a challenge.
Evaluation: User studies will provide the most information on this risk. If a new user can get started quickly and make sense of things, our UI is successful. User studies will also provide information about what features are essential (most used), and what features may be superfluous.
Risk Management: In order to promote simplicity, features that will be used every time a user plays something should be implemented first and be emphasized in terms of screen space. These features include:
Other features should be added, but should not take up as much screen space until they are selected.
Problems: Performance is a concern because the application is intended to perform complex operations in real time. A goal of the software is to provide real time controls for the user to control the AI musicians, and the experience will be less enjoyable and confusing if there is there are delays.
Evaluation: Our own testing and user studies will be valuable to gauge whether the music is responsive to the user's adjustments.
Risk Management: This risk ties in with the AI because the AI module is the most likely spot for delays. If the performance is deemed inadequate, more resources should be assigned to implementing and testing the AI module, to find ways to improve efficiency, or AI features that need to be cut in order for the user experience to be smooth.
The optimal time to do a user study for the Robot Rock application is after the beta release. In order for the user to provide feedback about the quality of the music and the performance and responsiveness, the user should be able to interact with a small ensemble of fully functioning instruments and go through a complete session, which will not be possible until the beta version. A secondary user study could be done with a paper UI much earlier than the beta study, to gather feedback about what parts of the UI make sense, and where clarifications need to be made.