So it's come to an end! This project has been a huge learning experience. I've learned a few things about myself personally as well as how I handle project management.
Again, I would like to thank Drs. Pankratz and McVey for helping me along on this experience as well as my classmates for all their support and proofreading capabilities.
That's a wrap!
Phew! Presentation seemed to go pretty well! I'll do the more detailed update now and make updates to the site as I prepare for my Defense on Monday! You'll have to click read more to see the rest.
So here's what the final(ish) form looks like. Pretty basic, but hey, I'm not a graphic design major as much fun as I think that'd be. The lyrics are from Take Me Home Country Roads. I put in a few features that made it easier to present like the checkbox to show the syllable count of the words as well as the analyze music button (all it does is calculate and show the Beats per minute of the song).
Below is what the Karaoke screen looks like mid-song. Prof. McVey requested some Supremes, so I'll have to add some to the current "repertoire" before Saturday. I have a few other things I'd like to shore up and improve before the Defense though; I'm not completely happy with it yet!
Advice for future Seniors:
Overall I'd say for anyone that comes across this, don't stress too much about your presentation. Profs. McVey and Pankratz have both been saying that it's really just a way for us to show off all the work we've done! Even if you're unsure if you've done enough, if your project is running and (mostly) works right even with a few bugs or requirements not met, you'll be just fine. The twenty minutes you'll be speaking/demonstrating are pretty easy to fill with cool information and facts about your project.
2019 Computer Science Capstone!
So I haven't updated in a while! My bad! Lots of progress has been made as my presentation is tomorrow. Here's everything I've done:
1) I have updated the UI to make it more user friendly as well as lead people to what needs to be done before Karaoke-ing.
2) Made changes so the syllables change color with the song lyrics!(HUGE)
3) Made words disappear/appear like a karaoke machine!(ALSO HUGE)
4) Made it look a bit better because plain windows forms don't look that great
Just a quick update, I'll post screenshots and everything after the presentation tomorrow and probably one or maybe two posts before this adventure is done.
Lots of success the past couple days! I've gotten the data of where syllables are to my Karaoke form(a popout so you don't see the editing side while karaoke-ing). There's a little bit of a problem with how the syllables are sent but this looks similar to a problem I was having close to the beginning, so I'll just have to sit down and look at the code a bit to see where it's getting mangled.
I also have a section of my app devoted to creating a file where every syllable hits, which takes care of a lot of the problems I have foreseen. Here's that that file looks like: (the times are in milliseconds)
Big moves made this week! I've met with Prof. Pankratz and made a plan for the data flow in the app. The app takes raw lyrics, processes them into separated syllables. It also takes user input in the app and creates a file with the timestamp of all syllables in the song. The Karaoke popout takes the processed lyrics, the music, and the file with the timestamp of syllable hits and (will eventually) put it all together for karaoke!
Also, Huge shoutouts to John McGorey for helping with syntax errors and Camille for helping me talk out my algorithm for splitting words into their syllables.
This week we've got walkthroughs which are pretty much a chance to get some feedback from about half of the class at a time.
I've got the syllable counter up and running! Here's the first few lines of Take Me Home, Country Roads by John Denver.
So that's working pretty well! Once I go through more lyric samples I can tweak the syllable counter function to get it working the best.
The project I was looking at for pointers on detecting beats was written in C++ which is surprisingly time consuming to convert to C#. That being said, it gave me some ideas and I'm looking for more info on Fast Fourier Transforms to work through the wav file. There's quite a bit of info online on the transform as well as some projects from past years so I've got plenty to work from.
Spring Break was great! Even if I didn't get as much done as I'd hoped. More updates to come this week!
We have a plan!
There are some API's and algorithms that can count syllables in words which is going to help me immensely. I'm working on figuring out which route will be best for me though since it is going to be a preprocessing step when lyrics are put in to go through and count syllables.
There is also software to detect beats (which is actually a 225 project from 2006) that I'm going to look through and see how Ryan did it (Ryan Pavlik was the name).
The plan is to use the syllable count and the length of a line in a song (songs usually have line lengths be the same amount of beats) to find how long we should keep lines on the screen and eventually how long each word should be highlighted. It should get the approximation pretty close!
So I've got a new window popping out with the lyrics on it which was a huge step forward. The research has not been as successful as my job has been sucking up all of my free time for the past couple weeks. You can't hear it, but John Denver's Take Me Home, Country Roads is playing in my headphones right now. So the .wav file is also playing! There's a minor problem with the lyrics on this screen though as some lines are getting truncated. I'm sure it's just something default built into labels though. Hopefully isn't a hard fix. Meeting with Drs. Pankratz and McVey tomorrow to figure out next steps. If there's a software that detects beats in music that would be another huge step forward. More updates to come! My Spring Break will be dedicated to this capstone and this capstone alone.
Had a meeting with Pankratz on Thursday. Looks like the play is going to be to make more of an editor for making the lyrics match up than to automatically create the times from the music and lyrics. Possibly meeting with one of the music professors to see what kind of software or insight they'd have into music files. More to come on that.
My to do list before meeting with him next is to research, but also make the words individual lines, and make those lines pop out into the new window with a scroll bar down the side(so we can manually get the lyrics moving, we'll make them auto eventually).
So last Thursday we had our MiniPosterboard session where our classmates came around and gave us hints and ideas on what they think could make our project easier or set us up for success. Unfortunately, I forgot to take a picture before erasing. (Oops)
The tips I got from the sessions:
1) start with acoustic
This seems obvious after thinking about it, but that's the thing. I didn't think of it! Starting with acoustic means there's less background noise happening so it'll be easier to find the syllables in the words.
2) Possibly implementing a talk-to-text interpreter/API to help detect the words (not really part of my problem, but a good extension to this project)
3) Song suggestions - they thought this app should start with some default Karaoke songs with it.
We Didn't Start the Fire - Billy Joel
Twinkle Twinkle Little Star
Country Roads - John Denver
And of course I have a few ideas of my own, but we'll save those for demo days!
I haven't made much progress since Thursday though unfortunately. One of the Math capstone exams is Tuesday (tomorrow) so I've been trying to recall all things college computational math.
My plans are still pretty much the same with some input on how to achieve them from my peers.
Getting File selection to work should be simple (apparently it's a simple open dialog box).
I'm gonna take a look at Matt Frohliger's project to see what he had going on.
GUI is at a good spot to be to start the research.
It seems mother nature has taken pity on us mortals so we haven't had too many snow days since that week off. That's all I've got for now, thanks for looking!
Still working on the GUI this week. May not look like much, but the start sound button plays and pauses music! The text on the right scrolls down the page and resets at the top (good for debugging). The words on the left appear in the scrolling text on the right after like 10 ticks (almost instantly). I'm working on being able to pick out text and music files from the computer you're on instead of hard coded info. Now time for some research about picking out beats and syllables from words.
What I'm currently thinking about:
How to separate the stuff from the left into separate labels on the right (to facilitate fading in/out in the future)
How am I gonna store the info about when the syllables happen (when the ball should move on)
Thinking about making an almost "presentation mode" for the app so we don't have to view this while we're reading some karaoke lyrics
This week I've made a bit of progress! I called an audible and decided to go with a C# application opposed to the Web app I was thinking about. There seems to be a lot more resources for manipulating/analyzing sound/music for this platform.
Once I figure that out, I started coding the app that night. I've got Music playing in the app, a timer implemented, and words scrolling down the screen. Overall pretty decent! After no class this week, the Professors wanted to check up on us before MiniPosterBoard sessions next week. They asked that Maggie and I have a GUI by next week (which shouldn't be all too difficult). I'm hoping to have a file finder(for the music) working, copying and pasting lyrics in the app and scrolling, then making it look not so barebones.
I've attached the Gantt chart for my project on this post, if it ends up changing, I'll keep the most up to date version in the "About the Project" tab as well as posting the new one in that week's blog post.
Unfortunately (or fortunately for many of the students on campus) we haven't had class at all this week because of a freak snowstorm and cold spell hitting the area. We got off school on Monday, Profs Pankratz and McVey called off class on Tuesday, then we also got off Wednesday and Thursday until noon.
As of now, I've been doing research and found that there are a few sound processing libraries for java, so I'm definitely going with a web app for my program. I've also made a git repository so I can do some version control. At this point, I think the best bet is to just start coding and see what these libraries can do.
"The beginning is the most important part of the work." - Plato
So, today's the day! We got our projects just a couple hours ago and this whole experience just got a bit more real. I'll be working on what is pretty much a karaoke generator where you can put in lyrics then create a karaoke-style video with a ball telling you what to sing. DCP and BMV call it bouncing ball, but the title "Jumpin' Jukebox" seems a bit more fun for now. We'll have to see what comes to mind. As for the platform, a website makes more sense to me since you'll want a bigger screen to follow the words. That and I feel computers have more versatility when it comes to displaying on other devices, like if you wanted to hook up to a larger TV or share with other devices.
In other news, John Mcgorey created a countdown timer to the first presentation date tonight (http://countdowntocapstone.com/), so I guess that means we only have 89 days. No pressure or anything.