InTuner is a practice device designed for advanced violinists who are looking to sharped their intonation. It's 2 main features: feedback and performance mode, are optimized to give violinists a quick and accurate assessment on how in-tune they are playing.
I developed InTuner because I found most widely available tuners have issues with either latency or accuracy (or both), mainly because they are used simply to tune the instrument, not to analyze the continuous intonation of the violinist. At an advanced level, intonation is very difficult to perfect and relies on the smallest changes in finger positioning. This inspired me to create a device designed specifically for intonation practice that gives extremely accurate feedback on the notes played and at a rate much faster than what most tuners do.
InTuner heavily utilizes the Fast Fourier Transform in its computations. As a project that resides within the physical constraints of its hardware, many optimizations in the signal processing in relation to computation speed, frequency resolution, and memory were made. The program (written in C++) takes the recieved analog signal in batches of 8192 samples and puts it through a computational process that is shorter than the speed at which data is recieved, removing latency. This process involves removing DC offset, applying the Fourier Transform to the batch, and analyzing it based on which mode it is set at. In the program, I optimized factors such as sampling frequency and method runtime by developing efficient algorithms and testing with real violin playing to find ideal values. You can check out my code and files here.
I started the project by drafting up some python code in Jupyter Notebook to better understand the FFT in the context of violin intonation. While developing some early python methods for analysis, I recognized many factors that complicated my progress, such as the range of notes on the violin, the logarithmic relationship between frequency and pitch, and identifying ways to assess signals for performance mode, where the microphone listens for one minute while the violinist plays. Initial attempts included ideas such as pipelining data to a computer using the ESP32's wifi function, but this was deemed inefficient and overly complicated.
For the hardware itself, I first started with SPICE simulations in a basic circuit, then moved onto systems level development with breadboard testing. This involved hardware-software integration where components and filters, such as the low pass filter, were determined along with computational requirements. Button features, the lcd feedback, and power management were also jointly implemented.
After functional completion, I aimed to create a compact version that could rest on a practice stand for the violinist. I replicated my schematic in Eagle and adjusted it so it fit the soldering needs of components such as the microphone. Following that, I designed the PCB allowing, choosing components that could be solderable by hand and had minimal power loss. I also designed the CAD model so the outer shell could hold the PCB and battery. All the files can be checked out in the Github repository linked above.