Weekly Status Reports

Anna’s Status Report for 2/25

Anna’s Status Report for 2/25

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).   This week, in class time was spent 

Anita’s Status Report for 2/25

Anita’s Status Report for 2/25

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).  I presented our design review powerpoint! It 

Team Status Report for 2/18

Team Status Report for 2/18

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

Right now, an aspect that is somewhat concerning to us is the accuracy and confidence of the pitch detection modules we are looking at. From tests that we have done, the aubio pitch tracker sometimes does not have high confidence in its pitch detection. It performs better when the vocals are loud and are simple, vowel sounds. However, we are still just beginning to work with it, so we expect to make some progress. Nonetheless, we have two plans that we hope will improve this performance.

  1. We have ordered and received our hardware, a headset microphone and interface. We haven’t had much time to experiment with these, but we expect that using the mic will reduce background noise and increase audio quality, so this should help the performance of aubio.
  2. While we have been working with aubio mostly, we are also planning to experiment with and try making progress on other pitch tracking modules. This week and next are both dedicated to testing different modules, so we plan to perform more experiments while we find one that performs with good confidence and accuracy.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?  

After discussing the difficulty and scope of the project, we have decided to use an existing pitch recognition module. Because latency in pitch recognition is so important to us, using these existing modules, whose backend implementation is written in C, would make fast pitch recognition much easier to achieve. We expect this is easier, but it also means we will have less control over the pitch detection. Kelly is currently working on testing out different pitch detection algorithms, in order to understand which performs better, which is most compatible with our use case. Additionally, we have ordered and received our hardware, which will allow us to test the algorithms in the environment they will be used in our final project.

Our hardware for this project has gone through several iterations, especially this week. Originally, we were planning to have a fairly cheap headset microphone, but after consulting with our TA, Ankita, and our Professor, Tom Sullivan, we decided to revise our plans. Professor Sullivan talked a lot about minimizing the outside noise as much as possible, specifically for testing our designs and so we quickly pivoted to a headset microphone as this ensures that the microphone will be close to the users’ mouth and minimizing background noise. After meeting again, we started looking into a wireless audio system that live performers would use, but Professor Sullivan warned against wireless as this could distort our signal thereby throwing off our pitch tracking algorithm. We finally landed on a headset microphone primarily used by professional streamers/broadcasters as well as an interface in order to ensure that our computers would be able to read the signal coming from our high quality microphone. This change was necessary, especially for testing our pitch tracking algorithms as it will ensure that the signal coming in is much cleaner than that of our builtin laptop microphone and gives the pitch tracking algorithms the best chance at performance. However, this does come at the cost of ~$330. As this is the only part we planned on spending money on for this project, this cost has not affected our overall project.

Additionally, we are currently switching focus on having a series of hardcoded melodies and songs, while we originally were considering allowing users to upload their own. Although this would be an interesting feature, we don’t think it is really necessary to achieve the goal of a prototype for a responsive pitch detecting karaoke game. This decreases the scope of our project, both because we don’t need to worry about processing inputted songs, but also because we can have more control over what kind of songs will be tested on. Currently, we have a list of both simple melodies and songs that we want to implement for our final project.

melodies songs
Twinkle Twinkle Little Star

Itsy Bitsy Spider

Happy Birthday

I’m Yours – Jason Mraz

Wonderwall – Oasis

Livin’ on a Prayer-  Bon Jovi

I Will Survive – Gloria Gaynor

Don’t Stop Believin’ – Journey

 

A benefit of allowing users to upload their own songs is that users would be more engaged with the game and generally have a more enjoyable experience. To mitigate this, we tried to choose songs and melodies that are well known, somewhat easier, to appeal to beginners, and enjoyable to sing. The fact that these songs are popular will also make it easier for us to determine the target pitch for the user to hit, as many of them may have this information available. Additionally, sticking to hard coded songs allows us to stick to songs with slower and more defined melodies, which we suspect will perform better with our pitch detection.

Based on both of these changes, we have had to change the distribution of work, as well as the gantt chart. We are no longer spending time working on a homegrown algorithm, with a new focus on exploring existing algorithms. This has taken some of Anita’s tasks off the table, so she is now taking on some of the web development tasks. We have also spent some time fleshing out and separating the tasks for web development, now that we have had a bit more time to discuss exactly what we want to see on our site and how we want to organize it.

This is also the place to put some photos of your progress or to brag about a component you got working.

Testing of pyaubio. Code on the left, pitch detection and accuracy on the right.

Integration of fonts into the website framework.

The game homescreen now contains links to two hardcoded songs, twinkle twinkle little star and happy birthday. For both of these, this takes us to a page that plays this song. Mp3, wav, and ogg formats for audio files are currently supported.

Please enumerate one or more principles of engineering, science and mathematics that your team used to develop the the design solution for your project.

Because we are still in the beginning stage of the project, the largest principle we are working on is engineering management. This has consisted of adjusting the scope of the project as we go, and, in doing so, keeping solid communication, and tweaking and adjusting our personal responsibilities and plans when it comes to the scope of the project. Anita’s tasks have changed this week, and Kelly has taken on some new responsibilities, which has resulted in Anita taking on web development tasks later in the semester while she focuses on the design presentation this week.

Our project includes considerations for __________, where the blank lists things like public health, safety and welfare, along with other global, cultural, societal, environmental and economic considerations. Please add a second sentence to justify each item in the list in your blank

For this project, our largest consideration is still accessibility. We want to provide an enriching and enjoyable experience for those who like karaoke but may want to improve their skills. This is definitely something that we are taking into account when we choose the hardware we want to use. The headset mic and interface we are using come out to about $300, which is more than most at home karaoke machines on the market. However, we hope to provide a more valuable experience than a karaoke machine by being able to give feedback on user performance. Additionally, we are hoping that this equipment will not be necessary for every user. For development, we chose a pretty high quality microphone that had been recommended by streamers and podcasters, but we are expecting that a lower quality microphone will still be able to do the job in the finished product. Lastly, we expect that a non-negligible amount of users may already own a microphone and headphones, or would be able to use the microphone and headphones for other purposes in addition to KaraoKey, reducing the barrier of entry further.

Anna’s Status Report for 2/18

Anna’s Status Report for 2/18

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).   The first focus this week was going 

Kelly’s Status Report for 2/18

Kelly’s Status Report for 2/18

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).   This week, I researched microphones a bit 

Anita’s Status Report for 2/18

Anita’s Status Report for 2/18

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).  

Next week’s design review presentation took a lot more time than we were expecting, and it slowed down making concrete progress on our project.

We spent the majority of this week’s work time on our project presentation– as previously stated, it took a lot more time than we were expecting to completely flesh out the implementation details, features, and interdependencies. While there isn’t an explicit impact on the project through these discussions, it is an investment to plan ahead on this large project that will pay off later, when we don’t need to re-pivot the design of our solution.

Fleshing out the details required constant weighing of pros and cons with every design decision. While it was admittedly rather meticulous and nitpicky at times, I think it made our project goal more concrete and approachable. It broke down this 14-week large project into smaller, more digestible steps. There are still some components that we will have to have discussions about, but enough has been discussed such that we have a clear path forward.

Speaking of digestible steps, we also modified our Gantt chart. The changes that impacted me: we also had to pivot our project to use the audio modules, so I also spent the week reading documentation about aubio and pyaudio, and ramping up on these unfamiliar modules. I have reached a place where I have implemented preliminary semi-RT vocal to frequency conversions, though the confidence behind those conversions is abysmal. I will work on that in the following weeks.

Algorithm is detecting a frequency, but has abysmal confidence. To be fair, this is with my computer’s built in mic.

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

A lot of stress has been relieved now that I will not be using a homegrown algorithm. As of right now, I am on pace, and will be working with Kelly to maintain this pace.

 

Please list the particular ECE courses (if any) that covered the engineering science and mathematics principles your team used to develop your design? If there are no courses please tells us how you learned those principles over the last week ?

A lot of this week was large-project design and ramping up with new libraries. A lot of these skills were implicitly learned from taking classes that required such skills. Examples of some of these classes include:

  • 15-112: End of semester 4-week long term project
  • 18-240: lab4– required breaking down a large problem into submodules
  • 05-438: Semester long educational app design proposal
  • 15-445: Four projects that integrated into a database manager
  • 15-440: labs that required design decisions and weighing tradeoffs

While large project design was never something explicitly taught, I have picked up and developed this skill implicitly over the years.

 

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

I hope to work on the RT-feedback to increase the confidence rating, as well as come up with a preliminary scoring system. 

Team Status Report for 2/11

Team Status Report for 2/11

The most significant risks that could jeopardize the success of the project. Risk management and contingency plans. The most significant risk as of right now is the RT pitch detection. This is the main feature of the project and it is crucial that we get 

Kelly’s Status Report for 2/11

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 

Anna’s Status Report for 2/11

Anna’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).  

This week I focused mainly on two things: preparing for the proposal presentation and building the basic framework of the web application. The presentation was completed and submitted last week, but I spent some time both on Sunday and Tuesday preparing to present. This meant practicing as well as going over our work up to that point and making sure I was ready to answer any questions that came up.

For the framework, I worked on login and registration functionality, as well as navigation between pages. I created the Django project and set up a base page, as well as welcome, login, registration, and a basic song selection page.

For logging in and registering, I am using the existing Django User model, and created a simple profile model, which currently stores the user’s first and last name and links the profile to a User object. In the future, I plan to add more attributes to this model, storing past songs, past scores, and general statistics about their performance. For ease of development, I also added a “quick enter” button. This logs us in as a user called admin, with password “password” and, if the database has been cleared and this user doesn’t exist, creates this user. The goal is to make testing and viewing our progress faster while we are still building our website, but this functionality will be removed in the final project.

def quick_enter(request):

 if not User.objects.filter(username="admin").exists():
   admin = User.objects.create_user(username="admin",
                                       password="password",
                                       email="user@aol.com",
                                       first_name="admin",
                                       last_name="user")
   admin.save()
   admin_profile = Profile(user=admin,
                           first_name="admin",
                           last_name="user")
   admin_profile.save()
 else:
   admin = User.objects.get(username="admin")
 admin = authenticate(username="admin", password="password")
 login(request, admin)
 return render(request, 'KaraoKeySite/home.html',  {})

The login and register entries are simple Django forms. I am using the Django login_required function decorator, which sends users to the welcome page. This contains links to login, register, and quick enter. For the login page, I began integrating Kelly’s Figma mock-ups, but haven’t added the selected fonts yet. Below is what the welcome page looks like currently.

Here is a link to our GitHub repository which contains our Django project.

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

I am currently on schedule.

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

In the next week, I want to finish navigation. What I have remaining for that is adding a song search feature, which I will populate with some dummy hard coded songs, as well as navigation between a (most likely blank) game screen and results screens. I want to polish up the UI, integrating more elements from Kelly’s Figma mock-ups to the other screens and adding fonts, which are currently missing.

I will also begin researching and playing around with graphics packages, hopefully figuring out good candidates for our results screen, as well as game screen. I would like to have a small demo of one or two top choices.

Anita’s Status Report for 2/11

Anita’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).   Most of the time spent this week