The purpose of this project is to make instrument learning software available to anyone and for any instrument. We present a hardware implementation of a sound to MIDI converter. A Piezo sensor is used to get better quality sound data from acoustic instruments. By combining a Piezo pickup, a high performance microcontroller, and Fast Fourier Transforms we can determine the notes played on the instrument. The paper will also discuss the techniques used to get more accurate data, such as Harmonic Product Sum from the Fast Fourier data. The use of HAL drivers will be discussed to allow programming in C++ on the STM32F4 ARM chip. Power consumption is another major topic that will be discussed, as well as sending data wirelessly with XBEE.
The device can clip on to an instrument and pick up the vibrations from the instrument using the Piezo sensor. The built in processor calculates the note that the player of the instrument is playing and send it out wirelessly in MIDI format. This means is that any instrument learning software that Uses MIDI format can be used with this hardware. Aside from the hardware there is custom software for this project made by Shivam Kumar, a Software Engineer student at DigiPen. This software works with the hardware to help teach the player how to play their instrument. The software has been developed for Windows operating system with the hope of supporting Android, Mac and Linux in the future. One mode of this software will have random sheet music notes scroll in from the right and the player will need to hit the correct note before it reaches the far left. This is just one of many modes that the software allows. A few more modes consist of ear training and song practice. The software works separately from the hardware and is usable by other MIDI devices but it is designed to work especially well with the hardware that is being described in this paper.
Cody Harris “A Musical Instrument Training Device” Digipen Report, 17 pages, 2015, (PDF)