Monophonic Instrument Playing Practice System Prototype
Haarahiltunen, Mika (2013)
Haarahiltunen, Mika
Jyväskylän ammattikorkeakoulu
2013
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2013121821822
https://urn.fi/URN:NBN:fi:amk-2013121821822
Tiivistelmä
The goal of the project was to develop a prototype of a system that could be used for practicing the playing of breath instruments, such as flutes or saxophones. However, during the development process, the emphasis shifted from a breath instrument specific design towards a more generic design that could be used with any monophonic instrument. The development of the prototype included studying existing solutions, specifying the functional requirements and finally implementing the prototype. The idea was that the system could play and visualize the contents of Standard MIDI Files, the user would play along using some monophonic instrument and the system would tell in real time whether the user was playing correctly.
After the initial requirement analysis phase, roughly half of the time was spent on MIDI playback and visualization and the other half on pitch detection. A significant portion of the time was spent on studying these subjects, and as it turned out, implementing the planned features was far from trivial. The seemingly simple MIDI playback and visualization functionality required precise synchronization between multiple threads and introduced some unexpected problems, for example, the official Standard MIDI File specification was not freely available. The pitch detection functionality relied on somewhat complicated mathematics, suffered from latency and accuracy issues and some of the related algorithms were computationally very expensive. The real-time nature of the system required accurate audio and visualization synchronization and minimal pitch detection latency.
The thesis explains the theory and technical details of the implemented functionality and the problems that were encountered during the development. It also describes the shortcomings of the implementation and suggests some possible solutions for them.
After the initial requirement analysis phase, roughly half of the time was spent on MIDI playback and visualization and the other half on pitch detection. A significant portion of the time was spent on studying these subjects, and as it turned out, implementing the planned features was far from trivial. The seemingly simple MIDI playback and visualization functionality required precise synchronization between multiple threads and introduced some unexpected problems, for example, the official Standard MIDI File specification was not freely available. The pitch detection functionality relied on somewhat complicated mathematics, suffered from latency and accuracy issues and some of the related algorithms were computationally very expensive. The real-time nature of the system required accurate audio and visualization synchronization and minimal pitch detection latency.
The thesis explains the theory and technical details of the implemented functionality and the problems that were encountered during the development. It also describes the shortcomings of the implementation and suggests some possible solutions for them.