Inchworm Team 2019
Audio-Capturing Music Notation System
The goal of this project was to develop a system that could automatically notate music played by a single instrument using a microphone array and digital signal processing (DSP). Notating music while composing can severely disrupt the creative process – writing music down can be very difficult and distracting, especially for amateur composers. This system was built to allow users to play new compositions without restriction. The system records what the user plays, then immediately displays a saved, notated version on a screen to be reviewed afterward. Composers can use this system to remember what they have played and, thereby, write sheet music or MIDI files based on their uninterrupted compositions.
This project was implemented completely on a RaspberryPi using Python software and the Respeaker Microphone Array. Audio input was recorded using the Respeaker, then loaded into Python. The Python code then found the frequency and duration of each note using numerous time-limited Fast Fourier Transform (FFT) frequency analyses of the recording. The frequencies found for each note were then compared to a dataset of known notes, qualified by their duration, and displayed on a user-friendly GUI. The microphone array was used in order to provide a clean and easily usable audio input, and the DSP was done primarily using the FFT to identify the correct notes. The resulting product allowed users to simply click start before they begin playing, click stop when they finish playing, and then see and hear their full composition afterward.
Related Tech Notes
- Microphone Arrays for Audio Enhancement by James Hoder
- Digital Signal Processing & Machine Learning Combination for Audio Detection by Joseph Meng