Kelly’s Status Report for 2/11

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).  

During this week, I started to flush out the UI of our website, looked into which headset would suit our needs best, and made some progress on pitch detection with the modules PyAudio and Aubio. 

I started looking into the UI of the programs we mentioned under our competitive analysis and made some mockups based on what I would want as a user of our app. These mockups were done entirely using Figma – a web app that translates designs into HTML code for easy transportation once our site is up – and took theme inspiration from neon signs and miami sunsets. These mockups can be found here

Some key features that I wanted to make space for:

  • Navigation to all pages on all pages
  • A progress bar at the bottom of the song screen
  • Lyrics to the song the user is currently singing
  • Notes carefully layed out so the user knows what is coming next
  • A graph on the end page so the user can see how well they did compared to the predefined track

I played around with these quite a lot as evidenced by the different versions and got feedback from Anita and Anna as to which mockups best bolstered our vision for KaraoKey.

Next, I did some headphone microphone research. Our theory behind a headphone microphone (as suggested by Prof Sullivan) is to minimize background noise and make our signal processing lives easier. This proved to be quite a challenge as most gaming microphones with computer connection don’t have proper microphone sensitivity for singing and the headset microphones designed for singing live connect to mic packs and not a computer. Thus, I started looking into podcasting headset microphones as these seem closer to our use case.

Once I set on this subset of headset microphones, I debated between condenser vs. dynamic mics as on one hand, dynamic mics are more durable and can handle higher volumes which seems better applicable to singing, but condenser mics record a more detailed sound that could be helpful in minimizing our signal processing work. However, I am leaning toward a dynamic microphone as I don’t imagine our users will always be in a quiet and controlled recording environment that the condenser microphones work best in. My research culminated in 2 possible options:

  • Sennheiser PC7 USB Headset (unique as it has one ear free)
  • Sennheiser PC8.2 Chat (I feel this does the best of clearing the signal from background noise)

These all can be found with audio recordings here.

Finally, I pieced together a proof of concept demo using PyAudio and Aubio for pitch detection (attached + named ‘pyaudio_demo.py’). This demo displays the pitch of the heard audio in Hz as well as how confident Aubio is about the measured pitch. The output is displayed as “pitch (in Hz) / confidence”. The file is quite well commented as to how the internals work, but some key details include: sample rate of 44.1 kHz (the standard sample rate of recorded music), pitch detection using YIN (after some testing, this gave the best confidence outputs over both sustained and short notes ~90-98%), and Fast Fourier Transform size of 2048 (this accounts for the commonly assumed lower limit of human hearing being 20 Hz).

 

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?  

Per our Gantt chart, I am perfectly on schedule, no issues to report.

 

What deliverables do you hope to complete in the next week?

In the next week, I hope to have this PyAudio/Aubio demo register pitches via note names (i.e. A, B, C#), polish up the current figma UI mockups to be less rough around the edges and more professional looking as well as adding a song selection page, and order the headset early in the week after our meeting with Professor Sullivan and our TA Ankita.



Leave a Reply

Your email address will not be published. Required fields are marked *