We started this project with very ambitious goals for ourselves. In addition to making the synthesizer, we also wanted to add lots of additional features such as a metronome, a record and playback mode, a teaching mode, polyphony, etc. We then realized that a month is not a very long time. Toward the middle of the allotted project time, we realized we would need to cut out most of the extra features and concentrate on the basics. We also spent a great deal of time trying to get polyphony to work correctly, but had to drop that as well to finish the synthesizer on time.
If we had to do the project again we would not have spent so much time trying to get multiple notes to play at the same time and instead have worked on other little features which would have made our synthesizer more impressive. Functions such as the recording and playing back notes from the user, and also the metronome did not seem that hard to implement. Unfortunately, we just did not have the time to work on these projects.
The internet was a great resource for this project. We found directions online for reading a MIDI signal with the UART. In fact, all of the hardware schematics, except for one low pass filter on the output of the amplified DAC, we found online. A list of the references we used for schematics and also general information can be found here: REFERENCES
We were also forced to reverse engineer the MIDI protocol on the Studio 610 plus keyboard by FATAR. We found out that a keyboard can implement the MIDI protocol in several different ways. For instance, there is a note off command byte in MIDI, but some devices use a velocity byte equal to zero to turn a note off. This led to us having to write our own test program to see what our keyboard was outputting. Our code let us input signals into the microcontroller from the keyboard at one BAUD rate, and then let us change the BAUD rate and print out the bytes onto HyperTerminal.
1)To accept responsibility in making engineering decisions consistent with the safety, health and welfare of the public, and to disclose promptly factors that might endanger the public or the environment.
We designed our project with no safety hazard that come to mind. No member of the public will be injured by our project if they use it as it is specified.
3)To be honest and realistic in stating claims or estimates based on available data
As far as we know, we have made realistic claims to the extent of the usability of our keyboard. We realize that our keyboard can not handle multiple notes or too many notes at one time. This is why we made the specification that notes must be played distinctly, otherwise the synthesizer software may crash.
4) To reject bribery in all its forms
We did not receive any monetary forms of compensation for working on this project. We were motivated by a subject matter that interested the both of us and also by a desire to pass the class.
5) To improve the understanding of technology, its appropriate application, and potential consequences
We picked our project on a subject neither of us were familiar with. We thought it would be a great challenge to attempt something which had not been covered in any of the labs before.
8) To treat fairly all persons regardless of such factors as race, religion, gender, disability, age, or national origin
As far was we know our keyboard synthesizer does not discriminate according to any of these factors. A person of any race, age, or gender can use our synthesizer as long know how to play a keyboard.
Link to Commented Code:
Link to Schematics:
Link to Cost Details:
Link to Task Descriptions: