Difference between revisions of "ECE597 Project Music Visualizer"

From eLinux.org
Jump to: navigation, search
(Highlights)
(2 intermediate revisions by one other user not shown)
Line 57: Line 57:
 
  bone$: '''sudo apt-get update'''
 
  bone$: '''sudo apt-get update'''
 
  bone$: '''sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose'''
 
  bone$: '''sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose'''
 +
bone$: '''sudo apt-get install build-essential'''
 +
bone$: '''pip install cython'''
 
  bone$: '''git clone git://github.com/numpy/numpy.git numpy'''
 
  bone$: '''git clone git://github.com/numpy/numpy.git numpy'''
 
  bone$: '''cd numpy'''
 
  bone$: '''cd numpy'''
Line 100: Line 102:
 
4. Display the spectrum using open pixel control. -Zhihao
 
4. Display the spectrum using open pixel control. -Zhihao
  
 +
5. Play wav file and synchronize sound with display. -Zhihao
 +
 +
Unfinished Work
 +
1. Adjust software to take a variety of input files
 +
 +
2. Test software with other music files
  
 
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.
 
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.

Revision as of 22:08, 16 November 2014

thumb‎ Embedded Linux Class by Mark A. Yoder


Team members: Zhihao Xue, Ying Ying Zhou

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  10/100

(Inline Comment)

Executive Summary

This project is a music visualizer implemented on a 10x10 LED matrix controlled by Beaglebone Black, where a pattern that corresponds to the spectrum of a wav file is displayed on the LED. We are able to compute the spectrum of slices of the given wavefile, convert the spectrum to a 10 by 10 matrix, and display the spectrum on the LED matrix. Currently, the LEDs updates every 0.1 second. Depending on the size of the file, it may take a long time (about 1 minute for a 7M wav file) to parse the file. Once the file is loaded, the software will play the wav file and synchronize it with the LED display. Adjustments can be made to change the design of the display pattern, and how often the screen is updated.

Packaging

The LED matrix is a 3-pin device that connects directly to the beaglebone. LED-Matrix.jpg

Installation Instructions

Hardward

Connect 10x10 Neopixel LED matrix to P9_22 on Beaglebone

Connect USB sound card to Beagle

Beagle-main.jpg

Connect Beagle to host computer

Beagle-all.jpg

The sound card we using is CREATIVE SOUND BLASTER X-FI GO! PRO

Software

Download and install LEDscape from git repository

bone$: git clone https://github.com/Yona-Appletree/LEDscape.git

Please following the instruction under LEDscape repo to install LEDsacpe and disable HDMI ports

Download and install scipy and numpy package

bone$: sudo apt-get update
bone$: sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
bone$: sudo apt-get install build-essential
bone$: pip install cython
bone$: git clone git://github.com/numpy/numpy.git numpy
bone$: cd numpy
bone$: python setup.py build
bone$: python setup.py install --prefix=$HOME/local

After installing LEDscapte, scipy and numpy packages, get the project git repo

bone$: git clone https://github.com/xHa0z/musicvisualizer.git

Then make USB sound card as default output

bone$: cd musicvisualize
bone$: cp asoundrc ~/.asoundrc

User Instructions

Enable PRU and LEDscape service

bone$: cd musicvisualizer
bone$: ./setup

Run visualizer

bone$: python final.py

Highlights

Here is our YouTube video

https://www.youtube.com/watch?v=gEa0vO2T--I

Theory of Operation

The software reads a wave file, and obtains the amplitude and the sampling frequency. The amplitude is sliced into 0.1 second segments, and fast Fourier transform is performed on each fragment to obtain the spectrum. For each spectrum, the frequency component is divided into ten columns in a logarithmic scale, and the amplitude is normalized to a value between 0 to 10. This 10x10 matrix is displayed on the LED matrix using open pixel control.

The sound and display component of the software runs simultaneously so that the display is synchronized with the sound.

Work Breakdown

Major tasks 1. Install and test LEDscape; drive the LED matrix using default test programs in LEDscape. -Zhihao

2. Install and test open pixel control; make a custom pattern in open pixel control and display it on the LED matrix. -Ying Ying

3. Read a wav file, compute its spectrum, and map it to a 10x10 matrix. -Ying Ying

4. Display the spectrum using open pixel control. -Zhihao

5. Play wav file and synchronize sound with display. -Zhihao

Unfinished Work 1. Adjust software to take a variety of input files

2. Test software with other music files

Also list here what doesn't work yet and when you think it will be finished and who is finishing it.

Future Work

Currently we only have one pattern for the spectrum (which displays red, blue, green, and white). More complicated design patterns could be implemented to explore the capabilities of LEDscape. Although the original scope was to make a music visualizer that displays a pattern for a given sound file, to make the project more interactive, a recording element could be added, and the spectrum could be updated in real time.

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.




thumb‎ Embedded Linux Class by Mark A. Yoder