Project Members: Sean Owens
Required Tools and Skills:
- Skills
- Java
- JavaScript
- HTML
- Image Processing
- Tools
- NetBeans 7.1
This project was conceived while I was listening to a new album (Graveyard of Empires by Evans Blue). After listening to the album multiple times, I began to notice that the singer used a lot of the same words across multiple songs on the CD. I thought it would be interesting to develop a program that could analyze the lyrics for an album and produce a graphic representation of the general trends either consciously or sub-consciously created by the lyricist. I view this representation as a cloud of words that are sized based on their prevalence in the albums lyrics.
The second half of this project was sort of an afterthought to the part explained above. After deciding to write a program to analyze album lyrics, I began to think about what interesting things I could do with them. The idea I came up with was a mosaic of the album art created by coloring the lyrics and blocking them together. This process will be explained further in the procedure section. Hopefully, this will create an interesting graphic that has both high enough resolution that the album art can be observed easily and large enough text font that the words can be read if desired.
Explanation of Tools Choice:
This project will be a software application. The two languages chosen for consideration are C++ and Java. There are two reasons that Java was chosen over C++ for this project. First, this program will require connecting to the internet and html parsing, so Java's java.net package will provide a very robust and simple interface. Second, I have decided that I would like to design this program to run virtually on my website, so converting the local application will simply require adding the Java code to the desired JavaScript code.
I will be using NetBeans 7.1 for development of this application because it provides excellent support for Java coding as well as web development.
Proposed Procedure:
This program will require four main steps: obtaining the lyrics, generating the lyrics cloud, generating the album lyric art and converting to a web application.
- Obtaining the lyrics:
To generate the lyrics cloud, I will begin by opening an html file to write out to and writing out all of the html header lines. Then I will iterate through the data structure containing the lyrics and use the value to determine the text size that the words will be displayed at (I haven't decided how exactly the value will map to text size, but I will start with a simple 1-1 mapping and build from there). Once all of the words have been iterated over, I will write out the closing lines for the html.
3. Generating the album lyric art:
To generate the album lyric art I will begin by reading in a pre-saved image file of the album using Java's javax.imageio package. Once the image data is collected, I will determine the necessary size and spacing for creating a properly scaled version of the image using the lyrics. After this, I will determine the area taken up by each character and determine its color by averaging the pixel colors in that region of the input image. I will output this to an html file as well.
4. Converting to a web application
I have not yet decided on a process for the web application yet. I will provide more ideas in future posts.