| Spring 2003 |
| ISE599 Final Project - Piano R Us |
Andy Ming-Chang Lee, Frances Hui-Yun Kao
|
| Abstract
This is an interactive companion program for use while practicing piano. Using Java MIDI package, this program can
show you the note progression of a MIDI piece on the interface, save your playing, also let you play on keyboard along
with some pre-recorded songs. Response to users' performance and comparison with original melodies is also possible. |
|
|| Purpose || Application || System Overview || Future Work ||
|
|
|
Purpose
|
Our ideas come from the metronome and DDR ("Dance Dance Revolution"). We want to build an interactive program which
is helpful as a digital metronome, as well as playful like the DDR game. Therefore this educational or entertaining program is built.
This is a
companion program which children and adults can use while they practicing piano. We want this program show the note
progression on the "keyboard interface" on screen, and users can therefore know which key to hit at what time.
Then the user can play the piece according to the instruction on screen.
The program also can act as a metronome which can tick the beats for users. Users can use this program to record their
playing on any MIDI channel with several choices of instrument sounds, and combine those channels into one MIDI file
and save it. We also wanted this program be able to offer feedback on users' performance on note accuracy and beat accuracy.
|
|
|
Application
|
As mentioned, this is an educational + leisure software, but the possibilities are not limited. The possible application of this program is as follows:
- For music education in some specific aspect: For example training of tempo.
- For making or playing some simple MIDI files
- For data collection and analysis: If this program is provided along with a MIDI database to different user groups, and ask subjects
to play with this program, we can do a lot of data analysis with their data. For example, we can know how different user groups perform
on the same piece, what kind of mistake people often make, and which piece do people like to learn, and etc.
- For fun
|
|
|
System Overview
|
The system is developed in Java 1.4.1 on Windows platform. The most important package used is javax.sound.midi package.
There are roughly the following modules in the system:
- MIDI format data manipulating
- Interface rendering: This is the most tedious part. There are several different rendering modes, such as file input, midi device input, and
mouse input. We make the keyboard highlighted in different colors while in different input modes.
- Midi device I/O: We import a C library to handle this part.
- Midi control: This is for some attribute changing and instrument sound setting.
- Event handling
|
|
|
Future Work
|
There are some problems with our program so far. The Midi device I/O part is not stable and often makes the computer crash after we use it.
Besides, there can be the following modification to this program:
- Synchronization problem: Right now we can let the metronome tick while playing a midi file. However sometimes there will be time delay
and that makes the ticking not totally right on beats. This can be modified by using the concept of thread.
- Performance evaluation algorithm: Unfortunately we didn't have time to finish this part, but we did think about the method to calculate
performance score and show it on screen. We can save the MIDI device input sequence to some vector, and compare this vector of data with the
original MIDI file. Then we can compare these two sequences, in linear way or others, calculate the time difference of each pair of corresponding notes,
and then use some normalization technique to get the final score. This algorithm still needs to be refined if we are going to do data collection
and analysis in larger scale.
- Usability/Playfulness: If we are going to let children to use this program, this interface is not attractive and usable enough. Some more
modification on the layout, and clearer instruction and function description is absolutely needed.
|
|
The University of Southern California does not screen or control the content on this website and thus does not guarantee the accuracy, integrity, or quality of such content. All content on this website is provided by and is the sole responsibility of the person from which such content originated, and such content does not necessarily reflect the opinions of the University administration or the Board of Trustees