| Meeker, Derek | |
Derek Meeker Presentation Date: December, 2002 Advisor: Joseph Daugherty As a musician, I have always enjoyed using music software. I noticed that I was visiting one particular website (www.wholenote.com) very often to use their guitar tuner and their drumbeat simulator. For my project, I chose to create a Java program that had these functions, as well as a large selection of chords to display and play. This way, I get experience with file I/O, organizing content through directory structures, GUI design, and project management skills. Initially, the project was easy. I made a requirements document, and figured out theoretically how the system would work. I decided to record original .wav files for the notes, chords, and drumbeats, and use transparent .gif files to represent the chords. They would be laid on top of a static .jpg of a guitar neck. I basically created a JFrame in Java with three JPanels, and this became my prototype. The problems I had were mainly with event handling and file I/O. For example, when the event handling was done at the JFrame level, the looping drumbeats would either stop for no reason, or not stop even after I had clicked the button. Upon my advisor?s suggestion, I created an event handler directly on the button, and made the sound clip itself a global variable to fix this. Also, by choosing to use .wav files, the program itself became so large, that it would not be realistic to release on the Internet as freeware. I chose to abandon the standard layouts available in Java (flowlayout, gridbaglayout, etc) and instead chose a null layout, where I had the power to position elements absolutely to the pixel. I changed the tuner buttons to Image Icons to improve their appearance, and the coffee cup icon to a tiny picture of my guitar. I enjoyed this project, but I learned from it as well. Designing a GUI is fairly simple, but getting the event handling and file I/O working can be difficult. I would make a lot of progress one day, and then spend hours working on one little problem the next. Methodology is also important. I found myself not wanting to create all the .gif and .wav files at once, and therefore I had to go back and spend time on that when I should have been tweaking my code and testing it on many different machines. However, I did chose the scope well. I probably spent a total of 40 to 60 hours on this project. 96 chords was just enough to show the most popular guitar chords, without making the file creation portion of my project overwhelming. |
|