No new changes to the schedule. Have limited functionality of pitch detection and note start and stop detection on individual notes played in time. The funcitonality is stilled limited because I have not been able to extensively test the barriers of the the accuracy for both pitch detection and note start/stops. I am still currently working on polyphonic pitch and note start detection, but am planning on finishing that out this week. I am hoping to finish the have at least polyphonic note starts and stop detection by the interim demo, but if not, both are going to be functional by the end of this week.
Team Status Report for 10/28
Over the course of these past few weeks, one of our team members has had some personal matters come up that have interfered with his ability to participate in the project. Previously, we had moved forward with a slightly modified implementation plan that would mean leaving their portion out, allowing for the rest of the group to finish out their parts in an effort to still have a final project to show at the end of the semester. This final implementation plan is more concerned with what we will leave out of our project, and is still very generic in our head as we want to keep our project as close to its original proposal as possible, so we are planning on reevaluating our scope each week in order to make sure we are able to get the project done but still achieve as much as we can. This past week, the missing teammate was able to come back into the fold, but due to the rest of the group’s busy schedules, we are having our full team talk and rescoping this upcoming week. In terms of updates on changes in design, all of our previous changes have stayed, and any changes to schedule as a full group have yet to be discussed with the full group, but will be within the next few days.
Max’s Status Report for 10/28
This week I finished preprocessing to the point where I could comfortably begin work on the note identification and note onset algorithms. I got a simple initial algorithm for the note onset detection finished so that I could work on note identification for the case of an individual note. I have been working on this and debugging as I have gone, but should be done with isolated notes early this week. This puts me on schedule. This next week I will be able to finish out solo note detection and start to explore polyphonic note onset detection, which will then lead into polyphonic pitch detection the week after.
Max’s Status Report for 10/21
One new tool I am looking into learning is Librosa, a Python library for sound processing of wav files. I have not done much signal processing using Python, but Librosa, among other Python libaries, was a key reason for choosing to do signal processing in Python over other languages, so learning it will greatly help in the signal processing portion of the project.
This week was spent learning Librosa and doing the initial preprocessing for the signal processing. I am on schedule, as this week was made more relaxed due to being on break, as prior to break my time was focused on the design report, especially on the design trade study portion. After those parts were worked out, I begun working more with those platforms, starting preprocessing and initial note onset and pitch detection tests.
Team Status Report for 10/7
One of our main concerns going into this next week is that a majority of our group is busy in the second half of the week, so we are front loading our work on the design report to be almost completely done by Monday. This will give us time to clean it up before the due date on Friday, without having to stress over the timeline as people in our group get ready for fall break. We are also trying to solidify the schedule for each person’s design responsibilities and make sure they align such that we are able to integrate our parts together, leaving time for integration hiccups. As a result, we are individually preparing timelines for our sections to be integrated on Monday during class time.
In terms of design concerns, we are worried that C++ might not be the best platform for signal processing, and are looking into other options, namely Python and Matlab. Both of these have more support for signal processing that C does, and should only be marginally slower than C since many of the signal processing tools in Python and Matlab are wrappers of functions in C. This change, while still being explored, would not have an impact on project cost.
Our schedule is being updated due to the introduction of a new team member. This will be finalized when we next meet in person on Monday, 10/9/23.
Weekly Status Report Question (Team): ABET #1 says … An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
In our design solution for our project, one main part of our signal processing involves analyzing the harmonic spectrum of the audio input. After performing a Fourier transform (FT) on a recording of a single musical note, multiple spikes at different frequencies will appear. These different spikes represent the harmonic frequencies that make up the inputted note (or notes). This harmonic breakdown can vary between different instruments, with different instruments producing different harmonic signatures for the same fundamental frequency, or lowest present frequency, which represents the note being played. However, since the harmonics of the fundamental frequency are all positive integer multiples of the fundamental, if we multiply the original signal by its corresponding harmonics, and take the highest peak present after, we will be presented with the fundamental frequency we are looking for. This method, Harmonic Product Spectrum (HPS), shown below is extremely common in pitch detection.
Max’s Status Report for 10/7
This week I started implementing the wav file preprocessing in C, but ran into numerous problems throughout that forced me to look into other options around halfway through the week. I was particularly drawn to Python and Matlab. Python has a variety of signal processing and visualization tools, such as numpy, scipy, and matplotlib, which would greatly help with computation and visualization when debugging. Matlab is built for signal processing, and has an entire toolbox that helps with audio processing and extensive documentation. Since looking into these, I have been going back and forth on which to use, especially when taking into consideration my sections integration with other parts of the project. While performing this research, I have also started some simple implementation in Matlab and Python just to see what it would look like, and am still working on finalizing my decision as I work on the design tradeoffs for the design report.
Due to my late addition to the team, we have been reworking schedules to accommodate. I am still updating my schedule, and the team is going to consolidate a new schedule in person on Monday. Outside of that, the focus for this week is to finish out the design report, which involves deciding on the signal processing platform and additional tools by Monday so that we have the week to clean up the report, and also give me time to start pre-processing and note onset detection. This puts me on schedule.
Max’s Status Report for 9/30
This week I joined the transcriber team and we worked together to define my role in the team. I will be producing a transcriber that takes in an audio file and returns sheet music for the music in the recording. Given that my original team was broken up at the start of the week, and I was only able to clearly define my role on the team on Wednesday, my work was mostly kept to further researching signal processing for note detection, becoming comfortable with the tools and nature of the transcriber project, and planning how my tool will be folded into the current project. In terms of progress, I am still defining my schedule for my part of the project, but would say that I am on schedule after spending this week transitioning onto the new team. This week I plan to fully finish the design set up for the project for the presentations, and start programming the note detection section.
For the project, 18290 is the only main ECE course that is relevant to my work, so I have been researching pitch detection methods and algorithms extensively over the past few weeks. Through study, I have found multiple methods that can help, which I originally listed in the status reports for my previous team.